Møt Arduino Killer: ESP8266

Hva om jeg fortalte deg at det er et Arduino-kompatibelt dev-kort med innebygd Wi-Fi for mindre enn $ 10? Vel, det er det.

Hva om jeg fortalte deg at det er et Arduino-kompatibelt dev-kort med innebygd Wi-Fi for mindre enn $ 10?  Vel, det er det.
Annonse

Wi-Fi er en viktig del av Kit for DIY-prosjekter, men vår favoritt Arduino kommer ikke med Wi-Fi, og å legge til i et Wi-Fi-skjold kan bringe totalprisen til rundt $ 40. Hva om jeg fortalte deg at det er et Arduino-kompatibelt dev-kort med innebygd Wi-Fi for mindre enn $ 10? Vel, det er det.

Møt Arduino Killer: ESP8266. Det var bare et spørsmål om tid før kronen ble stjålet fra det skinnende hodet til vår kjære Arduino utviklingsbrett. Er det mulig å bli forelsket i et kretskort?

Fangende navn til side, ESP8266 (også kjent som NodeMCU) ble opprinnelig markedsført som en billig Wi-Fi-tillegg for Arduino-kort, til hackersamfunnet innså at du kunne kutte Arduino helt ut av ligningen.

På mindre enn et år har ESP8266 raket i popularitet, og er nå så godt støttet og utviklet at hvis du for tiden bruker Arduino, må du stå opp og ta notat. Kjøp en nå, følg deretter med denne veiledningen for å komme i gang med programmering av ESP8266 - alt fra den kjente Arduino IDE.

Du er ikke begrenset til å bruke Arduino IDE selvfølgelig - de er også kompatible med Lua (som ser ut som en slanket Python til mine nybegynnere øyne), men siden vi takler dette fra perspektivet til dem som har lært oss på Arduino, det er det vi skal dekke utelukkende i dag.

Det er ganske mange modeller av ESP8266 rundt nå, men jeg skal gå videre og anbefale denne: ESP-12E (også kjent som NodeMCU 1.0, eller den nyeste søsken NodeMCU 2.0).

Det er litt dyrere enn de andre ($ 6, 50 sammenlignet med $ 4!), Men inkluderer seriell driver som trengs for å programmere brikken, og har en innebygd strømregulator, så vel som mange IO-pinner. Den støttes mye og trenger ikke noe annet enn en USB-tilkobling for programmering eller strøm, så det er lettest å jobbe med. Hvis du kjøper noen annen type ESP8266-kort, kan det hende du trenger en separat 3.3v strømregulator og en egnet FTDI-tilkobling for programmering.

Komme i gang med ESP8266-12E og Arduino

Først installerer du serielle drivere for dette kortet. Det kan hende du må deaktivere KEXT-signering hvis du kjører El Capitan på grunn av nye sikkerhetssystemer.

Deretter må vi aktivere støtte for ESP8266 fra Arduino IDEs styreforvalter. Åpne preferanser, og skriv inn følgende nettadresse der det står Ytterligere styringsadresser :

 http://arduino.esp8266.com/package_esp8266com_index.json 

Arduino Board Manager URLS

Hit OK, åpne deretter styreleder fra Verktøy -> styremenyen, søk etter esp8266 og installer plattformen. Du bør nå se et valg for NodeMCU 1.0.

velg styret

La CPU og opplastingshastighet være, og velg din nyinstallerte seriell port. På Mac vises dette som cu.SLAB_USBtoUART .

Som et første program, foreslår jeg den enkle Wi-Fi-skanneren - finn den fra Fil -> Eksempler -> ESP8266WiFi -> WifiScan . Vær oppmerksom på at det er ganske sakte å laste opp, men til slutt vil det si "ferdig opplasting" og på det tidspunktet (ikke før, eller du vil bryte opplastingsprosessen), kan du åpne seriell skjerm. Du bør se noe som ligner på dette:

wifi skanningstest esp8266
Suksess! La oss nå prøve å koble til en.

Her er en helt enkel barebones-kode for tilkobling til et Wi-Fi-nettverk. Det gjør ikke noe annet enn bare å koble til, men det er noe du kan legge til for senere. Bare husk å endre YOUR_SSID og YOUR_PASSWORD til Wi-Fi-detaljene dine. Last opp, åpne seriekonsollen, og du bør se den koble til.

#include const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { } 

Er det ikke bra hvor latterlig enkelt det var?

Før vi fortsetter, her er pinout diagrammet - det kan komme til nytte senere. Merk at PIN-tallene som refereres til i koden, er GPIO-tallene, ikke D0-16 sannsynligvis skrevet på PCB-kortet ditt. Hvis du absolutt ikke kan finne ut hvorfor en sensor ikke virker, har du sikkert blandet tallene opp.

NodeMCU__v1.0_pinout

Quick Smart Home Sensor med MQTT og DHT11

Her er et praktisk eksempel du kan bruke til å bruke umiddelbart for å overvåke ditt hjem. Vi legger til en DHT11 temperatur- og fuktighetssensor, og rapporterer verdiene ved hjelp av MQTT-protokollen over Wi-Fi-nettverket, i mitt tilfelle til et OpenHAB DIY hjemmeautomatiseringssystem (hvis ikke, vil du kanskje lese vår nybegynnerguide til få OpenHAB oppe og kjøre på en Raspberry Pi Komme i gang med OpenHAB Hjemmeautomatisering på Raspberry Pi Komme i gang med OpenHAB Hjemautomatisering på Raspberry Pi OpenHAB er en moden, åpen kildekode hjemmeautomatiseringsplattform som kjører på en rekke maskinvare og er protokoll agnostisk, noe som betyr at den kan kobles til nesten hvilken som helst hjemmevirksomhets maskinvare på markedet i dag. Les mer og del 2, som omhandler spesielt å installere en MQTT-server. OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler og kartlegging OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler og kartlegging OpenHAB, open source hjemmeautomatiseringsprogramvaren, overskrider kapasiteten til andre hjemmeautomatiseringssystemer på markedet - men det er ikke lett å sette opp. Faktisk kan det være rett og slett frustrerende. Les mer ).

På ledningssiden kobler du DHT-sensoren til GND, 3.3v og ~ D4 (eller GPIO 2). Det er alt vi trenger for nå.

Last ned disse MQTT- og DHT-bibliotekene. Selv om du allerede har dem, kan du laste ned disse likevel, sikkerhetskopiere det du har, og overskrive med disse. Det nyeste DHT11-biblioteket fra Adafruit bruker en automatisk algoritme for å bestemme hastigheten for dataene som leses fra sensoren, men det er buggy på ESP8266 og 90% av klokkeslettene resulterer i mislykkede avlesninger.

Med den gamle versjonen 1.0 av biblioteket jeg har tatt med i nedlastingen, kan du manuelt endre timingen: 11 fungerer best for disse ESP2866-kortene. Jeg gikk også gjennom mange kopier av MQTT-biblioteket, og prøvde å finne en en god tilbakeringingsfunksjon, til slutt landing på den medfølgende. Du må starte Arduino IDE etter at du har erstattet disse.

Her er den komplette koden for prosjektet. Øverst er alle variablene du må endre, inkludert Wi-Fi-detaljer, MQTT-server (en URL kan brukes i stedet hvis du bruker en skysserver, selv om det ikke finnes noen autentisering) og kanaler for å publisere data på.

Slik fungerer det og noen få notater:

  • Først kobler vi til Wi-Fi, deretter til MQTT-serveren, og starter deretter hovedløkken ().
  • I løkken, poller vi DHT-sensoren hvert 60 sekund og publiserer avlesninger til de relevante MQTT-kanalene. Igjen, hvis du finner det meste av lesingene som resulterer i en feilmelding, har du feil versjon av DHT-biblioteket - nedgrader til v1.0.
  • client.loop () overfører kontroll til MQTT-biblioteket, slik at det kan reagere på innkommende meldinger.
  • Det er en messageReceived () -funksjon der vi håndterer innkommende meldinger - bare gjør en enkel hvis setning for å sammenligne nyttelastet med meldingen du forventer. Du kan bruke dette til å aktivere et relé, for eksempel.
  • Etter å ha kjørt disse i noen dager, fant jeg at de ville tilfeldig stoppe med å jobbe - jeg antar at dette er en slags minnelekkasje, men gitt at jeg ikke har kodingsevnen til å håndtere det, og det kan være med kjernebibliotekene, jeg Jeg har valgt en enkel, myk tilbakestilling hver dag. Nøyaktig en dag etter at sensorene først blir aktivert, vil de starte på nytt.
  • Når du kjører disse billige DHT11 modulene fra 3.3v, er fuktighetsverdiene langt lavere enn de burde være. Jeg har løst dette med en enkel multiplikasjon, og kalibrert mot en kommersiell sensor. Jeg vil råde deg til å bekrefte din egen kjente kilde også før du stoler på lesningene. Alternativt må du koble dem med 5V - men du må plassere en 5v-3.3v logisk nivåveksler mellom datapinnen og ESP8266, eller du vil skade den .

Hvis alt gikk bra, bør du nå motta sensoravlesninger i MQTT-megleren, og kan fortsette å koble disse til OpenHAB som beskrevet i del 2 av vår nybegynners guide. OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler og kartlegging OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler og kartlegging OpenHAB, åpen kildekode-hjemmeautomatiseringsprogramvare, overskrider kapasiteten til andre hjemmeautomatiseringssystemer på markedet - men det er ikke lett å få oppsett. Faktisk kan det være rett og slett frustrerende. Les mer, der jeg også viste deg hvordan du skal grafere dataene.

humdity graph fra openhab

Farvel Arduino, vi elsket deg så. Bare tuller: Ikke overalt i huset mitt kan jeg til og med få Wi-Fi, så for de stedene jeg vil fortsatt trenger et nettverksnettverk med Arduino og RF-mottakere. Men hva vil du gjøre med ESP8266? Eventuelle prosjekter som bruker ESP8266, vil du gjerne se oppskrevet på MakeUseOf? Gi oss beskjed i kommentarene!

In this article