Turinys:
- 1 veiksmas: nustatykite AWS paskyrą
- 2 žingsnis: Techninės ir programinės įrangos specifikacijos
- 3 žingsnis: belaidžiai vibracijos ir temperatūros jutikliai
- 4 žingsnis: ESP32 AWS programinė įranga
- 5 veiksmas: jutiklio duomenų gavimas iš belaidžio vibracijos ir temperatūros jutiklio
- 6 veiksmas: prisijungimas prie AWS
- 7 veiksmas: duomenų vizualizavimas AWS
- 8 žingsnis: bendras kodas
Video: Darbo su „AWS IoT“pradžia naudojant belaidį temperatūros jutiklį naudojant MQTT: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Ankstesnėse instrukcijose mes perėjome įvairias debesų platformas, tokias kaip „Azure“, „Ubidots“, „ThingSpeak“, „Losant“ir kt. Mes naudojome MQTT protokolą, skirtą siųsti jutiklio duomenis į debesį beveik visoje debesies platformoje. Norėdami gauti daugiau informacijos apie MQTT, jo privalumus ir pranašumus, palyginti su HTTP protokolu, galite perskaityti šioje instrukcijoje.
Šioje instrukcijoje mes priartinsime dar vieną ir labiausiai pažįstamą debesų platformą „Amazon Web Services“. Daugelis iš jūsų gali būti susipažinę su AWS, dar žinomomis kaip „Amazon Web Services“, ir AWS teikiamomis debesies funkcijomis. Tai daugelį metų buvo interneto kūrimo pagrindas. Didėjant daiktų interneto taikymo sričiai, AWS pasiūlė AWSIoT sprendimą. AWSIoT yra patikimas sprendimas, skirtas mūsų interneto programų prieglobai.
Vykdydami šią instrukciją:
- Galėsite nustatyti AWS paskyrą savo „IoT“programai
- Galėsite prijungti ESP32 prie AWS IoT branduolio
- Siųskite ir gaukite pranešimus naudodami MQTT ir HTTP protokolą
- Vizualizuokite siunčiamus duomenis AWS
1 veiksmas: nustatykite AWS paskyrą
AWS sąskaitos nustatymas yra gana lengvas. Jums tereikia įkelti porą sertifikatų, pridėti prie jų politiką, užregistruoti įrenginį ir pradėti gauti jutiklių duomenų pranešimus AWS.
Norėdami nustatyti AWS paskyrą, vadovaukitės šia pamoka.
2 žingsnis: Techninės ir programinės įrangos specifikacijos
Programinės įrangos specifikacija
AWS sąskaita
Techninės įrangos specifikacija
- ESP32
- Belaidis temperatūros ir vibracijos jutiklis
- „Zigmo Gateway“imtuvas
3 žingsnis: belaidžiai vibracijos ir temperatūros jutikliai
Tai ilgo nuotolio pramoninis IoT belaidis vibracijos ir temperatūros jutiklis, galintis pasiekti iki 2 mylių atstumą, naudojant belaidžio tinklo tinklo architektūrą. Šis jutiklis su 16 bitų vibracijos ir temperatūros jutikliu perduoda labai tikslius vibracijos duomenis vartotojo nustatytais intervalais. Jis turi šias funkcijas:
- Pramoninis 3 ašių vibracijos jutiklis su ± 32 g diapazonu
- Skaičiuoja RMS, MAX ir MIN g vibraciją
- Triukšmo pašalinimas naudojant žemo dažnio filtrą
- Dažnių diapazonas (pralaidumas) iki 12 800 Hz
- Mėginių dažnis iki 25, 600 Hz
- Šifruotas ryšys su 2 mylių belaidžiu diapazonu
- Darbinės temperatūros diapazonas nuo -40 iki +85 ° C
- Prie sienos arba prie magneto pritvirtintas IP65 įvertintas korpusas Pavyzdinė programinė įranga, skirta „Visual Studio“ir „LabVIEW“
- Vibracijos jutiklis su išoriniu zondu
- Iki 500 000 transmisijų iš 4 AA baterijų. Yra daug šliuzo ir modemo parinkčių
4 žingsnis: ESP32 AWS programinė įranga
Norėdami prisijungti prie AWS ir pradėti siųsti duomenis, atlikite šiuos veiksmus
- Atsisiųskite AWS biblioteką iš šios „Github“saugyklos
- klonuokite repo ir įdėkite AWS_IOT failą į „Arduino“katalogo bibliotekos aplanką
git klonas
Dabar pereikime kodą:
- Šioje programoje mes panaudojome uždarąjį portalą, kad išsaugotume „WiFi“prisijungimo duomenis ir perjungtume IP adresus. Norėdami gauti išsamų įvadą į nelaisvės portalą, galite perskaityti šią instrukciją.
- Nepriklausomas portalas suteikia mums galimybę pasirinkti tarp statinio ir DHCP nustatymų. Tiesiog įveskite tokius įgaliojimus kaip statinis IP, potinklio kaukė, šliuzas ir belaidžio jutiklio šliuzas bus sukonfigūruoti tuo IP.
- Priglobiamas tinklalapis, kuriame pateikiamas galimų „WiFi“tinklų ir RSSI sąrašas. Pasirinkite „WiFi“tinklą ir slaptažodį ir įveskite „Pateikti“. Įgaliojimai bus išsaugoti EEPROM, o IP nustatymai - SPIFFS. Daugiau apie tai galite rasti šioje instrukcijoje.
5 veiksmas: jutiklio duomenų gavimas iš belaidžio vibracijos ir temperatūros jutiklio
Mes gauname 54 baitų kadrą iš belaidžių temperatūros ir vibracijos jutiklių. Šiuo rėmeliu manipuliuojama, kad būtų gauti tikri temperatūros ir vibracijos duomenys.
ESP32 turi tris UART, skirtas serijiniam naudojimui
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
ir 3 aparatinės įrangos nuoseklius prievadus
- Serijinis
- Serija1
- Serija2
Pirmiausia inicijuokite „Hardware Serial“antraštės failą. Čia mes naudosime RX2 ir TX2 aka. GPIO 16 ir GPIO 17 kaiščiai iš ESP32 plokštės, kad gautumėte serijinius duomenis.
#įtraukti
# define RXD2 16 # define TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // kaiščiai 16 rx2, 17 tx2, 19200 bps, 8 bitai be pariteto 1 stop bitas
Atlikę toliau nurodytus veiksmus, galėsite sužinoti tikrojo jutiklio reikšmes
- Sukurkite kintamuosius temperatūros, drėgmės, akumuliatoriaus ir kitų jutiklių vertėms saugoti
- Nustatykite aparatinės įrangos serijos Rx, tx kaištį, perdavimo greitį ir pariteto bitus
- Pirmiausia patikrinkite, ar yra ką skaityti naudojant „Serial1.available“()
- Mes gausime 54 baitų kadrą.
- Patikrinkite, ar yra 0x7E, kuris yra pradinis baitas.
- Vibracijos duomenis sudaro 3 ašių RMS reikšmė, 3 ašių min. Vertės, 3 ašių maksimalios vertės.
- temperatūroje ir akumuliatoriaus vertėse bus 2 baitai duomenų
- gaukite jutiklio pavadinimą, tipą, jutiklio versiją, kurioje bus 1 baitas duomenų ir ją bus galima gauti iš atitinkamo adreso
if (Serial2.available ()) {Serial.println ("Skaityti seriją"); duomenys [0] = Serial2.read (); vėlavimas (k); if (duomenys [0] == 0x7E) {Serial.println („Gavo paketą“); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); uždelsimas (1); } if (duomenys [15] == 0x7F) ///////, kad patikrintumėte, ar gaunami duomenys teisingi {if (duomenys [22] == 0x08) //////// įsitikinkite, kad jutiklio tipas yra teisingas {rms_x = ((uint16_t) (((duomenys [24]) << 16) + ((duomenys [25]) << 8) + (duomenys [26]))/100); rms_y = ((uint16_t) (((duomenys [27]) << 16) + ((duomenys [28]) << 8) + (duomenys [29]))/100); rms_z = ((uint16_t) (((duomenys [30]) << 16) + ((duomenys [31]) << 8) + (duomenys [32]))/100); int16_t max_x = ((uint16_t) (((duomenys [33]) << 16) + ((duomenys [34]) << 8) + (duomenys [35]))/100); int16_t max_y = ((uint16_t) (((duomenys [36]) << 16) + ((duomenys [37]) << 8) + (duomenys [38]))/100); int16_t max_z = ((uint16_t) (((duomenys [39]) << 16) + ((duomenys [40]) << 8) + (duomenys [41]))/100);
int16_t min_x = ((uint16_t) (((duomenys [42]) << 16) + ((duomenys [43]) << 8) + (duomenys [44]))/100); int16_t min_y = ((uint16_t) (((duomenys [45]) << 16) + ((duomenys [46]) << 8) + (duomenys [47]))/100); int16_t min_z = ((uint16_t) (((duomenys [48]) << 16) + ((duomenys [49]) << 8) + (duomenys [50]))/100);
cTemp = ((((duomenys [51]) * 256) + duomenys [52])); plūdinė baterija = ((duomenys [18] * 256) + duomenys [19]); įtampa = 0,00322 * baterija; Serial.print („Jutiklio numeris“); Serial.println (duomenys [16]); senseNumber = duomenys [16]; Serial.print („Jutiklio tipas“); Serial.println (duomenys [22]); Serial.print („Firmware Version“); Serial.println (duomenys [17]); Serial.print ("Temperatūra Celsijaus laipsniais:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibracija X ašyje:"); Serijinis atspaudas (rms_x); Serial.println („mg“); Serial.print („RMS vibracija Y ašyje:“); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibracija Z ašyje:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print („Min. Vibracija X ašyje:“);
Serijinis atspaudas (min_x); Serial.println („mg“); Serial.print („Min. Vibracija Y ašyje:“); Serijinis atspaudas (min_y); Serial.println („mg“); Serial.print („Min. Vibracija Z ašyje:“); Serial.print (min_z); Serial.println („mg“);
Serial.print ("ADC reikšmė:");
Serial.println (baterija); Serial.print ("Baterijos įtampa:"); Serijinis atspaudas (įtampa); Serial.println ("\ n"); if (įtampa <1) {Serial.println („Laikas pakeisti bateriją“); }}} else {for (i = 0; i <54; i ++) {Serial.print (duomenys ); Serial.print (","); uždelsimas (1); }}}}
6 veiksmas: prisijungimas prie AWS
- Įtraukite AWS_IOT.h, WiFi.h antraštės failus, kad nustatytumėte ryšį su AWSIoT centru
- Įveskite savo prieglobos adresą, kliento ID, kuris bus politikos pavadinimas, ir temos pavadinimą, kuris bus daikto pavadinimas
// ********* AWS kredencialai ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Sukurkite char kintamąjį, kad išsaugotumėte savo JSON, šiuo atveju sukūrėme formatą JSON saugojimui
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" įtampa / ":%. 2f}";
Sukurkite AWS_IOT klasės egzempliorių
AWS_IOT esp; // AWS_IOT klasės egzempliorius
Dabar prisijunkite prie AWSIoT koncentratoriaus naudodami šį metodą
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Prisijungta prie AWS"); vėlavimas (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println („Prenumeruoti sėkmingai“); } else {Serial.println ("Nepavyko užsiprenumeruoti, patikrinkite daikto pavadinimą ir sertifikatus"); tuo tarpu (1); }} else {Serial.println ("AWS ryšys nepavyko, patikrinkite HOST adresą"); tuo tarpu (1); }
vėlavimas (2000 m.);
}
paskelbti jutiklio duomenis kas 1 minutę
if (tick> = 60) // publikuoti į temą kas 5 sekundes {tick = 0; anglies naudingoji apkrova [PAYLOAD_MAX_LEN]; snprintf (naudingoji apkrova, PAYLOAD_MAX_LEN, formatas, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, įtampa); Serial.println (naudingoji apkrova); if (hornbill.publish (TOPIC_NAME, naudingoji apkrova) == 0) {Serial.print ("Paskelbti pranešimą:"); Serial.println (naudingoji apkrova); } else {Serial.println ("Nepavyko paskelbti"); }} „vTaskDelay“(1000 / prievadasTICK_RATE_MS); pažymėkite ++;
7 veiksmas: duomenų vizualizavimas AWS
- Prisijunkite prie savo AWS paskyros.
- Kairiajame įrankių juostos kampe rasite skirtuką Paslaugos
- Spustelėkite šį skirtuką ir po daiktų interneto antrašte pasirinkite „IoT Core“.
- Pasirinkite QoS ir Nr. pranešimų abonentams. Įveskite temos pavadinimą.
8 žingsnis: bendras kodas
Visą kodą galite rasti šioje „Github“saugykloje.
Kreditai
- Arduino Json
- Belaidžiai temperatūros ir drėgmės jutikliai
- ESP32
- PubSubClient
Rekomenduojamas:
Darbo su belaidžiu belaidžiu temperatūros ir vibracijos jutikliu pradžia: 7 žingsniai
Darbo su belaidžiu belaidžiu temperatūros ir vibracijos jutikliu pradžia: kartais vibracija sukelia rimtų problemų daugelyje programų. Nuo mašinos velenų ir guolių iki kietojo disko veikimo vibracija sukelia mašinos pažeidimus, ankstyvą pakeitimą, mažą našumą ir daro didelę įtaką tikslumui. Stebima
Temperatūros skaitymas naudojant LM35 temperatūros jutiklį su „Arduino Uno“: 4 žingsniai
Temperatūros skaitymas naudojant LM35 temperatūros jutiklį su „Arduino Uno“: Sveiki, vaikinai, šioje instrukcijoje mes išmoksime naudoti LM35 su „Arduino“. Lm35 yra temperatūros jutiklis, galintis nuskaityti temperatūros reikšmes nuo -55 ° C iki 150 ° C. Tai 3 gnybtų įrenginys, kuris tiekia analoginę įtampą, proporcingą temperatūrai. Hig
Darbo su „Amazon AWS IoT“ir ESP8266 pradžia: 21 veiksmas
Darbo su „Amazon AWS IoT“ir ESP8266 pradžia: Šis projektas parodo, kaip paimti ESP8266 modulį ir prijungti jį tiesiogiai prie „AWS IOT“naudojant „Mongoose OS“. „Mongoose OS“yra atviro kodo operacinė sistema, skirta mikrovaldikliams, pabrėžianti debesų ryšį. Jį sukūrė Dublino „Cesanta“
El. Pašto įspėjimų apie NCD belaidį temperatūros ir drėgmės jutiklį kūrimas naudojant raudoną mazgą: 22 žingsniai
El. Pašto įspėjimų apie NCD belaidį temperatūros ir drėgmės jutiklį kūrimas naudojant raudoną mazgą: čia mes naudojame NCD temperatūros ir drėgmės jutiklį, tačiau bet kurio ncd produkto veiksmai išlieka vienodi, taigi, jei turite kitų belaidžių jutiklių, išbandykite nemokamai stebėti šalia. Sustabdydami šį tekstą turite
„IoT“analoginė įvestis - darbo su „IoT“pradžia: 8 žingsniai
„IoT“analoginis įvestis - Darbo su „IoT“pradžia: Analoginių įėjimų supratimas yra esminė dalis supratimo, kaip veikia aplinkiniai dalykai, dauguma, jei ne visi, yra analoginiai jutikliai (kartais šie jutikliai paverčiami skaitmeniniais). Skirtingai nuo skaitmeninių įėjimų, kurie gali būti tik įjungti arba išjungti, analoginis įėjimas