WiFi ESP8266 er et nyt trin i designet af hjemmeenheder med en trådløs grænseflade. ESP8266 "Witty Cloud" er i øjeblikket det mest succesrige WiFi-modul til hjemmelavede produkter og smarte hjem

Forskellige implementeringsmuligheder for ESP8266-modulet er blevet gennemgået her mere end én gang, og det med rette. Denne lille chip i møntstørrelse med WiF ombord kan både fungere som et adgangspunkt og en klient og kan programmeres på enhver måde – og sælges for få dollars.

Før vi nåede at vænne os til tanken om, at alle mulige slags interessante håndværk kan laves på en krone Arduino, Attiny eller STM, blev enheder med WiFi og kraftfulde 80 megahertz-processorer deres konkurrenter i pris. (For pokker, min processor er i den første egen computer var lidt hurtigere, hvor gammel er jeg).

Et problem - alle enheder med ESP8266, der passerede gennem mine hænder, var meget ubelejlige, at forbinde dem var en smerte. Men den kinesiske industri hørte os og gjorde det næsten godt :)

Hvorfor vi "elsker" forskellige varianter ESP8266:

  • De er drevet af 3,3 volt i stedet for de mere sædvanlige fem
  • Ved spidsbelastning kræver de en strøm på op til 320mA, hvilket er ud over mulighederne for konventionelle USB-TTL-konvertere.
  • Afstanden mellem printoutput er normalt ikke standard 2,54 mm, men præcis 2 mm - hvilket gør lodning til et indviklet eventyr
  • Der er kun én version af brættet med en stiftstigning på 2,54 mm ("ESP8266-01"), men den har et minimum af nyttige stifter
  • Chippen skiftes til programmeringstilstand ved at lukke kontakterne, hvilket krævede færdighed. Eller lodning af knappen
  • Med Nulstil samme problem - sluk enten for strømmen eller lod knappen
Og så udstedte den kinesiske industri "ESP8266-12E" under navnet " Vittig sky»:

Tavlen er en "sandwich" af to. På det øverste lag (til venstre på begge billeder) er selve ESP8266-chippen, under den er MicroUSB-strømstikket og AMS1117-3.3 spændingsregulatoren, hvis opgave er at omdanne 5 volt til 3,3. Ifølge databladet har regulatoren strømme op til 0,8A, så dette er mere end nok til at drive chippen. der - Genstarts knap at genstarte.
For at have noget at indtage de tomme hjørner af brættet, skubbede kineserne en RGB LED og en fotomodstand dertil, mere om dem senere.

På det nederste lag af "sandwichen" (billedet til højre) er der en fuldgyldig MicroUSB, en CH340G-chip og knapperne "Flash" (firmwaretilstand) og "Nulstil".

"Sandwich" giver større handlefrihed. Du kan tilslutte "sandwichen" til computeren i den nederste (fuld) USB-stik, omprogrammer det - og integrer derefter kun den øverste del i dit håndværk, hvilket sparer på kroppens størrelse.

Desuden kan bunden af ​​"sandwichen" bruges til at programmere hjemmelavede moduler. Jeg har selv loddet ESP8266-12 og ESP8266-07 modulerne liggende på ikke særlig vellykkede adapterkort for $0,22 og monteret AMS1117 regulatorer "på snotten" - begge fungerede uden problemer og viste sig at være 100% kompatible med hensyn til stik og knapper:

Okay, nok rose modulet, lad os gøre noget nyttigt. Sælgers side annoncerer en slags SDK og endda en slags kinesisk "sky" for enheder baseret på ESP8266 og Android, selvom der (næsten) ingen information er om dem på engelsk. Hvis ja, lad os give op på dem, lad os starte Arduino IDE 1.6 og lad os komme ind i indstillingerne.

I vinduet "Yderligere URL'er" skal du indsætte linjen https://arduino.esp8266.com/package_esp8266com_index.json Åbn derefter "Boards manager" og indtast "ESP8266" i søgefeltet. Klik på Installer og gør dig klar til at vente, indtil så mange som 130 megabyte pakker er downloadet:

Lad os tilslutte "sandwichen" til computeren i det nederste (fulde) MicroUSB-stik. Windows skal registrere USB-TTL-konverteren "CH340G" og tildele en virtuel port til den. Det er denne port, vi vil specificere i Arduino IDE-indstillingerne. Resten af ​​indstillingerne er:

Lad os sætte den elementære kode i hukommelsen

#omfatte const char* ssid = "??? navn på dit WiFi-punkt ???"; const char* password = "??? adgangskode???"; WiFiServer server(80); void setup() ( Serial.begin(115200); WiFi.begin(ssid, adgangskode); while (WiFi.status() != WL_CONNECTED) ( delay(500); Serial.print("."); ) server. begin(); Serial.print("IP-adresse på vores modul: "); Serial.println(WiFi.localIP()); ) void loop() (WiFiClient-klient = server.available(); if (!klient) ( return; ) while(!client.available())( delay(1); ) client.flush(); String s = "HTTP/1.1 200 OK\r\nIndholdstype: text/plain\r\n\r \nhej fra esp8266!\n"; client.print(s); delay(1); )

Bemærk venligst, at under blinkprocessen er der ingen grund til at trykke på Flash-knappen - bestyrelsen tager sig af alt selv.

Efter at det nye program er indlæst i ESP8266, kan det afbrydes fra computeren og forsynes selv fra en powerbank. Nederste del"Sandwichen" kan tages af, den er ikke længere nødvendig.

Enten med Arduino hjælp seriel skærm (porthastighed - 115200), eller i routerens webgrænseflade ser vi på den IP-adresse, vi modtog i WiFi-hjemmenetværk vores ESP8266. Åbn denne adresse i browseren på din computer eller telefon:

Vores enhed tilsluttet hjemmenetværk, hentede webserveren og svarer os.

Er du sikker på, at din enhed virker? Lad os gå videre. For at det kan bruges til noget brugbart i hverdagen, er det interessant at "blive venner" med det, for eksempel med et stafet. Det er rigtigt, at klassiske 5-volts relæer per definition ikke længere er nødvendige - risikoen er for stor for, at spændingen på 3,3 volt ikke rækker til, at elektromagneten trækker ankeret. Derfor tager vi et Omron solid state relæ til $1,90. Ifølge databladet er den spænding, vi har, nok til, at den fungerer klart:

Vi forbinder "plus" og "minus" til VCC- og GND-kontakterne i det øverste lag af "sandwich", og det tredje, signal, ledning til for eksempel GPIO 2-kontakten. Som et program kan du tage WiFiWebServer-skitsen, som er knyttet til Arduino-biblioteket, eller brug kollegaens program Sav13 fra samopal.pro/wifi-power-esp8266/

Til testen tog jeg en simpel 20W halogenpære og klikkede på den til mit hjerte:

Betjening sker på et splitsekund efter kommandoen er givet. For at kontrollere pålideligheden indsatte jeg en simpel tæller i koden og skitserede en simpel flagermus-fil, der tændte og slukkede pæren med en pause i sekundet. Jeg åbnede et par ekstra vinduer, hvorfra jeg begyndte at bombardere modulets IP-adresse med en endeløs ping-kommando. Efter et par timer oversteg on-off-tælleren 19 tusind, men alt fungerede - hvilket giver en vis tillid til enhedens pålidelighed.

Hvis du har læst så langt, men tanken "det hele er kompliceret" snurrer i dit hoved, så har jeg noget behageligt til dig.

Husk jeg nævnte det kinesisk producent"til forandring", har du sat en RGB LED og en fotomodstand på kortet? Du kan eksperimentere med dem, selvom du ikke har andre sensorer eller andre perifere enheder.

I denne mulighed skal du gøre en indsats og starte Arduino IDE præcis én gang.


Applikationsskærmen er et tomt felt, hvor du kan placere elementer, som på et dashboard. Prøv først "zeRGBa" og "gauge":

I zebraindstillingerne skal du angive, at den trefarvede LED på tavlen er forbundet til ben 12 (grøn), 13 (blå) og 15 (rød):

I indstillingerne for "måler" skal du angive, at fotomodstanden på kortet er forbundet til den analoge indgang "adc0":

Aktiver det du har skulptureret ved at klikke på knappen i øverste højre hjørne. Du vil se, at den gule indikator ændrer sig afhængigt af lysniveauet, og RGB-LED'en på "sandwichen" skifter farve, når du stikker i zebraovergangen:

Praksis har vist, at børn virkelig kan lide denne ting. En ting er at spille andres spil på en tablet, en anden ting er at lave og male en "fjernbetjening" selv og styre noget håndgribeligt. Det er nok at påtage sig den forberedende del i Arduino og derefter vise, hvordan man bruger den, give flere LED'er, knapper eller dele såsom en LM35 analog temperatursensor - de vil straks tage dit "legetøj" væk, og dit barn vil have travlt i lang tid. Du bliver ikke trukket af ørerne, det er blevet tjekket.

Til hurtig oprettelse Blynk-prototyper viste sig også at være meget praktiske - det er nemmere at skitsere knapper og kontakter der end at bygge din egen webgrænseflade. Den sparede tid kan bruges mere nyttigt på at samle det næste håndværk.

Resumé

For en pris lidt over 200 rubler får du en meget kraftfuld og rolig uafhængig enhed, hvorpå du kan programmere alverdens brugbare ting til dit hjem – og styre dem via WiFi.

"Sandwichen" viste sig at være overraskende vellykket. Den er mindre end en dollar dyrere end den bare ESP8266-12, men sparer dig for masser af tid og besvær. Et bundt ledninger og et brødbræt er ikke nødvendigt.

Flyt med forudindstillet til LED bord og fotosensor - meget vellykket. Selvom du ikke har andet end et modul og et MicroUSB-kabel, kan du stadig i det mindste prøve noget først og nyde købet. Hvis de ikke er nødvendige på det færdige produkt, skal du blot lodde dem eller skære dem af.

Til denne pris er "sandwichen" en klar konkurrent til Arduino Nano, og gør den meget unødvendig Bluetooth-moduler(type HC-05) og endnu mere - NRF24L01+ radiomoduler.

Jeg fangede mig selv og brød næsten traditionen:

I dag plejer prisen på Wi-Fi-moduler at være øre takket være udviklingen. Dette giver dig mulighed for at udvikle hjemmeenheder på niveau Wi-Fi teknologi. Hvad giver det os? Faktisk er meget praktisk talt det samme som selve internettet foruden alt det andet. Når den således laver en hvilken som helst enhed, vil den nu have adgang til netværket og internettet (hvis den er til stede på netværket), hvilket betyder, at enheden teoretisk er tilgængelig for enhver anden enhed, der er placeret på netværket eller forbundet til internettet. For bare fem år siden kunne du og jeg ikke engang drømme om et sådant niveau af hjemmeenheder.

Jeg besluttede at lave en enhed, der kunne sende sensordata til internettet, takket være hvilken det ville være muligt at overvåge aflæsninger fra hvor som helst i byen, landet eller landet via internettet.

Så når du vælger WiFi modul ESP8266-valg lænede sig mod ESP-07-modellen med tilslutningsmuligheder ekstern antenne for at få det bedste signal købt ind Kinesisk online butik GearBest. I dette tilfælde har vi brug for selve antennen (jeg gad ikke med detaljer, men enhver anden med et RP-SMA-stik på WiFi frekvenser), et stik til tilslutning af antennen til modulet og om nødvendigt et forlængerkabel til antennen. Plus de nødvendige sensorer.

At arbejde med modul ESP-07 Et trykt kredsløb blev lavet i henhold til følgende skema:

Kredsløbet består af tre hovedblokke: en 3,3 volt spændingsstabilisator VR1 med de nødvendige elementer (den justerbare version af stabilisatoren kan erstattes med ams1117 3v3 med undtagelse af modstande R1 og R3), den blok, der er nødvendig for programmering af WiFi-modulet er lavet på basis af en USB-UART interface-konverter CH340G med den nødvendige ledning af mikrokredsløbet (CH340G kan erstattes med andre mikrokredsløb med den tilsvarende funktionalitet ved at ændre ledningerne til den udskiftede chip), selve WiFi-modulet, samt som de nødvendige elementer til drift og programmering. For at gå ind i programmeringstilstanden skal du trykke på S2 Prog-knappen og genstarte modulet eller slukke og tænde for strømmen med S2 Prog-knappen nede. Brug derefter softwaren på din pc til at downloade firmwaren til WiFi-modulet. Når firmwaren er færdig, skal du genstarte modulet igen, men uden at trykke på S2 Prog-knappen - på denne måde fungerer modulet i hovedtilstanden. Ved brug af ekstern antenne giver tavlen plads til fastgørelse af antennebeslaget. Selve beslaget kan være af den enkleste konfiguration. Et mini-USB-stik bruges til at forbinde til en computer.

For at tilslutte antennen til ESP-07 skal du bruge et IPX til RP-SMA-kabel. Da jeg valgte 18 dB GDI-8218-antennen til mig selv, ser enheden samlet med sensorer ret truende ud. Når du bruger flere sensorer, skal du selvfølgelig forbinde alt brødbræt, hvis du kun bruger én BMP280-sensor til at overvåge vejrparametre (måler temperatur, tryk og fugtighed), så ser kredsløbet smukkere ud. Derudover er kortet til ESP8266 lavet som et universelt værktøj, så hvis du redigerer det for at installere sensorer direkte på kortet, vil kredsløbet få et mere kompakt og æstetisk udseende.

Det er ikke altid praktisk at bruge en antenne i denne form, så for nemheds skyld kan du bruge et RP-SMA han-til-hun forlængerkabel til antennen for at fastgøre den i bekvem beliggenhed eller blot gøre det i forhold til hele ordningen.

Et alternativ til et sådant kort kan være fabriks nodemcu-kort eller adapterkort til PLS/PBS-kontakter. Sidstnævnte har kun et par modstande, der er nødvendige for at tænde modulet og et sted til en spændingsstabilisator (medfølger ikke). På grund af deres meget minimale karakter var det ikke praktisk for mig at bruge sådanne boards (medmindre som en del af en anden enhed udstyret med et stik til et sådant board).

For at forbinde til sensormodulet kan du bruge alle gratis GPIO'er på modulet. For at opnå aflæsninger af de parametre, vi har brug for, kan alle sensorer bruges i enhver konfiguration, om hvilke vi taler under. Jeg brugte DS18B20-sensorer i målersondeformatet (det er praktisk at overvåge temperaturen udenfor eller enhver væske, da den anses for at være vandtæt), BMP180 til overvågning atmosfærisk tryk og AM2302 til indendørs fugtkontrol. Glem ikke de nødvendige ledninger til sensorerne, hvis du ikke bruger dem i form af moduler med alt nødvendigt: ​​DS18B20 er forbundet med en pull-up modstand til strømforsyningens positive (10 kOhm modstand mellem 1-lederen) pin og strømforsyningen positiv), på samme måde for AM2302 (DHT22), bør sensorer, der fungerer på I 2 C-bussen, også have pull-up-modstande på SCL- og SDA-kontakterne.

For at opnå resultatet er det dog nødvendigt at skrive firmware, så enheden fungerer præcis, som vi har brug for den. Med forberedte ideer, når man søgte efter et SDK til ESP8266, blev der fundet en online firmwaredesigner (eller online compiler), som ikke kræver programmeringsviden (i de fleste af dens funktioner)! For at få adgang til firmware-samlingen kræves registrering, ellers er denne menu slet ikke tilgængelig. Uden registrering kan du kun downloade "hurtig start" firmware.

Alt, hvad vi behøver, er at markere boksene med de nødvendige funktioner og kompilere firmwaren til ESP8266-modulet, downloade det (her skal vi tage højde for, at modulets hukommelse ikke er ubegrænset og vælge de nødvendige funktioner, da al online-funktionaliteten compiler vil stadig ikke passe i én enhed).

Flash derefter modulet ved hjælp af nodemcu-flasher-programmet (programindstillinger nedenfor på skærmbillederne) (tilslut enheden via USB til pc'en). Når der blinker, skal der ikke være tilsluttet noget til modulets UART-ben (GPIO1, GPIO3), ellers kan modulet ikke blinke. Hvis du planlægger at tilslutte noget til disse ben, skal du slukke for det, så længe firmwaren varer. Efter at have flashet firmwaren genstarter vi modulet eller slukker og tænder for strømmen - afhængigt af indstillingerne vil modulet oprette forbindelse til netværket eller oprette sit eget adgangspunkt. Enheden er klar til indstillinger og brug!

Hvis WiFi-modulet allerede er blevet brugt med anden firmware, anbefales det, at før du skriver hovedfirmwaren, nedskriver du firmwaren med en tom formular (fil i applikationerne).

Indstil indstillingerne for ESP-07-modulet (som praksis viser, påvirker indstilling af flashhukommelsesstørrelsen ikke den anvendte prøve; tilsyneladende indstilles den korrekte værdi automatisk):

Angiv stien til firmwarefilen:

Angiv COM port installeret ved tilslutning til dette modul, og tryk på Flash-knappen (hvis alt er gjort korrekt, så indlæsningen begynder firmware ind i modulet):

Vent på, at firmwaren er færdig:

Før du kompilerer firmwaren, er det praktisk at indstille standardindstillingerne på online-kompilatorsiden, hvor du skal indtaste navnet på adgangspunktet og WiFi adgangskode router (afsnit " System" i slutningen af ​​funktionalitetsvalglisten, før du samler firmwaren). Derudover kan du indstille en statisk IP-adresse for enheden. For at gøre dette, i systemfunktioner du skal markere feltet ud for " Standardindstillinger» og klik på tandhjulet for at få en menu frem, hvor disse data indtastes, hvis det er nødvendigt. I dette tilfælde, efter at have tændt for WiFi-enheden, vil den automatisk oprette forbindelse til routeren. Når du har tændt det, skal du åbne browseren og indtaste IP-adressen på den enhed, som den er registreret med på netværket i adresselinjen. Vi kommer til menuen WiFi-enheder, hvor du ikke kun kan overvåge parametrene for sensorerne i netværket, men også konfigurere andre funktioner, som du valgte før montering af firmwaren.

Hvis du ikke laver standardindstillingerne, før du samler firmwaren, så vil der blive oprettet et adgangspunkt, første gang du tænder den (efter at du har blinket, skal du trykke på resrt-knappen på modulet 3 gange med et interval på 1 sekund). hamessmart ved adressen 192.168.4.1 . Ved hjælp af en telefon eller bærbar computer skal du oprette forbindelse til et adgangspunkt og gå til denne adresse via en browser, foretage indstillinger, omkonfigurere om nødvendigt Stationstilstand i indstillinger Hoved(log ind for at komme ind i menuen , adgangskode 0000 ), også indtaste navnet på punktet WiFi adgang router og adgangskode.

Først skal du indtaste indstillingerne i menuen Hoved(Mark Konfig indeholder links til indstillinger og konfiguration af udvalgte funktioner).

For at komme ind i menuen skal du indtaste dit brugernavn og adgangskode. 0000 . Her kan du administrere indstillinger for sikkerhed, tid og netværksforbindelse. Tryk på knappen for at gemme de indtastede indstillinger Sæt.

Vend tilbage til hovedmenuen og følg linket Hardware. Her aktiverer og konfigurerer vi de sensorer, der skal tilsluttes modulet (tilstedeværelsen af ​​forskellige sensorer i denne menu bestemmes af deres valg, når de samler firmwaren - hvis du ikke vælger noget før kompilering, vil disse funktioner ikke være tilgængelige i selve firmwaren). For sensorer, der fungerer via I2C-bussen, skal du indstille fælles for alle enheder GPIO. Hvorfor almindelig? I2C-bussen giver dig mulighed for at forbinde flere enheder parallelt. Hver sådan enhed har sin egen adresse, og så snart masterenheden sender denne adresse, vil slaveenheden med denne adresse vide, at der nu vil blive udvekslet data med den, mens de andre enheder på bussen er inaktive. For at tilslutte DHT11/22 fugtsensorer bruges et separat ben på modulet, som indstilles i indstillingerne i denne menu. For at aktivere DS18B20-sensoren skal du også indstille en separat GPIO-pin, og husk derefter at gemme de indtastede indstillinger, gå til hovedmenuen og følg 1-leder linket.

Klik i denne menu Ryd & Scan liste, hvorefter det skulle dukke op ID sensor DS18B20. Og først efter dette fungerer temperatursensoren.

For at tilslutte analoge sensorer kan du bruge en ADC (den eneste pin ADC WiFi-modul). Dette er modulets indbyggede ADC med en bitkapacitet 10 bit (1023 prøver) med referencespænding 1.024 V. Hvis sensoren har et udgangsspændingsniveau større end denne værdi, er det nødvendigt at bruge en spændingsdeler ved hjælp af modstande med en kendt divisionskoefficient. Den resulterende værdi fra ADC vil afvige fra den faktiske værdi med denne faktor. Mange analoge sensorer er kommercielt tilgængelige som moduler baseret på LM393. Funktionsprincippet for sådanne moduler er, at trimningsmodstanden indstiller referencespændingen for komparatoren (LM393), og så snart påvirkningen på sensoren øger spændingen ved indgangen til komparatoren, hvilket gør den større end referencen, en logisk enhed vil blive dannet ved udgangen af ​​dette modul. Således kan du justere responstærsklen for sensoren (eller rettere modulet af denne sensor) og registrere opnåelsen af ​​denne tærskel ved blot at bruge GPIO ESP8266 konfigureret til input. For at gøre dette skal du gå til hovedmenuen og klikke på GPIO-linket. Indstil pin-nummeret og driftstilstanden for den i denne menu, og gem den. Aflæsningerne vil være som " 0 "eller" 1 " - tærsklen er nået eller ej, handlingen har fundet sted eller ej.

For nu at vise sensoraflæsninger på internettet, følg linket Servere eller DDNS afhængigt af den valgte internetforbindelsesmetode. Oprindeligt planlagde jeg at bruge tjenesten narodmon.ru til dette formål, som viser sensoraflæsningerne for alle brugere, der bruger denne tjeneste, direkte på kortet. Derudover har denne service applikationer og widgets til mobile enheder og pc, hvilket er meget praktisk. Tilmeld dig denne service (det er helt gratis) ved hjælp af ID(se skærmbillede nedenfor - link Servere felter Konfig).

Service menneskerodmon(populær overvågning) gemmer sensoraflæsninger i op til 1 år og giver dig mulighed for at kompilere sensormålinger i en periode ud over anden funktionalitet.

Efter alle manipulationerne i WiFi-indstillinger moduldata sendes til ekstern service kontrol og opbevaring af sensorindikatorer, som kan ses fra hvor som helst i verden med internetadgang. Modulets hovedside er tilgængelig på lokalt netværk og viser aflæsningerne for alle tilsluttede sensorer. Den ønskede effekt er opnået.

Selvfølgelig giver online-kompileren mange andre funktioner: forbindelse forskellige displays, sende e-mail eller sms (påkrævet gsm modul Til sende sms uden internettjenester), udfører tilpasset logiske operationer, styring af forskellige perifere enheder ved hjælp af GPIO og PWM, optagelse af overvågede parametre på et SD-hukommelseskort og meget mere. Hvis et modul ikke er nok, så kan du lave flere af dem, de vil fungere som en helhed indenfor delt netværk takket være funktionerne i virtuelle sensorer og virtuel GPIO (en enhed modtager sensoraflæsninger fra en anden FÅ anmodning). Hvis der simpelthen ikke er nok input/output-porte, så er der funktioner til tilslutning af portudvidelser. Nogle funktioner er kun tilgængelige i Pro-firmware-tilstand, som aktiveres på hovedsiden via GET PRO-linket. For at aktivere skal du indtaste en kode, der ikke er gratis, men den koster kun et symbolsk beløb, som kan fås i personlig konto online compiler hjemmeside.

For indstillinger er det vigtigt ikke at forveksle modulets GPIO (hvis ESP-07 er loddet til kortet, er benbetegnelserne ikke synlige) for normal drift:

Ud over alt kan de resterende terminaler på modulet forbindes til et display, hvor vi viser værdierne af vejrsensorer. Designeren understøtter ILI9341 - TFT LCD 240x320 skærme, der fungerer via et SPI-interface.

Ved montering af firmwaren angiver vi, hvilke GPIO-ben CS og DC på skærmen, der skal tilsluttes (indstillingsmenuen kaldes op på designerwebstedet ved valg af funktioner ved at klikke på gearet ud for den funktion, vi skal bruge). De resterende ben skal tilsluttes som følger: MOSI - GPIO13, SCK - GPIO14, reset og LED er forbundet til plus af vcc strømforsyningen, og følgelig vcc og gnd til plus og minus af strømforsyningen (vi tager strøm fra WiFi-modulet 3,3 volt).

Her tænder vi TFT, hvis det er nødvendigt, drejer displayet 90 grader og indstiller i hvilke linjer ( Linje 0, Linje2...) hvilke oplysninger vi vil vise. Med funktionen aktiveret Tid og NTP I designerens systemfunktioner tages tidsinformation fra NTP-serveren via internettet, hvilket gør vores enhed til et nøjagtigt ur, der ikke skal konfigureres. Vi output nuværende tid til displayet og et par flere vejrparametre for at udfylde displayet. For at gøre dette i marken Vælg linje vælg en linje, ved siden af ​​den vælger vi parameteren, som vi vil vise på denne linje, nedenfor vælger vi om nødvendigt datacentrering, skriftstørrelse og skriftfarve. Klik Sæt og indstillingen gemmes. Skrifttypen er kun af simpel skrifttype. Udvalget af forberedte parametre er ret lille, men tilstrækkeligt, men ved hjælp af strengkonstruktøren kan du vise alle parametre i enhver konfiguration.

Artiklen er ledsaget af en fil printplade til ESP-07-modulet, firmware med en tom formular, firmware med forskellige funktioner til ESP-07, noget dokumentation, en driver til USB-programmering til CH340G-chippen, et program til flashing af ESP8266.

Liste over radioelementer

Betegnelse Type Pålydende Antal BemærkButikMin notesblok
IC1 ESP8266 modulESP-071 Til notesblok
IC2 USB interface ICCH340G1 Til notesblok
VR1 Lineær regulator

AMS1117-ADJ

1 Til notesblok
VD1 Schottky diode

1N5819

1 Til notesblok
R1 Modstand

3 kOhm

1 1206 Til notesblok
R2, R7-R9 Modstand

10 kOhm

4 0805 Til notesblok
R3 Modstand

1,8 kOhm

1 1206 Til notesblok
R4 Modstand

1 kOhm

1 0805 Til notesblok
R5, R6 Modstand

390 Ohm

2 0805 Til notesblok
C1 Kondensator10 µF1 på keramik 1206 Til notesblok
C7 Kondensator22 µF1 tantal + 2,2 µF keramik 1206 Til notesblok
C6 Kondensator100 µF1 tantal

ESP8266-chipsætmodulet er enkelt og billig måde tilføje funktioner til din enhed trådløs kommunikation via Wi-Fi.

Brug ESP8266 til at fjernstyre din enhed eller tage sensoraflæsninger over internettet. Tilslut din gadget til sociale netværk eller reagere på data, du modtager via API fra webtjenester.

Der er mange varianter i ESP8266-familien af ​​moduler. Det præsenterede modul er ESP-01. Hej M WiFi antenne er indbygget i brættet, og benene har desuden 2 gratis GPIO-porte.

Interaktion

Kontrolenheden kommunikerer med ESP8266 via UART (Seriel port) ved hjælp af et sæt AT-kommandoer. Derfor er det trivielt at arbejde med modulet for ethvert board med en UART-grænseflade: brug Arduino, Raspberry Pi, hvad end dit hjerte begærer.

At arbejde med at modtage og transmittere data ligner at interagere med en rå TCP-socket eller en computers serielle port.

Desuden kan modulet genoplades. Du kan programmere og uploade firmware gennem Arduino IDE, ligesom når du arbejder med Arduino. Svar på AT-kommandoer er simpelthen en funktion af den firmware, der er installeret på fabrikken. Og du kan skrive din egen, hvis projektet kræver det. Da modulet har 2 I/O-porte til generelle formål, kan du overhovedet undvære et kontrolkort: bare tilslut periferiudstyret direkte til dem.

For at Arduino IDE kan lære at flashe ESP8266, skal du blot tilføje mappen med platformskonfigurationen til mappen med dine skitser.

For en fysisk forbindelse, når du flasher firmwaren, skal du bruge en USB-UART-konverter eller et Arduino/Iskra-kort konfigureret i USB-brotilstand.

Ernæring

Modulets native spænding er 3,3 volt. Hans stifter tåler ikke 5 volt. Hvis du tilfører en spænding højere end 3,3 volt til strøm-, kommunikations- eller I/O-pinden, vil modulet svigte.

Brug derfor for at overføre data til modulet fra 5-volts styrekort til at bringe spændingen ind i det acceptable område. En divider af to modstande af samme værdi (for eksempel 10 kOhm) er egnet.

Der kræves ingen mellemmænd for at modtage data. Et 3,3 V signal, som det er, vil blive opfattet af styrekortet som en logisk enhed.

Forsyn modulet med en jævn strøm på 3,3 volt. Disse kan fås fra en separat spændingsregulator.

Modulet forbruger 220 mA peak. Spændingsregulatoren, der bruges på fem-volts Arduino-kort til 3,3V-pinden, er muligvis ikke nok. Vær opmærksom på specifikationerne for dit bord. For eksempel kan Arduino Uno og Arduino Leonardo ikke udsende mere end 50 mA fra 3,3V-pinden, så du skal bruge en ekstern regulator med dem; og Iskra Neo kan levere op til 800 mA, så den kan drive ESP8266 direkte fra kortet.

Pinout

På grund af placeringen af ​​benene tæt sammen i 2 rækker, kan modulet ikke installeres på et brødbræt. Brug et loddebræt eller ledninger med hunstik til at forbinde til modulbenene.

ESP8266-chippen er et af de mest populære værktøjer til at organisere trådløs kommunikation i smarte hjem-projekter. Ved hjælp af trådløs controller du kan organisere kommunikation via WiFi-grænsefladen, hvilket giver Arduino projekter Internetadgang og mulighed for fjernbetjening og dataindsamling. Sådanne populære boards som WeMos og NodeMcu, samt stor mængde hjemmelavede projekter. I denne artikel vil vi finde ud af, hvad ESP82266 er, hvad dens varianter er, og hvordan man arbejder med ESP8266 i Arduino IDE.

ESP8266 er en mikrocontroller med et WiFi-interface, der har evnen til at udføre programmer fra flash-hukommelse. Enheden blev udgivet i 2014 kinesisk virksomhed Espressif og blev næsten straks populær.

Controlleren er billig, har et lille antal eksterne elementer og har følgende tekniske parametre:

  • Understøtter Wi-Fi-protokoller 802.11 b/g/n med WEP, WPA, WPA2;
  • Har 14 input og output porte, SPI, I2C, UART, 10-bit ADC;
  • Understøtter ekstern hukommelse op til 16 MB;
  • Påkrævet strømforsyning er fra 2,2 til 3,6 V, strømforbrug er op til 300 mA, afhængigt af den valgte tilstand.

En vigtig funktion er fraværet af brugerens ikke-flygtige hukommelse på chippen. Programmet udføres fra en ekstern SPI ROM vha dynamisk belastning nødvendige programelementer. Adgang til de interne ydre enheder kan ikke opnås fra dokumentationen, men fra API'et for et sæt biblioteker. Producenten angiver den omtrentlige mængde RAM - 50 kB.

Funktioner på ESP8266-kortet:

  • Praktisk forbindelse til en computer – via USB-kabel, mad fra det;
  • Tilgængelighed af indbygget 3,3V spændingsomformer;
  • Tilgængelighed af 4 MB flashhukommelse;
  • Indbyggede knapper til genstart og blinkning;
  • Alle porte føres ind på brættet ved hjælp af to kamme med en stigning på 2,5 mm.

Anvendelsesområder for ESP8266-modulet

  • Automatisering;
  • Forskellige smarthussystemer: Trådløs kontrol, trådløse stikkontakter, temperaturkontrol, tilføjelse til alarmsystemer;
  • Mobil elektronik;
  • Tag ID;
  • Legetøj til børn;
  • Mesh-netværk.

esp8266 pinout

Der er et stort antal varianter af ESP8266-modulet. Figuren viser nogle af dem. Den mest populære mulighed er ESP 01.

Udførelsen af ​​programmet skal bestemmes af GPIO0-, GPIO2- og GPIO15-portenes tilstand, når strømforsyningen slutter. Der kan skelnes mellem to vigtige tilstande - når koden udføres fra UART (GPIO0 = 0, GPIO2 = 1 og GPIO15 = 0) til flashing af et flash-kort, og når den udføres fra en ekstern ROM (GPIO0 = 1, GPIO2 = 1 og GPIO15 = 0) i standardtilstand.

Pinouten til ESP01 er vist på billedet.

Kontaktbeskrivelse:

  • 1 – jord, 8 – strøm. Ifølge dokumentationen leveres spændingen op til 3,6 V - det er vigtigt at tage højde for, når man arbejder med Arduino, som normalt forsynes med 5 V.
  • 6 – RST, nødvendig for at genstarte mikrocontrolleren, når der anvendes et lavt logisk niveau på den.
  • 4 – CP_PD, bruges også til at sætte enheden i energibesparende tilstand.
  • 7 og 0 – RXD0 og TXD0, dette er en hardware-UART, der kræves for at flashe modulet.
  • 2 – TXD0 er der tilsluttet en LED til denne pin, som lyser, når det logiske niveau på GPIO1 er lavt, og når data transmitteres via UART.
  • 5 – GPIO0, input og output port, giver dig også mulighed for at sætte enheden i programmeringstilstand (når porten er forbundet til et lavt logisk niveau og spænding påføres).
  • 3 – GPIO2, input og output port.

ESP-12 pinout

De vigtigste forskelle mellem Arduino og ESP8266

  • ESP8266 har en større mængde flash-hukommelse, mens ESP8266 ikke har ikke-flygtig hukommelse;
  • ESP8266-processor er hurtigere end Arduino;
  • ESP8266 har Wi-Fi;
  • ESP8266 bruger mere strøm end Arduino;

Programmering af ESP8266 i Arduino IDE

Udviklingssættet esp8266 indeholder:

  • Compiler fra GNU Compiler Collection.
  • Biblioteker, WiFi, TCP/IP protokol stakke.
  • Et middel til at indlæse information i controllerprogrammet.
  • Drift af IDE.

I første omgang leveres ESP8266-moduler med firmware fra producenten. Med dens hjælp kan du styre modulet fra en ekstern mikrocontroller og arbejde med Wi-Fi som modem. Der er også mange andre færdige firmwares. Nogle af dem giver dig mulighed for at konfigurere modulets drift ved hjælp af en WEB-grænseflade.

Kan programmeres fra Arduino IDE. Med dens hjælp kan du nemt skrive skitser og uploade dem til ESP8266, flashe ESP8266 og ikke kræve selve Arduino-kortet. Arduino IDE understøtter alle slags ESP8266-moduler.

I i øjeblikket Følgende funktioner kan implementeres for ESP8266:

  • Grundlæggende funktioner i Wiring-sproget. Du kan styre GPIO-portene på samme måde som stifterne på Arduino-kortet: pinMode, digitalRead, digitalWrite, analogWrite. AnalogRead(A0)-kommandoen giver dig mulighed for at læse ADC-værdier. Ved at bruge kommandoen analogWrite (pin, værdi) kan du tilslutte PWM til den rigtige udgang GPIO. Når værdi=0, PWM er deaktiveret, når den maksimale værdi en konstant lig med 1023. Ved at bruge funktionerne attachInterrupt og detachInterrupt kan du afbryde på enhver GPIO-port undtagen 16.
  • Timing og forsinkelse. Ved at bruge millis og micros kommandoerne kan du returnere de ms og μs, der er gået siden starten. Forsinkelse giver dig mulighed for at sætte programafviklingen på pause i det ønskede tidsrum. Forsinkelsesfunktionen (…) giver dig også mulighed for at opretholde normalen Wi-Fi arbejde, hvis skitsen indeholder store elementer, som tager mere end 50 ms at fuldføre. Yield() er en analog til funktionen delay(0).
  • Seriel og Seriel1 (UART0 og UART1). Seriearbejde på ESP8266 ligner arbejdet på Arduino. Skrivning og læsning af data blokerer kodeudførelse, hvis 128-byte FIFO og 256-byte softwarebufferen er fyldt. Det serielle objekt bruger hardware UART0, du kan indstille benene GPIO15 (TX) og GPIO13 (RX) til det i stedet for GPIO1(TX) og GPIO3(RX). For at gøre dette, efter Serial.begin(); du skal kalde Serial.swap();. På samme måde bruger Serial1 UART1, som fungerer til transmission. Den nødvendige pin til dette er GPIO2.
  • Makro PROGEM. Dens drift ligner Arduinos. Giver dig mulighed for at bevæge dig læse data kun og strengkonstanter i flashhukommelsen. Samtidig gemmer ESP8266 ikke de samme konstanter, hvilket fører til yderligere spild af flashhukommelse.
  • I2C. Før du arbejder med I2C-bussen, vælges busserne ved hjælp af Wire.pins(int sda, int scl)-funktionen.
  • SPI, OneWire – fuldt understøttet.

Bruger esp8266 til at kommunikere med Arduino via WiFi

Inden du forbinder til Arduino, er det vigtigt at huske, at forsyningsspændingen på ESP8266 ikke må være højere end 3,6, mens spændingen på Arduino er 5 V. Du skal tilslutte 2 mikrocontrollere ved hjælp af resistive dividers. Før du tilslutter modulet, skal du gøre dig bekendt med pinout'en på den valgte ESP8266. Tilslutningsdiagrammet for ESP8266-01 er vist på figuren.

3,3 V fra Arduino til Vcc&CH_PD på ESP8266-modulet, Jord fra Arduino til jord fra ESP8266, 0 – TX, 1 – RX.

For at understøtte stabil drift af ESP8266 kræves en kilde DC spænding ved 3,3 V og maksimal strøm 250 mA. Hvis strømmen kommer fra en USB-TTL-konverter, kan der opstå funktionsfejl og funktionsfejl.

At arbejde med Wi-Fi-biblioteket til ESP8266 svarer til biblioteket for et almindeligt skjold. Der er flere funktioner:

  • mode(m) – for at vælge en af ​​tre tilstande: klient, adgangspunkt eller begge tilstande på samme tid.
  • softAP(ssid) – nødvendig for at oprette et åbent adgangspunkt.
  • softAP(ssid, password) – opretter et adgangspunkt med en adgangskode, som skal bestå af mindst 8 tegn.
  • WiFi.macAddress(mac) og WiFi.softAPmacAddress(mac) – definerer MAC-adressen.
  • WiFi.localIP() og WiFi.softAPIP() – bestemmer IP-adressen.
  • printDiag(Serial); – giver dig mulighed for at finde ud af diagnostiske data.
  • WiFiUDP – understøttelse af afsendelse og modtagelse af multicast-pakker i klienttilstand.

Arbejdet udføres i henhold til følgende algoritme:

  • Tilslutning af USB-TTL til USB og til ESP.
  • Lancering af Arduino IDE.
  • Vælg den ønskede port, kort, frekvens og størrelse på flashhukommelsen i menuen værktøj.
  • Fil - Eksempler - ESP8266WiFi - WiFiWebServer.
  • Skriv SSID og adgangskode til Wi-Fi-netværket ned i skitsen.
  • Begynd at kompilere og uploade kode.
  • Vent på, at firmwareprocessen er færdig, afbryd GPIO0 fra jorden.
  • Indstil hastigheden til 115200.
  • Der opstår en forbindelse, og IP-adressen vil blive registreret.
  • Åbn browseren, indtast adresse bar IP-nummer/gpio/1
  • Se på portmonitoren; hvis en LED er tilsluttet GPIO2-udgangen, bør den lyse.

NodeMCU baseret på esp8266

NodeMCU er en platform baseret på esp8266 modulet. Bruges til at fjernstyre kredsløbet ved hjælp af internettet via Wi-Fi. Boardet er lille, kompakt, billigt og har et USB-stik på forsiden. Tæt på er knapper til fejlfinding og genstart af mikrocontrolleren. En ESP8266-chip er også installeret. Forsyningsspændingen er fra 5 til 12 V, det er tilrådeligt at forsyne mere end 10 V.

Boardets store fordel er dets lave strømforbrug. De bruges ofte i selvdrevne kredsløb. Der er kun 11 generelle porte på tavlen, hvoraf nogle har specielle funktioner:

  • D1 og D2 – til I2C/TWI-interface;
  • D5-D8 - til SPI-grænseflade;
  • D9, D10 – for UART;
  • D1-D10 – kan fungere som PWM.

Platformen har en moderne API til hardware input og output. Dette giver dig mulighed for at reducere antallet af trin, når du arbejder med udstyr og ved opsætning af det. Ved hjælp af NodeMCU firmware kan du bruge det fulde arbejdspotentiale til hurtig udvikling enheder.

WeMos baseret på esp8266

WeMos er en anden type platform baseret på esp8266 mikrocontrolleren. Følgelig er der Wi-Fi modul, Arduino IDE understøttet, har et stik til en ekstern antenne. Kortet har 11 digitale ind-/udgange, som (undtagen D0) understøtter interrupt/pwm/I2C/one-wire. Den maksimale forsyningsspænding når 3,3 V. Der er også et USB-stik på platformen. Analog indgang 1 med en maksimal spænding på 3,2V.

For at arbejde med modulet skal du installere CH340-driveren og konfigurere Arduino IDE til ESP8266. For at gøre dette skal du tilføje adressen http://arduino.esp8266.com/stable/package_esp8266com_index.json i indstillingsmenuen i linjen "ekstra link til bestyrelseschef".

Herefter skal du finde esp8266 by ESP8266-pakken og installere den. Derefter skal du vælge Wemos D1 R2 mikrocontroller fra værktøjsmenuen og skrive den ønskede skitse ned.

Konklusioner om ESP8266

Med boards baseret på ESP8266-chippen kan du tilføje funktioner til dine projekter. stort internet”, hvilket gør dem meget mere intelligente. Fjernbetjening, indsamling og analyse af data på serveren, stemmebehandling og arbejde med billeder - alt dette bliver tilgængeligt, når vi forbinder vores projekt via WiFi til internettet. I de følgende artikler vil vi se nærmere på, hvordan du kan programmere esp8266-baserede enheder, og også være opmærksom på så populære boards som WeMos og NodeMcu.

Blev varmt modtaget af Habra-samfundet. Til trods for at den indeholdt få specifikke oplysninger. Det var der en god grund til - den NDA, vi underskrev for at modtage SDK'et fra løsningsproducenten, Espressif. Det er derfor, vi blot sagde, "her er der sådan en løsning." Så interesserede har mulighed for at være opmærksomme.

Forleden dag vi (COOLRF-projektet, glem det ikke abonner på vores VKontakte-fællesskab, hvis du ikke allerede er medlem) har modtaget tilladelse fra chipproducenten til at offentliggøre oplysninger i vores artikler, som tidligere var underlagt vilkårene i en tavshedspligt. Alle der var interesserede i detaljerne er velkomne under kat.

Typiske anvendelsestilfælde

ESP8266 er designet til brug i smarte stikkontakter, mesh-netværk, IP-kameraer, trådløse sensorer, bærbar elektronik og så videre. Kort sagt, ESP8266 blev født til at blive hjernen i det kommende Internet of Things.

Der er to muligheder for at bruge chippen: 1) i form af en UART-WIFI-bro, når et ESP8266-baseret modul tilsluttes til eksisterende løsning baseret på enhver anden mikrocontroller og styret af AT-kommandoer, hvilket sikrer, at løsningen kommunikerer med Wi-Fi-infrastrukturen; 2) implementering af en ny løsning, der bruger selve ESP8266-chippen som en kontrolmikrocontroller.

Det første scenarie blev kort beskrevet i vores sidste artikel. Det er implementeret ved hjælp af et hvilket som helst af de billige kinesiske ESP8266-moduler. Velegnet til Arduino-elskere og dem, der allerede har i hænderne færdiglavede skemaer og debugged firmware baseret på noget af deres eget, højt elskede.

Den anden version af scenariet involverer at skrive brugerdefineret firmware til at styre chippen indefra. I dette øjeblik Firmwaren skal være skrevet til en proprietær compiler. Det er i bund og grund det, kravene til hemmeligholdelse af oplysninger omkring denne beslutning er relateret til. Inden for en overskuelig fremtid planlægger producenten at skifte til at bruge GCC, og disse begrænsninger vil blive ophævet.

Scenariet med at bruge chippen som en kontrolmikrocontroller er interessant, fordi det giver dig mulighed for at skabe enheder, der er virkelig små og virkelig holder længe på batterier. For at arbejde med ydre enheder har ESP8266 alle de nødvendige funktioner.

Nøglefunktioner

ESP8266-chippen er en af ​​de mest integrerede WiFi-løsninger, der findes. Inde i chippen passer en masse af alt det, der i konkurrerende løsninger ofte er en del af den eksterne trim:

Som følge heraf består en typisk spånsele kun af nogle få elementer. Færre elementer = lavere komponentpris, lavere loddeomkostninger, mindre placeringsareal, lavere PCB-omkostninger. Hvilket er fuldkommen bekræftet nuværende priser moduler baseret på helten i vores dagens anmeldelse.

Al denne integrerede styring styres af en udvidet version af Tensilicas L106 Diamond-serie 32-bit processor. Hvad er interessant indeni?

  • 802.11 b/g/n protokol
  • Wi-Fi Direct (P2P), soft-AP
  • Integreret TCP/IP protokolstak
  • Integreret TR switch, balun, LNA, effektforstærker og matchende netværk
  • Integreret PLL, regulatorer og strømstyringsenheder
  • +20,5 dBm udgangseffekt i 802.11b-tilstand
  • Understøtter antennediversitet
  • Sluk for lækstrøm på< 10uA
  • SDIO 2.0, SPI, UART
  • STBC, 1x1 MIMO, 2x1 MIMO
  • A-MPDU & A-MSDU aggregering & 0,4μs vagtinterval
  • Vågn op og send pakker ind< 22ms
  • Standby strømforbrug< 1.0mW (DTIM3)

Ultra Low Power teknologi

Energiforbruget er et af de største vigtige egenskaber løsning, der hævder at blive hjernen i milliarder af Internet of Things-enheder. Hvad er årsagen til populariteten af ​​BLE og forskellige proprietære radiogrænsefladeimplementeringer? Når alt kommer til alt, i sidste ende stræber alle enheder baseret på disse implementeringer stadig efter at komme ind almindelig Wi-Fi ved hjælp af specielle broanordninger.

Hemmeligheden er enkel - det er svært at skabe en enhed forbundet til WiFi, der fungerer i tilstrækkelig tid selvdrevet. Forbrugerne er ikke klar til at skifte batterier i sensorer hver anden til tredje måned. Derfor skulle "adgang til netværket" gives af broer forbundet med konstant elektricitet. ESP8266 burde løse dette problem. Wi-Fi kan nu bruges selv i stand-alone sensorer, der kører på små batterier. Takket være brugen af ​​avancerede energistyringsmekanismer er løsningen.

Tager du et hurtigt kig på chippens forbrugsegenskaber, kan du blive efterladt i mørket. 215mA i sendetilstand - ikke noget særligt? Ja, men når du har læst dataarket, begynder du at forstå mulighederne for løsningen. ESP8266 bruger omkring 60uA i dyb dvaletilstand (med realtidsur kørende) og mindre end 1,0mA (DTIM=3) eller mindre end 0,5mA (DTIM=10) i tilstanden til at opretholde forbindelsen med et Wi-Fi-adgangspunkt.