Annons

Wi-Fi är en väsentlig bit av kit för alla Internet of Things (IoT) DIY-projekt, men vår favorit Arduino kommer inte med Wi-Fi, och att lägga till en Wi-Fi-sköld kan få 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? Det finns det.

Möt Arduino Killer: ESP8266. Det var bara en tidsfråga innan kronan stal 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ånga namn åt sidan, ESP8266 (även känd som NodeMCU) marknadsfördes ursprungligen som ett billigt Wi-Fi-tillägg för Arduino-styrelser, tills hackersamhället insåg att du kunde klippa Arduino ur ekvationen helt.

På mindre än ett år har ESP8266 rakat i popularitet och stöds och utvecklas nu så att om du för närvarande använder Arduino, måste du stå upp och notera. Köp en nu, följ sedan med den här guiden för att komma igång med att programmera din ESP8266 - allt från den välkända Arduino IDE.

instagram viewer

Du är naturligtvis inte begränsad till att använda Arduino IDE - de är också kompatibla med Lua (som ser ut som en slimmad Python för min nybörjare), men eftersom vi tar itu med detta ur perspektivet av oss som har lärt oss om Arduino, är det vad vi täcker uteslutande i dag.

Det finns ganska många modeller av ESP8266 runt nu, men jag kommer att gå vidare och rekommendera den här: ESP-12E (även känd som NodeMCU 1.0, eller det är den 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. Det stöds brett och behöver verkligen inte annat än en USB-anslutning för programmering eller ström, så det är det enklaste 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 seriedrivrutinerna för detta styrelse. Du kan behöva 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 IDE: s styrelsechef. Öppna inställningar och ange följande URL där det står Ytterligare URL-adresser till styrelsen:

URL-adresser för arduino board manager

Hit Ok, öppna sedan Styrelser chef från Verktyg -> Board menyn, sök efter esp8266 och installera plattformen. Du bör nu se ett val för NodeMCU 1.0.

välj styrelse

Lämna CPU och uppladdningshastighet som den är, och välj din nyinstallerade seriella port. På Mac visas detta som cu. SLAB_USBtoUART.

Som ett första program skulle jag föreslå den enkla Wi-Fi-skannern - 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ägas "gjort uppladdning" och vid den punkten (inte tidigare, eller så kommer du att bryta överföringsprocessen) kan du öppna Serial monitor. Du borde se något liknande det här:

wifi scan test esp8266
Framgång! 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 inte annat än 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 så ser du att den ansluter.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Ansluta till"); 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 ()); } void loop () {}

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

Innan vi fortsätter, här är pinout-diagrammet - det kan komma att vara praktiskt senare. Observera att stiftnumren som nämns i koden är GPIO-numren, inte D0-16 som antagligen är skrivna på ditt PCB: s kort. Om du absolut inte kan ta reda på varför en sensor inte fungerar har du antagligen blandat stiften.

NodeMCU__v1.0_pinout

Snabb smarta 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-hemmeautomationssystem (om inte, kanske du vill läsa vår nybörjarguide för att få OpenHAB igång på en Raspberry Pi Komma igång med OpenHAB Home Automation på Raspberry PiOpenHAB är en mogen, open source-hemmeautomationsplattform som körs på en mängd olika hårdvara och är protokoll agnostic, vilket innebär att den kan ansluta till nästan alla hemmautomationshårdvara på marknaden i dag. Läs mer och del 2, som handlar specifikt om installera en MQTT-server OpenHAB nybörjarguide del 2: ZWave, MQTT, regler och kartläggningOpenHAB, open source-hemmeautomationsprogramvaran, överstiger mycket kapaciteten för andra hemmeautomationssystem på marknaden - men det är inte lätt att konfigurera. I själva verket kan det vara rent frustrerande. Läs mer ).

Anslut DHT-sensorn på kabelsidan 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 dessa. 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 fel på ESP8266 och 90% av tiden resulterar i misslyckade avläsningar.

Med den gamla versionen 1.0 av biblioteket som jag har inkluderat i nedladdningen kan du manuellt ändra tidpunkten: 11 fungerar bäst för dessa ESP2866-kort. Jag gick också igenom många kopior av MQTT-biblioteket och försökte hitta ett bra ring tillbaka funktion, slutligen landar på den inkluderade. Du måste starta om Arduino IDE när du har bytt ut dem.

Här är komplett kod för projektet. Överst finns 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 på plats) 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 sedan börjar den huvudsakliga slinga().
  • I slingan pollar vi DHT-sensorn var 60: e sekund och publicerar avläsningar till de relevanta MQTT-kanalerna. Återigen, om du tycker att de flesta avläsningarna resulterar i ett felmeddelande, har du fel version av DHT-biblioteket - nedgradera till v1.0.
  • client.loop () överför kontrollen till MQTT-biblioteket, så att den kan reagera på inkommande meddelanden.
  • Det finns en meddelande mottaget() fungerar där vi hanterar inkommande meddelanden - gör bara ett enkelt ifall för att jämföra nyttolasten med meddelandet du förväntar dig. Du kan till exempel använda detta för att aktivera ett relä.
  • Efter att ha kört dessa i några dagar, fann jag att de slumpmässigt skulle sluta fungera - jag antar att det här är någon form av minnesläcka, men Jag har inte kodningsförmågan att hantera det och det kan vara med kärnbiblioteken, jag har valt en enkel mjuk återställning varje dag. Exakt en dag efter att sensornoderna först aktiverats kommer de att starta om sig själva.
  • Vid drift av dessa billiga DHT11-moduler från 3.3v är fuktighetsvärdena mycket lägre än de borde vara. Jag har löst detta med en enkel multiplikation och kalibrerat mot en kommersiell sensor. Jag skulle råda dig att bekräfta mot din egen kända källa också innan du litar på avläsningarna. Alternativt kan du driva dem med 5V - men måste du placera en 5v-3.3v logiknivåväxlare mellan datapinnen och ESP8266, annars kommer du att skada den.

Om allt gick bra, bör du nu få sensoravläsningar i din MQTT-mäklare och kan gå vidare med att ansluta dessa till OpenHAB som beskrivs i del 2 i vår nybörjarguide OpenHAB nybörjarguide del 2: ZWave, MQTT, regler och kartläggningOpenHAB, open source-hemmeautomationsprogramvaran, överstiger mycket kapaciteten för andra hemmeautomationssystem på marknaden - men det är inte lätt att konfigurera. I själva verket kan det vara rent frustrerande. Läs mer , där jag också visade dig hur du graferar data.

humdity-graf från openhab

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

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

Men vad kommer du att göra med ESP8266? Vilka projekt som använder ESP8266 skulle du vilja skriva upp på MakeUseOf? Låt oss veta i kommentarerna!

James har en kandidatexamen i artificiell intelligens och är CompTIA A + och Network + certifierad. Han är ledande utvecklare av MakeUseOf och tillbringar sin fritid med att spela VR-paintball och brädspel. Han har byggt datorer sedan han var liten.