torsdag 5. november 2015

NodeMcu + Arduino IDE + Thingspeak = Sant

WOHOO, NANANANANANANANNAA!

Det er ikke første gang jeg sender til det store Internettet fra en mikrokontroller, det gjorde jeg først med en Arduino koblet mot en Rasberry Pi 2 gjennom en trådløs seriell bro. På RPIen kjrøte da pythonscript som sendte videre data.

Hele mikrokontrollergamet ble jeg kjent med gjennom www.friskby.no, men jeg har jo som alltid den utforskende egenskapen som jeg er kjent for å ha :-P Derfor må jeg teste alt mulig rart!

Hvor minimalistisk er ikke en NodeMCU med Arduino IDE, kodet opp til å sende rett til thingspeak.com? En alt-i-ett enhet! (med unntak av sensorer)



Jeg tok en bacon på bildet for å illustrere hvor godt dette virker.



Jeg kjører nå DHT22 rett inn i thingspeak :-) Se gjerne beviset her: https://thingspeak.com/channels/64263

Alternativt kan de late bare beskue bildet mitt:
ESP8266 er dårlig navn på sensoren, jeg må nok lage en kanal per sensor og navngi
kanalene etter sensortype. Det er vel mer naturlig enn å navngi mikrokontrolleren :P

Komme i gang med Arduino IDE sammen med NodeMCU

Mitt blogginnlegg om å komme i gang med NodeMCU hadde jeg trodd skulle fortsatt med koding i LUA-script. Men det var ikke så bra å kode i det språket. Jeg vurderte å teste Expressif også, men til syvende og sist fant jeg ut at jeg skulle teste Arduino IDE sammen med NodeMCU.

Årsaken for at jeg fant ut at jeg måtte gå videre var:

  • Merkelige feil i de få bibliotekene som eksisterer
  • Ikke like mange biblioteker som Arduino har
Det er egentlig ikke så "alvorlige" feil, men det er jo feil som gjør at man river seg i hodet.
Jeg prøvde til og med å gå over på DEV-firmware, men det hjalp ikke. Jeg kom meg litt videre, men fikk bare nye feil og merkeligheter :-P



Fremgangsmåte for å få NodeMCU DEV V2 til å virke i Arduino IDE

Først åpner du github / esp8266 / Arduino og kopier stien til board manager. Per i dag er den:
http://arduino.esp8266.com/stable/package_esp8266com_index.json , denne må legges inn i File>Preferences>Additional boards manager URL.
Her ser man boards manager med stien.

Når dette er gjort, tar man å trykker OK.

Søk etter ESP i Tools > Board > Boards manager, velg
så installer.

Når den er ferdig, slår du av Arduino IDE. Slå deretter på Arduino IDE, velg Tools> Board > NodeMcu V1 (ESP12E Module). Deretter tar du Tools > Programmer > "USBasp".

Nå kan du se om det virker, ta File > Example > DHT Sensor Library > DHT Tester.
Hold inne knappen "FLASH" på NodeMCU mens du laster opp fra Arduino IDE.

Hvis du får feilmelding med:
packages/esp8266/tools/xtensa-lx106-elf-gcc
Da må du laste ned en fil manuelt, se: https://github.com/esp8266/Arduino/issues/612.
På windows vil du laste ned libm.a og legge den inn i:
C:\Users\DITTBRUKERNAVN\AppData\Roaming\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9\xtensa-lx106-elf\lib

NB! Filen er pakket (to ganger), den kan pakkes ut med 7-zip.

Slå nå av Arduino IDE og slå den på igjen.
Prøv igjen å laste opp kode samtidig som at du holder inne "FLASH".

Hvis du nå har ingen problemer, er det tid for kaffe. Hvis ikke, må du mest sannsynlig legge inn følgende i boards.txt:

I Windows må du først åpne for eksempel notepad++ som administrator, deretter åpne filen, legge det inn på bunnen og lagre. Deretter restarter du Arduino IDE nok en gang og prøver igjen.

Nå bør det virke :-) Hvis ikke, må du selge PCen din på finn.

Last opp din første kode på NodeMCU med Arduino IDE!

Etter feilsøkingen ovenfor kan du laste opp din første kode,
hold inne flash-knappen på NodeMCU og trykk på last opp i Arduino IDE

Nå kan du åpne konsollet (Tools>Serial Monitor). Følg med på magien:


For at du skal få opp noe her, må du jo nødvendigvis ha en DHT22 eller en DHT11 sensor, samt du må velge riktig sensortype i koden og koble den riktig opp på NodeMCU. Jeg brukte DHT22 laget for Arduino (shield), den skal ha +5V, Jord og en IO-port. Jeg koblet jord på GND, +5V på SD2 og D4 brukte jeg som IO-pin.

Komme i gang med NodeMCU

Når du har kjøpt din egen NodeMCU eller lånt en av en venn, kan du endelig komme i gang.
Spørsmålet du kanskje da har, er hvordan du kommer i gang.. Hva er de første stegene?

Jeg har derfor laget en liten guide her, jeg har prøvd å holde den lettfattelig med illustrasjoner og forklaringer. Etter denne guiden er på plass, kommer jeg mest sannsynlig til å lage noe i praksis.

Den første guiden handler bare om å få på plass det basiske: kommunikasjon mellom deg og NodeMCU og oppkobling mellom NodeMCU og ditt nettverk. I god tradisjon vil jeg også oppgradere firmware (fastvare) på NodeMCU før jeg starter.

Guiden min tar for seg at du har kjøpt en NodeMCU med innebygget USB-kontroller, hvis det ikke er tilfelle må du nesten ha en FTDI->USB adapter og koble rx>tx og tx>rx.. Men nok småpreik, jeg gjør resten av guiden gjennom bilder :-)

Guiden vil være ca tilsvarende for Windows, OSX, Ubuntu og andre operativsystemer.

Kom i gang

Det aller første du gjør, er å gå inn på github/nodemcu




Først kobler du NodeMCU med en MicroUSB kabel til din PC
Programmet lastes ned og kjøres.
Du trykker egentlig bare "flash".
Du finner det på 
github / nodemcu-flasher

Deretter må du inn å finne comport (jeg hadde COM6) som
NodeMCU viser deg.  I dette eksempelet bruker jeg putty.
Velg Serial i radiobutton til høyre, fyll inn riktig tall for COM-port.
Baud må mest sannsynlig stå på 9600.

Når de to stegene ovenfor er gjort, har du følgende kommandoer du kan skrive inn i putty:
wifi.setmode(wifi.STATION)
wifi.sta.config("minWiFiSSID","MittWiFiPassord")
Deretter sjekker du at du fikk en ip-adresse av din router:
print(wifi.sta.getip())
Du bør få ut:
<ip adresse> <nettmaske> <gateway>

Så enkelt var det!


Heartbeat ("hjerteslag") fra WiFi-koblingen vises
i form av en liten blinkende LED.


NB! Pro tip:
Hvis du synes Putty er vanskelig og har erfaring med Arduino IDE, er det ingen ting som tilsier at du ikke kan bruke Arduino IDE sammen med NodeMCU. Du starter i så fall Arduino, velger COM-port og åpner konsollet. Sett NL + CR som linjeendelse nede i høyre hjørnet.


Videre læring

onsdag 4. november 2015

Hardwarefest!

Selv om jeg er glad i å programmere i mykvare, er det alltid morsomt med harde pakker. I dag fikk jeg flere hardware-pakker i posten! Jeg lar dette bli et innlegg hvor jeg viser de uten alt for mye tekst.


DHT22 er en fukt og temperatursensor, denne er noe bedre enn
DHT11 som jeg har flere av allerede.


Dette er en bevegelsessensor som jeg skal leke med

NodeMCU (ESP8266) er en mikrokontroller med innebygd
WiFi, det gir en fin IoT (Internet Of Things) enhet. Den er også
kompatibel med Arduino

Arduino Pro Micro, det er min minste Arduino hittil.
Det skal bli morsomt å lodde på de headerne :-)
Ble litt overrasket over hvor mye mindre den er enn Nano V3.

Utviklingskort for ESP8266, gjør det enklere å koble på sensorer.
Bakside av utviklingskort for ESP8266, glemte å tenke på
at jeg må ha en strømforsyning på minst 6V :-P
Må se om den kan mates med 5V via headers.