Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
sidebar_position: 1
title: "CircuitPython installieren"
description: ⬇️ CircuitPython auf der senseBox MCU-S2 installieren
description: CircuitPython auf der senseBox MCU-S2 installieren
---
import AlertBox from "@site/src/components/AlertBox/AlertBox";

Expand Down
82 changes: 82 additions & 0 deletions docs/hardware/accessoires/display.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ description: senseBox OLED Display
import ImageWithText from '@site/src/components/ImageWithText/ImageWithText'
import display from '@site/static/img/hardware-bilder/oled/display.png'
import TutorialPorts from '@site/src/components/TutorialPorts/TutorialPorts'
import { useBoardStore } from '@site/src/lib/stores/store'

# OLED Display

Expand Down Expand Up @@ -88,6 +89,87 @@ Der `Schreibe Text/Zahl`-Block verfügt über fünf Einstellungsmöglichkeiten:

![Text/Zahl anzeigen](/img/blockly-bilder/display/blockly-display-3.svg)

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>

<p>Um das Display mit CircuitPython zu programmieren, muss die senseBox MCU-S2 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>

<h3>Software Bibliothek</h3>

<p>Lade dir die <a href="https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SSD1306/releases/download/3.0.3/adafruit-circuitpython-displayio-ssd1306-10.x-mpy-3.0.3.zip">SSD1306 CircuitPython Bibliothek</a> <b>und</b> die <a href="https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/releases/download/3.3.3/adafruit-circuitpython-display-text-10.x-mpy-3.3.3.zip ">adafruit_display_text Bibliothek</a> herunter. Entpacke die .zip Dateien und kopiere die <code>.mpy</code> Dateien aus den <code>lib</code> Ordnern in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>

<h3>Code</h3>

<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun das Display programmieren und Inhalte anzeigen lassen. Dieser Code zeigt "Hello senseBox!" auf dem Display an:</p>

<pre><code className="language-python">{`
import board
import displayio
import digitalio
import terminalio
from adafruit_display_text import label
import adafruit_displayio_ssd1306

# IO Enable
io_enable_pin = digitalio.DigitalInOut(board.IO_POWER)
io_enable_pin.direction = digitalio.Direction.OUTPUT
io_enable_pin.value = False

displayio.release_displays()

#oled_reset = board.D9

# Use for I2C
i2c = board.I2C() # uses board.SCL and board.SDA
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller
display_bus = displayio.I2CDisplay(i2c, device_address=0x3D)

# Use for SPI
# spi = board.SPI()
# oled_cs = board.D5
# oled_dc = board.D6
# display_bus = displayio.FourWire(spi, command=oled_dc, chip_select=oled_cs,
# reset=oled_reset, baudrate=1000000)

WIDTH = 128
HEIGHT = 64 # Change to 64 if needed
BORDER = 5

display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=WIDTH, height=HEIGHT)

# Make the display context
splash = displayio.Group()
display.root_group = splash

color_bitmap = displayio.Bitmap(WIDTH, HEIGHT, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF # White

bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)

# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(WIDTH - BORDER * 2, HEIGHT - BORDER * 2, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0x000000 # Black
inner_sprite = displayio.TileGrid(
inner_bitmap, pixel_shader=inner_palette, x=BORDER, y=BORDER
)
splash.append(inner_sprite)

# Draw a label
text = "Hello senseBox!"
text_area = label.Label(
terminalio.FONT, text=text, color=0xFFFFFF, x=28, y=HEIGHT // 2 - 1
)
splash.append(text_area)

while True:
pass`}</code></pre>
</>
))}

## Projekte

- #### [IoT Messstation](https://sensebox.de/projects/de/2024-01-10-iotmesstation_s2)
44 changes: 44 additions & 0 deletions docs/hardware/sensors/co2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ hide_title: false
import ImageWithText from '@site/src/components/ImageWithText/ImageWithText'
import CO2Sensor from '@site/static/img/hardware-bilder/co2/scd30.png'
import TutorialPorts from '@site/src/components/TutorialPorts/TutorialPorts'
import { useBoardStore } from '@site/src/lib/stores/store'

# CO2 Sensor

Expand Down Expand Up @@ -80,6 +81,49 @@ Den CO<sub>2</sub> Sensor kannst du mit folgendem Block auslesen.

![](/img/hardware-bilder/co2/scd30-block.svg)

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>

<p>Um den Sensor mit CircuitPython zu programmieren, muss die senseBox MCU-S2 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>

<h3>Software Bibliothek</h3>

<p>Lade dir die <a href="https://github.com/adafruit/Adafruit_CircuitPython_SCD30/releases/download/2.2.16/adafruit-circuitpython-scd30-10.x-mpy-2.2.16.zip">SCD30 CircuitPython Bibliothek</a> herunter. Entpacke die .zip Datei und kopiere die <code>adafruit_scd30.mpy</code> Datei aus dem <code>lib</code> Ordner in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>

<h3>Code</h3>

<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun den Sensor programmieren und seine Werte auslesen. Dieser Code gibt die CO<sub>2</sub>-Konzentration, Temperatur und Luftfeuchtigkeit in der Konsole aus:</p>

<pre><code className="language-python">{`import time
import board
import busio
import digitalio
import adafruit_scd30

io_enable_pin = digitalio.DigitalInOut(board.IO_POWER)
io_enable_pin.direction = digitalio.Direction.OUTPUT
io_enable_pin.value = True

time.sleep(0.5)

i2c = busio.I2C(board.SCL, board.SDA, frequency=50000)
scd = adafruit_scd30.SCD30(i2c)

while True:
if scd.data_available:
print("Data Available!")
print("CO2:", scd.CO2, "PPM")
print("Temperature:", scd.temperature, "degrees C")
print("Humidity:", scd.relative_humidity, "%%rH")
print("")
print("Waiting for new data...")
print("")

time.sleep(0.5)`}</code></pre>
</>
))}

## Kalibrieren des CO<sub>2</sub>-Sensors (Auto Kalibrierung)

Im Regelfall kommt der CO<sub>2</sub>-Sensor bereits kalibriert bei dir an. Grobe Handhabung, Versand oder Löten kann die Genauigkeit des Sensors reduzieren, was eine Kalibrierung notwendig macht. Für diesen Sketch benötigst du das Display. Hast du kein Display vorhanden, kannst du die Display relevanten Teile löschen, dies beeinflusst die Kalibrierung des Sensors nicht!
Expand Down
32 changes: 31 additions & 1 deletion docs/hardware/sensors/feinstaub-sps30.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ hide_title: false
import ImageWithText from '@site/src/components/ImageWithText/ImageWithText'
import feinstaubSps from '@site/static/img/hardware-bilder/sps30/sps30.png'
import TutorialPorts from '@site/src/components/TutorialPorts/TutorialPorts'
import { useBoardStore } from '@site/src/lib/stores/store'

# Feinstaubsensor SPS30

Expand All @@ -22,7 +23,7 @@ Der Feinstaubsensor SPS30 ist ein hochpräzises Gerät zur Messung der Luftquali

## Anschluss

<TutorialPorts port="uart" />
<TutorialPorts port="i2c" />

## Programmierung (Arduino)

Expand Down Expand Up @@ -81,3 +82,32 @@ void loop() {
Den Sensor kannst du mit folgenden Block auslesen.

![](/img/hardware-bilder/sps30/sps30-block.svg)

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>

<p>Um den Sensor mit CircuitPython zu programmieren, muss die senseBox MCU-S2 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>

<h3>Software Bibliothek</h3>

<p>Lade dir die <a href="https://github.com/kgalb01/Adafruit_CircuitPython_SPS30/releases/download/0.0.2/adafruit-circuitpython-sps30-10.x-mpy-0.0.2.zip">SPS30 CircuitPython Bibliothek</a> herunter. Entpacke die .zip Datei und kopiere den <code>adafruit_sps30</code> Ordner aus dem <code>lib</code> Ordner in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>

<h3>Code</h3>

<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun den Sensor programmieren und seine Werte auslesen. Dieser Code gibt die PM2.5 Werte in der Konsole aus:</p>

<pre><code className="language-python">{`import time
import board
from adafruit_sps30.i2c import SPS30_I2C

# For i2c mode the SPS30 interface select pin needs to be connected to ground
i2c = board.I2C() # uses board.SCL and board.SDA
sps = SPS30_I2C(i2c)

while True:
aqdata = sps.read()
print("PM2.5: {:.1f}".format(aqdata["pm25 standard"]))
time.sleep(1)`}</code></pre>
</>
))}
34 changes: 34 additions & 0 deletions docs/hardware/sensors/helligkeit-uv.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ description: Helligkeits- und UV-Sensor
import ImageWithText from '@site/src/components/ImageWithText/ImageWithText'
import lightSensor from '@site/static/img/hardware-bilder/helligkeit-uv/sensor_helligkeit_uv.png'
import TutorialPorts from '@site/src/components/TutorialPorts/TutorialPorts'
import { useBoardStore } from '@site/src/lib/stores/store'

# Helligkeits- und UV-Sensor

Expand Down Expand Up @@ -173,6 +174,39 @@ Im Block kannst du zwischen den verschiedenen Parametern des Helligkeits-/UV-Sen
- Helligkeit in LUX
- UV-Belastung in µW/cm^2

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>

<p>Um den Sensor mit CircuitPython zu programmieren, muss die senseBox MCU-S2 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>

<h3>Software Bibliothek</h3>

<p>Lade dir die <a href="https://github.com/adafruit/Adafruit_CircuitPython_VEML6070/releases/download/3.1.24/adafruit-circuitpython-veml6070-10.x-mpy-3.1.24.zip">VEML6070 CircuitPython Bibliothek</a> herunter. Entpacke die .zip Datei und kopiere die <code>adafruit_veml6070.mpy</code> Datei aus dem <code>lib</code> Ordner in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>

<h3>Code</h3>

<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun den UV-Sensor programmieren und seine Werte auslesen. Dieser Code gibt die UV-Intensität und das Risikolevel in der Konsole aus:</p>

<pre><code className="language-python">{`import time
import board
from adafruit_veml6070 import VEML6070

with board.I2C() as i2c:
uv = VEML6070(i2c)
# Alternative constructors with parameters
#uv = VEML6070(i2c, 'VEML6070_1_T')
#uv = VEML6070(i2c, 'VEML6070_HALF_T', True)

# take 10 readings
for j in range(10):
uv_raw = uv.uv_raw
risk_level = uv.get_index(uv_raw)
print('Reading: {0} | Risk Level: {1}'.format(uv_raw, risk_level))
time.sleep(1)`}</code></pre>
</>
))}

## Projekte

- #### [IoT Messstation](https://sensebox.de/projects/de/2024-01-10-iotmesstation_s2)
Expand Down
27 changes: 27 additions & 0 deletions docs/hardware/sensors/luftdruck-temperatur.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,33 @@ Im Block kannst du zwischen den verschiedenen Parametern des Luftdruck-/Temperat
- Temperatur in Celsius (°C)
- Höhe über NN in m (dazu wird ein Referenzluftdruck benötigt)

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>
<p>Um den Sensor mit CircuitPython zu programmieren, muss die senseBox MCU-S2 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>
<h3>Software Bibliothek</h3>
<p>Lade dir die <a href="https://github.com/adafruit/Adafruit_CircuitPython_DPS310/releases/download/2.1.19/adafruit-circuitpython-dps310-10.x-mpy-2.1.19.zip">DPS310 CircuitPython Bibliothek</a> herunter. Entpacke die .zip Datei und kopiere die <code>adafruit_dps310</code> Ordner aus dem <code>lib</code> Ordner in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>
<h3>Code</h3>
<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun den Sensor programmieren und seine Werte auslesen. Dieser Code gibt den Luftdruck und die Temperatur in der Konsole aus:</p>
<pre><code className="language-python">{`import time
import board
import digitalio
from adafruit_dps310.basic import DPS310
# IO Enable
io_enable_pin = digitalio.DigitalInOut(board.IO_POWER)
io_enable_pin.direction = digitalio.Direction.OUTPUT
io_enable_pin.value = False
i2c = board.I2C()
dps310 = DPS310(i2c, 0x76)
while True:
print("Temperature = %.2f *C" % dps310.temperature)
print("Pressure = %.2f hPa" % dps310.pressure)
print("")
time.sleep(1.0)`}</code></pre>
</>
))}


## Projekte

- #### [IoT Messstation](https://sensebox.de/projects/de/2024-01-10-iotmesstation_s2)
Expand Down
35 changes: 35 additions & 0 deletions docs/hardware/sensors/mpu6050.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: Beschleunigungssensor

import ImageWithText from '@site/src/components/ImageWithText/ImageWithText'
import mpu6050 from '@site/static/img/hardware-bilder/mpu6050/mcu-top-mpu.png'
import { useBoardStore } from '@site/src/lib/stores/store'

# Beschleunigungssensor (MPU6050)

Expand Down Expand Up @@ -64,3 +65,37 @@ Die Ergebnisse kannst du in Arduino anzeigen unter `Werkzeuge -> Serieller Plott
In Blockly kannst du den Sensor über folgenden Block auslesen:

![](/img/hardware-bilder/mpu6050/mpu-6050-block.svg)

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>

<p>Um den Sensor mit CircuitPython zu programmieren, muss die senseBox MCU-S2.1 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>

<h3>Software Bibliothek</h3>

<p>Lade dir die <a href="https://github.com/adafruit/Adafruit_CircuitPython_MPU6050/releases/download/1.3.4/adafruit-circuitpython-mpu6050-10.x-mpy-1.3.4.zip">MPU6050 CircuitPython Bibliothek</a> herunter. Entpacke die .zip Datei und kopiere die <code>adafruit_mpu6050.mpy</code> Datei aus dem <code>lib</code> Ordner in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>

<h3>Code</h3>

<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun den integrierten Beschleunigungssensor programmieren und seine Werte auslesen. Dieser Code gibt die Beschleunigungswerte, Gyroskop-Daten und Temperatur in der Konsole aus:</p>

<pre><code className="language-python">{`import time
import busio
import microcontroller
import adafruit_mpu6050

scl = microcontroller.pin.GPIO42
sda = microcontroller.pin.GPIO45

i2c = busio.I2C(scl, sda)
mpu = adafruit_mpu6050.MPU6050(i2c)

while True:
print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2"%(mpu.acceleration))
print("Gyro X:%.2f, Y: %.2f, Z: %.2f degrees/s"%(mpu.gyro))
print("Temperature: %.2f C"%mpu.temperature)
print("")
time.sleep(1)`}</code></pre>
</>
))}
41 changes: 41 additions & 0 deletions docs/hardware/sensors/temperatur-luftfeuchte.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,47 @@ Im Block kannst du zwischen den verschiedenen Parametern des Temperatur und Luft
- Temperatur in Grad Celsius (°C)
- Luftfeuchtigkeit in Prozent (%)

{useBoardStore((state) => (state.board === 'MCU-S2' || state.board === ':edu S2') && (
<>
<h2>Programmierung (CircuitPython)</h2>

<p>Um den Sensor mit CircuitPython zu programmieren, muss die senseBox MCU-S2 zunächst mit CircuitPython geflasht werden. Eine Anleitung dazu findest du <a href="https://docs.sensebox.de/docs/editors/circuitpython/circuitpython_esp32">hier</a>.</p>

<h3>Software Bibliothek</h3>

<p>Lade dir die <a href="https://github.com/sensebox/CircuitPython_HDC1080/releases/download/1.0.0/circuitpython-hdc1080-9.x-mpy-1.0.0.zip">HDC1080 CircuitPython Bibliothek</a> herunter. Entpacke die .zip Datei und kopiere die <code>hdc1080.mpy</code> Datei aus dem <code>lib</code> Ordner in den <code>lib</code> Ordner deiner senseBox (<code>CIRCUITPY</code> Laufwerk).</p>

<h3>Code</h3>

<p>Mit dem CircuitPython Editor deiner Wahl kannst du nun den Sensor programmieren und seine Werte auslesen. Dieser Code gibt die Temperatur und die relative Luftfeuchte in der Konsole aus:</p>

<pre><code className="language-python">{`import time
import board
import digitalio
from hdc1080 import HDC1080

# IO Enable Pin (only needed for senseBox MCU-S2)
io_enable_pin = digitalio.DigitalInOut(board.IO_POWER)
io_enable_pin.direction = digitalio.Direction.OUTPUT
io_enable_pin.value = False

# Initialize I2C bus
i2c = board.I2C()

# Initialize HDC1080 sensor
sensor = HDC1080(i2c)

while True:
temperature = sensor.temperature
humidity = sensor.humidity

print("Temperature: {:.2f} °C".format(temperature))
print("Humidity: {:.2f} %".format(humidity))

time.sleep(2) # Wait for 2 seconds before next reading`}</code></pre>
</>
))}

## Projekte

- #### [IoT Messstation](https://sensebox.de/projects/de/2024-01-10-iotmesstation_s2)
Expand Down
Loading