Möt Arduino Killer ESP8266

Möt Arduino Killer ESP8266 / DIY

Wi-Fi är en viktig del av kit för alla Dot-projekt, men vår favorit Arduino kommer inte med Wi-Fi, och att lägga i en Wi-Fi-sköld kan ge den totala kostnaden till cirka $ 40. Vad händer om jag sa till dig att det finns en Arduino-kompatibel dev-kort med inbyggd Wi-Fi för mindre än 10 dollar? Jo, det finns det.

Möt Arduino Killer: ESP8266. Det var bara en fråga om tid innan kronan stulades från det glänsande huvudet på vår kära Arduino utvecklingsstyrelse. Är det möjligt att bli kär i ett kretskort?

Fångna namn åt sidan, ESP8266 (även känd som NodeMCU) marknadsfördes ursprungligen som en billig Wi-Fi-tillägg för Arduino-kort, tills hackergemenskapen insåg att du kunde skära Arduino helt ur ekvationen helt.

På mindre än ett år har ESP8266 rackat i popularitet och är nu så välstödd och utvecklad att om du använder Arduino, måste du stå upp och notera dig. Köp en nu, följ sedan med den här guiden för att komma igång med programmering av din ESP8266 - allt från det bekanta Arduino IDE.

Du är inte begränsad till att använda Arduino IDE självklart - de är kompatibla med Lua också (som ser ut som en slankad Python till mina nybörjare), men eftersom vi tar itu med det här ur perspektivet för dem som har lärt oss på Arduino, det är vad vi ska täcka uteslutande idag.

Det finns en hel del modeller av ESP8266 runt nu, men jag ska gå vidare och rekommendera den här: ESP-12E (även känd som NodeMCU 1.0, eller det är nyaste syskon NodeMCU 2.0).

Det är lite dyrare än de andra ($ 6,50 jämfört med $ 4!), Men innehåller den seriella drivrutinen som behövs för att programmera chipet, och har en inbyggd effektregulator, liksom massor av IO-stift. Den är brett stödd och behöver verkligen inget annat än en USB-anslutning för programmering eller ström, så det är lättast att arbeta med. Om du köper någon annan typ av ESP8266-kort kan du behöva en separat 3.3V strömregulator och en lämplig FTDI-anslutning för programmering.

Komma igång med ESP8266-12E och Arduino

Först installera seriella drivrutiner för det här kortet. Det kan hända att du måste inaktivera KEXT-signering om du kör El Capitan på grund av nya säkerhetssystem.

Därefter måste vi aktivera support för ESP8266 från Arduino IDEs styrelsechef. Öppna Preferences och ange följande webbadress där den står Ytterligare styrhanteringsadresser:

Hit Ok, öppna sedan Boards Manager från Verktyg -> Styrelse meny, sök efter esp8266 och installera plattformen. Du borde nu se ett val för NodeMCU 1.0.

Lämna CPU och ladda upp hastighet som det är och välj din nyinstallerade seriella port. På Mac visas detta som cu.SLAB_USBtoUART.

Som ett första program föreslår jag den enkla Wi-Fi-scannern - hitta den från Fil -> Exempel -> ESP8266WiFi -> WifiScan. Observera att det är ganska långsamt att ladda upp, men så småningom kommer det att säga “gjort uppladdning” och vid den tidpunkten (inte förr, eller du bryter upp uppladdningsprocessen) kan du öppna seriell bildskärm. Du borde se något liknande det här:


Framgång! Nu, låt oss försöka ansluta till en.

Här är en helt enkel barebones-kod för anslutning till ett Wi-Fi-nätverk. Det gör inget annat än att bara ansluta, men det är något du kan lägga till för senare. Kom bara ihåg att ändra YOUR_SSID och YOUR_PASSWORD till dina Wi-Fi-detaljer. Ladda upp, öppna seriekonsolen och du bör se den ansluta.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; tomrumsinställning () Serial.begin (115200); Serial.print ("Connecting to"); Serial.println (SSID); WiFi.begin (ssid, lösenord); medan (WiFi.status ()! = WL_CONNECTED) fördröjning (500); Serial.print ( "");  Serial.println (""); Serial.println ("WiFi-ansluten"); Serial.println ("IP-adress:"); Serial.println (WiFi.localIP ());  tomrumsling () 

Är det inte bra hur löjligt enkelt det var?

Innan vi fortsätter, här är pinout diagrammet - det kan komma till nytta senare. Observera att stiftnumren som avses i koden är GPIO-numren, inte D0-16 förmodligen skrivna på din styrplatta. Om du absolut inte kan få reda på varför en sensor inte fungerar, har du förmodligen blandat stiftnumren.

Snabb smart hemsensor med MQTT och DHT11

Här är ett praktiskt exempel som du kan använda omedelbart för att övervaka ditt hem. Vi lägger till en DHT11 temperatur- och fuktighetssensor och rapporterar sedan värdena med MQTT-protokollet via Wi-Fi-nätverket, i mitt fall till ett OpenHAB DIY hemautomatiseringssystem (om inte, kanske du vill läsa vår nybörjarguide till få OpenHAB igång med en Raspberry Pi Komma igång med OpenHAB Hemautomation på Raspberry Pi Komma igång med OpenHAB Hemautomatisering på Raspberry Pi OpenHAB är en mogen, öppen källkodsautomatiseringsplattform som körs på en mängd olika hårdvaror och är protokollets agnostiska, vilket betyder den kan anslutas till nästan vilken hemautomatiseringsutrustning som helst på marknaden idag. Läs mer och del 2, som specifikt handlar om att installera en MQTT-server. OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler och kartläggning OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler och kartläggning OpenHAB, open source-hemautomationsprogramvaran, överträffar kapaciteten hos andra hemautomatiseringssystem på marknaden - men det är inte lätt att få igång. agera, det kan vara rättvist frustrerande. Läs mer ).

Anslut DHT-givaren till ledningsidan GND, 3.3V, och ~ D4 (eller GPIO 2). Det är allt vi behöver för nu.

Ladda ner dessa MQTT- och DHT-bibliotek. Även om du redan har dem, ladda ner dessa ändå, säkerhetskopiera vad du har och skriv över med dem. Det senaste DHT11-biblioteket från Adafruit använder en automatisk algoritm för att bestämma hastigheten vid vilken data läses från sensorn, men det är buggy på ESP8266 och 90% av tiden resulterar i felaktiga mätningar.

Med den gamla versionen 1.0 av biblioteket som jag har med i nedladdningen kan du manuellt byta timing: 11 fungerar bäst för dessa ESP2866-kort. Jag gick också igenom många kopior av MQTT-biblioteket och försökte hitta en bra ring tillbaka funktion, slutligen landa på den medföljande. Du måste starta om Arduino IDE efter att du har ersatt dessa.

Här är den fullständiga koden för projektet. Överst är alla variabler du behöver ändra, inklusive Wi-Fi-detaljer, MQTT-server (en URL kan användas istället om du använder en molnserver, men det finns ingen autentisering) och kanaler för att publicera data på.

Så här fungerar det och några anteckningar:

  • Först ansluter vi till Wi-Fi, sedan till MQTT-servern och startar sedan huvudet slinga().
  • I slingan pollar vi DHT-sensorn var 60: e sekund och publicerar avläsningar till relevanta MQTT-kanaler. Återigen, om du hittar de flesta av avläsningarna resulterar i ett felmeddelande, har du fel version av DHT-biblioteket - nedgradering till v1.0.
  • client.loop () skickar kontroll till MQTT-biblioteket, så att det kan reagera på inkommande meddelanden.
  • Det finns en meddelande mottaget() funktion där vi hanterar inkommande meddelanden - gör bara ett enkelt om uttalande för att jämföra nyttolasten med det meddelande du förväntar dig. Du kan använda detta för att aktivera ett relä, till exempel.
  • Efter att ha kört dessa i några dagar fann jag att de slumpmässigt skulle sluta arbeta - jag antar att det här är någon form av minnesläckage, men med tanke på att jag inte har kodningsförmågan att hantera det och det kan vara med kärnbiblioteken, jag Jag har valt en enkel mjuk återställning varje dag. Exakt en dag efter att sensorerna först aktiverats, kommer de att starta om sig själva.
  • När dessa billiga DHT11-moduler drivs från 3.3v är fuktighetsvärdena mycket lägre än de borde vara. Jag har löst detta med en enkel multiplikation och kalibrerad mot en kommersiell sensor. Jag rekommenderar dig att bekräfta mot din egen kända källa också innan du förlita dig på avläsningarna. Alternativt, driva dem med 5V - men du måste placera en 5v-3,3v logisk nivåväxlare mellan datapinnen och ESP8266, eller du kommer att skada den.

Om allt gick bra borde du nu få sensoravläsningar i din MQTT-mäklare och kan fortsätta med att ansluta dessa till OpenHAB enligt detaljer i del 2 i vår nybörjarhandledning. OpenHAB Beginners Guide Del 2: ZWave, MQTT, Regler och kartläggning OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler och kartläggning OpenHAB, open source-hemautomatiseringsprogrammet, överstiger möjligheterna för andra hemautomatiseringssystem på marknaden - men det är inte lätt att få igång. Faktum är att det kan vara rättvist frustrerande. Läs mer, där jag också visade dig hur man grafar data.

Farväl Arduino, vi älskade dig så. Bara skojar: inte överallt i mitt hus kan du även få Wi-Fi, så för de fläckarna behöver jag fortfarande ett nätverksnätverk med Arduino och RF-mottagare.

För ett roligt projekt, kolla in hur du gör en Wi-Fi-knapp med ESP8266 Så här gör du din egen Wi-Fi-anslutna knapp med ESP8266 Så här skapar du din egen Wi-Fi-anslutna knapp med ESP8266 I den här handledningen lär du dig hur man skapar en Wi-Fi-aktiverad knapp med NodeMCU och IFTTT. Läs mer .

Men vad ska du göra med ESP8266? Alla projekt som använder ESP8266 du vill se skrivna på MakeUseOf? Låt oss veta i kommentarerna!

Utforska mer om: Arduino, Elektronik, Saker av Internet, Smart Sensor.