Inhaltsverzeichnis:

MicroPython IoT Rover basierend auf WEMOS D1 (ESP-8266EX) - Gunook
MicroPython IoT Rover basierend auf WEMOS D1 (ESP-8266EX) - Gunook

Video: MicroPython IoT Rover basierend auf WEMOS D1 (ESP-8266EX) - Gunook

Video: MicroPython IoT Rover basierend auf WEMOS D1 (ESP-8266EX) - Gunook
Video: Easterhegg 2018 - Einführung in ESP32 Microcontroller + MicroPython 2024, Juli
Anonim
Image
Image
MicroPython IoT Rover basierend auf WEMOS D1 (ESP-8266EX)
MicroPython IoT Rover basierend auf WEMOS D1 (ESP-8266EX)

** Update: Ich habe ein neues Video für v2 mit einer Lanze gepostet **

Ich veranstalte Robotik-Workshops für kleine Kinder und bin immer auf der Suche nach wirtschaftlichen Plattformen, um faszinierende Projekte zu entwickeln. Während Arduino-Klone billig sind, verwendet es die C/C++-Sprache, mit der Kinder nicht vertraut sind. Außerdem hat es kein integriertes WLAN, was für IoT-Projekte ein Muss ist. Auf der anderen Seite, während Raspberry Pi über WIFI verfügt und Kinder es mit Python programmieren können, ist es immer noch eine teure Plattform, um nur wenige GPIO-Ports zu steuern, um Geräte ein- und auszuschalten. Ich brauche etwas dazwischen, das sowohl WIFI- als auch Python-Funktionen hat. Es scheint, dass ich meine Antwort in MicroPython gefunden habe, das auf ein billiges ESP8266-basiertes Board geflasht wurde.

Was ist Micropython?

Laut seiner Website ist MicroPython eine schlanke und effiziente Implementierung der Programmiersprachen Python 3, die einen kleinen Teil der Python-Standardbibliothek enthält und für die Ausführung auf Mikrocontrollern und in eingeschränkten Umgebungen (wie ESP8266) optimiert ist. Es ist im Wesentlichen Python-IDE auf einem Chip. Ein großer Vorteil besteht darin, dass Sie Code erstellen und im Handumdrehen mit einem Webbrowser-Client namens Webrepl ändern können. (Versuchen Sie, dies in Arduino zu tun.) Sie können Sensordaten auch in Echtzeit auf Webrepl anzeigen, anstatt sich auf die Datenprotokollierung oder einen LED-Bildschirm in Arduino zu verlassen.

Was ist ESP8266?

Kurz gesagt, stellen Sie sich es als Arduino mit integrierter Netzwerkfähigkeit vor. Sie können die Arduino IDE verwenden, um ESP8266-Boards in C/C++ zu programmieren, oder Sie können sie mit NodeMCU oder MicroPython flashen. In diesem Projekt werde ich MicroPython auf eine ESP8266-Platine flashen.

Ich habe mich für ein WEMOS D1 entschieden, das auf ESP8266-12EX basiert, für dieses einfache Projekt, bei dem ich ein 2WD-Auto mit einem Webbrowser navigiere. Es gibt andere Boards, die für MicroPython entwickelt wurden, aber ich wollte etwas billiges, das ich wegwerfen könnte, wenn es nicht meinen Kriterien entspricht. Wie erwartet erfüllte es alle meine Anforderungen und höchstwahrscheinlich werde ich WeMos und Micropython in zukünftige Projekte einbeziehen.

Schritt 1: Teile

Teile
Teile
Teile
Teile
Teile
Teile
Teile
Teile
  • Wemos D1 oder alle ESP8266-basierten Boards
  • Motorschild (ich verwende einen billigen L293D von AliExpress)
  • Batteriehalter für 4 x AA und 9V (4 x AA Batterien sind für Motoren und 9V für das Wemos Board)
  • 2WD Autochassis
  • Dupont-Kabel

Möglicherweise benötigen Sie einen Lötkolben, einen Schraubendreher und eine Klebepistole, um alles zusammenzusetzen.

Schritt 2: Hardware-Montage

Hardware-Montage
Hardware-Montage
Hardware-Montage
Hardware-Montage
Hardware-Montage
Hardware-Montage

Montieren Sie zuerst das Chassis gemäß der Anleitung.

Kleben Sie dann die anderen Komponenten wie gezeigt mit Heißkleber.

Motordrähte sollten an die Motorklemmen gelötet werden und Heißkleber verwenden, um die Klemmenverbindungen zu verstärken.

Befestigt einen kleinen Schalter am 4AA Batteriehalter. Dadurch wird die Stromzufuhr zum Motorschild ein- und ausgeschaltet.

Schritt 3: Verkabelung

Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung

Folgen Sie meinem Schaltplan wie gezeigt.

Wemos zum Motorschild:

D1 IN2

D2 IN1 D3 IN4 **überspringen D4 D5 IN3 GND -> GND

Motorschild zu Motor/Leistung:

A-Klemme -> Linker Motor

B-Klemme -> Rechter Motor VCC -> Batterie (+) GND -> Batterie (-)

Schritt 4: MicroPython-Installation

Erstens verfügt Wemos über einen seriellen/USB-Chip basierend auf CH304G. Dies ist der gleiche Chip, der in billigen Arduino-Klonen zu finden ist und Sie müssen einen geeigneten Treiber für Mac oder PC installieren. Befolgen Sie die Anweisungen auf dieser Website, um den Treiber zu installieren.

Verbinden Sie Wemos mit Ihrem Computer und bestätigen Sie, dass Ihr Computer Wemos erkennen kann. Führen Sie auf einem Mac den folgenden Befehl aus und Sie sehen ein Gerät namens /dev/tty.wchusbserial640.

$ ls -lt /dev/tty* | Kopf

crw-rw-rw- 1 Wurzelrad 17, 4 2. März 23:31 /dev/tty.wchusbserial640

Wenn Sie auf einem PC sind, können Sie dieses Instructable als Referenz verwenden.

Als Nächstes müssen Sie Python 2 oder 3 auf Ihrem Computer einrichten, da das Flash-Tool esptool.py auf Python basiert. Während in der MicroPython-Anleitung möglicherweise angegeben wird, dass das Tool nur mit Python 2.7 funktioniert, konnte ich dies in Python 3 ohne Probleme ausführen. Laden Sie das neueste Python von https://www.python.org herunter und befolgen Sie die Installationsanweisungen für Ihren PC oder Mac.

Zuletzt müssen Sie MicroPython auf Wemos installieren. Die MicroPython-Site bietet ein hervorragendes Tutorial zum Einrichten von MicroPython auf dem ESP8266. Folgen Sie einfach den Installationsanweisungen in Erste Schritte mit MicroPython auf dem ESP8266.

Unten sind Befehle, die ich verwendet habe:

$ esptool.py --port /dev/tty.wchusbserial640

esptool.py v1.3 Verbinden…. Cesanta Flasher Stub läuft… Blitz wird gelöscht (dies kann eine Weile dauern)… Löschen dauerte 10,5 Sekunden

$ esptool.py --port /dev/tty.wchusbserial640 write_flash -fm dio -fs 32m -ff 40m 0x00000 esp8266-20170108-v1.8.7.bin

esptool.py v1.3 Verbinden…. Cesanta flasher stub läuft… Flash params auf 0x0240 gesetzt 589824 Bytes bei 0x0 in 50,8 Sekunden (92,8 kbit/s) geschrieben… verlassen…

MicroPython ist jetzt auf Ihrem Board installiert!

Schritt 5: Netzwerk einrichten

Netzwerk einrichten
Netzwerk einrichten

Während MicroPython jetzt auf Ihrem Wemos installiert ist, ist es noch nicht mit Ihrem Netzwerk verbunden. Sie müssen zuerst das Netzwerk aktivieren. Führen Sie auf einem Mac den Befehl SCREEN aus, um die serielle Terminalsitzung mit Wemos zu starten.

$ screen /dev/tty.wchusbserial640 115200

Wenn Sie einen leeren Bildschirm sehen, drücken Sie RETURN, um eine Eingabeaufforderung anzuzeigen:

>>

(Hinweis: Zum Beenden geben Sie STRG-A STRG-\ ein)

Lassen Sie uns nun den Webclient-Zugriff aktivieren. Geben Sie "import webrepl_setup" ein, um das Setup-Programm auszuführen. Geben Sie E ein, um WebREPL zu aktivieren, und legen Sie dann das Kennwort fest. Starten Sie neu, um die Änderungen zu aktivieren.

>>webrepl_setup importieren

Autostart-Status des WebREPL-Daemons: deaktiviert Möchten Sie die Ausführung beim Booten (E)aktivieren oder (D)deaktivieren? (Leere Zeile zum Beenden) > E Um WebREPL zu aktivieren, müssen Sie ein Passwort dafür setzen Neues Passwort: xxxxx Passwort bestätigen: xxxxx Änderungen werden nach Neustart aktiviert Möchten Sie jetzt neu starten? (j/n) ja

Laden Sie zuletzt den Webrepl-Client auf Ihren Computer herunter. Dies ist optional, aber der Client wird mit anderen nützlichen Tools geliefert, die Sie später möglicherweise verwenden möchten. Zum Beispiel ist webrepl_cli.py ein Befehl zum Kopieren von Dateien nach Wemos in scp-ähnlicher Syntax. Verwenden Sie git, um den Client herunterzuladen. (Installieren Sie das Git-Tool, wenn Sie es noch nicht haben.)

git-Klon

Öffnen Sie Ihren Webbrowser und geben Sie im URL-Feld den Speicherort der heruntergeladenen Webrepl-Client-Datei ein, z. B.:

file:///Users/xxxxx/wemos/webrepl/webrepl.html

Dies sollte den webrepl-Client in Ihrem Browser anzeigen. Bevor Sie eine Verbindung herstellen können, müssen Sie sich zuerst mit seinem WLAN-Zugangspunkt verbinden. Wenn Sie sich das verfügbare WIFI für Ihren Computer ansehen, sehen Sie, dass ein Netzwerk mit MicroPython-xxxx beginnt. Verbinden Sie sich mit diesem Netzwerk. (Warnung: Sobald Sie eine Verbindung zu diesem Netzwerk herstellen, verlieren Sie Ihren Internetzugang.)

Gehen Sie zurück zu Ihrem webrepl-Client und klicken Sie auf Verbinden. Es sollte zur Eingabe des Passworts auffordern. Geben Sie Ihr Wemos-Passwort ein und Sie sollten sich verbinden.

Willkommen bei MicroPython!

Passwort: WebREPL verbunden >>>

Ihr Wemos läuft noch im AccessPoint-Modus. Dies ist zwar in Ordnung, aber ich bevorzuge es, dass es im Stationsmodus läuft, wo es sich mit meinem Heim-WIFI verbindet, damit mein Computer über das Heim-WIFI darauf zugreifen kann und immer noch Internetzugang hat. Dazu müssen Sie eine Datei namens boot.py mit Netzwerkkonfiguration erstellen und auf Wemos hochladen.

Hier ist ein Beispiel für boot.py. Ändern Sie die ssid und das Passwort in Ihr WIFI-Heimnetzwerk. Außerdem möchte ich ihm eine statische IP von 192.168.0.32 geben. Ändern Sie es in die verfügbare IP-Adresse Ihres Heim-WIFIs.

boot.py (Sie können es von unten herunterladen)

GC importieren

import webrepl def do_connect(): import network sta_if = network. WLAN(network. STA_IF) falls nicht sta_if.isconnected(): print('connecting to network…') sta_if.active(True) sta_if.ifconfig(('192.168. 0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')) sta_if.connect('', '') während nicht sta_if.isconnected(): pass print('network config:', sta_if.ifconfig()) do_connect() webrepl.start() gc.collect()

Verwenden Sie das "Send a File"-Formular des Webrepl-Clients, um Ihre boot.py-Datei an Ihr Wemos zu senden. Drücken Sie die Reset-Taste, um neu zu starten. Wenn Sie mit dem SCREEN-Befehl immer noch über USB verbunden sind, sehen Sie:

Verbindung zum Netzwerk herstellen… Netzwerkkonfiguration: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1') WebREPL-Daemon gestartet auf ws://192.168.4.1:8266 WebREPL-Daemon gestartet auf ws://192.168.0.32:8266 Gestartete webrepl im normalen Modus konnte die Datei 'main.py' zum Lesen von MicroPython v1.8.7-7-gb5a1a20a3 am 09.01.2017 nicht öffnen; ESP-Modul mit ESP8266 Geben Sie "help()" ein, um weitere Informationen zu erhalten. >>>

Dies bestätigt, dass Ihr Wemos mit der IP-Adresse 192.168.0.32 mit Ihrem Heim-WIFI verbunden ist.

Sie können diese IP-Adresse zur Validierung anpingen.

$ping 192.168.0.32

PING 192.168.0.32 (192.168.0.32): 56 Datenbytes

64 Byte aus 192.168.0.32: icmp_seq=0 ttl=255 Zeit=9.334 ms 64 Byte aus 192.168.0.32: icmp_seq=1 ttl=255 Zeit=11.071 ms..

Schritt 6: Hauptprogramm installieren

Hauptprogramm installieren
Hauptprogramm installieren
Hauptprogramm installieren
Hauptprogramm installieren

Zuletzt müssen Sie das Hauptprogramm installieren, das weiterhin auf Ihrem Wemos läuft.

Gehen Sie zurück zu Ihrem Webbrowser und führen Sie das webrepl-Clientprogramm aus. Ändern Sie die IP-Adresse in die IP-Adresse Ihres Wemos. In meinem Fall ist es jetzt 192.168.0.32. Geben Sie Ihr Wemos-Passwort ein und Sie sollten jetzt mit Wemos verbunden sein.

Laden wir das angehängte main.py-Programm hoch. Laden Sie die angehängte Datei auf Ihren Computer herunter. Klicken Sie auf Datei auswählen, um die heruntergeladene main.py auszuwählen, und klicken Sie auf An Gerät gesendet.

Sie müssen die Rest-Taste drücken, um das Programm main.py zu laden. Nachdem Sie die Reset-Taste gedrückt haben, sehen Sie:

Verbindung zum Netzwerk…

Netzwerkkonfiguration: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')

WebREPL-Daemon gestartet am ws://192.168.4.1:8266 WebREPL-Daemon gestartet am ws://192.168.0.32:8266 Gestartet webrepl im normalen Modus Hören, verbinden Sie Ihren Browser mit …

Dies bedeutet, dass Ihr main.py-Programm aktiviert ist und auf Port 80 auflistet.

Öffnen Sie zum Testen Ihren Webbrowser und geben Sie https:// ein.

Dies sollte den Autosteuerungsbildschirm anzeigen, wie im Video gezeigt. Wenn Ihre Kabel richtig angeschlossen sind, senden die Steuertasten die richtigen Signale an Ihre GPIO-Ports, um das Auto zu bewegen.

Schritt 7: Zukünftige Verbesserungen

Die folgenden To-Do-Punkte stehen auf meiner v2-Liste:

  • Verwenden Sie PWM, um die Motordrehzahl zu steuern
  • Webinterface verbessern. Verwenden Sie vielleicht ein REST-Framework. Ich glaube nicht, dass aREST lib derzeit auf MicroPython verfügbar ist, also muss ich es möglicherweise hacken.

Vielen Dank für das Lesen dieses Instructable. Folgen Sie mir auf Facebook, Youtube und Instructables für weitere Projekte in der Zukunft.

Empfohlen: