Advertentie

Wi-Fi is een essentieel onderdeel van elk Internet of Things (IoT) doe-het-zelf-project, maar onze favoriete Arduino wordt niet geleverd met Wi-Fi en het toevoegen van een Wi-Fi-schild kan de totale kosten oplopen tot ongeveer $ 40. Wat als ik je vertelde dat er een Arduino-compatibel dev-bord is met ingebouwd Wi-Fi voor minder dan $ 10? Nou, dat is er.

Maak kennis met de Arduino Killer: ESP8266. Het was slechts een kwestie van tijd voordat de kroon van de glimmende kop van ons lieve Arduino-ontwikkelingsbord werd gestolen. Is het mogelijk om verliefd te worden op een printplaat?

Opvallende namen terzijde, de ESP8266 (ook bekend als NodeMCU) werd oorspronkelijk op de markt gebracht als een goedkope Wi-Fi-add-on voor Arduino-boards, totdat de hackergemeenschap zich realiseerde dat je de Arduino uit de vergelijking kon halen geheel.

In minder dan een jaar tijd is de ESP8266 enorm in populariteit gestegen en wordt nu zo goed ondersteund en ontwikkeld dat als je Arduino momenteel gebruikt, je moet opstaan ​​en kennis moet nemen.

instagram viewer
Koop er nu een, volg dan deze handleiding om te beginnen met het programmeren van uw ESP8266 - allemaal vanuit de vertrouwde Arduino IDE.

Je bent natuurlijk niet beperkt tot het gebruik van de Arduino IDE - ze zijn ook compatibel met Lua (wat lijkt op een afgeslankte Python voor mijn beginnende ogen), maar aangezien we dit aanpakken vanuit het perspectief van degenen die op Arduino hebben geleerd, zullen we dat exclusief behandelen vandaag.

Er zijn nu nogal wat modellen van ESP8266, maar ik ga door en beveel deze aan: ESP-12E (ook bekend als NodeMCU 1.0, of het is de nieuwste broer of zus NodeMCU 2.0).

Het is een beetje duurder dan de andere ($ 6,50 vergeleken met $ 4!), Maar bevat de seriële driver die nodig is om de chip te programmeren, heeft een ingebouwde stroomregelaar en veel IO-pinnen. Het wordt breed ondersteund en heeft echt niets anders nodig dan een USB-aansluiting voor programmeren of voeding, dus het is het gemakkelijkst om mee te werken. Als u een ander soort ESP8266-kaart koopt, hebt u mogelijk een afzonderlijke 3,3 V-vermogensregelaar en een geschikte FTDI-aansluiting nodig om te programmeren.

Aan de slag met ESP8266-12E en Arduino

Eerste, installeer de seriële stuurprogramma's voor dit bord. Mogelijk moet u KEXT-ondertekening uitschakelen als je El Capitan gebruikt vanwege nieuwe beveiligingssystemen.

Vervolgens moeten we ondersteuning voor ESP8266 inschakelen van de Arduino IDE's board manager. Open Voorkeuren en voer de volgende URL in waar staat Extra Board Manager-URL's:

URL's van arduino board manager

Druk op Ok en open de Boards Manager van Extra -> Bord menu, zoek naar esp8266 en installeer het platform. Je zou nu een keuze voor NodeMCU 1.0 moeten zien.

selecteer bord

Laat de CPU en uploadsnelheid ongewijzigd en selecteer uw nieuw geïnstalleerde seriële poort. Op Mac ziet dit eruit als cu. SLAB_USBtotUART.

Als eerste programma zou ik de eenvoudige Wi-Fi-scanner aanraden - vind hem van Bestand -> Voorbeelden -> ESP8266WiFi -> WifiScan. Houd er rekening mee dat het vrij traag is om te uploaden, maar uiteindelijk staat er 'klaar met uploaden' en op dat moment (niet eerder, of u breekt het uploadproces), kunt u de seriële monitor openen. Je zou iets als dit moeten zien:

wifi scantest esp8266
Succes! Laten we nu proberen er verbinding mee te maken.

Hier is een absoluut eenvoudige barebones-code om verbinding te maken met een wifi-netwerk. Het doet niets anders dan alleen verbinding maken, maar u kunt het ook later toevoegen. Vergeet niet om de YOUR_SSID en YOUR_PASSWORD te wijzigen in je wifi-gegevens. Upload, open de seriële console en je zou het moeten zien verbinden.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; ongeldige setup () {Serial.begin (115200); Serial.print ("Verbinding maken met"); Serial.println (ssid); WiFi.begin (ssid, wachtwoord); terwijl (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi verbonden"); Serial.println ("IP-adres:"); Serial.println (WiFi.localIP ()); } nietige lus () {}

Is het niet geweldig hoe belachelijk eenvoudig dat was?

Voordat we verder gaan, is hier het pinout-diagram - het kan later van pas komen. Merk op dat de pincodes waarnaar in de code wordt verwezen, de GPIO-nummers zijn, niet de D0-16 die waarschijnlijk op uw printplaat staat. Als je absoluut niet zeker weet waarom een ​​sensor niet werkt, heb je waarschijnlijk de pincodes door elkaar gehaald.

NodeMCU__v1.0_pinout

Quick Smart Home Sensor met MQTT en DHT11

Hier is een praktisch voorbeeld dat u meteen kunt gebruiken om uw huis te bewaken. We voegen een DHT11-temperatuur- en vochtigheidssensor toe en rapporteren vervolgens de waarden met behulp van het MQTT-protocol via het Wi-Fi-netwerk, in mijn geval naar een OpenHAB DIY-domoticasysteem (zo niet, dan wil je misschien lezen onze beginnershandleiding om OpenHAB aan de praat te krijgen op een Raspberry Pi Aan de slag met OpenHAB Home Automation op Raspberry PiOpenHAB is een volwassen, open source huisautomatiseringsplatform dat op verschillende hardware draait en dat is protocol agnostisch, wat betekent dat het kan worden aangesloten op bijna alle domotica-hardware op de markt vandaag. Lees verder , en deel 2, dat specifiek gaat over het installeren van een MQTT-server OpenHAB-beginnershandleiding deel 2: ZWave, MQTT, regels en grafiekenOpenHAB, de open source software voor huisautomatisering, overtreft ver de mogelijkheden van andere huisautomatiseringssystemen op de markt - maar het is niet eenvoudig om te installeren. Het kan zelfs ronduit frustrerend zijn. Lees verder ).

Aan de bedradingszijde sluit u de DHT-sensor aan GND, 3.3v, en ~ D4 (of GPIO 2). Dat is alles wat we nu nodig hebben.

Downloaden deze MQTT- en DHT-bibliotheken. Zelfs als je ze al hebt, download deze toch, maak een back-up van wat je hebt en overschrijf hiermee. De nieuwste DHT11-bibliotheek van Adafruit gebruikt een automatisch algoritme voor het bepalen van de snelheid waarmee gegevens worden gelezen van de sensor, maar het is buggy op ESP8266 en 90% van de tijd resulteert in mislukt metingen.

Met de oude versie 1.0 van de bibliotheek die ik in de download heb opgenomen, kunt u de timing handmatig wijzigen: 11 werkt het beste voor deze ESP2866-kaarten. Ik heb ook veel exemplaren van de MQTT-bibliotheek doorgenomen om er een te vinden die goed was terugbellen functie, eindelijk landend op degene die is inbegrepen. U moet de Arduino IDE opnieuw opstarten nadat u deze hebt vervangen.

Hier is de volledige code voor het project. Bovenaan staan ​​alle variabelen die u moet wijzigen, inclusief Wi-Fi-details, MQTT-server (een URL kan worden gebruikt in plaats daarvan als u een cloud-server gebruikt, hoewel er geen authenticatie is), en kanalen om gegevens over te publiceren.

Hier is hoe het werkt en een paar opmerkingen:

  • Eerst maken we verbinding met wifi, dan met de MQTT-server en beginnen dan met de main lus().
  • In de lus onderzoeken we de DHT-sensor elke 60 seconden en publiceren we de metingen naar de relevante MQTT-kanalen. Nogmaals, als je merkt dat de meeste metingen resulteren in een foutmelding, heb je de verkeerde versie van de DHT-bibliotheek - downgrade naar v1.0.
  • client.loop () geeft de controle door aan de MQTT-bibliotheek, waardoor deze kan reageren op inkomende berichten.
  • Er is een bericht ontvangen() functie waar we inkomende berichten afhandelen - doe gewoon een simpele if-instructie om de payload te vergelijken met het bericht dat u verwacht. U kunt dit bijvoorbeeld gebruiken om een ​​relais te activeren.
  • Nadat ik deze een paar dagen had uitgevoerd, merkte ik dat ze willekeurig zouden stoppen met werken - ik neem aan dat dit een soort geheugenlek is, maar gegeven Ik heb niet de codeervaardigheid om daarmee om te gaan en het kan zijn met de kernbibliotheken, ik heb gekozen voor een eenvoudige zachte reset elke dag. Precies één dag nadat de sensorknooppunten voor het eerst zijn geactiveerd, zullen ze zichzelf opnieuw opstarten.
  • Bij het voeden van deze goedkope DHT11-modules vanaf 3.3v zijn de vochtigheidswaarden veel lager dan ze zouden moeten zijn. Ik heb dit opgelost met een simpele vermenigvuldiging en gekalibreerd tegen een commerciële sensor. Ik zou je adviseren om ook te bevestigen tegen je eigen bekende bron, voordat je op de metingen vertrouwt. U kunt ze ook van stroom voorzien met 5V, maar u moet een 5v-3.3v logische niveauverschuiver tussen de gegevenspin en de ESP8266 plaatsen, anders beschadigt u deze.

Als alles goed is gegaan, zou u nu sensormetingen moeten ontvangen in uw MQTT-makelaar en kunt u doorgaan met het verbinden met OpenHAB zoals beschreven in deel 2 van onze beginnershandleiding OpenHAB-beginnershandleiding deel 2: ZWave, MQTT, regels en grafiekenOpenHAB, de open source software voor huisautomatisering, overtreft ver de mogelijkheden van andere huisautomatiseringssystemen op de markt - maar het is niet eenvoudig om te installeren. Het kan zelfs ronduit frustrerend zijn. Lees verder , waar ik je ook liet zien hoe je de gegevens kunt tekenen.

vochtigheidsgrafiek van openhab

Vaarwel Arduino, we hielden zo van je. Een grapje: niet overal in mijn huis kan zelfs wifi worden verkregen, dus voor die plekken heb ik nog steeds een mesh-netwerk nodig met Arduino en RF-ontvangers.

Kijk voor een leuk project hoe je een Wi-Fi-knop maakt met de ESP8266 Hoe u uw eigen met Wi-Fi verbonden knop maakt met ESP8266In deze tutorial leer je hoe je een Wi-Fi-geactiveerde knop maakt met NodeMCU en IFTTT. Lees verder .

Maar wat ga je maken met ESP8266? Alle projecten die ESP8266 gebruiken die u graag op MakeUseOf geschreven wilt zien? Laat het ons weten in de comments!

James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.