Sadržaj:
- Korak 1: Postavljanje AWS računa
- Korak 2: Specifikacije hardvera i softvera
- Korak 3: Bežični senzori za vibracije i temperaturu
- Korak 4: ESP32 AWS firmver
- Korak 5: Dobivanje podataka senzora s bežičnog senzora vibracije i temperature
- Korak 6: Povezivanje na AWS
- Korak 7: Vizualizacija podataka u AWS -u
- Korak 8: Opšti kod
Video: Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
U ranijim Instructables -ima prošli smo kroz različite cloud platforme poput Azure, Ubidots, ThingSpeak, Losant itd. Koristili smo MQTT protokol za slanje podataka senzora u oblak na gotovo svim oblačnim platformama. Više informacija o MQTT -u, njegovim prednostima i prednostima u odnosu na HTTP protokol možete pronaći u ovom uputstvu.
U ovom uputstvu ćemo zumirati 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 jezgro web razvoja dugi niz godina. Sa sve većim opsegom IoT aplikacija, AWS je došao do rješenja AWSIoT -a. AWSIoT je pouzdano rješenje za smještaj naših IoT aplikacija.
Prateći ovo uputstvo:
- Moći ćete postaviti AWS račun za svoju IoT aplikaciju
- Moći ćete spojiti ESP32 na AWS IoT jezgru
- Šaljite i primajte poruke koristeći MQTT i HTTP protokol
- Vizualizirajte poslane podatke u AWS -u
Korak 1: Postavljanje AWS računa
Postavljanje AWS računa je prilično jednostavno. Potrebno je samo učitati nekoliko certifikata, priložiti mu politike, registrirati uređaj i početi primati poruke sa podacima senzora u AWS.
Slijedite ovaj vodič za postavljanje AWS računa.
Korak 2: Specifikacije hardvera i softvera
Specifikacije softvera
AWS račun
Hardverske specifikacije
- ESP32
- Bežični senzor temperature i vibracije
- Zigmo Gateway prijemnik
Korak 3: Bežični senzori za vibracije i temperaturu
Ovo je industrijski IoT bežični senzor vibracija i temperature za velike domete, koji se može pohvaliti do 2 milje dometa koristeći bežičnu mrežnu arhitekturu. Uključujući 16-bitni senzor za vibracije i temperaturu, ovaj senzor prenosi visoko precizne podatke o vibracijama u intervalima koje definira korisnik. Ima sljedeće karakteristike:
- Industrijski troosni senzor vibracija stepena ± 32 g
- Izračunava RMS, MAX i MIN g vibracije
- Uklanjanje buke pomoću niskopropusnog filtera
- Frekvencijski raspon (Bandwidth) do 12, 800 Hz
- Brzina uzorkovanja do 25, 600Hz
- Šifrirana komunikacija s 2 milje bežičnog dometa
- Opseg radne temperature -40 do +85 ° C
- Zidno ili magnetno montirano kućište IP65 Primjer softvera za Visual Studio i LabVIEW
- Senzor vibracije s opcijom vanjske sonde
- Do 500 000 prijenosa sa 4 AA baterije Dostupno je mnogo opcija pristupnika i modema
Korak 4: ESP32 AWS firmver
Da biste se povezali na AWS i počeli slati podatke, prođite kroz sljedeće korake
- Preuzmite AWS biblioteku sa sljedećeg Github spremišta
- klonirajte repo i postavite datoteku AWS_IOT u fasciklu biblioteke u direktoriju Arduino
git clone
Idemo sada kroz kod:
- U ovoj aplikaciji smo koristili zaštitni portal za spremanje WiFi vjerodajnica i za kretanje kroz IP postavke. 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 ovome možete pronaći u ovom uputstvu.
Korak 5: Dobivanje podataka senzora s bežičnog senzora vibracije i temperature
Od bežičnih senzora temperature i vibracija dobivamo okvir od 54 bajta. Ovim okvirom se 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
- Serial
- Serial1
- Serial2
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.
#include
# definirati RXD2 16 # definirati TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pinovi 16 rx2, 17 tx2, 19200 bps, 8 bita bez pariteta 1 stop bit
Sljedeći koraci će vas odvesti dalje do stvarnih vrijednosti senzora
- Kreirajte 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 se sastoje 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, tip, verzija senzora će sadržavati 1 bajt podataka i može se dobiti s te adrese
if (Serial2.available ()) {Serial.println ("Read Serial"); data [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 (); kašnjenje (1); } if (data [15] == 0x7F) /////// da provjerite jesu li prijemni podaci tačni {if (data [22] == 0x08) //////// provjerite tip 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:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibracija na osi X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS vibracija na osi Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibracija na osi Z:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Minimalne vibracije na osi X:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Minimalne vibracije na osi Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Minimalne vibracije na osi Z:"); Serial.print (min_z); Serial.println ("mg");
Serial.print ("ADC vrijednost:");
Serial.println (baterija); Serial.print ("Napon baterije:"); Serial.print (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 (","); kašnjenje (1); }}}}
Korak 6: Povezivanje na AWS
- Uključite datoteke zaglavlja AWS_IOT.h, WiFi.h za postavljanje veze s AWSIoT čvorištem
- Unesite svoju adresu hosta, 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";
Kreirajte varijablu char za spremanje vašeg JSON -a, u ovom slučaju smo stvorili format za pohranu JSON -a
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" napon / ":%. 2f}";
Kreirajte 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); }
kašnjenje (2000);
}
objavite podatke senzora nakon svakih 1 minute
if (kvačica> = 60) // objavljivati u temi svakih 5 sekundi {tick = 0; char korisni teret [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 ("Objavljivanje nije uspjelo"); }} vTaskDelay (1000 / portTICK_RATE_MS); označiti ++;
Korak 7: Vizualizacija podataka u AWS -u
- Prijavite se na svoj AWS račun.
- u lijevom kutu trake s alatima pronaći ćete karticu Usluge
- Kliknite na ovu karticu i pod naslovom Internet stvari odaberite IoT Core.
- Odaberite QoS i ne. poruka pretplatnicima. Unesite naziv teme.
Korak 8: Opšti kod
Cjelokupni kod možete pronaći na ovom Github spremištu.
Krediti
- Arduino Json
- Bežični senzori temperature i vlažnosti
- ESP32
- PubSubClient
Preporučuje se:
Prvi koraci s bežičnim senzorima temperature i vibracije na daljinu: 7 koraka
Početak rada sa bežičnim senzorima temperature i vibracije 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 preciznosti. Praćenje
Prvi koraci sa flipboardom: 9 koraka
Početak rada s Flipboardom: Ovaj kratki vodič osmišljen je kako bi vam pomogao da započnete s mobilnom aplikacijom Flipboard. Ovo je samo uvodno jer postoji mnogo prilagodljivih funkcija Flipboard -a. Nakon što završite ovaj vodič, imat ćete osnovno znanje o Flipboardu
Prvi koraci 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 nekima moglo izgledati skupo za tako malu kameru, ali ipak sadrži neke pristojne specifikacije. Kameru pokreće nevjerovatna
Prvi koraci s Digisparkom Attiny85 pomoću Arduino IDE -a: 4 koraka
Početak rada s Digisparkom Attiny85 Korištenje Arduino IDE -a: Digispark je razvojna ploča zasnovana na Attiny85 mikrokontroleru slična Arduino liniji, samo jeftinija, manja i nešto manje moćna. Uz čitav niz štitova za proširenje njegove funkcionalnosti i mogućnosti korištenja poznatog Arduino ID -a
Prvi koraci s Amazon AWS IoT i ESP8266: 21 korak
Prvi koraci s Amazon AWS IoT i ESP8266: Ovaj projekt vam pokazuje kako uzeti ESP8266 modul i povezati ga direktno s AWS IOT koristeći Mongoose OS. Mongoose OS je otvoreni operativni sistem za mikrokontrolere koji naglašava povezivanje u oblaku. Razvila ga je Cesanta, Dublin