Teek HTTP-päringute tegemiseks ESP8266 WiFi mooduli ja Arduino abil

Teek HTTP-päringute tegemiseks ESP8266 WiFi mooduli ja Arduino abil

Teek HTTP-päringute tegemiseks ESP8266 WiFi mooduli ja Arduino abil

Lihtne viis teabe saatmiseks mikrokontrollerisse ja sealt tagasi on koondada see veebiserverisse. Kuigi see ei ole nii tõhus meetod kui näiteks otse andmebaasi pääsemine, on see piisavalt tõhus, eriti kui mõelda mikrokontrolleril põhinevale projektile ja lisada juurde üldlevimise (andmed pilves) ja lihtsuse (see) eelised. saab käsitleda tekstiinfo ja tellimustena). Teabe saatmine selle süsteemi abil võib seisneda HTTP POST päringute tegemises ja selle vastuvõtmises HTTP GET päringu vastuse sisu analüüsimise teel.

Sisukord

    El ESP8266 WiFi moodul See on väga ökonoomne valik, mille jõudlus on väga sobiv mikrokontrolleritega kasutamiseks ja väga lihtne kasutada AT-käskudega töötades.

    Selle kasutamise süstematiseerimiseks HTTP-päringutega olen välja töötanud väikese teegi, mis toetab minu unehaldusseadme projekti (mida olen nimetanud SleepManageriks) vajadusi, kuna selle infrastruktuur põhineb veebiserveril, mis võimaldab seda objektile laiendada. IoT kui pilveteenus. Muude teenuste, näiteks UDP-päringute lisamine teeki, näiteks, pole keeruline aja sünkroonimine NTP kaudu kuigi, nagu ma lingitud tekstis selgitan, ei ole see minu vajaduste jaoks kriitiline ja ma saan selle vastuvõetavalt lahendada HTTP päringuga selleks ettevalmistatud veebilehele, nagu ma näitan selle teegi kasutamise näites.

    Teegi töö põhineb AT käskude saatmisel, kui seade on saadaval ja nende kordamisel (väikese viivitusega) vea korral, mida tõlgendatakse mittekättesaadavusena (edukalt, testimise teel) näiteks punktist WiFi juurdepääsu või serveriga konsulteeritakse.

    Teek kasutab ära asjaolu, et ESP8266 WiFi moodul tagastab andmete vastuvõtmise hoiatusena +IPD koodi, et täita serveri poolt tagastatud infoga väike puhver. Unehaldusseadme projekti jaoks pean analüüsima väga vähe serverist tagastatud andmeid, nii et säästmiseks on puhver ja seda läbiv osuti eriti väikesed; See on üks esimesi asju, mida peate teegi taaskasutamiseks suurema andmemahu töötlemiseks muutma.

    Funktsioonid, mis on avalikud, võimaldavad (1) teada mooduli olekut: kas see on ühendatud või mitte, kas puhvris on andmeid ja kui palju ning kas ESP8266 moodul on lõpetanud nõutud toimingu; (2) ühendage DHCP-serveriga võrgus oleva WiFi-pääsupunktiga ja (3) tehke HTTP GET- ja POST-päringuid, kuigi, nagu näete, on kood loodud selleks, et teiste lisamine oleks väga lihtne.

    Seoses sisemise funktsioneerimisega koostatakse esiteks kaks maatriksit, millest üks sisaldab AT korraldusi ja teine ​​eeldatavate vastustega edu ja vea kohta; Seejärel peab teeki kasutav programm funktsiooni aeg-ajalt välja kutsuma enviar kes vastutab tellimuste saatmise eest moodulisse, kui need on saadaval ja mitte hõivatud, ja funktsiooni saama mis töötleb vastuseid moodulist ESP8266 (ja vajaduse korral HTTP-serverist selle kaudu)

    Kuna on võimalus, et moodul võib signaali kadumise tõttu lahti ühendada, saab põhiprogramm kontrollida, kas ESP8266 moodul on ühendatud WiFi pääsupunktiga (funktsiooniga conectado) ja proovige ühendada muul viisil (funktsiooniga connect_wifi)

    Et teada saada, kas soovitud toiming on lõppenud, saab programm seda funktsiooni kasutada operatsioon_lõpetatud ja sel juhul saatke teine ​​või kasutage saadud andmeid, mille jaoks funktsiooni kasutatakse loe_puhver, mis tagastab puhvri sisu, mis on ESP8266 moodulisse saabunud andmetega täidetud kuni toimingu lõpuni, ja funktsiooni puhvri_pikkus mis teatab nende andmete hulga, mille kohta server on hoiatanud, et neid kavatseti saata (et mooduli enda teavet saaks diskonteerida)

    Allolev näide kasutab HTTP-päringuteeki koos ESP8266 WiFi mooduliga andmete saatmiseks serverisse (protsent, mis saadakse analoogsisendi lugemisest) iga teatud ajaintervalli järel. Kuna see ei oota vastust saada, ei kasuta ta puhvrit ja sellest piisab toimingu korrektseks lõpuleviimiseks. Seda süsteemi kasutan oma unehaldusseadme projektis andurite näitude tulemuste serverisse salvestamiseks.

    Järgmises näites kasutatakse HTTP GET-päringut serveri aja päringu tegemiseks ja selle sünkroonimiseks mikrokontrollitud seadme ajaga, lisades hinnangulise reageerimisaja; Tegelikult lisab see veel 4–6 sekundit tagamaks, et seadme aeg on serveri ajast pikem ja et hõlpsasti kontrollida, kas seadme osaks oleva reaalajas kella aeg on õige või on allalaadimise tõttu kadunud. aku.

    Pärast paljusid katseid olen veendunud, et see süsteem on Aja sünkroonimine ESP8266 WiFi mooduliga See on minu vajaduste jaoks piisavalt täpne; halvimal juhul alla 10-sekundilise veaga, mis minu puhul on mõnevõrra ebaoluline.

    Nagu koodist näha, on vaja esmalt küsida puhvri pikkust, kuna lugemine lähtestab selle nii, et see oleks uute andmete salvestamiseks saadaval.

    Kui puhvri sisu on loetud, siis selles näites töödeldakse seda aja saamiseks. Esiteks valitakse sulgude vahel olev tekst (server vastab käsuga PHP kaja "{.time()."}") teisendab selle “ajaobjektiks” ning hangib sellelt kuupäeva ja kellaaja inimvormingus.

    Teenuse abil avaliku IP-aadressi leidmiseks kasutatakse järgmist kasutaja päringust inspireeritud näidisprogrammi Kontrolli IP-d AWS (Amazoni veebiteenused) iga viie minuti järel.

    Nagu eelmistes näidetes, tehakse mitmeid eeldusi, mida tuleb muuta sõltuvalt kasutatavast võrgukonfiguratsioonist (näites 192.168.1.X), SSID-st ja WiFi võtmest... IP-aadress pole eriti elegantne, eeldab, et see on HTTP GET-i päringu vastuse viimane rida, kuigi võib olla API, mis seda ortodokssemal viisil teeb.


    saad laadige Arduino Uno abil alla HTTP-päringute jaoks ESP8266 teek (ilma konsoolita) ja siit saate laadige alla ESP8266 HTTP-päringuteek Arduino jaoks mis kasutab konsooli, see tähendab, et see peab juurutama jadapordi tarkvara abil või kasutama riistvarana, näiteks emaplaati arduino mega o arduino leonardo.

    Postita kommentaar

    Võib-olla jäite vahele