Maak kennis met de Arduino-moordenaar: ESP8266

Wat als ik je zou vertellen dat er een Arduino-compatibel dev-bord is met ingebouwde Wi-Fi voor minder dan $ 10? Welnu, dat is er.

Wat als ik je zou vertellen dat er een Arduino-compatibel dev-bord is met ingebouwde Wi-Fi voor minder dan $ 10?  Welnu, dat is er.
Advertentie

Wi-Fi is een essentieel onderdeel van alles wat met Internet of Things (IoT) DIY-projecten te maken heeft, maar onze favoriete Arduino komt niet met Wi-Fi en het toevoegen van een Wi-Fi-schild kan de totale kosten op ongeveer $ 40 brengen. Wat als ik je zou vertellen dat er een Arduino-compatibel dev-bord is met ingebouwde Wi-Fi voor minder dan $ 10? Welnu, dat is er.

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

Zonder opsmuk is de ESP8266 (ook bekend als NodeMCU) oorspronkelijk op de markt gebracht als een goedkope wifi-add-on voor Arduino-boards, totdat de hackergemeenschap besefte dat je de Arduino helemaal uit de vergelijking kon halen.

In minder dan een jaar is de ESP8266 enorm populair geworden en wordt nu zo goed ondersteund en ontwikkeld dat als je Arduino gebruikt, je moet opstaan ​​en kennis moet nemen. Koop er nu een en volg dan deze gids om aan de slag te gaan met het programmeren van je 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 omdat we dit aanpakken vanuit het perspectief van degenen die ons hebben geleerd op Arduino, dat is wat we exclusief vandaag zullen behandelen.

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

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

Aan de slag met ESP8266-12E en Arduino

Installeer eerst de seriële stuurprogramma's voor dit board. Mogelijk moet u KEXT-ondertekening uitschakelen als u El Capitan gebruikt vanwege nieuwe beveiligingssystemen.

Vervolgens moeten we ondersteuning voor ESP8266 inschakelen via de beheerprogramma van de Arduino IDE. Open Voorkeuren en voer de volgende URL in waar de URL's van Additional Board Manager worden vermeld :

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

Arduino bordmanager URL's

Druk op OK, open vervolgens de Boards Manager vanuit Tools -> Board menu, zoek naar esp8266 en installeer het platform. U zou nu een keuze voor NodeMCU 1.0 moeten zien.

selecteer board

Laat de CPU en de uploadsnelheid ongewijzigd en selecteer je nieuw geïnstalleerde seriële poort. Op Mac wordt dit weergegeven als cu.SLAB_USBtoUART .

Als eerste programma zou ik de eenvoudige Wi-Fi-scanner aanraden - zoek hem op via Bestand -> Voorbeelden -> ESP8266WiFi -> WifiScan . Merk op dat het vrij traag is om te uploaden, maar uiteindelijk zal het zeggen "klaar met uploaden" en op dat moment (niet eerder, of je breekt het uploadproces), kun je de seriële monitor openen. Je zou iets dergelijks moeten zien als:

wifi-scantest esp8266
Succes! Laten we nu proberen om verbinding te maken met één.

Hier is een absoluut eenvoudige barebones-code om verbinding te maken met een Wi-Fi-netwerk. Het doet niets anders dan alleen verbinding maken, maar het is iets dat je later kunt toevoegen. Vergeet niet om de YOUR_SSID en YOUR_PASSWORD te wijzigen in uw wifi-gegevens. Upload, open de Seriële console en je zou zien dat hij verbinding maakt.

#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() { } 

Is het niet geweldig hoe belachelijk eenvoudig dat was?

Voordat we verder gaan, is hier het pin-out diagram - dit kan later van pas komen. Merk op dat de pincodes waarnaar in code wordt verwezen de GPIO-nummers zijn, niet de D0-16 die waarschijnlijk op uw PCB-print is geschreven. Als je absoluut, positief niet kunt achterhalen waarom een ​​sensor niet werkt, heb je waarschijnlijk de pincodes omhoog gemengd.

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 de waarden met behulp van het MQTT-protocol via het Wi-Fi-netwerk, in mijn geval naar een OpenHAB DIY-domoticasysteem (als dat niet het geval is, wilt u misschien onze beginnershandleiding voor OpenHAB opstarten en draaien op een Raspberry Pi Aan de slag met OpenHAB Home Automation op Raspberry Pi Aan de slag met OpenHAB Home Automation op Raspberry Pi OpenHAB is een volwassen, open source domotica-platform dat op verschillende hardware draait en is protocol agnostisch, wat betekent het kan verbinding maken met bijna elke huisautomatiseringshardware die momenteel op de markt is. Lees meer en deel 2, dat specifiek gaat over het installeren van een MQTT-server OpenHAB Beginner's Guide Deel 2: ZWave, MQTT, regels en grafieken OpenHAB Beginner's Guide Deel 2: ZWave, MQTT, regels en grafieken OpenHAB, de open source domotica-software, overtreft ruimschoots de mogelijkheden van andere domoticasystemen op de markt, maar het is niet eenvoudig om deze in te stellen. ronduit frustrerend zijn. Lees verder ).

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

Download deze MQTT- en DHT-bibliotheken. Zelfs als je ze al hebt, download deze dan 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 van de sensor worden gelezen, maar het is buggy op ESP8266 en 90% van de tijd resulteert in mislukte metingen.

Met de oude versie 1.0 van de bibliotheek die ik in de download heb opgenomen, kun je de timing handmatig wijzigen: 11 werkt het beste voor deze ESP2866-kaarten. Ik heb ook veel exemplaren van de MQTT-bibliotheek doorzocht om een ​​goede terugbelfunctie te vinden, die uiteindelijk op de opgenomen is. 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 (in plaats daarvan kunt u een URL gebruiken als u een cloudserver gebruikt, hoewel er geen authenticatie is) en kanalen om gegevens te publiceren.

Hier is hoe het werkt en een paar opmerkingen:

  • Eerst maken we verbinding met de wifi en vervolgens met de MQTT-server en beginnen dan aan de hoofdlus ().
  • In de loop peilen we de DHT-sensor om de 60 seconden en publiceren we de metingen naar de relevante MQTT-kanalen. Nogmaals, als u vindt dat de meeste resultaten resulteren in een foutmelding, heeft u de verkeerde versie van de DHT-bibliotheek - downgrade naar v1.0.
  • client.loop () geeft de besturing door aan de MQTT-bibliotheek, zodat deze kan reageren op inkomende berichten.
  • Er is een messageReceived () -functie waarbij we inkomende berichten verwerken - voer eenvoudig een if-statement uit om de payload te vergelijken met het bericht dat u verwacht. Je zou dit kunnen gebruiken om bijvoorbeeld een relais te activeren.
  • Nadat ik deze een paar dagen had gebruikt, merkte ik dat ze willekeurig zouden stoppen met werken - ik neem aan dat dit een soort geheugenlek is, maar gezien het feit dat ik niet over de codeervaardigheid beschik om daarmee om te gaan en het misschien met de kernbibliotheken is, Kies elke dag voor een eenvoudige zachte reset. Precies een dag nadat de sensorknopen voor het eerst worden geactiveerd, zullen ze zichzelf opnieuw opstarten.
  • Bij het aandrijven van deze goedkope DHT11-modules van 3, 3V, zijn de vochtigheidswaarden veel lager dan zou moeten zijn. Ik heb dit opgelost met een eenvoudige vermenigvuldiging en gekalibreerd tegen een commerciële sensor. Ik zou u adviseren om ook tegen uw eigen bekende bron te bevestigen voordat u op de metingen vertrouwt. Je kunt ze ook op 5V zetten - maar je moet een 5v-3.3v logisch niveau shifter tussen de datapen en de ESP8266 plaatsen, anders beschadig je deze .

Als alles goed is gegaan, zou je nu sensorwaarden moeten ontvangen in je MQTT-makelaar, en doorgaan deze te verbinden met OpenHAB zoals beschreven in deel 2 van onze beginnershandleiding OpenHAB Beginner's Guide Deel 2: ZWave, MQTT, regels en grafieken OpenHAB Beginner's Guide Part 2: ZWave, MQTT, Rules and Charting OpenHAB, de open source domotica-software, overtreft ruimschoots de mogelijkheden van andere domoticasystemen op de markt, maar het is niet eenvoudig om deze in te stellen. In feite kan het ronduit frustrerend zijn. Read More, waar ik je ook liet zien hoe je de gegevens in een grafiek kunt weergeven.

grafiek van de humditeit van openhab

Vaarwel Arduino, we waren zo dol op thee. Grapje: niet overal in mijn huis kan zelfs wifi worden gebruikt, dus voor die plekken heb ik nog steeds een mesh-netwerk nodig met Arduino en RF-ontvangers. Maar wat gaat u doen met ESP8266? Eventuele projecten met ESP8266 die je graag zou willen laten opschrijven bij MakeUseOf? Laat het ons weten in de reacties!

In this article