Loggen met de Wemos D1

Uit RobotMC.be
Ga naar: navigatie, zoeken

De Wemos D1 mini :

Wemos d2.jpg Dit is een goedkoop bordje (4€) met de welbekende ESP8266 chip. Deze chip heeft een revolutie ontketend voor het IOT (Internet of Things) gebeuren. Voor het eerst werd het mogelijk om voor enkele Euros Wifi-verbindingen te realiseren. Maar, belangrijker, ook een spanningsregelaar, een USB-serieel omzetter en een USB-micro aansluiting maken dit ding multi-functioneel !! Ook zijn alle vrijwel alle pinnen naar buiten gevoerd. De 80 MHz processor heeft serieel, I2C, SPI en ook nog een analoge ingang aan boord ! Het bordje kan rechtstreeks vanuit de Arduino omgeving geprogrammeerd worden. Daarnaast bestaan er ook nog verschillende shields voor dit concept.

http://www.ebay.com/itm/NodeMCU-Lua-ESP-12-WeMos-D1-Mini-WIFI-4M-Bytes-Development-Board-Module-ESP8266-/321989574625

Loggen met de Wemos ?

Een niet zo bekende functie van de ESP8266 is dat deze ook als FTP-server kan gebruikt worden. Het geheugen van deze chip bedraagt 4 Mb, waarvan 3 Mb kan gebruikt worden om allerhande files op te slagen. Er bestaat ook een SD-card shield, zodat de opslagruimte eigenlijk onbeperkt is. Het mooie is nu dat deze files draadloos bereikbaar zijn over Wifi, met behulp van een FTP-client op je PC. Ook kan de Arduino-sketch data wegschrijven in dit bereik. In mijn toepassing (GPS-robot) stuur ik via de Rx pin van de Wemos allerhande data door (NMEA-strings, waypoint, kompashoek...). Na een carriage return (\r) gaat dan deze string dan aan een log file toegevoegd worden. De Rx-buffer van de Wemos bedraagt 128 bytes, dus best niet te lange strings zenden zonder \r. Ook mag de data-rate niet te hoog zijn, of je verliest af en toe wat data. Elke 200 ms een string van ca 100 bytes ging probleemloos.

De Rx en Tx zijn aangesloten op de USB-serieel omzetter via een weerstand van 470 ohm. Ook zijn ze rechtstreeks naar buiten gevoerd, zonder serieweerstand dus. De externe aansluiting heeft dus voorrang op de interne USB-serieel. Opgelet, als je de Wemos opnieuw wil flashen, moet je wel de externe Rx afkoppelen !

Logfiles uitlezen

Nadat er gelogd is, wil je natuurlijk je data uitlezen. Dit gaat zeer eenvoudig met een FTP-client. Enkele populaire clients zijn Filezilla en WinSCP. De sketch in de Wemos tracht altijd verbinding te maken met het ingestelde Wifi-netwerk. Ook krijgt hij zo een vast IP-adres toegewezen (voor de telenet gebruikers : alle adressen tussen 192.168.0.1 en .100 zijn hiervoor geschikt, deze worden nooit voor DHCP gebruikt). Indien de Wifi verbinding geslaagd is, kan je via de FTP-client verbinding maken. Opgelet, ook hiervoor is er in de Arduino sketch een gebruiker en een paswoord aangelegd ! Indien het inloggen gelukt is, kan je de file eenvoudig naar je PC kopieren. WinSCP log in.png

De Arduino sketch

De Arduino sketch is erg eenvoudig. Eerst wordt er getracht verbinding te maken met het ingestelde Wifi-netwerk. Daarna wordt er gelogd naar steeds dezelfde file. Volgende instellingen moeten wel vooraf vastgelegd worden in de sketch :

 Wifi-netwerk + paswoord
 IP-adres
 FTP gebruiker + paswoord

Ook moeten er sommige librarys geinstalleerd worden.

Hier vindt je de komplete sketch :

Bestand:Wemos logging.zip

Nog wat info over het file systeem :

https://github.com/esp8266/Arduino/blob/master/doc/filesystem.md

Wifi + Bluetooth ?

Ik had de Wemos vlakbij de BT HC05 geplaatst, maar blijkbaar wordt het Wifi signaal wel gestoord door het BT-signaal ! Er werd geen verbinding opgebouwd indien beide tegelijk ingeschakeld waren. Als je toch beide gelijktijdig wil gebruiken, zorg dan dat er voldoende afstand tussen beide modules is (>20 cm). Je kan eenvoudig testen of de Wemos verbinding heeft : gewoon het IP-adres in de browser ingeven, de Wemos antwoord dan met : "Not found \". Indien de verbinding niet opgebouwd is, zegt de browser "Page not found". Je kan natuurlijk ook "Pingen" naar het IP-adres.

Alternatief kan je nog een LED op een van de vrije pins aansluiten en deze in je sketch aansturen.