Satura rādītājs:

Darba sākšana ar AWS IoT ar bezvadu temperatūras sensoru, izmantojot MQTT: 8 soļi
Darba sākšana ar AWS IoT ar bezvadu temperatūras sensoru, izmantojot MQTT: 8 soļi

Video: Darba sākšana ar AWS IoT ar bezvadu temperatūras sensoru, izmantojot MQTT: 8 soļi

Video: Darba sākšana ar AWS IoT ar bezvadu temperatūras sensoru, izmantojot MQTT: 8 soļi
Video: Торий: энергетическое решение - THORIUM REMIX 2011 2024, Novembris
Anonim
Darba sākšana ar AWS IoT ar bezvadu temperatūras sensoru, izmantojot MQTT
Darba sākšana ar AWS IoT ar bezvadu temperatūras sensoru, izmantojot MQTT

Iepriekšējā Instructables mēs esam izgājuši dažādas mākoņu platformas, piemēram, Azure, Ubidots, ThingSpeak, Losant uc Lai iegūtu papildinformāciju par MQTT, tā priekšrocībām un priekšrocībām salīdzinājumā ar HTTP protokolu, skatiet šo pamācību.

Šajā pamācībā mēs tuvināsimies vēl vienai un vispazīstamākajai mākoņu platformai Amazon Web Services. Daudzi no jums varētu būt pazīstami ar AWS jeb Amazon Web Services un AWS nodrošināto mākoņa funkcionalitāti. Tas ir bijis tīmekļa izstrādes kodols daudzus gadus. Pieaugot IoT lietojumprogrammu apjomam, AWS ir radījis AWSIoT risinājumu. AWSIoT ir uzticams risinājums mūsu IoT lietojumprogrammu mitināšanai.

Ievērojot šo pamācību:

  • Jūs varēsit iestatīt AWS kontu savai IoT lietojumprogrammai
  • Jūs varēsit savienot ESP32 ar AWS IoT kodolu
  • Sūtīt un saņemt ziņas, izmantojot MQTT un HTTP protokolu
  • Vizualizējiet nosūtītos datus AWS

1. darbība. AWS konta iestatīšana

AWS konta iestatīšana ir diezgan vienkārša. Jums vienkārši jāaugšupielādē pāris sertifikāti, jāpievieno tai politika, jāreģistrē ierīce un jāsāk saņemt sensoru datu ziņojumi AWS.

Lai iestatītu AWS kontu, izpildiet šo apmācību.

2. darbība. Aparatūras un programmatūras specifikācijas

Aparatūras un programmatūras specifikācijas
Aparatūras un programmatūras specifikācijas

Programmatūras specifikācija

AWS konts

Aparatūras specifikācija

  • ESP32
  • Bezvadu temperatūras un vibrācijas sensors
  • Zigmo Gateway uztvērējs

3. solis: bezvadu vibrācijas un temperatūras sensori

Bezvadu vibrācijas un temperatūras sensori
Bezvadu vibrācijas un temperatūras sensori

Šis ir liela attāluma industriālais IoT bezvadu vibrācijas un temperatūras sensors, kas var izmantot līdz 2 jūdžu diapazonu, izmantojot bezvadu tīkla tīkla arhitektūru. Ietverot 16 bitu vibrācijas un temperatūras sensoru, šis sensors pārraida ļoti precīzus vibrācijas datus lietotāja noteiktos intervālos. Tam ir šādas funkcijas:

  • Rūpnieciskās klases 3 asu vibrācijas sensors ar diapazonu ± 32 g
  • Aprēķina RMS, MAX un MIN g vibrācijas
  • Trokšņa noņemšana, izmantojot zemas caurlaidības filtru
  • Frekvenču diapazons (joslas platums) līdz 12 800 Hz
  • Parauga frekvence līdz 25, 600 Hz
  • Šifrēta komunikācija ar 2 jūdžu bezvadu diapazonu
  • Darba temperatūras diapazons -40 līdz +85 ° C
  • Pie sienas vai ar magnētu piestiprināts IP65 korpuss. Piemēra programmatūra Visual Studio un LabVIEW
  • Vibrācijas sensors ar ārējās zondes opciju
  • Līdz 500 000 transmisiju no 4 AA baterijām. Ir pieejamas daudzas vārtejas un modema iespējas

4. darbība: programmaparatūra ESP32 AWS

Lai izveidotu savienojumu ar AWS un sāktu datu sūtīšanu, veiciet tālāk norādītās darbības

  • Lejupielādējiet AWS bibliotēku no šīs Github krātuves
  • klonējiet repo un ievietojiet AWS_IOT failu Arduino direktorijas bibliotēkas mapē

git klons

Tagad apskatīsim kodu:

  • Šajā lietojumprogrammā mēs esam izmantojuši saistošu portālu, lai saglabātu WiFi akreditācijas datus un virzītu kursoru, izmantojot IP iestatījumus. Lai iegūtu detalizētu ievadu sagūstītajā portālā, varat izlasīt tālāk sniegtos norādījumus.
  • Fiksētais portāls dod mums iespēju izvēlēties starp statiskajiem un DHCP iestatījumiem. Vienkārši ievadiet akreditācijas datus, piemēram, statisko IP, apakštīkla masku, vārteju un bezvadu sensora vārteju, kas tiks konfigurēta šajā IP.
  • Tiek mitināta tīmekļa lapa, kurā ir saraksts ar pieejamajiem WiFi tīkliem un RSSI. Atlasiet WiFi tīklu un paroli un ievadiet Iesniegt. Akreditācijas dati tiks saglabāti EEPROM, un IP iestatījums tiks saglabāts SPIFFS. Vairāk par to var atrast šajā pamācībā.

5. darbība. Sensora datu iegūšana no bezvadu vibrācijas un temperatūras sensora

Sensora datu iegūšana no bezvadu vibrācijas un temperatūras sensora
Sensora datu iegūšana no bezvadu vibrācijas un temperatūras sensora
Sensora datu iegūšana no bezvadu vibrācijas un temperatūras sensora
Sensora datu iegūšana no bezvadu vibrācijas un temperatūras sensora

Mēs iegūstam 54 baitu rāmi no bezvadu temperatūras un vibrācijas sensoriem. Šis rāmis tiek manipulēts, lai iegūtu faktiskos temperatūras un vibrācijas datus.

ESP32 ir trīs seriālai lietošanai pieejamie UART

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. RX2 GPIO 16, TX2 GPIO 17

un 3 aparatūras sērijas porti

  • Seriāls
  • Sērija1
  • Sērija2

Vispirms inicializējiet aparatūras sērijas galvenes failu. Šeit mēs izmantosim RX2 un TX2 aka. GPIO 16 un GPIO 17 tapas no ESP32 plates, lai iegūtu sērijas datus.

#iekļaut

# define RXD2 16 # define TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // tapas 16 rx2, 17 tx2, 19200 bps, 8 biti bez paritātes 1 pieturas bits

Veicot tālāk norādītās darbības, jūs varēsit iegūt sensora reālās vērtības

  • Izveidojiet mainīgos, lai saglabātu temperatūru, mitrumu, akumulatoru un citas sensora vērtības
  • Iestatiet aparatūras sērijas Rx, tx tapu, pārraides ātrumu un paritātes bitus
  • Vispirms pārbaudiet, vai ir kaut kas lasāms, izmantojot Serial1.available ()
  • Mēs iegūsim 54 baitu rāmi.
  • Pārbaudiet, vai nav 0x7E, kas ir sākuma baits.
  • Vibrācijas datus veido RMS vērtība 3 asīm, min vērtības 3 asīm, maksimālās vērtības 3 asīm.
  • temperatūras un akumulatora vērtības saturēs 2 baitus datu
  • iegūt sensora nosaukumu, veidu, sensora versijā būs 1 baits datu, un to var iegūt no attiecīgās adreses

if (Serial2.available ()) {Serial.println ("Lasīt sēriju"); dati [0] = Serial2.read (); kavēšanās (k); ja (dati [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); par (i = 1; i <55; i ++) {data = Serial2.read (); kavēšanās (1); } ja (dati [15] == 0x7F) /////// lai pārbaudītu, vai recesīvie dati ir pareizi {if (dati [22] == 0x08) //////// pārliecinieties, vai sensora tips ir pareizs {rms_x = ((uint16_t) (((dati [24]) << 16) + ((dati [25]) << 8) + (dati [26]))/100); rms_y = ((uint16_t) (((dati [27]) << 16) + ((dati [28]) << 8) + (dati [29]))/100); rms_z = ((uint16_t) (((dati [30]) << 16) + ((dati [31]) << 8) + (dati [32]))/100); int16_t max_x = ((uint16_t) (((dati [33]) << 16) + ((dati [34]) << 8) + (dati [35]))/100); int16_t max_y = ((uint16_t) (((dati [36]) << 16) + ((dati [37]) << 8) + (dati [38])))/100); int16_t max_z = ((uint16_t) (((dati [39]) << 16) + ((dati [40]) << 8) + (dati [41]))/100);

int16_t min_x = ((uint16_t) (((dati [42]) << 16) + ((dati [43]) << 8) + (dati [44]))/100); int16_t min_y = ((uint16_t) (((dati [45]) << 16) + ((dati [46]) << 8) + (dati [47]))/100); int16_t min_z = ((uint16_t) (((dati [48]) << 16) + ((dati [49]) << 8) + (dati [50]))/100);

cTemp = ((((dati [51]) * 256) + dati [52])); pludiņa akumulators = ((dati [18] * 256) + dati [19]); spriegums = 0,00322 * akumulators; Serial.print ("Sensora numurs"); Serial.println (dati [16]); senseNumber = dati [16]; Serial.print ("Sensora tips"); Serial.println (dati [22]); Serial.print ("Programmaparatūras versija"); Serial.println (dati [17]); Serial.print ("Temperatūra pēc Celsija:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibrācija X-asī:"); Sērijas nospiedums (rms_x); Serial.println ("mg"); Serial.print ("RMS vibrācija Y asī:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibrācija Z asī:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Minimālā vibrācija X-asī:");

Sērijas nospiedums (min_x); Serial.println ("mg"); Serial.print ("Minimālā vibrācija Y asī:"); Sērijas nospiedums (min_y); Serial.println ("mg"); Serial.print ("Minimālā vibrācija Z asī:"); Sērijas nospiedums (min_z); Serial.println ("mg");

Serial.print ("ADC vērtība:");

Serial.println (akumulators); Serial.print ("Akumulatora spriegums:"); Sērijas nospiedums (spriegums); Serial.println ("\ n"); ja (spriegums <1) {Serial.println ("Laiks nomainīt akumulatoru"); }}} cits {par (i = 0; i <54; i ++) {Serial.print (dati ); Serial.print (","); kavēšanās (1); }}}}

6. darbība. Savienojuma izveide ar AWS

Notiek savienojuma izveide ar AWS
Notiek savienojuma izveide ar AWS
  • Iekļaujiet galvenes failus AWS_IOT.h, WiFi.h, lai izveidotu savienojumu ar AWSIoT centrmezglu
  • Ievadiet savu saimniekdatora adresi, klienta ID, kas būs politikas nosaukums, un tēmas nosaukumu, kas būs lietas nosaukums

// ********* AWS akreditācijas dati ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

Izveidojiet char mainīgo, lai saglabātu savu JSON, šajā gadījumā mēs esam izveidojuši JSON saglabāšanas formātu

const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" spriegums / ":%. 2f}";

Izveidojiet klases AWS_IOT instanci

AWS_IOT esp; // AWS_IOT klases gadījums

Tagad izveidojiet savienojumu ar AWSIoT centrmezglu, izmantojot šādu metodi

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Savienots ar AWS"); kavēšanās (1000);

ja (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Abonēt veiksmīgu"); } else {Serial.println ("Abonēšana neizdevās, pārbaudiet lietas nosaukumu un sertifikātus"); kamēr (1); }} else {Serial.println ("AWS savienojums neizdevās, pārbaudiet HOST adresi"); kamēr (1); }

kavēšanās (2000);

}

publicējiet sensora datus ik pēc 1 minūtes

if (tick> = 60) // publicēt tēmā ik pēc 5 sekundēm {tick = 0; ogļu lietderīgā krava [PAYLOAD_MAX_LEN]; snprintf (lietderīgā slodze, PAYLOAD_MAX_LEN, formāts, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, spriegums); Serial.println (lietderīgā slodze); if (hornbill.publish (TOPIC_NAME, lietderīgā slodze) == 0) {Serial.print ("Publicēt ziņojumu:"); Serial.println (lietderīgā slodze); } else {Serial.println ("Publicēšana neizdevās"); }} vTaskDelay (1000 / portsTICK_RATE_MS); atzīmējiet ++;

7. darbība: datu vizualizēšana AWS

Datu vizualizēšana AWS
Datu vizualizēšana AWS
Datu vizualizēšana AWS
Datu vizualizēšana AWS
Datu vizualizācija AWS
Datu vizualizācija AWS
  • Piesakieties savā AWS kontā.
  • rīkjoslas kreisajā stūrī atradīsit cilni Pakalpojumi
  • Noklikšķiniet uz šīs cilnes un zem virsraksta Lietu internets izvēlieties IoT Core.
  • Atlasiet QoS un nē. ziņu abonentiem. Ievadiet tēmas nosaukumu.

8. solis: vispārējais kods

Kopējo kodu varat atrast šajā Github krātuvē.

Kredīti

  • Arduino Json
  • Bezvadu temperatūras un mitruma sensori
  • ESP32
  • PubSubClient

Ieteicams: