Kirjasto HTTP-kyselyjen tekemiseen ESP8266 WiFi-moduulilla ja Arduinolla

Kirjasto HTTP-kyselyjen tekemiseen ESP8266 WiFi-moduulilla ja Arduinolla

Kirjasto HTTP-kyselyjen tekemiseen ESP8266 WiFi-moduulilla ja Arduinolla

Yksinkertainen tapa lähettää tietoja mikro-ohjaimelle ja sieltä on keskittää ne verkkopalvelimelle. Vaikka se ei olekaan yhtä tehokas menetelmä kuin esimerkiksi suora pääsy tietokantaan, se on riittävän tehokas, varsinkin jos ajatellaan mikrokontrolleriin perustuvaa projektia ja siihen lisätään kaikkialla esiintymisen (data pilvessä) ja yksinkertaisuuden (se voidaan käsitellä tekstitietoina ja tilauksina). Tietojen lähettäminen tämän järjestelmän avulla voi koostua HTTP POST -pyyntöjen tekemisestä ja sen vastaanottamisesta analysoimalla HTTP GET -pyynnön vastauksen sisältö.

Sisällysluettelo

    El ESP8266 WiFi-moduuli Se on erittäin taloudellinen vaihtoehto, jonka suorituskyky sopii hyvin käytettäväksi mikro-ohjainten kanssa ja erittäin helppokäyttöinen AT-komentojen kanssa.

    Sen käytön systematisoimiseksi HTTP-pyyntöjen kanssa olen kehittänyt pienen kirjaston, joka tukee unenhallintalaiteprojektini tarpeita (jota olen kutsunut SleepManageriksi), koska sen infrastruktuuri perustuu verkkopalvelimeen, jonka avulla se voidaan laajentaa objektiin. Esineiden internet kuten pilvipalvelu. Ei ole vaikeaa lisätä kirjastoon muita palveluita, kuten UDP-pyyntöjä, esimerkiksi ajan synkronointi NTP:n kautta vaikka, kuten linkitetyssä tekstissä selitän, se ei ole tarpeideni kannalta kriittinen ja voin ratkaista sen hyväksyttävästi HTTP-pyynnöllä tätä tarkoitusta varten valmistetulle verkkosivulle, kuten näytän esimerkissä tämän kirjaston käytöstä.

    Kirjaston toiminta perustuu AT-komentojen lähettämiseen laitteen ollessa käytettävissä ja niiden toistamiseen (pienellä viiveellä) virheen sattuessa, joka tulkitaan poissaoloksi (onnistuneesti testaamalla) esimerkiksi pisteen WiFi-yhteydestä tai palvelinta kuullaan.

    Kirjasto hyödyntää sitä, että ESP8266 WiFi-moduuli palauttaa +IPD-koodin varoituksena tiedon vastaanottamisesta täyttääkseen pienen puskurin palvelimen palauttamilla tiedoilla. Unenhallintalaiteprojektia varten minun on analysoitava hyvin vähän palvelimelta palautettua dataa, joten säästöä varten puskuri ja sen läpi kulkeva osoitin ovat erityisen pieniä; Tämä on yksi ensimmäisistä asioista, jotka sinun on muutettava, jotta voit käyttää kirjastoa uudelleen suuremman tietomäärän käsittelyyn.

    Julkisena paljastuvat toiminnot antavat (1) tietää moduulin tilan: onko se kytketty vai ei, onko puskurissa dataa ja kuinka paljon ja onko ESP8266-moduuli suorittanut pyydetyn toiminnon; (2) muodostaa yhteyden WiFi-tukiasemaan verkossa DHCP-palvelimella ja (3) tehdä HTTP GET- ja POST-pyyntöjä, vaikka, kuten näette, koodi on suunniteltu helpottamaan muiden lisäämistä.

    Mitä tulee sisäiseen toimintaan, ensin rakennetaan kaksi matriisia, joista toinen sisältää AT-käskyt ja toinen odotetut vastaukset onnistumiselle ja virheelle; Sitten kirjastoa käyttävän ohjelman on kutsuttava funktio ajoittain lähettää joka on vastuussa tilausten lähettämisestä moduuliin, jos ne ovat käytettävissä eivätkä varattu, ja toimintoon recibir joka käsittelee vastaukset ESP8266-moduulista (ja HTTP-palvelimelta sen kautta tarvittaessa)

    Koska on mahdollista, että moduuli katkeaa signaalin katoamisen vuoksi, pääohjelma voi tarkistaa, onko ESP8266-moduuli kytketty WiFi-tukipisteeseen (toiminnolla Conectado) ja yritä muodostaa yhteys muuten (funktion kanssa connect_wifi)

    Ohjelma voi käyttää toimintoa saadakseen selville, onko pyydetty toiminto päättynyt operaatio_valmis ja siinä tapauksessa lähetä toinen tai käytä saatuja tietoja, joihin toimintoa käytetään luku_puskuri, joka palauttaa puskurin sisällön, joka on täytetty ESP8266-moduuliin saapuneilla tiedoilla, kunnes toiminto on valmis, ja funktion puskurin_pituus joka ilmoittaa tämän tiedon määrän, jonka palvelin on varoittanut lähettävänsä (jotta itse moduulin tiedot voidaan jättää huomiotta)

    Alla olevassa esimerkissä käytetään HTTP-kyselykirjastoa ESP8266 WiFi-moduulin kanssa tietojen lähettämiseen palvelimelle (analogisen tulon lukemisesta saatu prosenttiosuus) tietyn aikavälin välein. Koska se ei odota saavansa vastausta, se ei käytä puskuria ja se riittää toimenpiteen suorittamiseen oikein. Tätä järjestelmää käytän unenhallintalaiteprojektissani tallentaakseni anturin lukemien tulokset palvelimelle.

    Seuraava esimerkki käyttää HTTP GET -kyselyä palvelimen ajan kyselyyn ja synkronointiin mikro-ohjatun laitteen ajan kanssa lisäämällä arvioitu vasteaika; Itse asiassa se lisää vielä 4–6 sekuntia varmistaakseen, että laitteen aika on suurempi kuin palvelimen, ja tarkistaa helposti, onko laitteeseen kuuluvan reaaliaikakellon aika oikea vai onko se kadonnut latauksen vuoksi. akku.

    Monien testien jälkeen olen varmistanut, että tämä järjestelmä on Aikasynkronointi ESP8266 WiFi-moduulin kanssa Se on riittävän tarkka tarpeisiini; pahimmassa tapauksessa alle 10 sekunnin virheellä, joka on hieman epäolennainen minun tapauksessani.

    Kuten koodista voidaan nähdä, on ensin kysyttävä puskurin pituus, koska lukeminen nollaa sen niin, että se on käytettävissä uuden tiedon tallentamiseen.

    Kun puskurin sisältö on luettu, tässä esimerkissä se käsitellään ajan saamiseksi. Ensin valitaan aaltosulkeiden välinen teksti (palvelin vastaa komennolla PHP echo “{“.time().”}”) lo transforma en un “objeto tiempo” y de él obtiene en formato humano la fecha y la hora.

    Seuraavaa käyttäjän kyselyn inspiroima esimerkkiohjelmaa käytetään julkisen IP-osoitteen löytämiseen palvelun avulla Tarkista IP AWS (Amazon Web Services) viiden minuutin välein.

    Kuten aiemmissa esimerkeissä, on tehty sarja oletuksia, joita on muutettava riippuen käytetystä verkkokokoonpanosta (esimerkissä 192.168.1.X), SSID:stä ja WiFi-avaimesta... Tapa löytää IP-osoite ei ole kovin tyylikäs, se olettaa, että se on viimeinen rivi vastauksessa HTTP GET -pyyntöön, vaikka voi olla API, joka voi tehdä sen ortodoksisemmalla tavalla.


    Voit lataa ESP8266-kirjasto HTTP-kyselyille Arduino Unolla (ilman konsolia) ja täältä voit lataa ESP8266 HTTP-kyselykirjasto Arduinolle joka käyttää konsolia, eli sen täytyy toteuttaa sarjaportti ohjelmistolla tai käyttää laitteistona, esim. emolevyä arduino mega o arduino leonardo.

    Post Comment

    Olet ehkä missannut