Sadržaj:
- Korak 1: Postavljanje AWS računa
- 2. korak: Specifikacije hardvera i softvera
- Korak 3: Bežični osjetnici vibracija i temperature
- Korak 4: ESP32 AWS firmver
- Korak 5: Dobivanje podataka senzora s bežičnog senzora vibracija i temperature
- Korak 6: Spajanje na AWS
- Korak 7: Vizualizacija podataka u AWS -u
- Korak 8: Opći kod
Video: Početak rada s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
U ranijim Instructables -ima prošli smo različite oblačne platforme poput Azure, Ubidots, ThingSpeak, Losant itd. Koristili smo MQTT protokol za slanje podataka senzora u oblak na gotovo svim oblačnim platformama. Za više informacija o MQTT -u, njegovim prednostima i prednostima u odnosu na HTTP protokol možete se obratiti ovom uputstvu.
U ovom uputstvu približit ćemo još jednu i najpoznatiju cloud platformu Amazon Web Services. Mnogi od vas možda su upoznati s AWS -om poznatim kao Amazon web -usluge i funkcionalnošću u oblaku koju pruža AWS. Bio je jezgra web razvoja dugi niz godina. S povećanjem opsega IoT aplikacija, AWS je došao do rješenja AWSIoT -a. AWSIoT je pouzdano rješenje za smještaj naših IoT aplikacija.
Slijedeći ove upute:
- Moći ćete postaviti AWS račun za svoju IoT aplikaciju
- Moći ćete spojiti ESP32 na AWS IoT jezgru
- Šaljite i primajte poruke pomoću MQTT i HTTP protokola
- Vizualizirajte poslane podatke u AWS -u
Korak 1: Postavljanje AWS računa
Postavljanje AWS računa prilično je jednostavno. Vi samo trebate učitati nekoliko certifikata, priložiti mu pravila, registrirati uređaj i početi primati poruke sa podacima senzora u AWS.
Za postavljanje AWS računa slijedite ovaj vodič.
2. korak: Specifikacije hardvera i softvera
Specifikacije softvera
AWS račun
Specifikacija hardvera
- ESP32
- Bežični senzor temperature i vibracije
- Zigmo Gateway prijemnik
Korak 3: Bežični osjetnici vibracija i temperature
Ovo je Long Range Industrial IoT bežični senzor vibracija i temperature, koji se može pohvaliti do 2 milje u rasponu pomoću bežične mrežne arhitekture. Uključujući 16-bitni osjetnik vibracija i temperature, ovaj senzor prenosi vrlo točne podatke o vibracijama u intervalima koje definira korisnik. Ima sljedeće značajke:
- Industrijski troosni osjetnik vibracija stupnja ± 32 g
- Izračunava RMS, MAX i MIN g vibracija
- Uklanjanje buke pomoću niskopropusnog filtra
- Frekvencijski raspon (Bandwidth) do 12, 800 Hz
- Brzina uzorkovanja do 25, 600Hz
- Šifrirana komunikacija s 2 milje bežičnog dometa
- Raspon radnih temperatura -40 do +85 ° C
- Zidno ili magnetno montirano kućište IP65 Primjer softvera za Visual Studio i LabVIEW
- Senzor vibracija s opcijom vanjske sonde
- Do 500 000 prijenosa s 4 AA baterije Dostupno je mnogo opcija pristupnika i modema
Korak 4: ESP32 AWS firmver
Da biste se povezali s AWS -om i počeli slati podatke, učinite sljedeće:
- Preuzmite AWS knjižnicu sa sljedećeg spremišta Github
- klonirajte repo i postavite datoteku AWS_IOT u mapu knjižnice u direktoriju Arduino
git klon
Idemo sad kroz kod:
- U ovoj smo aplikaciji koristili zarobljeni portal za spremanje vjerodajnica za WiFi i lebdenje kroz postavke IP -a. Za detaljan uvod na zarobljeničkom portalu možete proći kroz sljedeće upute.
- Zaštitni portal daje nam mogućnost izbora između statičkih i DHCP postavki. Samo unesite vjerodajnice poput statičkog IP -a, maske podmreže, pristupnika i bežični pristupnik senzora će se konfigurirati na tom IP -u.
- Hostira se web stranica na kojoj se prikazuje popis dostupnih WiFi mreža i RSSI. Odaberite WiFi mrežu i lozinku i unesite submit. Vjerodajnice će se spremiti u EEPROM, a postavka IP -a u SPIFFS. Više o tome možete pronaći u ovom uputstvu.
Korak 5: Dobivanje podataka senzora s bežičnog senzora vibracija i temperature
Od bežičnih senzora temperature i vibracija dobivamo okvir od 54 bajta. Ovim se okvirom manipulira kako bi se dobile stvarne temperature i podaci o vibracijama.
ESP32 ima tri UART -a dostupna za serijsku upotrebu
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
i 3 hardverska serijska porta
- Serijski
- Serijski1
- Serijski 2
Prvo, inicijalizirajte datoteku zaglavlja serijskog hardvera. Ovdje ćemo koristiti RX2 i TX2 aka. GPIO 16 i GPIO 17 pinovi ESP32 ploče za dobivanje serijskih podataka.
#uključi
# definirati RXD2 16 # definirati TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pinovi 16 rx2, 17 tx2, 19200 bps, 8 bitova bez pariteta 1 stop bit
Sljedeći koraci vodit će vas dalje do stvarnih vrijednosti senzora
- Izradite varijable za pohranu temperature, vlažnosti, baterije i drugih vrijednosti senzora
- Postavite Rx, tx pin, brzinu prijenosa i paritetne bitove za hardversku seriju
- Prvo provjerite ima li što za pročitati pomoću Serial1.available ()
- Dobit ćemo okvir od 54 bajta.
- Provjerite 0x7E koji je početni bajt.
- Podaci o vibracijama sastoje se od RMS vrijednosti za 3 osi, min vrijednosti za 3 osi, max vrijednosti za 3 osi.
- temperatura i vrijednosti baterije sadržavat će 2 bajta podataka
- dobiti naziv senzora, vrstu, verzija senzora će sadržavati 1 bajt podataka i može se dobiti s te adrese
if (Serial2.available ()) {Serial.println ("Čitaj serijski broj"); podaci [0] = Serial2.read (); kašnjenje (k); if (data [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); za (i = 1; i <55; i ++) {podaci = Serial2.read (); odgoda (1); } if (data [15] == 0x7F) /////// da provjerite jesu li primljeni podaci točni {if (data [22] == 0x08) //////// provjerite vrstu senzora je ispravno {rms_x = ((uint16_t) (((podaci [24]) << 16) + ((podaci [25]) << 8) + (podaci [26]))/100); rms_y = ((uint16_t) (((podaci [27]) << 16) + ((podaci [28]) << 8) + (podaci [29]))/100); rms_z = ((uint16_t) (((podaci [30]) << 16) + ((podaci [31]) << 8) + (podaci [32]))/100); int16_t max_x = ((uint16_t) (((podaci [33]) << 16) + ((podaci [34]) << 8) + (podaci [35]))/100); int16_t max_y = ((uint16_t) (((podaci [36]) << 16) + ((podaci [37]) << 8) + (podaci [38]))/100); int16_t max_z = ((uint16_t) (((podaci [39]) << 16) + ((podaci [40]) << 8) + (podaci [41]))/100);
int16_t min_x = ((uint16_t) (((podaci [42]) << 16) + ((podaci [43]) << 8) + (podaci [44]))/100); int16_t min_y = ((uint16_t) (((podaci [45]) << 16) + ((podaci [46]) << 8) + (podaci [47]))/100); int16_t min_z = ((uint16_t) (((podaci [48]) << 16) + ((podaci [49]) << 8) + (podaci [50]))/100);
cTemp = ((((podaci [51]) * 256) + podaci [52])); plovna baterija = ((podaci [18] * 256) + podaci [19]); napon = 0,00322 * baterija; Serial.print ("Broj senzora"); Serial.println (podaci [16]); senseNumber = podaci [16]; Serial.print ("Tip senzora"); Serial.println (podaci [22]); Serial.print ("Verzija firmvera"); Serial.println (podaci [17]); Serial.print ("Temperatura u Celzijusima:"); Serijski.ispis (cTemp); Serial.println ("C"); Serial.print ("RMS vibracija na osi X:"); Serijski.ispis (rms_x); Serial.println ("mg"); Serial.print ("RMS vibracija na osi Y:"); Serijski.ispis (rms_y); Serial.println ("mg"); Serial.print ("RMS vibracije na osi Z:"); Serijski.ispis (rms_z); Serial.println ("mg");
Serial.print ("Minimalne vibracije na osi X:");
Serijski.ispis (min_x); Serial.println ("mg"); Serial.print ("Minimalne vibracije na osi Y:"); Serijski.ispis (min_y); Serial.println ("mg"); Serial.print ("Minimalne vibracije na osi Z:"); Serijski.ispis (min_z); Serial.println ("mg");
Serial.print ("ADC vrijednost:");
Serial.println (baterija); Serial.print ("Napon baterije:"); Serijski.ispis (napon); Serial.println ("\ n"); if (napon <1) {Serial.println ("Vrijeme za zamjenu baterije"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); odgoda (1); }}}}
Korak 6: Spajanje na AWS
- Uključite datoteke zaglavlja AWS_IOT.h, WiFi.h za postavljanje veze s AWSIoT čvorištem
- Unesite svoju adresu domaćina, ID klijenta koji će biti naziv politike i naziv teme koji će biti naziv stvari
// ********* AWS vjerodajnice ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Napravite varijablu char za spremanje vašeg JSON -a, u ovom slučaju stvorili smo format za pohranu JSON -a
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" napon / ":%. 2f}";
Izradite instancu klase AWS_IOT
AWS_IOT esp; // Instanca klase AWS_IOT
Sada se spojite na AWSIoT čvorište na sljedeći način
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Povezano na AWS"); kašnjenje (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Pretplatite se uspješno"); } else {Serial.println ("Pretplata nije uspjela, provjerite naziv stvari i certifikate"); while (1); }} else {Serial.println ("AWS veza nije uspjela, provjerite HOST adresu"); while (1); }
odgoda (2000);
}
objaviti podatke senzora nakon svake 1 minute
if (kvačica> = 60) // objavljivati u temi svakih 5 sekundi {tick = 0; korisni teret char [PAYLOAD_MAX_LEN]; snprintf (korisni teret, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, napon); Serial.println (korisni teret); if (hornbill.publish (TOPIC_NAME, korisni teret) == 0) {Serial.print ("Objavi poruku:"); Serial.println (korisni teret); } else {Serial.println ("Objava nije uspjela"); }} vTaskDelay (1000 / portTICK_RATE_MS); označite ++;
Korak 7: Vizualizacija podataka u AWS -u
- Prijavite se na svoj AWS račun.
- u lijevom kutu alatne trake pronaći ćete karticu Usluge
- Kliknite na ovu karticu i pod naslovom Internet of Things odaberite IoT Core.
- Odaberite QoS i ne. poruka pretplatnicima. Unesite naziv teme.
Korak 8: Opći kod
Cjelokupni kod možete pronaći na ovom Github spremištu.
Zasluge
- Arduino Json
- Bežični senzori temperature i vlažnosti
- ESP32
- PubSubClient
Preporučeni:
Početak rada s bežičnim osjetnicima temperature i vibracija na daljinu: 7 koraka
Početak rada s bežičnim osjetnicima temperature i vibracija na daljinu: ponekad su vibracije uzrok ozbiljnih problema u mnogim aplikacijama. Od osovina strojeva i ležajeva do performansi tvrdog diska, vibracije uzrokuju oštećenje stroja, ranu zamjenu, niske performanse i nanose veliki udarac točnosti. Praćenje
Početak rada sa STM32f767zi Cube IDE i učitavanje prilagođene skice: 3 koraka
Početak rada sa STM32f767zi Cube IDE -om i učitajte svoju prilagođenu skicu: KUPITE (kliknite test za kupnju/posjet web stranici) STM32F767ZISUPPORTED SOFTVER · STM32CUBE IDE · KEIL MDK ARM µVISION · EARMAR IAR EMBEDDED WORKBENCH mogući su koristi se za programiranje STM mikrokontrolera
Početak rada sa sučeljem senzora I2C ?? - Povežite svoj MMA8451 pomoću ESP32: 8 koraka
Početak rada sa sučeljem senzora I2C ?? - Povežite svoj MMA8451 pomoću ESP32: U ovom ćete vodiču naučiti sve o tome kako pokrenuti, povezati i dobiti I2C uređaj (akcelerometar) koji radi s kontrolerom (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Početak rada s M5StickV AI + IOT kamerom: 6 koraka (sa slikama)
Početak rada s M5StickV AI + IOT kamerom: Kratak pregledM5StickV je sićušna AI + IOT kamera gotovo veličine promjera 2 kovanice, cijena je oko 27,00 USD, što bi se nekima moglo činiti skupim za tako malu kameru, ali ipak sadrži neke pristojne specifikacije. Kameru pokreće nevjerojatna
IoT analogni ulaz - početak rada s IoT -om: 8 koraka
IoT analogni ulaz - početak rada s IoT -om: Razumijevanje analognih ulaza ključni je dio razumijevanja načina na koji stvari oko nas funkcioniraju, većina, ako ne i svi senzori, su analogni senzori (ponekad se ti senzori pretvaraju u digitalne). Za razliku od digitalnih ulaza koji mogu biti samo uključeni ili isključeni, analogni ulaz