Spil Guider > videospil > alle video game > Mød Arduino Killer: ESP8266

Mød Arduino Killer: ESP8266

Wi-Fi er en væsentlig bid af kit til enhver tingenes internet (IoT) DIY projekter, men vores favorit Arduino ikke kommer med Wi-Fi, og tilføje i en Wi-Fi-skjold kan bringe de samlede omkostninger til omkring $ 40. Hvad hvis jeg fortalte dig en der er en Arduino-kompatible dev bord med indbygget Wi-Fi for 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 den skinnende hoved vores kære Arduino udvikling bord. Er det muligt at forelske sig i en printplade?

Iørefaldende navne sidebemærkning, ESP8266 (også kendt som NodeMCU) blev oprindeligt markedsført som en lav pris Wi-Fi add-on til Arduino boards, indtil hacker samfund indså du kunne afskære Arduino ud af ligningen helt.

på mindre end et år, ESP8266 er eksploderet i popularitet, og er nu så godt understøttet og udviklet, at hvis du bruger i øjeblikket Arduino, du nødt til at stå op og tage til efterretning. Køb en nu, så følge med denne vejledning at komme i gang programmering din ESP8266 -. Alle fra inden den velkendte Arduino IDE


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

Der er en hel del modeller af ESP8266 rundt nu, men jeg har tænkt mig at gå videre og anbefale denne ene:. ESP-12E (også kendt som NodeMCU 1.0, eller det er nyeste søskende NodeMCU 2.0)
< p> det er lidt dyrere end de andre ($ 6.50 sammenlignet med $ 4!), men indeholder den serielle driver nødvendig for at programmere chippen, og har en indbygget power regulator, samt masser af IO ben. Det er bred opbakning og virkelig ikke har brug for noget bortset fra en USB-forbindelse til programmering eller magt, så det er den nemmeste at arbejde med. Hvis du køber enhver anden form for ESP8266 bord, kan du bruge en separat 3.3v power regulator, og en egnet FTDI-forbindelse til programmering.

Kom godt i gang med ESP8266-12E og Arduino

Først installere de serielle drivere til dette board. Det kan være nødvendigt at deaktivere KEXT underskrive hvis du kører El Capitan på grund af nye sikkerhedssystemer.

Dernæst skal vi aktivere understøttelse for ESP8266 fra Arduino IDE bestyrelse manager. Åbn Indstillinger, og indtast følgende URL hvor der står Ekstra Board Manager-URL'er:

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


Hit Ok, så åben den Boards manager fra Funktioner - & gt; Board menu, søge efter esp8266 og installere platformen. Du skulle nu se et valg for NodeMCU 1.0.


Lad CPU og upload hastighed som er, og vælg din nyligt installere serielle port. På Mac, vises dette som cu.SLAB_USBtoUART

Som et første program, vil jeg foreslå den enkle Wi-Fi-scanner - find det fra Filer - & gt.; Eksempler - & gt; ESP8266WiFi - & gt; WifiScan. Bemærk, at det er ganske langsomt at uploade, men i sidste ende det vil sige "færdig uploade", og på det tidspunkt (ikke før, eller du vil bryde upload processen), kan du åbne den serielle skærm. Du skulle se noget lignende dette:


succes! Lad os nu prøve at tilslutte til en.

Her er en absolut simpel barebones kode for tilslutning til et Wi-Fi-netværk. Det gør ikke gøre andet end bare slutte, men det er noget, du kan tilføje for senere. Bare husk at ændre YOUR_SSID og din_adgangskode til dine Wi-Fi detaljer. Upload, åbne Serial konsol og du bør se det forbinder
#include const char * SSID = "YOUR_SSID". Const char * password = "din_adgangskode"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ( "Tilslutning til"); Serial.println (SSID); WiFi.begin (SSID, password); mens (! WiFi.status () = WL_CONNECTED) {forsinkelse (500); Serial.print ( "."); } Serial.println ( ""); Serial.println ( "WiFi tilsluttet"); Serial.println ( "IP-adresse:"); Serial.println (WiFi.localIP ()); } Void loop () {}

Er det ikke fantastisk, hvordan latterligt simpelt, der var

Før vi fortsætter, her er pinout diagrammet -? Det kan komme i handy senere. Bemærk, at PIN-numre, der er nævnt i koden er de GPIO numre, ikke den D0-16 sandsynligvis skrevet på dit bord PCB. Hvis du absolut, positivt kan ikke finde ud af, hvorfor en sensor ikke fungerer, har du sikkert blandet pin-numre op.



Quick Smart Home Sensor med MQTT og DHT11
< p> Her er et praktisk eksempel kan du sætte til at bruge det samme til at overvåge dit hjem. Vi tilføjer en DHT11 temperatur og luftfugtighed sensor, så rapportere værdierne med MQTT protokollen over Wi-Fi-netværk, i mit tilfælde til en OpenHAB DIY home automation system (hvis ikke, kan du læse vores begyndere guide til at få OpenHAB op at køre på en Raspberry Pi, og del 2, der specifikt omhandler installation af en MQTT server).

på ledninger side, tilslutte DHT sensoren til GND, 3.3v, og ~ D4 (eller GPIO 2). Det er alt, vi har brug for nu.

Download disse MQTT og DHT biblioteker. Selv hvis du allerede har dem, downloade disse dem alligevel, backup, hvad du har, og overskrive med disse. Den seneste 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 mislykkede aflæsninger.

Med den gamle version 1.0 af biblioteket, jeg har inkluderet i download, kan du manuelt ændre timingen: 11 fungerer bedst for disse ESP2866 boards. Jeg gik også gennem mange kopier af MQTT biblioteket forsøger at finde en en god tilbagekald
funktion, endelig lander på den ene inkluderet. Du bliver nødt til at genstarte Arduino IDE efter udskiftning disse.

Her er den komplette kode for projektet. På toppen er alle de variabler, du har brug for ændringer, herunder Wi-Fi-detaljer, MQTT server (en URL kan bruges i stedet, hvis du bruger en sky server, selvom der er ingen godkendelse på plads), og kanaler til at offentliggøre data om.


det er sådan her det virker og et par noter:

først skal vi oprette forbindelse til Wi-Fi, derefter til MQTT serveren, så begynder de vigtigste loop () .

i løkken, vi polle DHT sensoren hver 60 sekunder og offentliggøre aflæsninger til de relevante MQTT kanaler. Igen, hvis du finde de fleste af de aflæsninger resulterer i en fejlmeddelelse, du har den forkerte version af DHT biblioteket - nedgradering til v1.0

client.loop () passerer kontrollen til MQTT biblioteket, så. den til at reagere på indgående beskeder

Der er en messageReceived () funktion, hvor vi håndterer indgående meddelelser -. bare lave en simpel, hvis erklæring at sammenligne nyttelast med budskabet du forventer. Du kan bruge dette til at aktivere et relæ, f.eks

Efter at have kørt disse for et par dage, fandt jeg, at de ville tilfældigt stoppe med at arbejde -. Jeg formoder, det er en form for memory leak, men givet jeg ikke har kodning evner til at beskæftige sig med det, og det kan være med de centrale biblioteker, jeg har valgt en enkel blød nulstilling hver dag. Præcis en dag efter de sensorer knudepunkter er først aktiveret, vil de genstarte sig selv.

  • Når kraftoverførsel disse billige DHT11 moduler fra 3.3v, luftfugtigheden værdier er 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 at bekræfte mod din egen kendte kilde også, før stole på aflæsningerne. Alternativt magten dem med 5V - men du skal placere en 5v-3.3V logisk niveau Shifter mellem data pin og ESP8266, eller du vil ødelægge det

    Hvis alt gik godt, bør du nu. være at modtage sensor aflæsninger i din MQTT mægler, og kan gå videre med at forbinde disse til OpenHAB som beskrevet i del 2 i vores nybegynder vejledning, hvor jeg også viste dig, hvordan du tegner dataene.


    Farvel Arduino, vi elskede dig så. Just kidding: ikke alle steder i mit hus kan endda få Wi-Fi, så for disse pletter, jeg vil stadig brug for et mesh-netværk med Arduino og RF-modtagere. Men hvad vil du gøre med ESP8266? Eventuelle projekter ved hjælp ESP8266 du gerne vil se skrevet op på MakeUseOf? Lad os vide i kommentarerne!

  • Relaterede artikler