Daiktų internetas jau čia pat – pirmieji ESP8266 bandymai

Daiktų internetas (angl. internet of things (IoT)) tai įvairių mus supančių kasdieninių prietaisų (bent kiek išmanių) prijungimas prie interneto, siekiant papildomų galimybių.

Daiktų prijungimui prie interneto per WiFi ir smalsumo patenkinimui įsigijau modulių (ESP-01) su ESP8266 mikroschema, kurių dydis 21.1 x 13,2 mm.. Šiuos modulius sudaro ESP8266, Flash atminties mikroschemą, antena ir keletas kitų komponentų. Yra ir kitokių modulių variantų su ESP8266, kurie turi daugiau įvairios paskirties išvadų. Modulių kainos prasideda nuo maždaug 2 USD.

Visų minėtų midulių pagrindas mikroschema ESP8266. ESP8266 tai SoC (system on chip), kurį sudaro WiFi + RISC mikrovaldiklis. ESP8266 suderinamas su IEEE802.11bgn standartais. Gali veikti kaip klientas ar/ir stotelė.

Išbandęs pradinę FW versiją, supratau, kad visas funkcionalumas pasiekiama tik per AT komandas. Tai yra patogu, jei naudojamas papildomas mikrovaldiklis. Aš norėjau gana nesudėtingomis priemonėmis privesti šį modulį spręsti paprasčiausias užduotis autonomiškai. Greita apžvalga parodė, kad ESP8266 programuoti galima naudojant:

  • C/C++ kalbą naudojant SDK ir Eclipse
  • C/C++ kalbą naudojant Arduino branduolį ir aplinką
  • Lua kalbą
  • Gal yra ir kitų variantų

Pradinę FW perrašiau į NodeMCU, norėdamas išbandyti Lua kalbą. Lua yra interpretuojama programavimo kalba, kurią labai norint galima sukompiliuoti į vykdomąjį kodą.

Taigi, padariau, kad per WiFi modulis jungtųsi prie interneto, imtų duomenis iš temperatūros jutiklio DS18B20 ir periodiškai siųstų juos į serverį. Tokių junginių padariau keletą ir prijungęs maitinimo šaltinius, pridėliojau savo būste.

Moduliuose nustačiau, kad duomenis siųstų į thingspeak.com, nes nenorėjau jų kaupti jokioje vietinėje sistemoje. Naudojant thingspeak galima atlikti duomenų atvaizdavimą, naudojantis web naršykle ar kitomis priemonėmis. Ateityje galvoju, padaryti dagiau tokių sprendimų ir prijungti įvairesnių jutiklių (drėgmės, slėgio, CO2).

Atsiranda vis daugiau nebrangių ir paprastų priemonių leidžiančių jungti įrenginius prie interneto. Vienas iš variantų čia aptarti moduliai su mikroschema ESP8266. Šiuos modulius suprogramavus pagal savo poreikius galima pasiekti įdomių rezultatų. Gaila, kad tik šių modulių energijos poreikis yra sąlyginai didelis ir iš baterijų jų maitinti neverta.

Spread the love

7 thoughts on “Daiktų internetas jau čia pat – pirmieji ESP8266 bandymai

  1. Del bateriju, tai manau realu panaudojant deep sleep. Preliminariai kas valanda siunciant pvz temperatura naudojant kelias AA batarkes lengvai veiks apie metus. Deje sis modulis kad palaikytu deep sleep reikia padaryti tiuninga. Geriau imti esp8266 esp-12 nes galima realizuoti deep sleep, daugiau gpio, daznai pasitaiko su didesniu flashu, integruota antena ir antenos jungtis o kaina vienoda.

    • Apie sleep režimus galvojau, gal reikės kada išbandyti. Siekiant taupyti energiją gali tekti junginėti ir jutiklių maitinimą.

      Norėtųsi duomenis siųsti bent kas 5 minutes.

      Esu užsisakęs ESP-07, kuris turi keraminę antena, lizdą išorinei antenai, daugiau GPIO.

    • Anksčiau šių modulių programavimui naudojau LUA kalbą (NodeMCU fw), tačiau man ji nespėjo patikti 🙂

      Po to perėjau prie specialiai šiems moduliams padarytos Arduino fw ir galėjau programuoti C kalba. Man tai patiko labiau.

      Abiem atvejais duomenys siunčiami HTTP post metodu į thingspeak serverį. Su šiais modulaiis nėra sunku rasti pavyzdžių, jei reikės, galėsiu nurodyti.

      Prieš keletą mėnesių thingspeak pradėjo palaikyti ir MQTT protokolą, bet dar neišbandžiau.

      • na as naudojausi https://io.adafruit.com/ bet nelabai patiko, nes negalima padaryti public duomenu. Bandziau ieskotis informacijos per forumus, tai ne vienam man paciam tokios problemos. Siandiena visa vakara bandau prisijungti prie thingspeak.com, bet kazkodel nepavyksta 🙁 gal gali mesteleti i koda, kad blogai

        #include "ThingSpeak.h"
        #include <ESP8266WiFi.h>
        
        char ssid[] = "Kaimynai"; // your network SSID (name)
        char pass[] = "12341234"; // your network password
        
        int status = WL_IDLE_STATUS;
        
        WiFiClient client;
        
        unsigned long myChannelNumber = 234175;
        const char * myWriteAPIKey = "GW0XDCK41FWYZW5L";
        
        void setup() {
        
        Serial.begin(9600);
        WiFi.begin(ssid, pass);
        
        while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
        }
        
        Serial.println("WiFi connected");
        Serial.println("IP address: "); Serial.println(WiFi.localIP());
        ThingSpeak.begin(client);
        }
        
        void loop() {
        int sensorValue = analogRead(A0);
        ThingSpeak.writeField(myChannelNumber, 1, sensorValue, myWriteAPIKey);
        delay(2000);
        }
        
          • Gerai, kad pradėjo ir tau viskas veikti 🙂

            Public ir private rodyniai konfigūruojasi atskirai ir jie gali būti rodomi iš tų pačių duomenų. Nieko sudėtingo nėra, jei nori tai pateikti paprastai.

            Matau, kad naudoji ThingSpeak biblioteką, tai dar supaprastina kodą. Man teko primityviai generuoti HTTP post užklausas 🙂

            Pradiniam thingspeak testavimui tiesiog naudojau duomenų siuntimą per naršyklę.

Leave a Reply

Your email address will not be published. Required fields are marked *