Obsah:

Začínáme s AWS IoT s bezdrátovým snímačem teploty pomocí MQTT: 8 kroků
Začínáme s AWS IoT s bezdrátovým snímačem teploty pomocí MQTT: 8 kroků

Video: Začínáme s AWS IoT s bezdrátovým snímačem teploty pomocí MQTT: 8 kroků

Video: Začínáme s AWS IoT s bezdrátovým snímačem teploty pomocí MQTT: 8 kroků
Video: Arduino návody | Vývojový kit M5stack Faces s ESP32 2024, Červenec
Anonim
Začínáme s AWS IoT s bezdrátovým snímačem teploty pomocí MQTT
Začínáme s AWS IoT s bezdrátovým snímačem teploty pomocí MQTT

V dřívějších Instructables jsme prošli různými cloudovými platformami, jako jsou Azure, Ubidots, ThingSpeak, Losant atd. Pro odesílání dat senzorů do cloudu používáme téměř na celé cloudové platformě protokol MQTT. Další informace o MQTT, jeho výhodách a výhodách oproti protokolu HTTP naleznete v tomto pokynu.

V tomto pokynu přiblížíme ještě další a nejznámější cloudovou platformu Amazon Web Services. Mnoho z vás možná zná AWS alias Amazon Web Services a cloudové funkce poskytované AWS. Je to již mnoho let jádro webového vývoje. S rostoucím rozsahem aplikací IoT přichází AWS s řešením AWSIoT. AWSIoT je spolehlivé řešení pro hostování našich aplikací IoT.

Dodržováním tohoto pokynu:

  • Pro svou aplikaci IoT budete moci nastavit účet AWS
  • Budete moci připojit jádro ESP32 k AWS IoT
  • Odesílejte a přijímejte zprávy pomocí protokolu MQTT a
  • Vizualizujte odeslaná data v AWS

Krok 1: Nastavení účtu AWS

Nastavení účtu AWS je poměrně snadné. Stačí nahrát několik certifikátů, připojit k nim zásady, zaregistrovat zařízení a začít přijímat zprávy o senzorech v AWS.

Chcete -li nastavit účet AWS, postupujte podle tohoto tutoriálu.

Krok 2: Specifikace hardwaru a softwaru

Specifikace hardwaru a softwaru
Specifikace hardwaru a softwaru

Specifikace softwaru

Účet AWS

Specifikace hardwaru

  • ESP32
  • Bezdrátový snímač teploty a vibrací
  • Přijímač brány Zigmo

Krok 3: Bezdrátové snímače vibrací a teploty

Bezdrátové snímače vibrací a teploty
Bezdrátové snímače vibrací a teploty

Jedná se o bezdrátový snímač vibrací a teploty IoT s dlouhým dosahem, který se může pochlubit dosahem až 2 míle pomocí bezdrátové síťové architektury. Tento 16bitový snímač vibrací a teploty přenáší vysoce přesná data o vibracích v uživatelem definovaných intervalech. Má následující funkce:

  • Průmyslový tříosý snímač vibrací s rozsahem ± 32 g
  • Vypočítává RMS, MAX a MIN g vibrací
  • Odstranění šumu pomocí dolního filtru
  • Frekvenční rozsah (šířka pásma) až 12 800 Hz
  • Vzorkovací frekvence až 25 600 Hz
  • Šifrovaná komunikace s bezdrátovým dosahem 2 míle
  • Rozsah provozních teplot -40 až +85 ° C
  • Nástěnná nebo magnetická skříň s krytím IP65 Příklad softwaru pro Visual Studio a LabVIEW
  • Senzor vibrací s možností externí sondy
  • Až 500 000 přenosů ze 4 baterií AA K dispozici je mnoho možností brány a modemu

Krok 4: Firmware ESP32 AWS

Chcete -li se připojit k AWS a začít odesílat data, proveďte následující kroky

  • Stáhněte si knihovnu AWS z následujícího úložiště Github
  • naklonujte repo a umístěte soubor AWS_IOT do složky knihovny v adresáři Arduino

klon git

Nyní si projdeme kód:

  • V této aplikaci jsme využili portál pro zajetí k uložení přihlašovacích údajů WiFi a k přechodu přes nastavení IP. Podrobný úvod do portálu pro zajetí můžete projít následujícím návodem.
  • Portál pro zajetí nám dává možnost vybrat si mezi statickým a DHCP nastavením. Stačí zadat přihlašovací údaje, jako je statická IP, maska podsítě, brána a bezdrátová senzorová brána se na této IP nakonfigurují.
  • Hostuje se webová stránka se seznamem dostupných WiFi sítí a RSSI. Vyberte síť WiFi a heslo a zadejte odeslat. Pověření budou uložena do EEPROM a nastavení IP bude uloženo do SPIFFS. Více o tom najdete v tomto návodu.

Krok 5: Získání dat senzoru z bezdrátového senzoru vibrací a teploty

Získání dat senzoru z bezdrátového senzoru vibrací a teploty
Získání dat senzoru z bezdrátového senzoru vibrací a teploty
Získání dat senzoru z bezdrátového senzoru vibrací a teploty
Získání dat senzoru z bezdrátového senzoru vibrací a teploty

Získáváme 54bajtový rámec z bezdrátových snímačů teploty a vibrací. Tento rámec je upraven tak, aby získal aktuální teplotu a údaje o vibracích.

ESP32 má pro sériové použití k dispozici tři UART

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

a 3 hardwarové sériové porty

  • Seriál
  • Sériové 1
  • Sériové 2

Nejprve inicializujte hlavičkový soubor Hardware Serial. Zde budeme používat RX2 a TX2 aka. GPIO 16 a GPIO 17 piny desky ESP32 pro získání sériových dat.

#zahrnout

# definovat RXD2 16 # definovat TXD2 17

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

Následující kroky vás dále dovedou k získání skutečných hodnot senzorů

  • Vytvářejte proměnné pro ukládání hodnot teploty, vlhkosti, baterie a dalších senzorů
  • Pro hardwarový seriál nastavte bity Rx, tx, přenosovou rychlost a paritu
  • Nejprve zkontrolujte, zda je možné něco přečíst pomocí Serial1.available ()
  • Dostaneme rám 54 bajtů.
  • Zkontrolujte 0x7E, což je počáteční bajt.
  • Údaje o vibracích se skládají z hodnoty RMS pro 3 osy, minimální hodnoty pro 3 osy, maximální hodnoty pro 3 osy.
  • hodnoty teploty a baterie budou obsahovat 2 bajty dat
  • získejte název senzoru, typ, verze senzoru bude obsahovat 1 byte dat a lze jej získat z příslušné adresy

if (Serial2.available ()) {Serial.println ("Read Serial"); data [0] = Serial2.read (); zpoždění (k); if (data [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); pro (i = 1; i <55; i ++) {data = Serial2.read (); zpoždění (1); } if (data [15] == 0x7F) /////// pro kontrolu správnosti přijímaných dat {if (data [22] == 0x08) //////// zkontrolujte typ senzoru je správné {rms_x = ((uint16_t) (((data [24]) << 16) + ((data [25]) << 8) + (data [26]))/100); rms_y = ((uint16_t) (((data [27]) << 16) + ((data [28]) << 8) + (data [29]))/100); rms_z = ((uint16_t) (((data [30]) << 16) + ((data [31]) << 8) + (data [32]))/100); int16_t max_x = ((uint16_t) (((data [33]) << 16) + ((data [34]) << 8) + (data [35]))/100); int16_t max_y = ((uint16_t) (((data [36]) << 16) + ((data [37]) << 8) + (data [38]))/100); int16_t max_z = ((uint16_t) (((data [39]) << 16) + ((data [40]) << 8) + (data [41]))/100);

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

cTemp = ((((data [51]) * 256) + data [52])); float baterie = ((data [18] * 256) + data [19]); napětí = 0,00322 * baterie; Serial.print („číslo senzoru“); Serial.println (data [16]); senseNumber = data [16]; Serial.print („Typ senzoru“); Serial.println (data [22]); Serial.print („Verze firmwaru“); Serial.println (data [17]); Serial.print ("Teplota ve stupních Celsia:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibrace v ose X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS vibrace v ose Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibrace v ose Z:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Minimální vibrace v ose X:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Minimální vibrace v ose Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Minimální vibrace v ose Z:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("hodnota ADC:");

Serial.println (baterie); Serial.print ("Napětí baterie:"); Serial.print (napětí); Serial.println ("\ n"); if (napětí <1) {Serial.println ("Čas na výměnu baterie"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); zpoždění (1); }}}}

Krok 6: Připojení k AWS

Připojení k AWS
Připojení k AWS
  • Zahrňte soubory záhlaví AWS_IOT.h, WiFi.h pro nastavení připojení k rozbočovači AWSIoT
  • Zadejte svou hostitelskou adresu, ID klienta, což bude název zásady, a název tématu, který bude název věci

// ********* Pověření AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

Vytvořte proměnnou char pro uložení vašeho JSON, v tomto případě jsme vytvořili formát pro ukládání JSON

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

Vytvořte instanci třídy AWS_IOT

AWS_IOT esp; // Instance třídy AWS_IOT

Nyní se připojte k rozbočovači AWSIoT pomocí následující metody

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Connected to AWS"); zpoždění (1000);

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

{Serial.println ("Úspěšné přihlášení k odběru"); } else {Serial.println ("Přihlášení se nezdařilo, zkontrolujte název věci a certifikáty"); zatímco (1); }} else {Serial.println ("Připojení AWS se nezdařilo, zkontrolujte adresu HOST"); zatímco (1); }

zpoždění (2000);

}

publikovat data ze senzoru po každé 1 minutě

if (tick> = 60) // publikovat na téma každých 5 sekund {tick = 0; užitečné zatížení char [PAYLOAD_MAX_LEN]; snprintf (užitečné zatížení, PAYLOAD_MAX_LEN, formát, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, napětí); Serial.println (užitečné zatížení); if (hornbill.publish (TOPIC_NAME, užitečné zatížení) == 0) {Serial.print ("Publikovat zprávu:"); Serial.println (užitečné zatížení); } else {Serial.println ("Publikování se nezdařilo"); }} vTaskDelay (1000 / portTICK_RATE_MS); zaškrtněte ++;

Krok 7: Vizualizace dat v AWS

Vizualizace dat v AWS
Vizualizace dat v AWS
Vizualizace dat v AWS
Vizualizace dat v AWS
Vizualizace dat v AWS
Vizualizace dat v AWS
  • Přihlaste se ke svému účtu AWS.
  • v levém rohu panelu nástrojů najdete kartu Služby
  • Klikněte na tuto kartu a v části Internet věcí vyberte IoT Core.
  • Vyberte QoS a č. zpráv pro předplatitele. Zadejte název tématu.

Krok 8: Celkový kód

Celkový kód najdete v tomto úložišti Github.

Kredity

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

Doporučuje: