Reklame

Wi-Fi er en vigtig bit kit til ethvert Internet of Things (IoT) DIY-projekter, men vores foretrukne Arduino leveres ikke med Wi-Fi, og ved at tilføje et Wi-Fi-skjold kan de samlede omkostninger være på omkring $ 40. Hvad hvis jeg fortalte dig, at der er et Arduino-kompatibelt dev-kort med indbygget Wi-Fi til mindre end $ 10? Det er der.

Mød Arduino Killer: ESP8266. Det var kun et spørgsmål om tid, før kronen blev stjålet fra det blanke hoved på vores kære Arduino-udviklingsbord. Er det muligt at blive forelsket i et kredsløbskort?

Fangende navne til side, ESP8266 (også kendt som NodeMCU) blev oprindeligt markedsført som en billig Wi-Fi-tilføjelse for Arduino-tavler, indtil hackersamfundet indså, at du kunne skære Arduino ud af ligningen helt.

På mindre end et år har ESP8266 været i popularitet, og er nu så godt understøttet og udviklet, at hvis du i øjeblikket bruger Arduino, skal du stå op og tage note. Køb en nu, følg derefter sammen med denne vejledning for at komme i gang med programmeringen af ​​din ESP8266 - alt sammen fra den velkendte Arduino IDE.

Du er selvfølgelig ikke begrænset til at bruge Arduino IDE - de er også kompatible med Lua (der ligner en slanket Python til min nybegynder øjne), men da vi takler dette fra perspektivet til os, der har lært om Arduino, er det, hvad vi udelukkende dækker i dag.

Der er ganske mange modeller af ESP8266 omkring nu, men jeg vil gå videre og anbefale denne: ESP-12E (også kendt som NodeMCU 1.0 eller det er den nyeste søskende NodeMCU 2.0).

Det er lidt dyrere end de andre ($ 6,50 sammenlignet med $ 4!), Men inkluderer den serielle driver, der er nødvendig for at programmere chippen, og har en indbygget strømregulator samt masser af IO-stifter. Det er bredt understøttet og har virkelig ikke brug for noget bortset fra en USB-forbindelse til programmering eller strøm, så det er den nemmeste at arbejde med. Hvis du køber nogen anden type ESP8266-kort, kan det være nødvendigt at du har en separat 3.3v strømregulator og en passende FTDI-forbindelse til programmering.

Kom godt i gang med ESP8266-12E og Arduino

Først, installer serielle drivere til dette bord. Du skal muligvis deaktiver KEXT-signering hvis du kører El Capitan på grund af nye sikkerhedssystemer.

Dernæst skal vi aktivere support til ESP8266 fra Arduino IDEs bestyrelseschef. Åbn Præferencer, og indtast følgende URL, hvor det står Yderligere URL-adresser til Board Manager:

URL-adresser for arduino board manager

Hit Ok, og åbn derefter Bestyrelseschef fra Værktøjer -> Board menu, søg efter esp8266 og installer platformen. Du skal nu se et valg til NodeMCU 1.0.

vælg tavle

Forlad CPU'en og uploadhastigheden som den er, og vælg din nyligt installerede serielle port. På Mac vises dette som cu. SLAB_USBtoUART.

Som et første program vil jeg foreslå den enkle Wi-Fi-scanner - find den fra Fil -> Eksempler -> ESP8266WiFi -> WifiScan. Bemærk, at det er temmelig langsomt at uploade, men til sidst vil det sige "færdig upload" og på det tidspunkt (ikke før, eller du vil bryde uploadprocessen), kan du åbne Serial monitor. Du skulle se noget, der ligner dette:

wifi-scanningstest esp8266
Succes! Lad os prøve at oprette forbindelse til en.

Her er en absolut simpel barebones-kode til forbindelse til et Wi-Fi-netværk. Det gør ikke andet end bare at oprette forbindelse, men det er noget, du kan tilføje for senere. Husk bare at ændre YOUR_SSID og YOUR_PASSWORD til dine Wi-Fi-detaljer. Upload, åbn seriekonsollen, og du skal se den tilslutte.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; tom opsætning () {Serial.begin (115200); Serial.print ("Opretter forbindelse til"); Serial.println (ssid); WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ( ""); } Serial.println (""); Serial.println ("WiFi tilsluttet"); Serial.println ("IP-adresse:"); Serial.println (WiFi.localIP ()); } void loop () {}

Er det ikke fantastisk, hvor latterligt enkelt det var?

Før vi fortsætter, her er pinout-diagrammet - det kan komme godt med senere. Bemærk, at de pin-numre, der er nævnt i koden, er GPIO-numrene, ikke D0-16, der sandsynligvis er skrevet på dit printkort. Hvis du absolut ikke positivt kan finde ud af, hvorfor en sensor ikke fungerer, har du sandsynligvis blandet pin-numrene op.

NodeMCU__v1.0_pinout

Hurtig Smart Home Sensor med MQTT og DHT11

Her er et praktisk eksempel, du kan bruge med det samme til at overvåge dit hjem. Vi tilføjer en DHT11 temperatur- og fugtighedssensor og rapporterer derefter værdierne ved hjælp af MQTT-protokollen over Wi-Fi-netværket, i mit tilfælde til et OpenHAB DIY-hjemmeautomatiseringssystem (hvis ikke, kan du måske læse vores nybegyndervejledning til at få OpenHAB i gang med en Raspberry Pi Kom godt i gang med OpenHAB-hjemmeautomatisering på Raspberry PiOpenHAB er en moden, open source hjemmeautomatiseringsplatform, der kører på en række hardware og er protokol agnostic, hvilket betyder, at den kan oprette forbindelse til næsten enhver hjemmeautomatiseringshardware på markedet i dag. Læs mere , og del 2, der specifikt beskæftiger sig med installation af en MQTT-server OpenHAB Begyndervejledning Del 2: ZWave, MQTT, regler og kortlægningOpenHAB, open source-hjemmeautomatiseringssoftwaren, overstiger langt muligheden for andre hjemmeautomatiseringssystemer på markedet - men det er ikke let at få opsat. Faktisk kan det være direkte frustrerende. Læs mere ).

Tilslut DHT-sensoren på ledningssiden GND, 3.3V, og ~ D4 (eller GPIO 2). Det er alt, hvad vi har brug for i øjeblikket.

Hent disse MQTT- og DHT-biblioteker. Selv hvis du allerede har dem, download alligevel disse, sikkerhedskopier det, du har, og overskriv med disse. Det nyeste DHT11-bibliotek fra Adafruit bruger en automatisk algoritme til bestemmelse af hastigheden, hvorpå data læses fra sensoren, men det er buggy på ESP8266, og 90% af tiden resulterer i mislykkede aflæsninger.

Med den gamle version 1.0 af biblioteket, som jeg har inkluderet i downloadet, kan du manuelt ændre timingen: 11 fungerer bedst for disse ESP2866-kort. Jeg gennemgik også mange kopier af MQTT-biblioteket og prøvede at finde en god ring tilbage funktion, endelig landing på den inkluderede. Du skal genstarte Arduino IDE efter at have udskiftet dem.

Her er komplet kode til projektet. Øverst er alle de variabler, du har brug for at ændre, inklusive Wi-Fi-detaljer, MQTT-server (en URL kan bruges i stedet for hvis du bruger en sky-server, skønt der ikke er nogen godkendelse på plads), og kanaler til at offentliggøre data om.

Sådan fungerer det og et par bemærkninger:

  • Først opretter vi forbindelse til Wi-Fi, derefter til MQTT-serveren og begynder derefter hovedmenuen loop ().
  • I løkken afslører vi DHT-sensoren hvert 60. sekund og offentliggør aflæsninger til de relevante MQTT-kanaler. Igen, hvis du finder de fleste af aflæsningsresultaterne i en fejlmeddelelse, har du den forkerte version af DHT-biblioteket - nedgrader til v1.0.
  • client.loop () overfører kontrol til MQTT-biblioteket, så det kan reagere på indgående meddelelser.
  • Der er en messageReceived () fungerer, hvor vi håndterer indgående meddelelser - bare lav en enkel hvis erklæring for at sammenligne nyttelasten med den meddelelse, du forventer. Du kan f.eks. Bruge dette til at aktivere et relæ.
  • Efter at have kørt disse i et par dage, fandt jeg, at de tilfældigt ville stoppe med at arbejde - jeg antager, at dette er en slags hukommelseslækage, men givet Jeg har ikke kodningsfærdigheden til at tackle det, og det kan være med kernebibliotekerne, jeg har valgt en simpel, nul reset hver dag. Præcis en dag efter, at sensorknudene først er aktiveret, genstarter de sig selv.
  • Når disse billige DHT11-moduler tændes fra 3.3v, er fugtighedsværdierne langt lavere, end de burde være. Jeg har løst dette med en simpel multiplikation og kalibreret mod en kommerciel sensor. Jeg vil råde dig til at bekræfte mod din egen kendte kilde også, før du stoler på læsningerne. Alternativt skal du tænde dem med 5V - men skal du placere en 5v-3.3v-logisk niveauskifter mellem datapinden og ESP8266, eller du vil beskadige den.

Hvis alt gik godt, skulle du nu modtage sensorlæsninger i din MQTT-mægler og kan gå videre med at forbinde disse til OpenHAB som beskrevet i del 2 af vores begyndervejledning OpenHAB Begyndervejledning Del 2: ZWave, MQTT, regler og kortlægningOpenHAB, open source-hjemmeautomatiseringssoftwaren, overstiger langt muligheden for andre hjemmeautomatiseringssystemer på markedet - men det er ikke let at få opsat. Faktisk kan det være direkte frustrerende. Læs mere , hvor jeg også viste dig, hvordan du diagrammer dataene.

fugtighedsgraf fra åbenhed

Farvel Arduino, vi elskede dig så. Bare det sjovt: ikke overalt i mit hus kan endda få Wi-Fi, så for disse pletter har jeg stadig brug for et mesh-netværk med Arduino- og RF-modtagere.

For et sjovt projekt, så tjek hvordan man opretter en Wi-Fi-knap med ESP8266 Sådan opretter du din egen Wi-Fi-tilsluttede knap med ESP8266I denne tutorial lærer du, hvordan du opretter en Wi-Fi-aktiveret knap ved hjælp af NodeMCU og IFTTT. Læs mere .

Men hvad vil du lave med ESP8266? Eventuelle projekter, der bruger ESP8266, vil du gerne have skrevet op på MakeUseOf? Fortæl os det i kommentarerne!

James har en BSc i kunstig intelligens og er CompTIA A + og Network + certificeret. Han er hovedudvikler af MakeUseOf og bruger sin fritid på at spille VR paintball og brætspil. Han har bygget pc'er siden han var barn.