Annonse
Wi-Fi er en essensiell bit kit for alle DIY of Internet (IoT) DIY-prosjekter, men vår favoritt Arduino kommer ikke med Wi-Fi, og ved å legge til et Wi-Fi-skjold kan du ta de totale kostnadene til rundt $ 40. Hva om jeg fortalte deg at det er et Arduino-kompatibelt dev-brett med innebygd Wi-Fi for under 10 dollar? 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 blanke hodet til vårt kjære Arduino utviklingsstyre. Er det mulig å bli forelsket i et kretskort?
Fangende navn til side, ESP8266 (også kjent som NodeMCU) ble opprinnelig markedsført som et billig Wi-Fi-tillegg for Arduino-brett, inntil hackersamfunnet skjønte at du kunne kutte Arduino ut av ligningen fullstendig.
På mindre enn ett år har ESP8266 raket i popularitet, og er nå så godt støttet og utviklet at hvis du for øyeblikket bruker Arduino, må du stille deg opp og notere deg. Kjøp en nå, følg deretter sammen med denne guiden 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 kompatible med Lua også (som ser ut som en slanket Python til min nybegynner øyne), men siden vi takler dette fra perspektivet til oss som har lært om Arduino, er det hva vi utelukkende dekker i dag.
Det er ganske mange modeller av ESP8266 rundt nå, men jeg kommer til å gå foran og anbefale denne: ESP-12E (også kjent som NodeMCU 1.0, eller det er den nyeste søsken NodeMCU 2.0).
Det er litt dyrere enn de andre ($ 6,50 sammenlignet med $ 4!), Men inkluderer den serielle driveren som er nødvendig for å programmere brikken, og har en innebygd strømregulator, samt mange IO-pinner. Den støttes bredt og trenger egentlig ikke noe bortsett fra en USB-tilkobling for programmering eller strøm, så det er det enkleste å jobbe med. Hvis du kjøper noe annet ESP8266-kort, kan det hende du trenger en egen 3.3v strømregulator og en passende FTDI-tilkobling for programmering.
Komme i gang med ESP8266-12E og Arduino
Først, installer serielle drivere for dette styret. Du må kanskje deaktiver KEXT-signering hvis du kjører El Capitan på grunn av nye sikkerhetssystemer.
Deretter må vi aktivere støtte for ESP8266 fra Arduino IDEs styreleder. Åpne Innstillinger, og skriv inn følgende URL der det står Ytterligere URL-adresser for styret:
Trykk Ok, og åpne deretter Styrets leder fra Verktøy -> Board meny, søk etter esp8266 og installer plattformen. Du skal nå se et valg for NodeMCU 1.0.
La CPU og laste opp hastigheten som den er, og velg den nylig installerte serielle porten. På Mac vises dette som cu. SLAB_USBtoUART.
Som et første program, vil jeg foreslå den enkle Wi-Fi-skanneren - finn den fra Fil -> Eksempler -> ESP8266WiFi -> WifiScan. Legg merke til at det er ganske tregt å 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 Serial monitor. Du bør se noe som ligner på dette:
Suksess! La oss prøve å koble til en.
Her er en helt enkel barebones-kode for tilkobling til et Wi-Fi-nettverk. Det gjør ikke 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. Last opp, åpne seriekonsollen, og du skal se den kobles til.
#include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; ugyldig oppsett () {Serial.begin (115200); Serial.print ("Connecting to"); Serial.println (ssid); WiFi.begin (ssid, passord); while (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ( ""); } Serial.println (""); Serial.println ("WiFi tilkoblet"); Serial.println ("IP-adresse:"); 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. Vær oppmerksom på at pinnetallene som er referert til i koden er GPIO-tallene, ikke D0-16 som sannsynligvis er skrevet på PCB-kortet. Hvis du absolutt ikke positivt kan finne ut hvorfor en sensor ikke fungerer, har du sannsynligvis blandet stifttallene opp.
Rask Smart Home Sensor med MQTT og DHT11
Her er et praktisk eksempel du kan bruke med en gang for å overvåke hjemmet ditt. Vi legger til en DHT11 temperatur- og fuktighetssensor, og rapporterer deretter verdiene ved å bruke MQTT-protokollen over Wi-Fi-nettverket, i mitt tilfelle til et OpenHAB DIY-hjemmeautomatiseringssystem (hvis ikke, vil du kanskje lese vår nybegynnerveiledning for å få OpenHAB i gang med en Raspberry Pi Komme i gang med OpenHAB Home Automation på Raspberry PiOpenHAB er en moden, åpen kildekode-hjemme-automatiseringsplattform som kjører på en rekke maskinvare og er protokoll agnostisk, noe som betyr at den kan koble seg til nesten all hjemmeautomatiseringsmaskinvare på markedet i dag. Les mer , og del 2, som spesifikt omhandler installere en MQTT-server OpenHAB Begynnerveiledning Del 2: ZWave, MQTT, regler og kartleggingOpenHAB, open source-hjemmeautomatiseringsprogramvaren, overgår langt mulighetene til andre hjemme-automatiseringssystemer på markedet - men det er ikke lett å få satt opp. Faktisk kan det være direkte frustrerende. Les mer ).
Koble DHT-sensoren til på ledningssiden GND, 3.3v, og ~ D4 (eller GPIO 2). Det er alt vi trenger for nå.
nedlasting disse MQTT- og DHT-bibliotekene. Selv om du allerede har dem, last ned disse uansett, sikkerhetskopier det du har, og overskriv med disse. Det siste DHT11-biblioteket fra Adafruit bruker en automatisk algoritme for å bestemme hastigheten der data blir lest fra sensoren, men det er feil på ESP8266, og 90% av tiden resulterer i mislykkede avlesninger.
Med den gamle versjonen 1.0 av biblioteket jeg har inkludert i nedlastingen, kan du manuelt endre timingen: 11 fungerer best for disse ESP2866-brettene. Jeg gikk også gjennom mange eksemplarer av MQTT-biblioteket og prøvde å finne en god Ring tilbake funksjon, til slutt landing på den som er inkludert. Du må starte Arduino IDE på nytt etter at du har erstattet disse.
Her er fullstendig kode for prosjektet. Øverst er alle variablene du trenger å endre, inkludert Wi-Fi-detaljer, MQTT-server (en URL kan brukes i stedet hvis du bruker en skyserver, selv om det ikke er noen autentisering på plass), 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 deretter begynner det viktigste Løkke().
- I løkka poller vi DHT-sensoren hvert 60. sekund og publiserer avlesninger til de aktuelle MQTT-kanalene. Igjen, hvis du finner ut at de fleste av avlesningene resulterer i en feilmelding, har du feil versjon av DHT-biblioteket - nedgrader til v1.0.
- client.loop () overfører kontrollen til MQTT-biblioteket, slik at den kan reagere på innkommende meldinger.
- Det er en beskjed mottatt() fungerer der vi håndterer innkommende meldinger - bare gjør en enkel hvis uttalelse for å sammenligne nyttelasten med meldingen du forventer. Du kan for eksempel bruke dette til å aktivere et stafett.
- Etter å ha kjørt disse i noen dager, fant jeg ut at de tilfeldig ville slutte å fungere - jeg antar at dette er en slags minnelekkasje, men gitt Jeg har ikke kodingsevnen til å takle det, og det kan være med kjernebibliotekene, jeg har valgt en enkel myk tilbakestilling hver dag. Nøyaktig en dag etter at sensornodene først er aktivert, vil de starte på nytt.
- Når du kjøper 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 mot din egen kjente kilde også før du stoler på målingene. Alternativt kan du slå dem med 5V - men må du plassere en 5v-3.3v logisk nivåskifter mellom datapinnen og ESP8266, ellers vil du skade den.
Hvis alt gikk bra, bør du nå motta sensoravlesninger i din MQTT-megler, og kan fortsette med å koble disse til OpenHAB som beskrevet i del 2 av vår nybegynnerguide OpenHAB Begynnerveiledning Del 2: ZWave, MQTT, regler og kartleggingOpenHAB, open source-hjemmeautomatiseringsprogramvaren, overgår langt mulighetene til andre hjemme-automatiseringssystemer på markedet - men det er ikke lett å få satt opp. Faktisk kan det være direkte frustrerende. Les mer , hvor jeg også viste deg hvordan du graferer dataene.
Farvel Arduino, vi elsket deg så. Bare tuller: ikke overalt i huset mitt kan til og med få Wi-Fi, så for de stedene trenger jeg fremdeles et nettverk med Arduino- og RF-mottakere.
For et morsomt prosjekt, sjekk ut hvordan lage en Wi-Fi-knapp med ESP8266 Slik lager du din egen Wi-Fi-tilkoblede knapp med ESP8266I denne opplæringen lærer du hvordan du oppretter en Wi-Fi-aktivert knapp ved å bruke NodeMCU og IFTTT. Les mer .
Men hva vil du lage med ESP8266? Noen prosjekter som bruker ESP8266 vil du ha skrevet opp på MakeUseOf? Gi oss beskjed i kommentarene!
James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.