Obsah:

Začíname s AWS IoT s bezdrôtovým snímačom teploty pomocou MQTT: 8 krokov
Začíname s AWS IoT s bezdrôtovým snímačom teploty pomocou MQTT: 8 krokov

Video: Začíname s AWS IoT s bezdrôtovým snímačom teploty pomocou MQTT: 8 krokov

Video: Začíname s AWS IoT s bezdrôtovým snímačom teploty pomocou MQTT: 8 krokov
Video: AWS IoT Analytics - How It Works 2024, Júl
Anonim
Začíname s AWS IoT s bezdrôtovým snímačom teploty pomocou MQTT
Začíname s AWS IoT s bezdrôtovým snímačom teploty pomocou MQTT

V predchádzajúcich pokynoch sme prešli rôznymi cloudovými platformami, ako sú Azure, Ubidots, ThingSpeak, Losant atď. Na odosielanie údajov senzorov do cloudu používame takmer na všetkých cloudových platformách protokol MQTT. Viac informácií o MQTT, jeho výhodách a výhodách oproti protokolu HTTP nájdete v tomto návode.

V tomto návode sa zameriame na ďalšiu a najznámejšiu cloudovú platformu Amazon Web Services. Mnoho z vás možno pozná AWS alias Amazon Web Services a cloudové funkcie poskytované AWS. Je to jadro vývoja webu už mnoho rokov. S rastúcim rozsahom aplikácií IoT prichádza AWS s riešením AWSIoT. AWSIoT je spoľahlivé riešenie na hosťovanie našich aplikácií internetu vecí.

Podľa týchto pokynov:

  • Budete si môcť nastaviť účet AWS pre svoju aplikáciu IoT
  • Budete môcť pripojiť jadro ESP32 k AWS IoT
  • Odosielajte a prijímajte správy pomocou protokolu MQTT a
  • Vizualizujte odoslané údaje v AWS

Krok 1: Nastavenie účtu AWS

Nastavenie účtu AWS je pomerne jednoduché. Stačí nahrať niekoľko certifikátov, pripojiť k nim zásady, zaregistrovať zariadenie a začať prijímať správy o dátach senzora v AWS.

Ak si chcete vytvoriť účet AWS, postupujte podľa tohto návodu.

Krok 2: Špecifikácia hardvéru a softvéru

Špecifikácia hardvéru a softvéru
Špecifikácia hardvéru a softvéru

Špecifikácia softvéru

Účet AWS

Špecifikácia hardvéru

  • ESP32
  • Bezdrôtový snímač teploty a vibrácií
  • Prijímač brány Zigmo

Krok 3: Bezdrôtové snímače vibrácií a teploty

Bezdrôtové snímače vibrácií a teploty
Bezdrôtové snímače vibrácií a teploty

Jedná sa o bezdrôtový snímač vibrácií a teploty IoT s dlhým dosahom, ktorý sa môže pochváliť dosahom až 2 míle pomocou bezdrôtovej sieťovej architektúry. Tento 16-bitový snímač vibrácií a teploty prenáša veľmi presné údaje o vibráciách v intervaloch definovaných užívateľom. Má nasledujúce vlastnosti:

  • Priemyselný 3-osý snímač vibrácií s rozsahom ± 32 g
  • Vypočítava RMS, MAX a MIN g vibrácií
  • Odstránenie šumu pomocou dolnopriepustného filtra
  • Frekvenčný rozsah (šírka pásma) až 12 800 Hz
  • Vzorkovacia frekvencia až 25 600 Hz
  • Šifrovaná komunikácia s bezdrôtovým dosahom 2 míle
  • Rozsah prevádzkových teplôt -40 až +85 ° C
  • Nástenná alebo magnetická skrinka s krytím IP65. Príklad softvéru pre Visual Studio a LabVIEW
  • Senzor vibrácií s možnosťou externej sondy
  • Až 500 000 prenosov zo 4 batérií AA K dispozícii je veľa možností brány a modemu

Krok 4: Firmvér ESP32 AWS

Ak sa chcete pripojiť k AWS a začať odosielať údaje, vykonajte nasledujúce kroky

  • Stiahnite si knižnicu AWS z nasledujúceho úložiska Github
  • naklonujte repo a umiestnite súbor AWS_IOT do priečinka knižnice v adresári Arduino

git klon

Teraz si prejdeme kód:

  • V tejto aplikácii sme využili portál na prihlásenie do siete na uloženie poverení WiFi a na prechod cez nastavenia IP. Podrobný úvod do portálu na zajatie nájdete v nasledujúcom návode.
  • Portál pre vlastnú potrebu nám dáva možnosť vybrať si medzi statickým a DHCP nastavením. Stačí zadať prihlasovacie údaje, ako sú statická adresa IP, maska podsiete, brána a bezdrôtová senzorová brána sa na tejto adrese IP nakonfigurujú.
  • Je hostiteľom webovej stránky so zoznamom dostupných sietí WiFi a RSSI. Vyberte sieť WiFi a heslo a zadajte príkaz na odoslanie. Poverenia sa uložia do EEPROM a nastavenie IP sa uloží do SPIFFS. Viac o tom nájdete v tomto návode.

Krok 5: Získanie údajov zo senzora z bezdrôtového senzora vibrácií a teploty

Získanie údajov zo senzora z bezdrôtového senzora vibrácií a teploty
Získanie údajov zo senzora z bezdrôtového senzora vibrácií a teploty
Získanie údajov zo senzora z bezdrôtového senzora vibrácií a teploty
Získanie údajov zo senzora z bezdrôtového senzora vibrácií a teploty

Z bezdrôtových snímačov teploty a vibrácií získavame 54-bajtový rámec. S týmto rámcom sa manipuluje, aby sa získali údaje o skutočnej teplote a vibráciách.

ESP32 má na sériové použitie k dispozícii tri UART

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

a 3 hardvérové sériové porty

  • Sériové
  • Sériové1
  • Sériové 2

Najprv inicializujte hlavičkový súbor hardvéru. Tu budeme používať RX2 a TX2 aka. Piny GPIO 16 a GPIO 17 dosky ESP32 na získanie sériových údajov.

#zahrnúť

# definujte RXD2 16 # definujte TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // piny 16 rx2, 17 tx2, 19200 bps, 8 bitov bez parity 1 stop bit

Nasledujúce kroky vás zavedú ďalej k získaniu skutočných hodnôt senzorov

  • Vytvorte premenné na ukladanie hodnôt teploty, vlhkosti, batérie a ďalších senzorov
  • Pre hardvérový seriál nastavte bity Rx, tx, prenosovú rýchlosť a paritu
  • Najprv skontrolujte, či je možné niečo prečítať pomocou Serial1.available ()
  • Získame rámec 54 bajtov.
  • Skontrolujte 0x7E, čo je počiatočný bajt.
  • Údaje o vibráciách pozostávajú z hodnoty RMS pre 3 osi, minimálnych hodnôt pre 3 osi, maximálnych hodnôt pre 3 osi.
  • hodnoty teploty a batérie budú obsahovať 2 bajty údajov
  • Získajte názov senzora, typ, verzia senzora bude obsahovať 1 bajt údajov a je možné ho získať z príslušnej adresy

if (Serial2.available ()) {Serial.println ("Read Serial"); údaje [0] = Serial2.read (); oneskorenie (k); if (data [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); pre (i = 1; i <55; i ++) {údaje = Serial2.read (); oneskorenie (1); } if (data [15] == 0x7F) /////// a skontroluje správnosť prijatých údajov {if (data [22] == 0x08) //////// uistite sa, že je typ snímača je správne {rms_x = ((uint16_t) (((údaje [24]) << 16) + ((údaje [25]) << 8) + (údaje [26]))/100); rms_y = ((uint16_t) ((((údaje [27]) << 16) + ((údaje [28]) << 8) + (údaje [29]))/100); rms_z = ((uint16_t) (((údaje [30]) << 16) + ((údaje [31]) << 8) + (údaje [32]))/100); int16_t max_x = ((uint16_t) (((údaje [33]) << 16) + ((údaje [34]) << 8) + (údaje [35]))/100); int16_t max_y = ((uint16_t) (((údaje [36]) << 16) + ((údaje [37]) << 8) + (údaje [38]))/100); int16_t max_z = ((uint16_t) (((údaje [39]) << 16) + ((údaje [40]) << 8) + (údaje [41]))/100);

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

cTemp = ((((údaje [51]) * 256) + údaje [52])); plávajúca batéria = ((údaje [18] * 256) + údaje [19]); napätie = 0,00322 * batéria; Serial.print („číslo senzora“); Serial.println (údaje [16]); senseNumber = údaje [16]; Serial.print ("Typ snímača"); Serial.println (údaje [22]); Serial.print („Verzia firmvéru“); Serial.println (údaje [17]); Serial.print ("Teplota v stupňoch Celzia:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibrácie v osi X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS vibrácie v osi Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibrácie v osi Z:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Minimálne vibrácie v osi X:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Minimálne vibrácie v osi Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Minimálne vibrácie v osi Z:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("hodnota ADC:");

Serial.println (batéria); Serial.print ("Napätie batérie:"); Serial.print (napätie); Serial.println ("\ n"); if (napätie <1) {Serial.println ("Čas na výmenu batérie"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); oneskorenie (1); }}}}

Krok 6: Pripojenie k AWS

Pripojenie k AWS
Pripojenie k AWS
  • Zahrňte hlavičkové súbory AWS_IOT.h, WiFi.h na nastavenie pripojenia k rozbočovaču AWSIoT
  • Zadajte svoju hostiteľskú adresu, ID klienta, ktorý bude predstavovať názov politiky, a názov témy, ktorý bude zodpovedať názvu veci

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

Vytvorte premennú char na uloženie svojho JSONU, v tomto prípade sme vytvorili formát na ukladanie JSON

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

Vytvorte inštanciu triedy AWS_IOT

AWS_IOT esp; // Inštancia triedy AWS_IOT

Teraz sa pripojte k rozbočovaču AWSIoT pomocou nasledujúcej metódy

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Connected to AWS"); oneskorenie (1000);

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

{Serial.println ("Úspešné prihlásenie na odber"); } else {Serial.println („Predplatné zlyhalo, skontrolujte vecný názov a certifikáty“); pričom (1); }} else {Serial.println ("Pripojenie AWS zlyhalo, skontrolujte adresu HOST"); pričom (1); }

oneskorenie (2000);

}

zverejnite údaje senzora po 1 minúte

if (tick> = 60) // publikovať k téme každých 5 sekúnd {tick = 0; užitočné zaťaženie znakov [PAYLOAD_MAX_LEN]; snprintf (užitočné zaťaženie, PAYLOAD_MAX_LEN, formát, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, napätie); Serial.println (užitočné zaťaženie); if (hornbill.publish (TOPIC_NAME, užitočné zaťaženie) == 0) {Serial.print ("Publikovať správu:"); Serial.println (užitočné zaťaženie); } else {Serial.println ("Publikovanie zlyhalo"); }} vTaskDelay (1000 / portTICK_RATE_MS); zaškrtnúť ++;

Krok 7: Vizualizácia údajov v AWS

Vizualizácia údajov v AWS
Vizualizácia údajov v AWS
Vizualizácia údajov v AWS
Vizualizácia údajov v AWS
Vizualizácia údajov v AWS
Vizualizácia údajov v AWS
  • Prihláste sa do svojho účtu AWS.
  • v ľavom rohu panela s nástrojmi nájdete kartu Služby
  • Kliknite na túto kartu a v časti Internet vecí vyberte IoT Core.
  • Vyberte QoS a č. správ pre predplatiteľov. Zadajte názov témy.

Krok 8: Celkový kód

Celkový kód nájdete v tomto úložisku Github.

Kredity

  • Arduino Json
  • Bezdrôtové snímače teploty a vlhkosti
  • ESP32
  • PubSubClient

Odporúča: