Sisällysluettelo:
- Vaihe 1: AWS -tilin määrittäminen
- Vaihe 2: Laitteisto- ja ohjelmistomääritykset
- Vaihe 3: Langattomat tärinä- ja lämpötila -anturit
- Vaihe 4: ESP32 AWS -laiteohjelmisto
- Vaihe 5: Anturitietojen saaminen langattomasta tärinä- ja lämpötila -anturista
- Vaihe 6: Yhdistäminen AWS: ään
- Vaihe 7: Tietojen visualisointi AWS: ssä
- Vaihe 8: Yleinen koodi
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
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
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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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ä
- 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