WiFi ESP8266 er et nytt steg i utformingen av hjemmeenheter med trådløst grensesnitt. ESP8266 "Witty Cloud" er for tiden den mest suksessrike WiFi-modulen for hjemmelagde produkter og smarte hjem

Ulike implementeringsalternativer for ESP8266-modulen har blitt gjennomgått her mer enn én gang, og fortjent det. Denne lille, myntstore brikken med WiF om bord kan fungere som både tilgangspunkt og klient og kan programmeres på alle måter – og selges for noen få dollar.

Før vi rakk å venne oss til ideen om at alle slags interessant håndverk kan lages på en krone Arduino, Attiny eller STM, ble enheter med WiFi og kraftige 80 megahertz-prosessorer deres konkurrenter i pris. (Fan, prosessoren min er i den første egen datamaskin var litt raskere, hvor gammel er jeg).

Ett problem - alle enhetene med ESP8266 som gikk gjennom hendene mine var veldig upraktiske, det var en smerte å koble dem til. Men den kinesiske industrien hørte oss og gjorde det nesten bra :)

Hvorfor vi "elsker" forskjellige varianter ESP8266:

  • De drives av 3,3 volt, i stedet for de mer vanlige fem
  • På topp krever de en strøm på opptil 320mA, noe som er utenfor mulighetene til konvensjonelle USB-TTL-omformere.
  • Avstanden mellom brettutgangene er vanligvis ikke standard 2,54 mm, men nøyaktig 2 mm - noe som gjør lodding til et intrikat eventyr
  • Det er bare én versjon av brettet med en pinnestigning på 2,54 mm ("ESP8266-01"), men den har et minimum av nyttige pinner
  • Brikken byttes til programmeringsmodus ved å lukke kontaktene, noe som krevde ferdigheter. Eller lodding av knappen
  • Med Tilbakestill det samme problemet - slå enten av strømmen eller lodd knappen
Og så utstedte den kinesiske industrien "ESP8266-12E" under navnet " Vittig sky»:

Brettet er en "smørbrød" av to. På det øverste laget (til venstre på begge bildene) er selve ESP8266-brikken, under den er MicroUSB-strømkontakten og AMS1117-3.3 spenningsregulator, hvis oppgave er å gjøre 5 volt til 3,3. I følge databladet har regulatoren strømmer opp til 0,8A, så dette er mer enn nok til å drive brikken. Der - Nullstillknapp for å starte på nytt.
For å ha noe å okkupere de tomme hjørnene av brettet, dyttet kineserne en RGB LED og en fotomotstand dit, mer om dem senere.

På det nederste laget av "sandwichen" (bildet til høyre) er det en fullverdig MicroUSB, en CH340G-brikke og "Flash" (fastvaremodus) og "Reset"-knappene.

"Sandwich" gir større handlefrihet. Du kan koble "sandwichen" til datamaskinen i den nedre (full) USB-kontakt, omprogrammer den - og integrer deretter bare den øvre delen i håndverket ditt, og spar på størrelsen på kroppen.

Dessuten kan bunnen av "smørbrødet" brukes til å programmere hjemmelagde moduler. Selv loddet jeg ESP8266-12- og ESP8266-07-modulene liggende på ikke særlig vellykkede adapterkort for $0,22 og festet AMS1117-regulatorer "på snørret" - begge fungerte uten problemer og viste seg å være 100% kompatible med tanke på kontakter og knapper:

Ok, nok med ros for modulen, la oss gjøre noe nyttig. Selgerens side annonserer en slags SDK og til og med en slags kinesisk "sky" for enheter basert på ESP8266 og Android, selv om det (nesten) ikke er noen informasjon om dem på engelsk. I så fall, la oss gi opp dem, la oss starte Arduino IDE 1.6 og la oss gå inn i innstillingene.

I «Ytterligere URL-er»-vinduet setter du inn linjen https://arduino.esp8266.com/package_esp8266com_index.json Åpne deretter «Boards manager» og skriv inn «ESP8266» i søkefeltet. Klikk på Installer og gjør deg klar til å vente til så mange som 130 megabyte med pakker er lastet ned:

La oss koble "sandwichen" til datamaskinen til den nedre (fulle) MicroUSB-kontakten. Windows må oppdage USB-TTL-konverteren "CH340G" og tilordne en virtuell port til den. Det er denne porten vi vil spesifisere i Arduino IDE-innstillingene. Resten av innstillingene er:

La oss legge inn elementærkoden i minnet

#inkludere const char* ssid = "??? navn på WiFi-punktet ???"; const char* password = "??? passord???"; WiFiServer server(80); void setup() ( Serial.begin(115200); WiFi.begin(ssid, passord); while (WiFi.status() != WL_CONNECTED) ( delay(500); Serial.print("."); ) server. begin(); Serial.print("IP-adressen til modulen vår: "); 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\nInnholdstype: text/plain\r\n\r \nhei fra esp8266!\n"; client.print(s); delay(1); )

Vær oppmerksom på at under blinkingsprosessen er det ikke nødvendig å trykke på Flash-knappen - brettet tar seg av alt selv.

Etter at det nye programmet er lastet inn i ESP8266, kan det kobles fra datamaskinen og få strøm selv fra en powerbank. Nedre del"Smørbrødet" kan tas av, det er ikke lenger nødvendig.

Enten med Arduino hjelp seriell monitor (porthastighet - 115200), eller i webgrensesnittet til ruteren ser vi på IP-adressen vi mottok i WiFi-nettverk hjemme vår ESP8266. Åpne denne adressen i nettleseren på datamaskinen eller telefonen din:

Vår enhet koblet til hjemmenettverk, hentet opp webserveren og svarer oss.

Er du sikker på at enheten din fungerer? La oss gå videre. For at det skal brukes til noe nyttig i hverdagen, er det interessant å "bli venner" med det, for eksempel med et stafett. Riktignok er klassiske 5-volts releer per definisjon ikke lenger nødvendig - risikoen er for stor for at spenningen på 3,3 volt ikke vil være nok til at elektromagneten kan trekke ankeret. Derfor tar vi et Omron solid state-relé for $1,90. I følge dataarket er spenningen vi har nok til at den fungerer tydelig:

Vi kobler "pluss" og "minus" til VCC- og GND-kontaktene til det øverste laget av "sandwich", og det tredje, signal, ledning til for eksempel GPIO 2-kontakten. Som et program kan du ta WiFiWebServer-skissen, som er knyttet til Arduino-biblioteket, eller bruk kollegaens program Sav13 fra samopal.pro/wifi-power-esp8266/

For testen tok jeg en enkel 20W halogenpære og klikket på den til mitt hjerte:

Operasjonen skjer på et brøkdel av et sekund etter at kommandoen er gitt. For å sjekke påliteligheten satte jeg inn en enkel teller i koden og skisserte en enkel flaggermus-fil som skrudde lyspæren av og på med en pause i sekundet. Jeg åpnet et par ekstra vinduer, hvorfra jeg begynte å bombardere modulens IP-adresse med en endeløs ping-kommando. Etter noen timer overskred av/på-telleren 19 tusen, men alt fungerte - noe som gir en viss tillit til enhetens pålitelighet.

Hvis du har lest så langt, men tanken "dette er komplisert" snurrer i hodet ditt, har jeg forberedt noe hyggelig for deg

Husk at jeg nevnte det kinesisk produsent"til forandring", satte du en RGB LED og en fotomotstand på brettet? Du kan eksperimentere med dem, selv om du ikke har andre sensorer eller andre perifere enheter.

I dette alternativet må du gjøre en innsats og starte Arduino IDE nøyaktig en gang.


Applikasjonsskjermen er et tomt felt der du kan plassere elementer, som på et dashbord. Prøv først "zeRGBa" og "gauge":

I sebrainnstillingene, spesifiser at den trefargede LED-en på brettet er koblet til pinnene 12 (grønn), 13 (blå) og 15 (rød):

I "gauge"-innstillingene, spesifiser at fotomotstanden på brettet er koblet til den analoge inngangen "adc0":

Aktiver det du har skulpturert ved å klikke på knappen i øvre høyre hjørne. Du vil se at den gule indikatoren endres avhengig av lysnivået, og RGB LED på "smørbrødet" endrer farge når du stikker i sebraovergangen:

Praksis har vist at barn virkelig liker denne tingen. En ting er å spille andres spill på et nettbrett, det er en annen å lage og male en "fjernkontroll" selv og kontrollere noe håndfast. Det er nok å ta på seg den forberedende delen i Arduino, og deretter vise hvordan du bruker den, gi flere lysdioder, knapper eller deler som en LM35 analog temperatursensor - de vil umiddelbart ta bort "leken" og barnet ditt vil være opptatt i lang tid. Du vil ikke bli dratt av ørene, det er sjekket.

Til rask opprettelse Blynk-prototyper viste seg også å være veldig praktiske - det er lettere å skissere knapper og brytere der enn å bygge ditt eget nettgrensesnitt. Tiden som spares kan brukes mer nyttig på å sette sammen neste fartøy.

Sammendrag

For en pris litt over 200 rubler får du en veldig kraftig og rolig uavhengig enhet, hvor du kan programmere alle mulige nyttige ting til hjemmet ditt - og kontrollere dem via WiFi.

"Smørbrødet" viste seg å være overraskende vellykket. Den er mindre enn en dollar dyrere enn den nakne ESP8266-12, men sparer deg for massevis av tid og problemer. En haug med ledninger og et brødbrett er ikke nødvendig.

Flytt med forhåndsinnstilling til LED-tavle og fotosensor - veldig vellykket. Selv om du ikke har annet enn en modul og en MicroUSB-kabel, kan du likevel i det minste prøve noe først og nyte kjøpet. Hvis de ikke er nødvendige på det ferdige produktet, er det bare å lodde dem eller klippe dem av.

Til denne prisen er "sandwichen" en klar konkurrent til Arduino Nano, og gjør den veldig unødvendig Bluetooth-moduler(type HC-05) og enda mer - NRF24L01+ radiomoduler.

Jeg tok meg selv og brøt nesten tradisjonen:

I dag pleier kostnaden for Wi-Fi-moduler å være øre takket være utviklingen. Dette lar deg utvikle hjemmeenheter på nivået Wi-Fi-teknologi. Hva gir dette oss? Faktisk er mye praktisk talt det samme som selve Internett i tillegg til alt annet. Når du lager en hvilken som helst enhet, vil den nå ha tilgang til nettverket og Internett (hvis den er til stede på nettverket), noe som betyr at enheten teoretisk sett er tilgjengelig for enhver annen enhet som er plassert på nettverket eller koblet til Internett. For bare fem år siden kunne du og jeg ikke engang drømme om et slikt nivå av hjemmeenheter.

Jeg bestemte meg for å lage en enhet som ville sende sensordata til Internett, takket være hvilken det ville være mulig å overvåke avlesninger fra hvor som helst i byen, landet eller landet via Internett.

Så når du velger WiFi-modul ESP8266-valget lente mot ESP-07-modellen med tilkobling ekstern antenne for å få det beste signalet kjøpt inn Kinesisk nettbutikk GearBest. I dette tilfellet trenger vi selve antennen (jeg brydde meg ikke med detaljer, men en hvilken som helst annen med en RP-SMA-kontakt på WiFi-frekvenser), en kontakt for å koble antennen til modulen og om nødvendig en skjøtekabel for antennen. Pluss de nødvendige sensorene.

Å jobbe med modul ESP-07 Et trykt kretskort ble laget i henhold til følgende skjema:

Kretsen består av tre hovedblokker: en 3,3-volts spenningsstabilisator VR1 med de nødvendige elementene (den justerbare versjonen av stabilisatoren kan erstattes med ams1117 3v3 med unntak av motstandene R1 og R3), blokken som er nødvendig for programmering av WiFi-modulen er laget på grunnlag av en USB-UART grensesnittomformer CH340G med den nødvendige ledningen til mikrokretsen (CH340G kan erstattes med alle andre mikrokretser med tilsvarende funksjonalitet ved å endre ledningen for den erstattede brikken), selve WiFi-modulen, også som nødvendige elementer for drift og programmering. For å gå inn i programmeringsmodus, må du trykke på S2 Prog-knappen og starte modulen på nytt eller slå av og på strømmen med S2 Prog-knappen trykket. Last deretter ned fastvaren til WiFi-modulen ved å bruke programvaren på PCen. Når fastvaren er fullført, start modulen på nytt, men uten å trykke på S2 Prog-knappen - på denne måten vil modulen fungere i hovedmodus. Ved bruk av ekstern antenne gir brettet plass til å feste antennebraketten. Selve braketten kan være av den enkleste konfigurasjonen. En mini-USB-kontakt brukes til å koble til en datamaskin.

For å koble antennen til ESP-07, bruk en IPX til RP-SMA-kabel. Siden jeg valgte 18 dB GDI-8218-antennen for meg selv, ser enheten satt sammen med sensorer ganske truende ut. Selvfølgelig, når du bruker flere sensorer, må du koble til alt brødbrett, hvis du bruker bare én BMP280-sensor for å overvåke værparametere (måler temperatur, trykk og fuktighet), så ser kretsen vakrere ut. I tillegg ble brettet til ESP8266 laget som et universelt verktøy, så hvis du redigerer det for å installere sensorer direkte på brettet, vil kretsen få et mer kompakt og estetisk utseende.

Å bruke en antenne i denne formen er ikke alltid praktisk, så for enkelhets skyld kan du bruke en RP-SMA hann-til-hun-forlengelseskabel for antennen for å sikre den i beleilig plass eller ganske enkelt gjøre det i forhold til hele ordningen.

Et alternativ til et slikt kort kan være nodemcu-kort fra fabrikk eller adapterkort for PLS/PBS-kontakter. Sistnevnte har bare et par motstander som er nødvendige for å slå på modulen og et sted for en spenningsstabilisator (ikke inkludert). På grunn av deres svært minimale natur, var det ikke praktisk for meg å bruke slike brett (med mindre som en del av en annen enhet utstyrt med en kontakt for et slikt brett).

For å koble til sensormodulen kan du bruke alle ledige GPIOer til modulen. For å få avlesninger av parameterne vi trenger, kan alle sensorer brukes i enhver konfigurasjon, om hvilke vi vil snakke under. Jeg brukte DS18B20-sensorer i målersondeformatet (det er praktisk å overvåke temperaturen ute eller hvilken som helst væske, siden den anses som vanntett), BMP180 for overvåking atmosfærisk trykk og AM2302 for innendørs fuktighetskontroll. Ikke glem den nødvendige ledningen til sensorene hvis du ikke bruker dem i form av moduler med alt nødvendig: ​​DS18B20 er koblet med en opptrekksmotstand til strømforsyningen positiv (10 kOhm motstand mellom 1-lederen) pinne og strømforsyningen positiv), på samme måte for AM2302 (DHT22), bør sensorer som fungerer på I 2 C-bussen også ha pull-up-motstander på SCL- og SDA-kontaktene.

For å oppnå resultatet er det imidlertid nødvendig å skrive fastvare slik at enheten fungerer akkurat slik vi trenger den. Med forberedte ideer, når du søkte etter en SDK for ESP8266, ble en online fastvaredesigner (eller online kompilator) funnet, som ikke krever programmeringskunnskap (i de fleste funksjonene)! For å få tilgang til fastvaresammenstillingen kreves registrering, ellers er ikke denne menyen tilgjengelig i det hele tatt. Uten registrering kan du bare laste ned "hurtigstart"-firmware.

Alt vi trenger er å sjekke boksene med de nødvendige funksjonene og kompilere fastvaren for ESP8266-modulen, laste den ned (her må vi ta hensyn til at modulens minne ikke er ubegrenset og velge de nødvendige funksjonene, siden all funksjonaliteten til online kompilatoren vil fortsatt ikke passe i én enhet).

Deretter flasher du modulen ved å bruke nodemcu-flasher-programmet (programinnstillinger nedenfor i skjermbildene) (koble enheten via USB til PC-en). Ved blinking skal ingenting kobles til UART-pinnene til modulen (GPIO1, GPIO3), ellers kan det hende at modulen ikke blinker. Hvis du planlegger å koble noe til disse pinnene, bør du slå det av så lenge fastvaren varer. Etter å ha blinket fastvaren, starter vi modulen på nytt eller slår av og på strømmen - avhengig av innstillingene vil modulen koble seg til nettverket eller opprette sitt eget tilgangspunkt. Enheten er klar for innstillinger og bruk!

Hvis WiFi-modulen allerede har blitt brukt med annen fastvare, anbefales det at før du skriver hovedfastvaren, skriver du ned fastvaren med et tomt skjema (fil i applikasjonene).

Angi innstillingene for ESP-07-modulen (som praksis viser, innstilling av flashminnestørrelsen påvirker ikke prøven som brukes; tilsynelatende blir riktig verdi satt automatisk):

Angi banen til fastvarefilen:

Spesifiser COM-port installert når du kobler til denne modulen og trykk på Flash-knappen (hvis alt er gjort riktig, da lasting vil begynne fastvare inn i modulen):

Vent til fastvaren er fullført:

Før du kompilerer fastvaren, er det praktisk å angi standardinnstillinger på nettkompilatorsiden, der du må skrive inn navnet på tilgangspunktet og WiFi-passord ruter (seksjon " System" på slutten av funksjonsvalglisten før du monterer fastvaren). I tillegg kan du angi en statisk IP-adresse for enheten. For å gjøre dette, i systemfunksjoner du må merke av i boksen ved siden av " Standard instillinger» og klikk på tannhjulet for å få opp en meny der disse dataene legges inn om nødvendig. I dette tilfellet, etter å ha slått på WiFi-enheten, kobles den automatisk til ruteren. Etter å ha slått den på, åpne nettleseren og skriv inn IP-adressen til enheten som den registrerte seg med på nettverket i adressefeltet. Vi kommer til menyen WiFi-enheter, hvor du ikke bare kan overvåke parameterne til sensorene i nettverket, men også konfigurere andre funksjoner du valgte før du satte sammen fastvaren.

Hvis du ikke gjør standardinnstillingene før du monterer fastvaren, første gang du slår den på (etter å ha blinket må du trykke på resrt-knappen på modulen 3 ganger med et intervall på 1 sekund), vil et tilgangspunkt bli opprettet hamessmart ved adressen 192.168.4.1 . Ved å bruke en telefon eller bærbar PC, må du koble til et tilgangspunkt og gå til denne adressen gjennom en nettleser, foreta innstillinger, rekonfigurere om nødvendig Stasjonsmodus i innstillinger Hoved(logg inn for å gå inn i menyen , passord 0000 ), skriver også inn navnet på punktet WiFi-tilgang ruter og passord.

Først må du angi innstillingene i menyen Hoved(felt Konfig inneholder lenker for innstillinger og konfigurasjon av valgte funksjoner).

For å gå inn i menyen må du skrive inn brukernavn og passord. 0000 . Her kan du administrere innstillinger for sikkerhet, tid og nettverkstilkobling. For å lagre de angitte innstillingene, trykk på knappen Sett.

Gå tilbake til hovedmenyen og følg lenken Maskinvare. Her aktiverer og konfigurerer vi sensorene som skal kobles til modulen (tilstedeværelsen av forskjellige sensorer i denne menyen bestemmes av deres valg når de monterer fastvaren - hvis du ikke velger noe før kompilering, vil disse funksjonene ikke være tilgjengelige i selve fastvaren). For sensorer som opererer via I2C-bussen, må du angi felles for alle enheter GPIO. Hvorfor vanlig? I2C-bussen lar deg koble flere enheter parallelt. Hver slik enhet har sin egen adresse, og så snart masterenheten sender denne adressen, vil slaveenheten med denne adressen vite at data nå vil bli utvekslet med den, mens de andre enhetene på bussen er inaktive. For å koble til DHT11/22 fuktighetssensorer brukes et eget ben på modulen, som settes i innstillingene til denne menyen. For å aktivere DS18B20-sensoren, må du også stille inn en separat GPIO-pin, og husk å lagre de angitte innstillingene, gå til hovedmenyen og følg 1-trådskoblingen.

Klikk i denne menyen Slett og skann liste, hvoretter den skal vises ID sensor DS18B20. Og først etter dette vil temperatursensoren fungere.

For å koble til analoge sensorer kan du bruke en ADC (den eneste pinnen ADC WiFi-modul). Dette er den innebygde ADC-en til modulen med litt kapasitet 10 biter (1023 prøver) med referansespenning 1.024 V. Hvis sensoren har et utgangsspenningsnivå som er større enn denne verdien, er det nødvendig å bruke en spenningsdeler som bruker motstander med en kjent delingskoeffisient. Den resulterende verdien fra ADC vil avvike fra den faktiske verdien med denne faktoren. Mange analoge sensorer er kommersielt tilgjengelige som moduler basert på LM393. Prinsippet for drift av slike moduler er at trimmemotstanden setter referansespenningen for komparatoren (LM393), og så snart innvirkningen på sensoren øker spenningen ved inngangen til komparatoren, noe som gjør den større enn referansen, en logisk enhet vil bli dannet ved utgangen av denne modulen. Dermed kan du justere responsterskelen til sensoren (eller rettere sagt modulen til denne sensoren) og registrere oppnåelsen av denne terskelen ganske enkelt ved å bruke GPIO ESP8266 konfigurert for inngang. For å gjøre dette, gå til hovedmenyen og klikk på GPIO-koblingen. I denne menyen setter du PIN-nummeret og driftsmodusen for den, og lagrer den. Lesningene vil være som " 0 "eller" 1 " - terskelen er nådd eller ikke, handlingen har skjedd eller ikke.

Nå, for å vise sensoravlesninger på Internett, følg koblingen Servere eller DDNS avhengig av valgt Internett-tilkoblingsmetode. I utgangspunktet planla jeg å bruke narodmon.ru-tjenesten til dette formålet, som viser sensoravlesningene til alle brukere som bruker denne tjenesten direkte på kartet. I tillegg har denne tjenesten applikasjoner og widgets for mobile enheter og PC, som er veldig praktisk. Registrer deg i denne tjenesten (den er helt gratis) ved å bruke ID(se skjermbilde nedenfor - lenke Servere Enger Konfig).

Service peopleodmon(populær overvåking) lagrer sensoravlesninger i opptil 1 år og lar deg kompilere sensormålinger for en periode i tillegg til annen funksjonalitet.

Etter alle manipulasjonene i WiFi-innstillinger moduldata sendes til ekstern tjeneste kontroll og lagring av sensorindikatorer, som kan sees fra hvor som helst i verden med Internett-tilgang. Hovedsiden til modulen er tilgjengelig i lokalt nettverk og viser avlesningene til alle tilkoblede sensorer. Den nødvendige effekten er oppnådd.

Selvfølgelig gir online kompilatoren mange andre funksjoner: tilkobling ulike skjermer, sende e-post eller sms (obligatorisk gsm-modul Til sender sms uten Internett-tjenester), utfører tilpasset logiske operasjoner, kontrollere ulike eksterne enheter ved hjelp av GPIO og PWM, ta opp overvåkede parametere på et SD-minnekort og mye mer. Hvis en modul ikke er nok, så kan du lage flere av dem, de vil fungere som en helhet innenfor delt nettverk takket være funksjonene til virtuelle sensorer og virtuell GPIO (en enhet mottar sensoravlesninger fra en annen FÅ forespørsel). Hvis det rett og slett ikke er nok inngangs-/utgangsporter, er det funksjoner for å koble til portutvidere. Noe funksjonalitet er kun tilgjengelig i Pro-fastvaremodus, som aktiveres på hovedsiden via GET PRO-lenken. For å aktivere må du skrive inn en kode som ikke er gratis, men den koster kun et symbolsk beløp, som kan fås i personlig konto online kompilatornettsted.

For innstillinger er det viktig å ikke forveksle GPIO-en til modulen (hvis ESP-07 er loddet til brettet, er ikke pin-betegnelsene synlige) for normal drift:

I tillegg til alt, kan de resterende terminalene til modulen kobles til en skjerm der vi vil vise verdiene til værsensorer. Designeren støtter ILI9341 - TFT LCD 240x320-skjermer som opererer via et SPI-grensesnitt.

Ved montering av fastvaren spesifiserer vi hvilke GPIO-pinner CS og DC på skjermen som skal kobles til (innstillingsmenyen kalles opp på designernettstedet ved valg av funksjoner ved å klikke på tannhjulet ved siden av funksjonen vi trenger). De resterende pinnene må kobles til som følger: MOSI - GPIO13, SCK - GPIO14, reset og LED er koblet til pluss av vcc-strømforsyningen, og følgelig vcc og gnd til pluss og minus av strømforsyningen (vi tar strøm fra WiFi-modulen 3,3 volt).

Her slår vi på TFT, om nødvendig, roter skjermen 90 grader og still inn hvilke linjer ( Linje 0, Linje2...) hvilken informasjon vi vil vise. Med funksjon aktivert Tid og NTP I systemfunksjonene til designeren hentes tidsinformasjon fra NTP-serveren via Internett, noe som gjør enheten vår til en nøyaktig klokke som ikke trenger å konfigureres. Vi gir ut nåværende tid til displayet og noen flere værparametere for å fylle ut displayet. For å gjøre dette i felten Velg linje velg en linje, ved siden av velger vi parameteren som vi skal vise på denne linjen, nedenfor velger vi om nødvendig datasentrering, skriftstørrelse og skriftfarge. Klikk Sett og innstillingen lagres. Skriften er kun av enkel skrifttype. Utvalget av forberedte parametere er ganske lite, men tilstrekkelig, men ved å bruke strengkonstruktøren kan du vise alle parametere i enhver konfigurasjon.

Artikkelen er ledsaget av en fil kretskort for ESP-07-modulen, fastvare med blankt skjema, fastvare med forskjellige funksjoner for ESP-07, noe dokumentasjon, en driver for USB-programmering for CH340G-brikken, et program for å blinke ESP8266.

Liste over radioelementer

Betegnelse Type Valør Mengde MerkButikkNotisblokken min
IC1 ESP8266-modulESP-071 Til notisblokk
IC2 USB-grensesnitt ICCH340G1 Til notisblokk
VR1 Lineær regulator

AMS1117-ADJ

1 Til notisblokk
VD1 Schottky diode

1N5819

1 Til notisblokk
R1 Motstand

3 kOhm

1 1206 Til notisblokk
R2, R7-R9 Motstand

10 kOhm

4 0805 Til notisblokk
R3 Motstand

1,8 kOhm

1 1206 Til notisblokk
R4 Motstand

1 kOhm

1 0805 Til notisblokk
R5, R6 Motstand

390 Ohm

2 0805 Til notisblokk
C1 Kondensator10 µF1 ombord på keramikk 1206 Til notisblokk
C7 Kondensator22 µF1 tantal + 2,2 µF keramikk 1206 Til notisblokk
C6 Kondensator100 µF1 tantal

ESP8266 brikkesettmodulen er enkel og billig måte legge til funksjoner på enheten din trådløs kommunikasjon via Wi-Fi.

Bruk ESP8266 til å fjernstyre enheten din eller ta sensoravlesninger over Internett. Koble gadgeten til sosiale nettverk eller reagere på data du mottar via API fra nettjenester.

Det er mange varianter i ESP8266-modulfamilien. Den presenterte modulen er ESP-01. Ham WiFi-antenne er innebygd i brettet, og bena har i tillegg 2 gratis GPIO-porter.

Interaksjon

Kontrollenheten kommuniserer med ESP8266 via UART (seriell port) ved hjelp av et sett med AT-kommandoer. Derfor er det trivielt å jobbe med modulen for ethvert brett med et UART-grensesnitt: bruk Arduino, Raspberry Pi, hva du måtte ønske.

Å jobbe med å motta og overføre data ser ut som å samhandle med en rå TCP-kontakt eller en datamaskins seriell port.

Dessuten kan modulen reflaskes. Du kan programmere og laste opp fastvare gjennom Arduino IDE, akkurat som når du arbeider med Arduino. Respons på AT-kommandoer er ganske enkelt en funksjon av fastvaren som er installert på fabrikken. Og du kan skrive din egen hvis prosjektet krever det. Siden modulen har 2 generelle I/O-porter, kan du klare deg uten et kontrollkort i det hele tatt: bare koble periferiutstyret direkte til dem.

For at Arduino IDE skal lære å flashe ESP8266, legger du bare til katalogen med plattformkonfigurasjonen til mappen med skissene dine.

For en fysisk tilkobling når du flasher fastvaren, trenger du en USB-UART-konverter eller et Arduino/Iskra-kort konfigurert i USB-bromodus.

Ernæring

Den opprinnelige spenningen til modulen er 3,3 volt. Pinnene hans tåler ikke 5 volt. Hvis du tilfører en spenning høyere enn 3,3 volt til strøm-, kommunikasjons- eller I/O-pinnen, vil modulen svikte.

Derfor, for å overføre data til modulen fra 5-volts kontrollkort, bruk for å bringe spenningen inn i det akseptable området. En deler av to motstander med samme verdi (for eksempel 10 kOhm) er egnet.

Ingen mellomledd er nødvendig for å motta data. Et 3,3 V-signal som det er vil av styrekortet oppfattes som en logisk enhet.

Strøm modulen med jevne 3,3 volt. Disse kan fås fra en egen spenningsregulator.

Modulen bruker 220 mA topp. Spenningsregulatoren som brukes på fem-volts Arduino-kort for 3,3V-pinnen er kanskje ikke nok. Vær oppmerksom på spesifikasjonene til brettet ditt. For eksempel kan Arduino Uno og Arduino Leonardo ikke sende ut mer enn 50 mA fra 3,3V-pinnen, så du må bruke en ekstern regulator med dem; og Iskra Neo kan levere opptil 800 mA, slik at den kan drive ESP8266 direkte fra brettet.

Pinout

På grunn av plasseringen av bena tett sammen i 2 rader, kan modulen ikke installeres på et brødbrett. Bruk et loddebrett eller ledninger med hunnkoblinger for å koble til modulpinnene.

ESP8266-brikken er et av de mest populære verktøyene for å organisere trådløs kommunikasjon i smarthusprosjekter. Ved bruk av trådløs kontroller du kan organisere kommunikasjon via WiFi-grensesnittet, gir Arduino-prosjekter Internett-tilgang og mulighet for fjernstyring og datainnsamling. Slike populære brett som WeMos og NodeMcu, samt stor mengde hjemmelagde prosjekter. I denne artikkelen vil vi finne ut hva ESP82266 er, hva dens varianter er, og hvordan du jobber med ESP8266 i Arduino IDE.

ESP8266 er en mikrokontroller med WiFi-grensesnitt som har muligheten til å kjøre programmer fra flashminne. Enheten ble utgitt i 2014 kinesisk selskap Espressif og ble nesten umiddelbart populær.

Kontrolleren er billig, har et lite antall ytre elementer og har følgende tekniske parametere:

  • Støtter Wi-Fi-protokoller 802.11 b/g/n med WEP, WPA, WPA2;
  • Har 14 inngangs- og utgangsporter, SPI, I2C, UART, 10-bits ADC;
  • Støtter eksternt minne på opptil 16 MB;
  • Nødvendig strømforsyning er fra 2,2 til 3,6 V, strømforbruk er opptil 300 mA, avhengig av valgt modus.

En viktig funksjon er fraværet av brukerens ikke-flyktige minne på brikken. Programmet kjøres fra en ekstern SPI ROM ved hjelp av dynamisk lasting nødvendige programelementer. Tilgang til det interne periferiutstyret kan ikke fås fra dokumentasjonen, men fra API-en til et sett med biblioteker. Produsenten angir den omtrentlige mengden RAM - 50 kB.

Funksjoner på ESP8266-kortet:

  • Praktisk tilkobling til en datamaskin – via USB-kabel, mat fra det;
  • Tilgjengelighet av innebygd 3,3V spenningsomformer;
  • Tilgjengelighet av 4 MB flash-minne;
  • Innebygde knapper for omstart og blinking;
  • Alle porter føres inn på brettet ved hjelp av to kammer med en stigning på 2,5 mm.

Bruksområder for ESP8266-modulen

  • Automasjon;
  • Ulike smarthussystemer: Trådløs kontroll, trådløse stikkontakter, temperaturkontroll, tillegg til alarmsystemer;
  • Mobil elektronikk;
  • Tag-ID;
  • Leker for barn;
  • Mesh-nettverk.

esp8266 pinout

Det finnes et stort antall varianter av ESP8266-modulen. Figuren viser noen av dem. Det mest populære alternativet er ESP 01.

Utførelsen av programmet må bestemmes av tilstanden til GPIO0-, GPIO2- og GPIO15-portene når strømforsyningen slutter. To viktige moduser kan skilles - når koden kjøres fra UART (GPIO0 = 0, GPIO2 = 1 og GPIO15 = 0) for å blinke et flash-kort og når den kjøres fra en ekstern ROM (GPIO0 = 1, GPIO2 = 1 og GPIO15 = 0) i standardmodus.

Pinouten for ESP01 er vist på bildet.

Kontaktbeskrivelse:

  • 1 – jord, 8 – kraft. I følge dokumentasjonen leveres spenningen opp til 3,6 V - dette er viktig å ta hensyn til når du arbeider med Arduino, som vanligvis leveres med 5 V.
  • 6 – RST, nødvendig for å starte mikrokontrolleren på nytt når et lavt logisk nivå brukes på den.
  • 4 – CP_PD, også brukt til å sette enheten i energisparemodus.
  • 7 og 0 – RXD0 og TXD0, dette er en maskinvare-UART som kreves for å blinke modulen.
  • 2 – TXD0, en LED er koblet til denne pinnen, som lyser når logikknivået på GPIO1 er lavt og når data overføres via UART.
  • 5 – GPIO0, inngangs- og utgangsport, lar deg også sette enheten i programmeringsmodus (når porten er koblet til et lavt logisk nivå og spenning tilføres).
  • 3 – GPIO2, inngangs- og utgangsport.

ESP-12 pinout

De viktigste forskjellene mellom Arduino og ESP8266

  • ESP8266 har en større mengde flash-minne, mens ESP8266 ikke har ikke-flyktig minne;
  • ESP8266-prosessoren er raskere enn Arduino;
  • ESP8266 har Wi-Fi;
  • ESP8266 bruker mer strøm enn Arduino;

Programmering av ESP8266 i Arduino IDE

Utviklingssettet esp8266 inkluderer:

  • Kompiler fra GNU Compiler Collection.
  • Biblioteker, WiFi, TCP/IP-protokollstabler.
  • En måte å laste informasjon inn i kontrollprogrammet.
  • Operativ IDE.

I utgangspunktet leveres ESP8266-moduler med fastvare fra produsenten. Med dens hjelp kan du styre modulen fra en ekstern mikrokontroller og jobbe med Wi-Fi som modem. Det finnes også mange andre ferdige firmwares. Noen av dem lar deg konfigurere modulens drift ved hjelp av et WEB-grensesnitt.

Kan programmeres fra Arduino IDE. Med dens hjelp kan du enkelt skrive skisser og laste dem opp til ESP8266, flashe ESP8266 og ikke kreve selve Arduino-brettet. Arduino IDE støtter alle typer ESP8266-moduler.

I for tiden Følgende funksjoner kan implementeres for ESP8266:

  • Grunnleggende funksjoner i Wiring-språket. Du kan kontrollere GPIO-portene på samme måte som pinnene på Arduino-kortet: pinMode, digitalRead, digitalWrite, analogWrite. AnalogRead(A0)-kommandoen lar deg lese ADC-verdier. Ved å bruke kommandoen analogWrite (pin, verdi) kan du koble PWM til høyre avkjørsel GPIO. Når verdi=0, PWM er deaktivert, når maksimumsverdien en konstant lik 1023. Ved å bruke funksjonene attachInterrupt og detachInterrupt kan du avbryte på hvilken som helst GPIO-port bortsett fra 16.
  • Timing og forsinkelse. Ved å bruke millis og micros kommandoene kan du returnere ms og μs som har gått siden starten. Delay lar deg pause programkjøringen i ønsket tid. Forsinkelsesfunksjonen (…) lar deg også opprettholde normalen Wi-Fi fungerer, hvis skissen inneholder store elementer, som tar mer enn 50 ms å utføre. Yield() er en analog av delay(0)-funksjonen.
  • Seriell og Seriell1 (UART0 og UART1). Seriearbeid på ESP8266 ligner på arbeid på Arduino. Skriving og lesing av data blokkerer kodekjøring hvis 128-byte FIFO og 256-byte programvarebuffer er full. Serieobjektet bruker maskinvare UART0, du kan sette pinnene GPIO15 (TX) og GPIO13 (RX) for det i stedet for GPIO1(TX) og GPIO3(RX). For å gjøre dette, etter Serial.begin(); du må ringe Serial.swap();. På samme måte bruker Serial1 UART1, som fungerer for overføring. Nødvendig pin for dette er GPIO2.
  • Makro PROGEM. Operasjonen ligner på Arduino. Lar deg bevege deg lese data bare og strengkonstanter i flashminnet. Samtidig lagrer ikke ESP8266 de samme konstantene, noe som fører til ekstra sløsing med flashminne.
  • I2C. Før du arbeider med I2C-bussen, velges bussene ved hjelp av funksjonen Wire.pins(int sda, int scl).
  • SPI, OneWire – fullt støttet.

Bruker esp8266 for å kommunisere med Arduino via WiFi

Før du kobler til Arduino er det viktig å huske at forsyningsspenningen til ESP8266 ikke kan være høyere enn 3,6, mens på Arduino er spenningen 5 V. Du må koble til 2 mikrokontrollere ved hjelp av resistive delere. Før du kobler til modulen, må du gjøre deg kjent med pinouten til den valgte ESP8266. Koblingsskjemaet for ESP8266-01 er vist i figuren.

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

For å støtte stabil drift av ESP8266, kreves det en kilde DC spenning ved 3,3 V og maksimal strøm 250 mA. Hvis strømmen kommer fra en USB-TTL-omformer, kan det oppstå feil og funksjonsfeil.

Å jobbe med Wi-Fi-biblioteket for ESP8266 ligner på biblioteket for et vanlig skjold. Det er flere funksjoner:

  • modus(m) – for å velge en av tre moduser: klient, tilgangspunkt eller begge modusene samtidig.
  • softAP(ssid) – nødvendig for å opprette et åpent tilgangspunkt.
  • softAP(ssid, passord) – oppretter et tilgangspunkt med et passord, som må bestå av minst 8 tegn.
  • WiFi.macAddress(mac) og WiFi.softAPmacAddress(mac) – definerer MAC-adressen.
  • WiFi.localIP() og WiFi.softAPIP() – bestemmer IP-adressen.
  • printDiag(Serial); – lar deg finne ut diagnostiske data.
  • WiFiUDP – støtte for sending og mottak av multicast-pakker i klientmodus.

Arbeidet utføres i henhold til følgende algoritme:

  • Koble USB-TTL til USB og til ESP.
  • Lanserer Arduino IDE.
  • Velg ønsket port, kort, frekvens og flashminnestørrelse i verktøymenyen.
  • Fil - Eksempler - ESP8266WiFi - WiFiWebServer.
  • Skriv ned SSID og passord til Wi-Fi-nettverket i skissen.
  • Begynn å kompilere og laste opp kode.
  • Vent til fastvareprosessen er ferdig, koble GPIO0 fra jord.
  • Sett hastigheten til 115200.
  • En tilkobling vil oppstå og IP-adressen vil bli registrert.
  • Åpne nettleseren, skriv inn adresselinjen IP-nummer/gpio/1
  • Se på portmonitoren; hvis en LED er koblet til GPIO2-utgangen, skal den lyse.

NodeMCU basert på esp8266

NodeMCU er en plattform basert på esp8266-modulen. Brukes til å fjernstyre kretsen ved hjelp av Internett via Wi-Fi. Brettet er liten, kompakt, rimelig, og har en USB-kontakt på forsiden. I nærheten finner du knapper for feilsøking og omstart av mikrokontrolleren. En ESP8266-brikke er også installert. Forsyningsspenning er fra 5 til 12 V, det anbefales å forsyne mer enn 10 V.

Brettets store fordel er det lave strømforbruket. De brukes ofte i selvdrevne kretser. Det er bare 11 generelle porter på brettet, hvorav noen har spesielle funksjoner:

  • D1 og D2 – for I2C/TWI-grensesnitt;
  • D5-D8 - for SPI-grensesnitt;
  • D9, D10 – for UART;
  • D1-D10 – kan fungere som PWM.

Plattformen har et moderne API for hardware input og output. Dette lar deg redusere antall trinn når du arbeider med utstyr og når du setter det opp. Ved hjelp av NodeMCU-firmware kan du bruke det fulle arbeidspotensialet til rask utvikling enheter.

WeMos basert på esp8266

WeMos er en annen type plattform basert på esp8266-mikrokontrolleren. Følgelig er det Wi-Fi-modul, Arduino IDE støttet, har en kontakt for en ekstern antenne. Brettet har 11 digitale innganger/utganger, som (unntatt D0) støtter interrupt/pwm/I2C/one-wire. Maksimal forsyningsspenning når 3,3 V. Det er også en USB-kontakt på plattformen. Analog inngang 1 med en maksimal spenning på 3,2V.

For å jobbe med modulen må du installere CH340-driveren og konfigurere Arduino IDE for ESP8266. For å gjøre dette må du legge til adressen http://arduino.esp8266.com/stable/package_esp8266com_index.json i innstillingsmenyen på linjen "ekstra lenke for styreleder".

Etter dette må du finne esp8266 by ESP8266-pakken og installere den. Deretter må du velge Wemos D1 R2 mikrokontroller fra verktøymenyen og skrive ned ønsket skisse.

Konklusjoner om ESP8266

Med kort basert på ESP8266-brikken kan du legge til muligheter til prosjektene dine. stort internett", noe som gjør dem mye mer intelligente. Fjernkontroll, samle og analysere data på serveren, stemmebehandling og arbeid med bilder – alt dette blir tilgjengelig når vi kobler prosjektet vårt via WiFi til Internett. I de følgende artiklene skal vi se nærmere på hvordan du kan programmere esp8266-baserte enheter, og også ta hensyn til populære brett som WeMos og NodeMcu.

Ble hjertelig mottatt av Habra-samfunnet. Til tross for at den inneholdt lite spesifikk informasjon. Det var en god grunn til dette - NDA vi signerte for å motta SDK fra løsningsprodusenten, Espressif. Det er derfor vi ganske enkelt sa, "her, det er en slik løsning." Slik at interesserte har mulighet til å ta hensyn.

Forleden dag vi (COOLRF-prosjektet, ikke glem abonner på vårt VKontakte-fellesskap, hvis du ikke allerede er medlem) har fått tillatelse fra brikkeprodusenten til å publisere informasjon i artiklene våre som tidligere var underlagt vilkårene i en taushetserklæring. Alle som var interessert i detaljene er velkommen under kat.

Typiske brukstilfeller

ESP8266 er designet for bruk i smarte stikkontakter, mesh-nettverk, IP-kameraer, trådløse sensorer, bærbar elektronikk og så videre. Kort sagt, ESP8266 ble født til å bli hjernen til det kommende tingenes internett.

Det er to muligheter for bruk av brikken: 1) i form av en UART-WIFI-bro, når en ESP8266-basert modul kobles til eksisterende løsning basert på enhver annen mikrokontroller og kontrollert av AT-kommandoer, som sikrer at løsningen kommuniserer med Wi-Fi-infrastrukturen; 2) implementere en ny løsning som bruker selve ESP8266-brikken som en kontrollmikrokontroller.

Det første scenariet ble kort beskrevet i vår siste artikkel. Den er implementert ved å bruke en av de rimelige kinesiske ESP8266-modulene. Godt egnet for Arduino-elskere og de som allerede har i hendene ferdige skjemaer og feilsøkt firmware basert på noe av deres eget, høyt elskede.

Den andre versjonen av scenariet innebærer å skrive tilpasset fastvare for å kontrollere brikken fra innsiden. I dette øyeblikket Fastvaren må være skrevet for en proprietær kompilator. Det er i utgangspunktet dette kravene til taushetsplikt rundt dette vedtaket er knyttet til. I overskuelig fremtid planlegger produsenten å bytte til bruk av GCC, og disse begrensningene vil bli opphevet.

Scenariet med å bruke brikken som en kontrollmikrokontroller er interessant fordi den lar deg lage enheter som er veldig små og virkelig varer lenge på batterier. For å jobbe med eksterne enheter har ESP8266 alle nødvendige funksjoner.

Nøkkelegenskaper

ESP8266-brikken er en av de mest integrerte WiFi-løsningene som finnes. Inne i brikken passer en haug med alt som i konkurrerende løsninger ofte er en del av den eksterne trimmen:

Som et resultat består en typisk chip-sele av bare noen få elementer. Færre elementer = lavere komponentkostnad, lavere loddekostnad, mindre plasseringsareal, lavere PCB-kostnad. Noe som er perfekt bekreftet gjeldende priser moduler basert på helten i dagens anmeldelse.

All denne integrerte administrasjonen styres av en utvidet versjon av Tensilicas L106 Diamond-serie 32-bits prosessor. Hva er interessant inni?

  • 802.11 b/g/n-protokoll
  • Wi-Fi Direct (P2P), myk AP
  • Integrert TCP/IP-protokollstabel
  • Integrert TR-switch, balun, LNA, effektforsterker og matchende nettverk
  • Integrerte PLL, regulatorer og strømstyringsenheter
  • +20,5dBm utgangseffekt i 802.11b-modus
  • Støtter antennediversitet
  • Slå av lekkasjestrøm på< 10uA
  • SDIO 2.0, SPI, UART
  • STBC, 1x1 MIMO, 2x1 MIMO
  • A-MPDU & A-MSDU aggregering & 0,4μs vaktintervall
  • Våkn opp og send pakker inn< 22ms
  • Standby strømforbruk< 1.0mW (DTIM3)

Ultra Low Power-teknologi

Energiforbruket er et av de største viktige egenskaper løsning som hevder å bli hjernen til milliarder av Internet of Things-enheter. Hva er årsaken til populariteten til BLE og ulike proprietære implementeringer av radiogrensesnitt? Tross alt, til slutt prøver alle enheter basert på disse implementeringene fortsatt å komme inn vanlig Wi-Fi ved hjelp av spesielle broenheter.

Hemmeligheten er enkel - det er vanskelig å lage en enhet koblet til WiFi som fungerer i tilstrekkelig tid selvdrevet. Forbrukerne er ikke klare til å bytte batterier i sensorer annenhver til tredje måned. Derfor måtte "tilgang til nettverket" gis av broer koblet til konstant elektrisitet. ESP8266 burde løse dette problemet. Wi-Fi kan nå brukes selv i frittstående sensorer som kjører på små batterier. Takket være bruken av avanserte energistyringsmekanismer er løsningen.

Tar du en rask titt på brikkens forbruksegenskaper, kan du bli stående i mørket. 215mA i sendemodus - ikke noe spesielt? Ja, men når du har lest dataarket, begynner du å forstå utsiktene for løsningen. ESP8266 bruker omtrent 60uA i dyp dvalemodus (med sanntidsklokke i gang) og mindre enn 1,0mA (DTIM=3) eller mindre enn 0,5mA (DTIM=10) i modusen for å opprettholde forbindelse med et Wi-Fi-tilgangspunkt.