Pico 2 W Projekte




Die neuen Projekte nutzen die Fähigkeiten des Pico 2 W. Es werden eine Reihe von Sensoren angeschlossen, die per Funk Informationen an eine Zentrale melden, bzw. Funktionen schalten. Ich möchte auch unbedingt darauf hinweisen, dass Sie beim Download der aktuellen Firmeware CircuitPython beim Pico 2 darauf auchten, dass die in unserem Fall für Pico 2 W sein muss.

Temperatur messen mit BME 280

Helligkeit mit Lichtsensor messen

Sonnenaufgang/Sonnenuntergang

Bewegung registrieren mit PIR-Sensor



Temperatur messen mit BME 280:

Die Abbildung zeigt die Schaltung mit dem Temperatursensor BME280 am Pico 2 W:


Den BME 280 habe ich auch an anderer Stelle bereits eingesetzt. Bestellen können Sie ihn z.B. von hier. Außer dem Erfassen der Temperatur kann der Sensor auch den Luftdruck und die Luftfeuchtigkeit angeben. Er ist zuverlässig und arbeitet mit I2C auf Adresse 77. Ich benutze als Bibliothek die 'adafruit_bme280', welche aber leider immer noch einen Fehler enthält, so dass beim Programmstart die Meldung: 'Failed to find BME280! Chip ID 0x58' ausgegeben wird. Um das zu vermeiden, nehmen Sie aus dem Bibliotheksbundle mit den unkompilierten Dateien ebenfalls 'adafruit_bme280' und bearbeiten die Datei 'basic.py'.
In Zeile 54 ändern Sie : _BME280_CHIPID = const(0x60) --> _BME280_CHIPID = const(0x58). Danach können Sie den folgenden Code in Ihrer Thonny-IDE einfügen und starten:

  
  
1  import time
2  import board
3  import busio
4  from adafruit_bme280 import basic as adafruit_bme280
5
6  #I2C Pin SDA: GP 0 and SCL: GP1
7  SDA = board.GP0
8  SCL = board.GP1
9  # Create sensor object, using the board's default I2C bus.
10 i2c = busio.I2C(SCL, SDA)
11 bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c, address=0x77)
12
13 while True:
14     temp = bme280.temperature
15     print("Temp.: %0.1f C" % (bme280.temperature))
16     time.sleep(1)
  

In der Kommandozeile der Thonny IDE werden z.B. folgende Temperaturwerte angezeigt:



Das Programm nutzt den I2C0 mit SDA an GP0 und SCL an GP1 des Pico. Dass der Temperatursensor auf Adresse 77 sendet, erfährt man durch einen Scan des I2C-Bus. Gleichzeitig würde hier auch angezeigt, wenn SDA und SCL vertauscht wären. Wie Sie den Scan durchführen, sehen Sie im unteren Kasten.

  
  
1  import board
2  import busio
3
4  i2c = busio.I2C(board.GP1, board.GP0)
5  count = 0
6
7  # Wait for I2C lock
8  while not i2c.try_lock():
9      pass
10
11 # Scan for devices on the I2C bus
12 print("Scanning I2C bus")
13 for x in i2c.scan():
14     print(hex(x))
15     count += 1
16
17 print("%d device(s) found on I2C bus" % count)
  





Viel Spass und Erfolg beim Ausprobieren.