Knjižnica za poizvedbe HTTP z modulom ESP8266 WiFi in Arduino

Knjižnica za poizvedbe HTTP z modulom ESP8266 WiFi in Arduino

Knjižnica za poizvedbe HTTP z modulom ESP8266 WiFi in Arduino

Preprost način za pošiljanje informacij mikrokrmilniku in iz njega je centralizacija na spletnem strežniku. Čeprav ni tako učinkovita metoda kot na primer neposreden dostop do podatkovne baze, je dovolj učinkovita, sploh če upoštevamo projekt, ki temelji na mikrokrmilniku, in dodamo prednosti vseprisotnosti (podatki v oblaku) in enostavnosti (to se lahko obravnava kot besedilne informacije in naročila). Pošiljanje informacij s pomočjo tega sistema je lahko sestavljeno iz izdelave zahtev HTTP POST in njihovega sprejema z analizo vsebine odgovora na zahtevo HTTP GET.

Kazalo

    El WiFi modul ESP8266 Je zelo ekonomična možnost, z zmogljivostjo, ki je zelo primerna za uporabo z mikrokontrolerji in zelo enostavna za uporabo pri delu z ukazi AT.

    Za sistematizacijo njegove uporabe z zahtevami HTTP sem razvil majhno knjižnico, ki podpira potrebe mojega projekta naprave za upravljanje spanja (ki sem ga poimenoval SleepManager), saj svojo infrastrukturo opira na spletni strežnik, ki omogoča, da se razširi na objekt. Internet stvari kot storitev v oblaku. V knjižnico ni težko dodati drugih storitev, kot so na primer zahteve UDP časovna sinhronizacija preko NTP čeprav, kot pojasnjujem v povezanem besedilu, za moje potrebe ni kritičen in ga lahko sprejemljivo rešim s HTTP zahtevo na za ta namen pripravljeno spletno stran, kot prikazujem na primeru uporabe te knjižnice.

    Delovanje knjižnice temelji na pošiljanju AT ukazov, ko je naprava dosegljiva in njihovem ponavljanju (z majhnim zamikom) v primeru napake, ki se interpretira kot nerazpoložljivost (uspešno, s testiranjem) na primer s točke WiFi dostopa oz. strežnik, s katerim se posvetuje.

    Knjižnica izkorišča dejstvo, da modul WiFi ESP8266 vrne kodo +IPD kot opozorilo o sprejemu podatkov, da zapolni majhen medpomnilnik z informacijami, ki jih vrne strežnik. Za projekt naprave za upravljanje spanja moram analizirati zelo malo podatkov, ki jih vrne strežnik, zato sta medpomnilnik in kazalec, ki tečeta skozenj, zaradi varčevanja še posebej majhna; To bo ena od prvih stvari, ki jih boste morali spremeniti, če želite znova uporabiti knjižnico za obdelavo večje količine podatkov.

    Funkcije, ki so izpostavljene kot javne, omogočajo (1) poznavanje statusa modula: ali je povezan ali ne, ali so podatki v medpomnilniku in koliko ter ali je modul ESP8266 dokončal zahtevano operacijo; (2) se povežite z dostopno točko WiFi v omrežju s strežnikom DHCP in (3) naredite HTTP GET in POST zahteve, čeprav je, kot boste videli, koda zasnovana tako, da omogoča zelo enostavno dodajanje drugih.

    Kar zadeva notranje delovanje, se najprej zgradita dve matriki, ena z ukazi AT in druga s pričakovanimi odzivi za uspeh in napako; Nato mora program, ki uporablja knjižnico, občasno poklicati funkcijo pošlji ki bo zadolžen za pošiljanje naročil v modul, če so na voljo in niso zasedeni ter na funkcijo prejeti ki bo obdelal odgovore iz modula ESP8266 (in s strežnika HTTP prek njega, če je to primerno)

    Ker obstaja možnost odklopa modula zaradi izgube signala, lahko glavni program preveri, ali je modul ESP8266 povezan z WiFi dostopno točko (s funkcijo povezan) in poskusite vzpostaviti povezavo drugače (s funkcijo connect_wifi)

    Če želite vedeti, ali je zahtevana operacija končana, lahko program uporabi funkcijo operacija_končana in v tem primeru pošljite drugega ali uporabite nastale podatke, za katere se uporablja funkcija read_buffer, ki vrne vsebino medpomnilnika, ki je bil napolnjen s podatki, ki so prispeli v modul ESP8266 do zaključka operacije, in funkcija dolžina_medpomnilnika ki poroča o količini teh podatkov, za katere je strežnik opozoril, da bodo poslani (tako da se informacije iz samega modula lahko zanemarijo)

    Spodnji primer uporablja knjižnico poizvedb HTTP z modulom ESP8266 WiFi za pošiljanje podatkov strežniku (odstotek, pridobljen z branjem analognega vhoda) v vsakem določenem časovnem intervalu. Ker ne pričakuje nobenega odgovora, ne uporablja medpomnilnika in je dovolj, da se operacija pravilno zaključi. Ta sistem uporabljam v svojem projektu naprave za upravljanje spanja za shranjevanje rezultatov odčitkov senzorjev na strežnik.

    Naslednji primer uporablja poizvedbo HTTP GET za povpraševanje po času strežnika in ga sinhronizira s časom mikronadzorovane naprave z dodajanjem ocenjenega odzivnega časa; Pravzaprav doda še 4 do 6 sekund, da zagotovi, da je čas naprave večji od časa strežnika, in da enostavno preveri, ali je čas na uri realnega časa, ki je del naprave, pravilen ali je bil izgubljen zaradi prenosa .baterija.

    Po številnih preizkusih sem se prepričal, da ta sistem Časovna sinhronizacija z WiFi modulom ESP8266 Za moje potrebe je dovolj natančen; v najslabšem primeru z napako manjšo od 10 sekund, kar je v mojem primeru nekoliko nepomembno.

    Kot je razvidno iz kode, je treba najprej poizvedovati o dolžini medpomnilnika, saj ga branje ponastavi tako, da je na voljo za shranjevanje novih podatkov.

    Ko je vsebina medpomnilnika prebrana, se v tem primeru obdela za pridobitev časa. Najprej se izbere besedilo med oklepaji (strežnik se odzove z ukazom PHP echo “{“.time().”}”) lo transforma en un “objeto tiempo” y de él obtiene en formato humano la fecha y la hora.

    Naslednji primer programa, ki ga je navdihnila uporabnikova poizvedba, se uporablja za iskanje javnega naslova IP s storitvijo CheckIP AWS (spletne storitve Amazon) vsakih pet minut.

    Kot v prejšnjih primerih je narejena vrsta predpostavk, ki jih bo treba spremeniti glede na uporabljeno omrežno konfiguracijo (192.168.1.X, v primeru), SSID in ključ WiFi ... Način, kako najti Naslov IP ni zelo eleganten, predpostavlja, da je zadnja vrstica odgovora na zahtevo HTTP GET, čeprav morda obstaja API, ki to naredi na bolj ortodoksen način.


    Tukaj lahko prenesite knjižnico ESP8266 za poizvedbe HTTP z Arduino Uno (brez konzole) in od tu lahko prenesite knjižnico poizvedb HTTP ESP8266 za Arduino ki uporablja konzolo, kar pomeni, da mora implementirati serijska vrata s programsko opremo ali uporabiti kot strojno opremo, na primer, matično ploščo arduino mega o arduino leonardo.

    po Komentar

    Morda ste zamudili