Sadržaj:

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

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

Video: Početak rada s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka
Video: Начало работы с Amazon AWS IoT Core с использованием ESP32 || Создание вещей, политик и сертификатов 2024, Studeni
Anonim
Početak rada s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a
Početak rada s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a

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

Bežični osjetnici vibracija i temperature
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

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

  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

  • 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

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

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 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: