Sisällysluettelo:

AWS IoT: n käytön aloittaminen langattomalla lämpötila -anturilla MQTT: n avulla: 8 vaihetta
AWS IoT: n käytön aloittaminen langattomalla lämpötila -anturilla MQTT: n avulla: 8 vaihetta

Video: AWS IoT: n käytön aloittaminen langattomalla lämpötila -anturilla MQTT: n avulla: 8 vaihetta

Video: AWS IoT: n käytön aloittaminen langattomalla lämpötila -anturilla MQTT: n avulla: 8 vaihetta
Video: On aika viedä asianhallinta pilveen! – Dynasty 10 pilviratkaisuna 2024, Marraskuu
Anonim
AWS IoT: n käytön aloittaminen langattomalla lämpötila -anturilla MQTT: n avulla
AWS IoT: n käytön aloittaminen langattomalla lämpötila -anturilla MQTT: n avulla

Aikaisemmissa Instructables -ohjelmissa olemme käyneet läpi erilaisia pilvialustoja, kuten Azure, Ubidots, ThingSpeak, Losant jne. Olemme käyttäneet MQTT -protokollaa anturitietojen lähettämiseen pilveen lähes kaikilla pilvialustoilla. Lisätietoja MQTT: stä, sen eduista ja eduista verrattuna HTTP -protokollaan voit lukea tästä ohjeesta.

Tässä ohjeessa lähentämme vielä toiseen ja tuttuun pilvialustaan Amazon Web Services. Monet teistä saattavat tuntea AWS: n eli Amazon Web Servicesin ja AWS: n tarjoaman pilvitoiminnon. Se on ollut web -kehityksen ydin monien vuosien ajan. IoT -sovellusten laajentuessa AWS on keksinyt AWSIoT -ratkaisun. AWSIoT on luotettava ratkaisu IoT -sovellusten isännöintiin.

Seuraamalla tätä ohjeistusta:

  • Voit määrittää AWS -tilin IoT -sovelluksellesi
  • Voit liittää ESP32: n AWS IoT -ytimeen
  • Lähetä ja vastaanota viestejä MQTT- ja HTTP -protokollaa käyttäen
  • Visualisoi lähetetyt tiedot AWS: ssä

Vaihe 1: AWS -tilin määrittäminen

AWS -tilin luominen on melko helppoa. Sinun tarvitsee vain ladata pari varmennetta, liittää siihen käytännöt, rekisteröidä laite ja alkaa vastaanottaa anturitietoviestejä AWS: ssä.

Määritä AWS -tili noudattamalla tätä opetusohjelmaa.

Vaihe 2: Laitteisto- ja ohjelmistomääritykset

Laitteiston ja ohjelmiston tekniset tiedot
Laitteiston ja ohjelmiston tekniset tiedot

Ohjelmiston tiedot

AWS -tili

Laitteiston tekniset tiedot

  • ESP32
  • Langaton lämpötila- ja tärinäanturi
  • Zigmo Gateway -vastaanotin

Vaihe 3: Langattomat tärinä- ja lämpötila -anturit

Langattomat tärinä- ja lämpötila -anturit
Langattomat tärinä- ja lämpötila -anturit

Tämä on pitkän kantaman teollinen IoT -langaton värähtely- ja lämpötila -anturi, joka tarjoaa jopa 2 mailin kantaman käyttämällä langattoman verkon verkkoarkkitehtuuria. Sisältää 16-bittisen tärinä- ja lämpötila-anturin, tämä anturi lähettää erittäin tarkkoja tärinätietoja käyttäjän määrittämin väliajoin. Siinä on seuraavat ominaisuudet:

  • Teollisuusluokan 3-akselinen tärinäanturi ± 32 g: n alueella
  • Laskee RMS-, MAX- ja MIN g -värähtelyn
  • Kohinanpoisto alipäästösuodattimella
  • Taajuusalue (kaistanleveys) jopa 12 800 Hz
  • Näytteenottotaajuus jopa 25 600 Hz
  • Salattu tiedonsiirto 2 mailin langattomalla kantamalla
  • Käyttölämpötila -alue -40 … +85 ° C
  • Seinä- tai magneetti-IP65-luokiteltu kotelo Esimerkki Visual Studiota ja LabVIEW-ohjelmistoa varten
  • Tärinätunnistin ja ulkoinen anturi
  • Jopa 500 000 vaihteistoa 4 AA -paristosta Saatavilla monia yhdyskäytävän ja modeemin vaihtoehtoja

Vaihe 4: ESP32 AWS -laiteohjelmisto

Voit muodostaa yhteyden AWS: ään ja aloittaa tietojen lähettämisen seuraavasti

  • Lataa AWS -kirjasto seuraavasta Github -arkistosta
  • kloonaa repo ja aseta AWS_IOT -tiedosto Arduino -hakemiston kirjastokansioon

git-klooni

Käydään nyt koodi läpi:

  • Tässä sovelluksessa olemme käyttäneet kaappaajaportaalia WiFi -kirjautumistietojen tallentamiseen ja osoittimen siirtämiseen IP -asetusten kautta. Jos haluat yksityiskohtaisen johdannon vankeusportaalissa, voit käydä läpi seuraavan ohjeen.
  • Vankeusportaali antaa meille mahdollisuuden valita staattisten ja DHCP -asetusten välillä. Kirjoita vain tunnistetiedot, kuten staattinen IP, aliverkon peite, yhdyskäytävä ja langaton anturiväylä määritetään kyseiselle IP -osoitteelle.
  • Verkkosivua isännöidään, jossa on luettelo käytettävissä olevista WiFi -verkoista ja RSSI. Valitse WiFi -verkko ja salasana ja kirjoita Lähetä. Kirjautumistiedot tallennetaan EEPROMiin ja IP -asetus SPIFFS -tiedostoon. Lisätietoja tästä oppaasta.

Vaihe 5: Anturitietojen saaminen langattomasta tärinä- ja lämpötila -anturista

Anturitietojen saaminen langattomasta tärinä- ja lämpötila -anturista
Anturitietojen saaminen langattomasta tärinä- ja lämpötila -anturista
Anturitietojen saaminen langattomasta tärinä- ja lämpötila -anturista
Anturitietojen saaminen langattomasta tärinä- ja lämpötila -anturista

Saamme 54 tavun kehyksen langattomilta lämpötila- ja tärinäantureilta. Tätä kehystä käsitellään todellisen lämpötilan ja tärinätietojen saamiseksi.

ESP32: ssa on kolme UART -laitetta sarjakäyttöön

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

ja 3 laitteiston sarjaporttia

  • Sarja
  • Sarja 1
  • Sarja2

Alusta ensin laitteistosarjan otsikkotiedosto. Täällä käytämme RX2 ja TX2 alias. ESP32 -kortin GPIO 16- ja GPIO 17 -nastat sarjatietojen saamiseksi.

#sisältää

# define RXD2 16 # define TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // nastat 16 rx2, 17 tx2, 19200 bps, 8 bittiä ei pariteettia 1 stopbit

Seuraavat vaiheet auttavat sinua saamaan todelliset anturin arvot

  • Luo muuttujia lämpötilan, kosteuden, akun ja muiden anturien arvojen tallentamiseen
  • Aseta laitteistosarjan Rx-, tx -nasta-, baudinopeus- ja pariteettibitit
  • Tarkista ensin, että on jotain luettavaa Serial1.available ()
  • Saamme kehyksen 54 tavua.
  • Tarkista 0x7E, joka on tavu.
  • Tärinätiedot koostuvat RMS -arvosta 3 -akselille, miniarvosta 3 -akselista ja max -arvosta 3 -akselista.
  • lämpötila- ja akkuarvot sisältävät 2 tavua dataa
  • Hae anturin nimi, tyyppi, anturiversio sisältää 1 tavun dataa ja sen voi hakea sieltä vastaavasta osoitteesta

if (Serial2.available ()) {Serial.println ("Lue sarja"); data [0] = Sarja2.luku (); viive (k); if (data [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); viive (1); } if (data [15] == 0x7F) /////// tarkistaaksesi, että recive -tiedot ovat oikein {if (data [22] == 0x08) //////// varmista, että anturin tyyppi on oikein {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])); kelluva akku = ((data [18] * 256) + data [19]); jännite = 0,00322 * akku; Serial.print ("Anturin numero"); Serial.println (tiedot [16]); senseNumber = data [16]; Serial.print ("Anturityyppi"); Serial.println (tiedot [22]); Serial.print ("Laiteohjelmistoversio"); Serial.println (tiedot [17]); Serial.print ("Lämpötila celsiusasteina:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS-tärinä X-akselilla:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS-tärinä Y-akselilla:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS-tärinä Z-akselilla:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Min. Tärinä X-akselilla:");

Sarjanjälki (min_x); Serial.println ("mg"); Serial.print ("Min. Tärinä Y-akselilla:"); Sarjanjälki (min_y); Serial.println ("mg"); Serial.print ("Min. Tärinä Z-akselilla:"); Sarjanjälki (min_z); Serial.println ("mg");

Serial.print ("ADC -arvo:");

Serial.println (akku); Serial.print ("Akun jännite:"); Sarjajälki (jännite); Serial.println ("\ n"); if (jännite <1) {Serial.println ("Aika vaihtaa akku"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); viive (1); }}}}

Vaihe 6: Yhdistäminen AWS: ään

Yhdistetään AWS: ään
Yhdistetään AWS: ään
  • Sisällytä AWS_IOT.h-, WiFi.h -otsikkotiedostot muodostaaksesi yhteyden AWSIoT -keskittimeen
  • Anna isäntäosoitteesi, asiakastunnuksesi, joka on käytännön nimi, ja aiheen nimi, josta tulee tavaran nimi

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

Luo char -muuttuja JSONin tallentamiseen, tässä tapauksessa olemme luoneet muodon JSON: n tallentamiseksi

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

Luo AWS_IOT -luokan ilmentymä

AWS_IOT esp; // AWS_IOT -luokan esiintymä

Muodosta nyt yhteys AWSIoT -keskittimeen seuraavalla tavalla

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

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

{Serial.println ("Tilaus onnistui"); } else {Serial.println ("Tilaus epäonnistui, tarkista asian nimi ja varmenteet"); kun taas (1); }} else {Serial.println ("AWS -yhteys epäonnistui, tarkista HOST -osoite"); kun taas (1); }

viive (2000);

}

julkaise anturitiedot 1 minuutin välein

if (rasti> = 60) // julkaise aiheeseen viiden sekunnin välein {rasti = 0; hiilen hyötykuorma [PAYLOAD_MAX_LEN]; snprintf (hyötykuorma, PAYLOAD_MAX_LEN, muoto, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, jännite); Serial.println (hyötykuorma); if (hornbill.publish (TOPIC_NAME, hyötykuorma) == 0) {Serial.print ("Julkaise viesti:"); Serial.println (hyötykuorma); } else {Serial.println ("Julkaisu epäonnistui"); }} vTaskDelay (1000 / portTICK_RATE_MS); rasti ++;

Vaihe 7: Tietojen visualisointi AWS: ssä

Tietojen visualisointi AWS: ssä
Tietojen visualisointi AWS: ssä
Tietojen visualisointi AWS: ssä
Tietojen visualisointi AWS: ssä
Tietojen visualisointi AWS: ssä
Tietojen visualisointi AWS: ssä
  • Kirjaudu AWS -tiliisi.
  • työkalupalkin vasemmasta kulmasta löydät Palvelut -välilehden
  • Napsauta tätä välilehteä ja valitse esineiden internet -otsikon alta IoT Core.
  • Valitse QoS ja ei. viesteistä tilaajille. Kirjoita aiheen nimi.

Vaihe 8: Yleinen koodi

Löydät yleisen koodin tästä Github -arkistosta.

Laajuus

  • Arduino Json
  • Langattomat lämpötila- ja kosteusanturit
  • ESP32
  • PubSubClient

Suositeltava: