Streaming von Sensordaten über WiFi mit Raspberry Pi Pico W

Raspberry Pi Pico W verbunden mit einem ADXL343

Eine der besten Anwendungen für den Raspberry Pi Pico W ist seine Fähigkeit, eine Webseite zu bedienen.

Das bedeutet, dass Sie damit Sensordaten von Ihrem Telefon aus überwachen können, solange Sie sich in WiFi-Reichweite befinden.

Dieses Projekt bietet eine einfache Grundlage für die Überwachung von Beschleunigungsdaten und die Erstellung eines digitalen Würfels, der aktiviert wird, wenn Sie den ADXL343-Sensor antippen.

Video

Benötigte Teile

  • Brettchen
  • Überbrückungsdrähte

Was ist der ADXL343?

Der ADXL343 von Analog Devices ist ein Nachfolger seines Vorgängers, des ADXL345.

Der Sensor kann drei Achsen messen und hat vier Empfindlichkeitseinstellungen: +-2g, +-4g, +-8g oder +-16g. Der niedrigere Bereich bietet eine höhere Auflösung für langsame Bewegungen, der höhere Bereich ist gut für Hochgeschwindigkeits-Tracking.

Der ADXL343 verfügt auch über eine CircuitPython-Bibliothek, die wir in MicroPython verwenden können, was den Einstieg sehr erleichtert.

Um dieses Projekt durchzuführen, müssen Sie die Header auf den ADXL343 und den Pico W auflöten.

Anschluss des ADXL343 an den Pico W

Es gibt vier Pins, die Sie mit dem Raspberry Pi verbinden müssen.

Verbinden Sie die VIN Pin an eine 3,3V Ausgang auf Ihrem Raspberry Pi Pico W;

Verbinden Sie die GND mit einem Erdungsstift an Ihrem Pico W;

Verbinden Sie die SDA anstecken GPIO0;

Verbinden Sie die SCL anstecken GPIO1.

Flashen von MicroPython-Firmware für den Raspberry Pi Pico W

Zuerst müssen Sie die MicroPython-Firmware auf den Pico W flashen, falls Sie das noch nicht getan haben.

Sie können es hier herunterladen.

Halten Sie dann die BOOTSEL-Taste gedrückt und schließen Sie Ihren Pico an Ihren Computer an. Sie sollten ein neues Laufwerk sehen. Kopieren Sie die .UF2-Datei, die Sie heruntergeladen haben, auf dieses Laufwerk.

Thonny für den Raspberry Pi Pico W einrichten

Öffnen Sie Thonny. Falls Sie es noch nicht heruntergeladen haben, erhalten Sie es hier.

Setzen Sie den Interpreter auf MicroPython (Raspberry Pi Pico) unten links im Fenster der Thonny IDE.

Kopieren von Bibliotheken auf den Pico W

Laden Sie die Bibliotheken und Dateien hier aus unserem Github-Repository herunter.

Sie können eine ZIP-Datei herunterladen, indem Sie auf diesen Link gehen und auf das grüne "Code" und Klicken auf ZIP herunterladen.

Entpacken Sie die heruntergeladene Datei an einem Ort, den Sie sich merken können.

Klicken Sie dann in Ihrer Thonny-IDE auf Ansicht > Dateien um Ihr Dateisystem und das Dateisystem des Pico W zu sehen.

Navigieren Sie zu den entpackten Dateien und gehen Sie in den Ordner MicroPython > II Pico W Sensor Server. Kopieren Sie alles auf Ihren Pico W, indem Sie mit der rechten Maustaste auf die einzelnen Elemente klicken und auf "Hochladen nach /" klicken.

Ändern des Codes

Damit sich der Raspberry Pi Pico mit Ihrem WiFi-Netzwerk verbinden kann, müssen Sie Folgendes öffnen geheimnisse.py und ändern Sie die ssid und pwWert. Geben Sie in die erste Zeile die SSID (Name) Ihres Netzwerks und in die zweite Zeile das Passwort ein. Speichern Sie die Datei.

Die index.html ist die Webseite, die angezeigt werden soll. Die Zeile "<p>X AccX | Y AccY | Z AccZ</p>" und <p>Ergebnis DiceVal</p> wird bei der Ausführung des Projekts durch Sensordaten ersetzt.

Verbinden Sie Ihren Raspberry Pi Pico mit WiFi

Die main.py ist der Ort des Geschehens.

Diese Leitungen verbinden es mit Ihrem WiFi. Vergessen Sie nicht, die Zeichenfolge in rp2.land wenn Ihr Land nicht Deutschland (DE) ist.


# Land einstellen, um mögliche Fehler zu vermeiden
rp2.country('DE')

wlan = Netzwerk.WLAN(Netzwerk.STA_IF)
wlan.active(True)
# Wenn Sie den Energiesparmodus deaktivieren müssen
# wlan.config(pm = 0xa11140)

# Sehen Sie sich die MAC-Adresse im OTP des Funkchips an
mac = ubinascii.hexlify(network.WLAN().config('mac'),':').decode()
print('mac = ' + mac)

# Andere Dinge abfragen
# print(wlan.config('channel'))
# print(wlan.config('essid'))
# print(wlan.config('txpower'))

# Login-Daten zur Sicherheit aus einer anderen Datei laden
ssid = secrets['ssid']
pw = secrets['pw']

wlan.connect(ssid, pw)

Die integrierte LED blinkt dreimal, wenn eine WiFi-Verbindung erfolgreich war, dank dieser Codezeilen. Es wird auch eine Meldung und Ihre IP-Adresse ausgegeben, die in Thonny angezeigt werden kann. Diese IP-Adresse ist nützlich, um später auf den Server zugreifen zu können.

   led = Maschine.Pin('LED', Maschine.Pin.OUT)
    for i in range(wlan.status()):
        led.on()
        time.sleep(0.2)
        led.off()
        time.sleep(0.2)
    print('Verbunden')
    status = wlan.ifconfig()
    print('ip = ' + status[0])

Liegt ein Fehler vor, blinkt die LED entsprechend dem Wert des Fehlercodes.

Fehler Bedeutungen

  • 0 = Link Down
  • 1 = Link Join
  • 2 = Link NoIp
  • 3 = Link Up
  • -1 = Link Fail
  • -2 = Verknüpfung NoNet
  • -3 = Link BadAuth

Pico W an ADXL343 anschließen

Diese Zeile initialisiert ein I2C-Objekt:

# I2C initialisieren
# busio.I2C(SCL, SDA)
i2c = busio.I2C(Karte.GP1, Karte.GP0)

Mit diesen beiden Leitungen wird der Beschleunigungssensor erstellt und die Erkennung von Gewindegängen (zum Ablesen von Würfeln) ermöglicht.

# Beschleunigungsmesser-Objekt erstellen
Beschleunigungsmesser = adafruit_adxl34x.ADXL343(i2c)

accelerometer.enable_tap_detection()

Zeit für die Ausführung des Codes

Um den Code auszuführen, drücken Sie in Thonny auf die Schaltfläche Ausführen, das ist die Schaltfläche mit dem Abspielsymbol in einer grünen Schaltfläche in der oberen Symbolleiste.

Verbinden Sie sich dann mit der IP-Adresse Ihres Raspberry Pi Pico W. Wenn Sie die Shell von Thonny geöffnet haben, können Sie sie dort sehen. Oder Sie können sich bei Ihrem Router anmelden und die IP-Adresse des Pico W herausfinden.

Der Pico W betreibt einen HTTP-Server mit einer Socket-Verbindung und lauscht auf Verbindungen, die hier definiert sind:

addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]

s = socket.socket()
s.bind(addr)
s.listen(1)

Wenn Sie sich mit der IP-Adresse Ihres Pico W verbinden, wird dieser Code ausgelöst, der index.html jede Sekunde mit den neuesten Daten aktualisiert.

   cl, addr = s.accept()
        print('Client verbunden von', addr)
        cl_file = cl.makefile('rwb', 0)
        while True:
            line = cl_file.readline()
            if not line oder line == b'\r\n':
                break
            
        Antwort = get_html('index.html')
        data = accelerometer.acceleration
        tapped = accelerometer.events['tap']
        response = response.replace('AccX', str(data[0]))
        response = response.replace('AccY', str(daten[1]))
        response = response.replace('AccZ', str(daten[2]))
        wenn angezapft:
            dice_val = str(random.randint(1,6))
        Antwort = Antwort.replace('DiceVal', dice_val)
        
        cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\r\n\r\n')
        cl.send(Antwort)
        cl.close()
main.py ersetzt die Werte durch den aktuellen Messwert, wenn Sie sich mit dem Server des Pico W verbinden.

Wie Sie sehen können, werden AccX, AccY und AccZ durch die Daten Ihres Sensors ersetzt.

Wenn der Sensor angetippt wird, wird eine zufällige ganze Zahl von 1 bis 6 in den String "DiceVal" auf der HTML-Seite gedruckt.

Was kommt als Nächstes?

Dieses Tutorial zeigt eine einfache Möglichkeit, Sensordaten auf eine Webseite zu übertragen.

Diesen Code können Sie auch für andere Sensoren verwenden.

Die Methodik bleibt dieselbe. Sie müssen die richtigen Bibliotheken für Ihre Sensoren finden und dann die main.py und index.html ändern, damit sie die Sensordaten erhalten und die richtigen Werte auf die Webseite übertragen können.

Es gibt viele andere Projekte, die Sie in Angriff nehmen können, wie z. B. ein Temperatur- und Feuchtigkeitssensorprojekt mit einem DHT22 oder BME688 oder ein Helligkeitssensor mit einem Lichtwiderstand.

1 Kommentar

  1. Veröffentlich von Ken Anderson am Juli 15, 2022 um 7:24 am

    Es wäre sicher schön, HTML5-Funktionen zu verwenden, damit wir sehen können, wie HTML5 gemacht wird.

Hinterlassen Sie einen Kommentar