Mød Arduino Killer: ESP8266

Hvad hvis jeg fortalte dig et der er en Arduino-kompatibel dev-kort med indbygget Wi-Fi til mindre end $ 10? Nå er der.

Hvad hvis jeg fortalte dig et der er en Arduino-kompatibel dev-kort med indbygget Wi-Fi til mindre end $ 10?  Nå er der.
Reklame

Wi-Fi er en vigtig del af et kit til alle DIY-projekter, men vores foretrukne Arduino leveres ikke med Wi-Fi, og at tilføje i et Wi-Fi-skærm kan bringe den samlede pris til omkring $ 40. Hvad hvis jeg fortalte dig et der er en Arduino-kompatibel dev-kort med indbygget Wi-Fi til mindre end $ 10? Nå er der.

Mød Arduino Killer: ESP8266. Det var kun et spørgsmål om tid, før kronen blev stjålet fra det skinnende hoved af vores kære Arduino Development Board. Er det muligt at forelske sig i et printkort?

Fangende navne til side blev ESP8266 (også kendt som NodeMCU) oprindeligt markedsført som en billig Wi-Fi-tilføjelse til Arduino boards, indtil hacker-samfundet indså, at du kunne klippe Arduino helt ud af ligningen.

På mindre end et år har ESP8266 raket i popularitet og er nu så godt støttet og udviklet, at hvis du bruger Arduino i øjeblikket, skal du stå op og notere dig. Køb en nu, følg derefter med denne vejledning for at komme i gang med at programmere din ESP8266 - alt inde i den velkendte Arduino IDE.

Du er ikke begrænset til at bruge Arduino IDE selvfølgelig - de er også kompatible med Lua (som ligner en slanket Python til mine nybegyndere øjne), men da vi takler dette fra perspektivet hos dem, der har lært på Arduino, det er hvad vi udelukkende skal dække i dag.

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

Det er lidt dyrere end de andre ($ 6, 50 sammenlignet med $ 4!), Men indeholder den serielle driver, der er nødvendig for at programmere chipet, og har en indbygget strømregulator samt masser af IO-ben. Det understøttes bredt og har virkelig ikke brug for noget bortset fra en USB-forbindelse til programmering eller strøm, så det er det nemmeste at arbejde med. Hvis du køber en anden form for ESP8266 bord, skal du muligvis have en separat 3.3v strømregulator og en passende FTDI-forbindelse til programmering.

Kom i gang med ESP8266-12E og Arduino

Først skal du installere serielle drivere til dette kort. Det kan være nødvendigt at deaktivere KEXT-signering, hvis du kører El Capitan på grund af nye sikkerhedssystemer.

Dernæst skal vi aktivere support til ESP8266 fra Arduino IDE's bestyrelsesleder. Åbn præferencer, og indtast følgende URL-adresse, hvor det står Yderligere webadresser til bestyrelsesadministrator :

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

Arduino Board Manager URLS

Hit Ok, så åbner Boards Manager fra Tools -> Board menu, søg esp8266 og installer platformen. Du skal nu se et valg til NodeMCU 1.0.

vælg bord

Lad CPU'en og uploadhastigheden være, og vælg din nyinstallerede seriel port. På Mac vises dette som cu.SLAB_USBtoUART .

Som et første program foreslår jeg den enkle Wi-Fi-scanner - find den fra Fil -> Eksempler -> ESP8266WiFi -> WifiScan . Bemærk, at det er ret langsom at uploade, men i sidste ende vil det sige "done uploading" og på det tidspunkt (ikke før, eller du vil bryde uploadprocessen), kan du åbne seriell skærm. Du bør se noget der ligner dette:

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

Her er en helt simpel barebones-kode til forbindelse til et Wi-Fi-netværk. Det gør ikke andet end bare at forbinde, 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, åbner seriekonsollen, og du bør se den forbinde.

#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 fantastisk, hvordan latterligt simpelt det var?

Før vi fortsætter, her er pinout-diagrammet - det kan komme til nytte senere. Bemærk, at de pinnumre, der henvises til i koden, er GPIO-numrene, ikke D0-16 er sandsynligvis skrevet på dit print-printkort. Hvis du absolut ikke kan finde ud af, hvorfor en sensor ikke virker, har du sikkert blandet pinnumrene op.

NodeMCU__v1.0_pinout

Quick Smart Home Sensor med MQTT og DHT11

Her er et praktisk eksempel, du kan bruge til straks at overvåge dit hjem. Vi tilføjer en DHT11 temperatur- og fugtighedsføler og rapporterer derefter værdierne ved hjælp af MQTT-protokollen via Wi-Fi-netværket, i mit tilfælde til et OpenHAB DIY-hjemmeautomatiseringssystem (hvis ikke, kan du læse vores begynderguide til at få OpenHAB op og køre på en Raspberry Pi Kom i gang med OpenHAB Home Automation på Raspberry Pi Kom i gang med OpenHAB Home Automation on Raspberry Pi OpenHAB er en moden, open source home automation platform, der kører på en række hardware og er protokol agnostisk, hvilket betyder den kan tilsluttes til næsten alle hjemmeautomatiseringshardware på markedet i dag. Læs mere og del 2, der omhandler specifikt installation af en MQTT-server. OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler og diagrammer OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler og diagrammer OpenHAB, open source-hjemmautomatiseringssoftwaren, overstiger langt mulighederne for andre hjemmeautomatiseringssystemer på markedet - men det er ikke let at få sat op. Faktisk kan det være ligefrem frustrerende. Læs mere ).

På ledningsiden skal du tilslutte DHT-sensoren til GND, 3.3v og ~ D4 (eller GPIO 2). Det er alt, hvad vi har brug for nu.

Download disse MQTT og DHT biblioteker. Selvom du allerede har dem, skal du downloade disse alligevel, sikkerhedskopiere det, du har, og overskrive med disse. Det nyeste DHT11-bibliotek fra Adafruit bruger en automatisk algoritme til at bestemme den hastighed, hvormed data læses fra sensoren, men det er buggy på ESP8266 og 90% af tiden resulterer i fejlede aflæsninger.

Med den gamle version 1.0 af biblioteket, jeg har medtaget i downloaden, kan du manuelt ændre timingen: 11 fungerer bedst for disse ESP2866 boards. Jeg gik også igennem mange kopier af MQTT-biblioteket og forsøgte at finde en god tilbagekaldsfunktion, og landede endelig på den medfølgende. Du skal genstarte Arduino IDE efter udskiftning af disse.

Her er den komplette kode for projektet. Øverst er alle de variabler, du skal ændre, herunder Wi-Fi-detaljer, MQTT-server (en webadresse kan bruges i stedet, hvis du bruger en cloud-server, selv om der ikke er nogen godkendelse på plads) og kanaler til at offentliggøre data på.

Sådan fungerer det og et par noter:

  • Først forbinder vi til Wi-Fi, derefter til MQTT-serveren, og start derefter hovedsløjfen ().
  • I loop kredser vi DHT-sensoren hvert 60 sekund og offentliggør aflæsninger til de relevante MQTT-kanaler. Igen, hvis du finder de fleste af aflesningerne, der resulterer i en fejlmeddelelse, har du den forkerte version af DHT-biblioteket - nedgrader til v1.0.
  • client.loop () sender kontrol til MQTT biblioteket, så det kan reagere på indgående meddelelser.
  • Der er en messageReceived () -funktion, hvor vi håndterer indgående meddelelser - gør bare en simpel hvis erklæring for at sammenligne nyttelasten med den besked, du forventer. Du kan bruge dette til at aktivere et relæ, for eksempel.
  • Efter at have kørt disse i et par dage fandt jeg, at de tilfældigt ville stoppe med at arbejde - jeg antager, at det her er en slags hukommelseslækage, men da jeg ikke har kodningsevnen til at håndtere det, og det kan være med kernebibliotekerne, jeg Jeg har valgt en simpel soft reset hver dag. Præcis en dag efter, at sensorerne først aktiveres, vil de genstarte sig selv.
  • Når du kører disse billige DHT11 moduler 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 også at bekræfte din egen kendte kilde, før du baserer dig på aflæsningerne. Alternativt magt dem med 5V - men du skal placere en 5v-3.3v logisk niveau shifter mellem data pin og ESP8266, eller du vil beskadige det .

Hvis alt gik godt, skal du nu modtage sensoraflæsninger i din MQTT-mægler og kan fortsætte med at forbinde disse til OpenHAB som beskrevet i del 2 i vores nybegyndervejledning. OpenHAB Begyndervejledning Del 2: ZWave, MQTT, Regler og kortlægning OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler og kortlægning OpenHAB, open source home automation software, overstiger langt de øvrige hjemmautomatiseringssystemers muligheder på markedet - men det er ikke let at komme i gang. Faktisk kan det være retfærdigt frustrerende. Læs mere, hvor jeg også viste dig, hvordan du graver dataene.

humdity graph fra openhab

Farvel Arduino, vi elskede dig så. Bare kidding: Ikke overalt i mit hus kan endda få Wi-Fi, så for disse pletter vil jeg stadig have et netværksnetværk med Arduino og RF-modtagere. Men hvad vil du lave med ESP8266? Eventuelle projekter, der bruger ESP8266, vil du gerne se skrevet op på MakeUseOf? Lad os vide i kommentarerne!

In this article