9. Spiel mit dem @SunFounder Controller

In diesem Projekt lernen Sie, wie Sie ein Fernsteuerungsprojekt mit der Sunfounder Controller-App realisieren können. Innerhalb eines lokalen Netzwerks können Sie die Pico W-Schaltung mit Ihrem Smartphone oder Tablet steuern. Diese App ist besonders nützlich, wenn Sie einen einfachen Roboter mit Pico W bauen möchten.

Wir werden die Schiebeleiste in der App verwenden, um den Servowinkel zu steuern, und die Anzeige in der App, um die vom Ultraschallsensor erfasste Entfernung anzuzeigen.

1. Erforderliche Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IM KIT

LINK

Kepler-Kit

450+

Kepler Kit

Sie können die Teile auch einzeln über die folgenden Links kaufen.

SN

KOMPONENTE

ANZAHL

LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

Servo

1

BUY

6

Ultraschallmodul

1

BUY

7

Li-Po-Lademodul

1

8

18650 Akku

1

9

Batteriehalter

1

2. Schaltung aufbauen

Warnung

Stellen Sie sicher, dass Ihr Li-Po-Ladegerät gemäß dem Schaltplan angeschlossen ist. Andernfalls besteht die Gefahr eines Kurzschlusses, der Ihren Akku und die Schaltung beschädigen könnte.

../_images/9.sc_bb.png

3. SunFounder Controller einrichten

  1. Laden Sie die SunFounder Controller APP aus dem APP Store(iOS) oder Google Play(Android) herunter.

  2. Öffnen Sie die App und klicken Sie auf die +-Schaltfläche auf der Startseite, um einen Controller zu erstellen.

    ../_images/sc-a-2.jpg
  3. Hier wählen wir Leer und Zwei-Stick-Steuerung aus.

    ../_images/sc-a-3.jpg
  4. Nun erhalten wir einen leeren Controller.

    ../_images/sc-a-4.jpg
  5. Klicken Sie im Bereich H und fügen Sie ein Schieberegler-Widget hinzu.

    ../_images/sc-a-5.jpg
  6. Klicken Sie auf das Zahnrad des Steuerelements, um das Einstellungsfenster zu öffnen.

    ../_images/sc-a-6.png
  7. Setzen Sie Maximum auf 180 und Minimum auf 0, dann klicken Sie auf Bestätigen.

    ../_images/sc-a-7.jpg
  8. Klicken Sie im Bereich L und fügen Sie ein Anzeige-Widget hinzu.

    ../_images/sc-a-8.jpg
  9. Klicken Sie auf das Zahnrad der Anzeige, öffnen Sie das Einstellungsfenster, setzen Sie das Maximum auf 100, das Minimum auf 0 und die Einheit auf cm.

    ../_images/sc-a-9.jpg
  10. Nach Abschluss der Widget-Einstellungen klicken Sie auf Speichern.

    ../_images/sc-a-10.png

4. Code ausführen

Bemerkung

Falls Ihr Pico W momentan die Anvil-Firmware verwendet, müssen Sie 1.3 Installation von MicroPython auf Ihrem Pico.

  1. Laden Sie ws.py und websocket_helper.py aus dem Verzeichnis kepler-kit-main/libs auf den Raspberry Pi Pico W hoch.

    ../_images/9_sc3.png
  2. Doppelklicken Sie auf das Skript ws.py und geben Sie den SSID und das PASSWORT Ihres WLANs ein.

    ../_images/9_sc1.png
  3. Öffnen Sie die Datei 9_sunfounder_controller.py im Verzeichnis kepler-kit-main/iot. Klicken Sie auf die Schaltfläche Dieses Skript ausführen oder drücken Sie F5. Nach erfolgreicher Verbindung wird die IP-Adresse des Pico W angezeigt.

    ../_images/9_sc2.png

    Bemerkung

    Falls Sie dieses Skript beim Hochfahren ausführen lassen möchten, können Sie es als main.py auf dem Raspberry Pi Pico W speichern.

  4. Kehren Sie zur SunFounder Controller APP zurück und klicken Sie auf die Schaltfläche Verbinden.

    ../_images/sc-c-4.jpg
  5. Wenn der PicoW erkannt wird, tippen Sie direkt darauf, um die Verbindung herzustellen.

    ../_images/sc-c-5.jpg
  6. Falls keine automatische Suche erfolgt, können Sie auch manuell die IP-Adresse eingeben, um eine Verbindung herzustellen.

    ../_images/sc-c-6.png
  7. Wenn Sie den Schieberegler im H-Bereich bewegen, nachdem Sie auf die Schaltfläche Ausführen geklickt haben, wird der Servo seinen Winkel einstellen. Die Anzeige im L-Bereich zeigt die Entfernung an, falls sich Ihre Hand innerhalb von 100 cm vor dem Ultraschallsensor befindet.

    ../_images/sc-c-8.jpg

Wie funktioniert das?

Die Klasse WS_Server in der Bibliothek ws.py implementiert die Kommunikation mit der APP. Im Folgenden ist das Grundgerüst für die Implementierung der wesentlichen Funktionalitäten dargestellt.

from ws import WS_Server
import json
import time

ws = WS_Server(8765) # init websocket

def main():
    ws.start()
    while True:
        status,result=ws.transfer()
        time.sleep_ms(100)

try:
    main()
finally:
    ws.stop()

Zuerst müssen wir ein WS_Server-Objekt erstellen.

ws = WS_Server(8765)

Starten Sie es.

ws.start()

Anschließend wird eine while True-Schleife verwendet, um den Datenaustausch zwischen dem Pico W und der SunFounder Controller APP durchzuführen.

while True:
    #  websocket transfer data
    status,result = ws.transfer()

    # the status of transfer data
    print(status)

    # the data you recv
    print(result)

    # the data you send
    print(ws.send_dict)


    time.sleep_ms(100)

status ist False, wenn es fehlschlägt, Daten von der SunFounder Controller APP zu erhalten.

Und result sind die Daten, die der Pico W von der SunFounder Controller APP abgerufen hat. Drucken Sie diese aus, und es wird etwas Ähnliches wie das Folgende erscheinen. Dies sind die Werte aller Widget-Bereiche.

{'C': None, 'B': None, 'M': None,,,,, 'A': None, 'R': None}

In diesem Fall drucken wir die Werte des H-Bereichs separat aus und verwenden sie zur Steuerung des Schaltkreises.

status,result=ws.transfer()
#print(result)
if status == True:
    print(result['H'])

Und das ws.send_dict Wörterbuch enthält die Daten, die der Pico W an die SunFounder Controller APP sendet. Dieses Wörterbuch wird in der WS_Server Klasse erstellt und versendet, wenn die Methode ws.transfer() aufgerufen wird.

Die entsprechende Nachricht wird unten dargestellt.

{'Check': 'SunFounder Controller', 'Name': 'PicoW', 'Type': 'Blank'}

Dies ist eine leere Nachricht. Um sie ins Widget der SunFounder Controller APP zu kopieren, müssen wir den jeweiligen Bereichen im Wörterbuch Werte zuweisen. Beispielsweise weisen wir dem L-Bereich den Wert 50 zu.

ws.send_dict['L'] = 50

Die unten dargestellten Daten sehen dann wie folgt aus:

{'L': 50, 'Type': 'Blank', 'Name': 'PicoW', 'Check': 'SunFounder Controller'}

Für weitere Informationen zur Verwendung des SunFounder Controllers, siehe bitte SunFounder Controller APP.