Viser innlegg med etiketten NodeMCU. Vis alle innlegg
Viser innlegg med etiketten NodeMCU. Vis alle innlegg

mandag 14. desember 2015

Hacke en ikealampe med Arduino og Adafruit Neopixel klone - Video!

Som alltid åpnet jeg posten og til min store glede var det elektronikk der! Min NeoPixel klone var kommet frem, helt fra min gode venn (av mange andre) som sender meg gaver fra Kina.

Når det er sagt, hva er neopixel? Jo, det er en ring med RGB-led som er unikt adresserbare.
Dette betyr at du gjennom 3 kabler (data + strøm + jord) kan styre/adressere "uendelig" med leds.

Jeg kjører her en demo på en ESP8266 (NodeMCU V1), men i praksis kan man gjøre dette på nesten hva som helst av Arduinokompatible enheter.

For å teste dette veldig kjapt, tok jeg å lastet ned biblioteket til Adafruit og la det inn i Arduino library-mappen. Deretter limte jeg inn konstantene for å mappe om til riktig pinout på ESP8266:

#define NODEMCU_D0 16
#define NODEMCU_D1 5
#define NODEMCU_D2 4
#define NODEMCU_D3 0
#define NODEMCU_D4 2
#define NODEMCU_D5 14
#define NODEMCU_D6 12
#define NODEMCU_D7 13
#define NODEMCU_D8 15
#define NODEMCU_D9 3
#define NODEMCU_D10 1
#define NODEMCU_D12 10

Jeg valgte å deretter definere pinout i Adafruit-koden:
#define PIN            4
Som man ser der oppe, er 4 = D2 (altså plugger jeg da data-linjen inn på D2 på ESP8266).

Sketchen jeg testet, er den som heter "buttoncycler" som man finner under examples  etter man har lagt inn library. Jeg måtte derfor definere opp en knapp også:
#define BUTTON_PIN   5    
Vi ser der oppe at Pin 5 på Arduino tilsvarer D1 på ESP8266, altså tok jeg en kabel på D1 som er han i andre enden. Jeg har ikke knapp tilgjengelig så jeg tok enda en kabel på GND (jord). Når koden er som den er, vil de to kablene kortsluttet for et øyeblikk tilsvare en "momentary switch", en øyeblikksbryter. Sketchen vil starte animasjoner, den cycler gjennom 10 moduser.

Man må også definere antall piksler man har, jeg har her 24 piksler:
#define PIXEL_COUNT 24

Ellers er det egentlig ikke så mye å gjøre, last det over på NodeMCUen og lek i vei :-)

Her er demovideoen når jeg testet

Relaterte lenker

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