Sadržaj:

Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka
Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka

Video: Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka

Video: Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka
Video: Creating a Connected Mobile Workspace for Industry 4.0 2024, Decembar
Anonim
Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a
Prvi koraci s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a

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 hardvera i softvera
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

Bežični senzori za vibracije i temperaturu
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

Dobivanje podataka senzora s bežičnog senzora vibracije i temperature
Dobivanje podataka senzora s bežičnog senzora vibracije i temperature
Dobivanje podataka senzora s bežičnog senzora vibracije i temperature
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

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. 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

Povezivanje na AWS
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

Vizualizacija podataka u AWS -u
Vizualizacija podataka u AWS -u
Vizualizacija podataka u AWS -u
Vizualizacija podataka u AWS -u
Vizualizacija podataka u AWS -u
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: