Inhoudsopgave:

MicroPython IoT Rover gebaseerd op WEMOS D1 (ESP-8266EX): 7 stappen (met afbeeldingen)
MicroPython IoT Rover gebaseerd op WEMOS D1 (ESP-8266EX): 7 stappen (met afbeeldingen)

Video: MicroPython IoT Rover gebaseerd op WEMOS D1 (ESP-8266EX): 7 stappen (met afbeeldingen)

Video: MicroPython IoT Rover gebaseerd op WEMOS D1 (ESP-8266EX): 7 stappen (met afbeeldingen)
Video: MicroPython IoT Rover Based on WeMos D1 (ESP-8266EX) 2024, November
Anonim
Image
Image
MicroPython IoT Rover gebaseerd op WEMOS D1 (ESP-8266EX)
MicroPython IoT Rover gebaseerd op WEMOS D1 (ESP-8266EX)

** Update: ik heb een nieuwe video gepost voor v2 met een lans **

Ik organiseer Robotica-workshops voor jonge kinderen en ik ben altijd op zoek naar goedkope platforms om intrigerende projecten te bouwen. Hoewel Arduino-klonen goedkoop zijn, gebruikt het de C/C++-taal die kinderen niet kennen. Het heeft ook geen ingebouwde wifi, wat een must is voor IoT-projecten. Aan de andere kant, terwijl Raspberry Pi WIFI heeft en kinderen het kunnen programmeren met Python, is het nog steeds een duur platform om slechts enkele GPIO-poorten te bedienen om apparaten aan en uit te zetten. Ik heb iets daartussenin nodig dat zowel WIFI- als Python-mogelijkheden heeft. Het lijkt erop dat ik mijn antwoord vond in MicroPython, geflitst op een goedkoop ESP8266-gebaseerd bord.

Wat is Micropython?

Volgens zijn website is MicroPython een slanke en efficiënte implementatie van de Python 3-programmeertalen die een kleine subset van de Python-standaardbibliotheek bevat en is geoptimaliseerd om te draaien op microcontrollers en in een beperkte omgeving (zoals ESP8266). Het is in wezen Python IDE op een chip. Een groot voordeel is dat u code kunt maken en deze on-the-fly kunt wijzigen met behulp van een webbrowserclient genaamd Webrepl. (Probeer dat maar eens te doen in Arduino.) Je kunt sensorgegevens ook in realtime zien op Webrepl in plaats van te vertrouwen op datalogging of een LED-scherm in Arduino.

Wat is ESP8266?

Kortom, beschouw het als een Arduino met ingebouwde netwerkmogelijkheden. Je kunt de Arduino IDE gebruiken om ESP8266-kaarten in C/C++ te programmeren of je kunt hem flashen met NodeMCU of MicroPython. In dit project flits ik MicroPython op een ESP8266-bord.

Ik besloot een WEMOS D1 te kopen die is gebaseerd op ESP8266-12EX voor dit eenvoudige project waarbij ik met een webbrowser in een 2WD-auto navigeer. Er zijn andere boards die zijn ontworpen voor MicroPython, maar ik wilde iets goedkoops dat ik kon weggooien als het niet aan mijn criteria voldeed. Zoals verwacht voldeed het aan al mijn eisen en hoogstwaarschijnlijk zal ik WeMos en Micropython opnemen in toekomstige projecten.

Stap 1: Onderdelen

Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen
  • Wemos D1 of andere op ESP8266 gebaseerde boards
  • Motorschild (ik gebruik een goedkope L293D van AliExpress)
  • Batterijhouders voor 4 x AA en 9V (4 x AA batterijen zijn voor motoren en 9V is voor het Wemos bord)
  • 2WD autochassis
  • Dupont kabels

Mogelijk heb je een soldeerbout, een schroevendraaier en een lijmpistool nodig om alles in elkaar te zetten.

Stap 2: Hardwaremontage

Hardware-assemblage
Hardware-assemblage
Hardware-assemblage
Hardware-assemblage
Hardware-assemblage
Hardware-assemblage

Monteer eerst het chassis volgens de instructie.

Lijm vervolgens de andere componenten zoals afgebeeld.

Motordraden moeten aan de motorterminals worden gesoldeerd en hete lijm gebruiken om de terminalverbindingen te versterken.

Een kleine schakelaar aangebracht op de 4AA-batterijhouder. Hierdoor wordt de stroomtoevoer naar het motorschild in-/uitgeschakeld.

Stap 3: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Volg mijn bedradingsschema zoals afgebeeld.

Wemos naar Motor Shield:

D1 IN2

D2 IN1 D3 IN4 **D4 D5 IN3 GND overslaan -> GND

Motorschild naar motor/vermogen:

A-terminal -> Linkermotor

B-aansluiting -> Rechter motor VCC -> Accu (+) GND -> Accu (-)

Stap 4: MicroPython-installatie

Ten eerste heeft Wemos een seriële/USB-chip op basis van CH304G. Dit is dezelfde chip als in goedkope Arduino-klonen en je moet een goede driver voor Mac of pc installeren. Volg de instructies op deze site om de driver te installeren.

Sluit Wemos aan op uw computer en bevestig dat uw computer Wemos kan detecteren. Voer op Mac de volgende opdracht uit en u ziet een apparaat met de naam /dev/tty.wchusbserial640.

$ ls -lt /dev/tty* | hoofd

crw-rw-rw-1 wortelwiel 17, 4 maart 2 23:31 /dev/tty.wchusbserial640

Als u een pc gebruikt, kunt u deze Instructable als referentie gebruiken.

Vervolgens moet u Python 2 of 3 op uw computer instellen, aangezien de flash-tool esptool.py is gebaseerd op Python. Hoewel de MicroPython-gids kan stellen dat de tool alleen met Python 2.7 werkt, kon ik dat zonder problemen in Python 3 uitvoeren. Download de nieuwste Python van https://www.python.org en volg de installatie-instructies voor uw pc of Mac.

Ten slotte moet u MicroPython op Wemos installeren. De MicroPython-site heeft een uitstekende tutorial over het instellen van MicroPython op ESP8266. Volg gewoon de installatie-instructies in Aan de slag met MicroPython op de ESP8266.

Hieronder staan commando's die ik heb gebruikt:

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

esptool.py v1.3 Verbinding maken…. Cesanta flasher stub aanzetten… Flash wissen (dit kan even duren)… Wissen duurde 10,5 seconde

$ 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 Verbinding maken…. Cesanta flasher stub uitvoeren… Flash parameters ingesteld op 0x0240 Schreef 589824 bytes op 0x0 in 50,8 seconden (92,8 kbit/s)… Verlaten…

MicroPython is nu op je bord geïnstalleerd!

Stap 5: Netwerk instellen

Netwerk instellen
Netwerk instellen

Hoewel MicroPython nu op uw Wemos is geïnstalleerd, is het nog niet verbonden met uw netwerk. U moet eerst het netwerk inschakelen. Voer op Mac de opdracht SCREEN uit om de seriële terminalsessie naar Wemos te starten.

$ scherm /dev/tty.wchusbserial640 115200

Wanneer u een leeg scherm ziet, drukt u op RETURN om een prompt te zien:

>>

(Opmerking: typ CTRL-A CTRL-\ om af te sluiten)

Laten we nu webclienttoegang inschakelen. Typ "import webrepl_setup" om het installatieprogramma uit te voeren. Voer E in om WebREPL in te schakelen en stel vervolgens het wachtwoord in. Start opnieuw op om wijzigingen te activeren.

>>webrepl_setup importeren

WebREPL-daemon auto-start status: uitgeschakeld Wilt u deze bij het opstarten aan- of uitzetten? (Lege regel om af te sluiten) > E Om WebREPL in te schakelen, moet u er een wachtwoord voor instellen Nieuw wachtwoord: xxxxx Bevestig wachtwoord: xxxxx Wijzigingen worden geactiveerd na opnieuw opstarten Wilt u nu opnieuw opstarten? (j/n) ja

Download ten slotte de Webrepl-client naar uw machine. Dit is optioneel, maar de client wordt geleverd met andere handige tools die u later misschien wilt gebruiken. Webrepl_cli.py is bijvoorbeeld een opdracht om bestanden naar Wemos te kopiëren in scp-achtige syntaxis. Gebruik git om de client te downloaden. (Installeer de git-tool als je die nog niet hebt.)

git kloon

Open uw webbrowser en voer in het URL-veld de locatie van uw gedownloade webrepl-clientbestandslocatie in, zoals:

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

Dit zou de webrepl-client in uw browser moeten weergeven. Voordat u er verbinding mee kunt maken, moet u eerst verbinding maken met het WiFi-toegangspunt. Als je kijkt naar beschikbare WIFI voor je computer, zie je dat een netwerk begint met MicroPython-xxxx. Maak verbinding met dat netwerk. (Waarschuwing: zodra u verbinding maakt met dat netwerk, verliest u uw internettoegang.)

Ga terug naar je webrepl-client en klik op Verbinden. Het zou om een wachtwoord moeten vragen. Voer uw Wemos-wachtwoord in en u moet verbinding maken.

Welkom bij MicroPython!

Wachtwoord: WebREPL verbonden >>>

Uw Wemos draait nog steeds in de AccessPoint-modus. Hoewel dit in orde is, geef ik er de voorkeur aan dat het in de stationsmodus wordt uitgevoerd, waar het verbinding maakt met mijn wifi thuis, zodat mijn computer er toegang toe heeft via wifi thuis en nog steeds internettoegang heeft. Om dat te doen, moet u een bestand maken met de naam boot.py met netwerkconfiguratie en dit uploaden naar Wemos.

Hier is een voorbeeld van boot.py. Wijzig de ssid en het wachtwoord in uw wifi-thuisnetwerk. Ik wil het ook een statisch IP-adres geven van 192.168.0.32. Wijzig het in het beschikbare IP-adres van uw wifi thuis.

boot.py (u kunt het hieronder downloaden)

import gc

import webrepl def do_connect(): import netwerk sta_if = netwerk. WLAN(netwerk. STA_IF) indien niet sta_if.isconnected(): print('verbinden met netwerk…') 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('', '') while not sta_if.isconnected(): pass print('network config:', sta_if.ifconfig()) do_connect() webrepl.start() gc.collect()

Gebruik het formulier "Send a File" van de Webrepl-client om uw boot.py-bestand naar uw Wemos te verzenden. Druk op de reset-knop om opnieuw op te starten. Als je nog steeds verbonden bent via USB met de opdracht SCREEN, zie je:

verbinding maken met netwerk… netwerkconfiguratie: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1') WebREPL-daemon gestart op ws://192.168.4.1:8266 WebREPL-daemon gestart op ws://192.168.0.32:8266 Gestart webrepl in normale modus kon bestand 'main.py' niet openen voor het lezen van MicroPython v1.8.7-7-gb5a1a20a3 op 2017-01-09; ESP-module met ESP8266 Typ "help()" voor meer informatie. >>>

Hiermee wordt gevalideerd dat uw Wemos is verbonden met uw wifi-thuis via het ipad 192.168.0.32.

U kunt dat IP-adres pingen om te valideren.

$ 192.168.0.32 pingen

PING 192.168.0.32 (192.168.0.32): 56 databytes

64 bytes van 192.168.0.32: icmp_seq=0 ttl=255 tijd=9.334 ms 64 bytes van 192.168.0.32: icmp_seq=1 ttl=255 tijd=11.071 ms..

Stap 6: Hoofdprogramma installeren

Hoofdprogramma installeren
Hoofdprogramma installeren
Hoofdprogramma installeren
Hoofdprogramma installeren

Ten slotte moet u het hoofdprogramma installeren dat op uw Wemos blijft draaien.

Ga terug naar uw webbrowser en voer het webrepl-clientprogramma uit. Wijzig het IP-adres in het IP-adres van uw Wemos. In mijn geval is het nu 192.168.0.32. Voer uw Wemos-wachtwoord in en u zou nu verbonden moeten zijn met Wemos.

Laten we het bijgevoegde main.py-programma uploaden. Download het bijgevoegde bestand naar uw computer. Klik op Bestand kiezen om de gedownloade main.py te kiezen en klik op Verzonden naar apparaat.

U moet op de knop Rest drukken om het main.py-programma te laden. Nadat u op de Reset-knop hebt gedrukt, ziet u:

verbinding maken met netwerk…

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

WebREPL-daemon gestart op ws://192.168.4.1:8266 WebREPL-daemon gestart op ws://192.168.0.32:8266 Webrepl gestart in normale modus Luisteren, verbind uw browser met …

Dit betekent dat uw main.py-programma is geactiveerd en wordt weergegeven op poort 80.

Om te testen, opent u uw webbrowser en voert u https:// in

Dit zou het autobedieningsscherm moeten weergeven zoals weergegeven in de video. Als uw draden goed zijn aangesloten, sturen bedieningsknoppen de juiste signalen naar uw GPIO-poorten om de auto te verplaatsen.

Stap 7: Toekomstige verbeteringen

De volgende taken staan op mijn v2-lijst:

  • Gebruik PWM om de motorsnelheid te regelen
  • Verbeter de webinterface. Gebruik misschien een aREST-framework. Ik geloof niet dat aREST lib op dit moment beschikbaar is op MicroPython, dus misschien moet ik het hacken.

Dank u voor het lezen van deze Instructable. Volg mij op Facebook, Youtube en Instructables voor meer projecten in de toekomst.

Aanbevolen: