Përmbajtje:
- Hapi 1: Vendosja e llogarisë AWS
- Hapi 2: Specifikimet e harduerit dhe softuerit
- Hapi 3: Sensorët e dridhjeve pa tel dhe të temperaturës
- Hapi 4: Firmware ESP32 AWS
- Hapi 5: Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës
- Hapi 6: Lidhja me AWS
- Hapi 7: Vizualizimi i të dhënave në AWS
- Hapi 8: Kodi i përgjithshëm
Video: Fillimi me AWS IoT me sensorin e temperaturës pa tel duke përdorur MQTT: 8 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Në Instructables të mëparshëm, ne kemi kaluar nëpër platforma të ndryshme cloud si Azure, Ubidots, ThingSpeak, Losant etj. Ne kemi qenë duke përdorur protokollin MQTT për dërgimin e të dhënave të sensorit në re në pothuajse të gjithë platformën cloud. Për më shumë informacion mbi MQTT, avantazhet dhe përfitimet e tij mbi protokollin HTTP mund t'i referoheni këtij udhëzuesi.
Në këtë udhëzues, ne do të zmadhojmë në një platformë tjetër cloud dhe më të njohur Amazon Web Services. Shumë prej jush mund të jenë të njohur me AWS aka Amazon Web Services dhe funksionalitetin cloud të ofruar nga AWS. Ka qenë thelbi i zhvillimit të uebit për shumë vite. Me shkallën në rritje të aplikacioneve IoT, AWS ka dalë me zgjidhjen e AWSIoT. AWSIoT është një zgjidhje e besueshme për pritjen e aplikacioneve tona IoT.
Duke ndjekur këtë udhëzues:
- Ju do të jeni në gjendje të krijoni llogari AWS për aplikacionin tuaj IoT
- Ju do të jeni në gjendje të lidhni ESP32 me bërthamën AWS IoT
- Dërgoni dhe merrni mesazhe duke përdorur protokollin MQTT dhe
- Vizualizoni të dhënat e dërguara në AWS
Hapi 1: Vendosja e llogarisë AWS
Krijimi i llogarisë AWS është mjaft i lehtë. Thjesht duhet të ngarkoni disa certifikata, t'i bashkëngjitni politikave, të regjistroni pajisjen dhe të filloni të merrni mesazhet e të dhënave të sensorit në AWS.
Për të krijuar llogarinë AWS ndiqni këtë udhëzues.
Hapi 2: Specifikimet e harduerit dhe softuerit
Specifikimi i Softuerit
Një llogari AWS
Specifikimet e harduerit
- ESP32
- Sensori i temperaturës dhe dridhjes pa tel
- Marrës Zigmo Gateway
Hapi 3: Sensorët e dridhjeve pa tel dhe të temperaturës
Ky është një sensor dridhje dhe temperaturë wireless IoT Industrial me rreze të gjatë, që mburret deri në një distancë prej 2 Mile duke përdorur një arkitekturë të rrjetit me rrjetë pa tel. Duke përfshirë një sensor dridhjeje dhe temperature 16-bit, ky sensor transmeton të dhëna dridhjeje shumë të sakta në intervale të përcaktuara nga përdoruesi. Ajo ka karakteristikat e mëposhtme:
- Sensori i dridhjeve me bosht 3 të shkallës industriale me Gama ± 32g
- Llogarit dridhjen RMS, MAX dhe MIN g
- Heqja e zhurmës duke përdorur filtrin me kalim të ulët
- Gama e frekuencës (gjerësia e brezit) deri në 12, 800 Hz
- Shkalla e mostrës deri në 25, 600Hz
- Komunikimi i Kriptuar me Gama Wireless 2 Mile
- Gama e temperaturës së funksionimit -40 deri +85 ° C
- Shtojcë e montuar në mur ose e montuar me magnet IP65 Shembull Softuerësh për Visual Studio dhe LabVIEW
- Sensori i dridhjeve me opsionin e sondës së jashtme
- Deri në 500, 000 Transmetime nga 4 bateri AA Shumë opsione të Gateway dhe Modem në dispozicion
Hapi 4: Firmware ESP32 AWS
Për t'u lidhur me AWS dhe për të filluar dërgimin e të dhënave kaloni hapat e mëposhtëm
- Shkarkoni bibliotekën AWS nga depoja e mëposhtme Github
- klononi repon dhe vendoseni skedarin AWS_IOT në dosjen e bibliotekës të drejtorisë Arduino
git klon
Tani le të kalojmë nëpër kodin:
- Në këtë aplikacion, ne kemi përdorur një portal të kapur për të ruajtur kredencialet WiFi dhe për të lëvizur përmes cilësimeve të IP. Për hyrjen e hollësishme në portalin robër, mund të kaloni përmes udhëzimeve të mëposhtme.
- Portali i kapur na jep mundësinë të zgjedhim midis cilësimeve Static dhe DHCP. Thjesht futni kredencialet si IP Static, Subnet Mask, gateway dhe Porta e Sensorit Wireless do të konfigurohet në atë IP.
- Një faqe në internet po mbahet ku një listë që tregon rrjetet WiFi në dispozicion dhe atje RSSI. Zgjidhni rrjetin WiFi dhe fjalëkalimin dhe futni paraqit. Kredencialet do të ruhen në EEPROM dhe cilësimi IP do të ruhet në SPIFFS. Më shumë për këtë mund të gjeni në këtë udhëzues.
Hapi 5: Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës
Ne po marrim një kornizë 54-bajtësh nga Sensorët e Temperaturës dhe Vibrimit pa Tel. Ky kuadër është manipuluar për të marrë të dhënat aktuale të temperaturës dhe dridhjeve.
ESP32 ka tre UART në dispozicion për përdorim serik
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
dhe 3 porte serike të harduerit
- Serial
- Seriali 1
- Seriali 2
Së pari, inicializoni skedarin e kokës së serialit të harduerit. Këtu do të përdorim RX2 dhe TX2 aka. GPIO 16 dhe GPIO 17 kunjat e bordit ESP32 për të marrë të dhënat serike.
#përfshi
# përcakto RXD2 16 # përcakto TXD2 17
Serial2.fill (115200, SERIAL_8N1, RXD2, TXD2); // kunjat 16 rx2, 17 tx2, 19200 bps, 8 bit pa paritet 1 bit ndalues
Hapat e mëposhtëm do t'ju çojnë më tej për të marrë vlerat e vërteta të sensorit
- Krijoni variabla për ruajtjen e temperaturës, lagështisë, baterisë dhe vlerave të tjera të sensorit
- Vendosni Rx, pin tx, normën e baud dhe bitët e barazisë për serialin e harduerit
- Së pari, kontrolloni që ka diçka për të lexuar duke përdorur Serial1.available ()
- Ne do të marrim kuadrin prej 54 bajtësh.
- Kontrolloni për 0x7E që është bajti i fillimit.
- Të dhënat e dridhjeve përbëhen nga vlera RMS për boshtin 3, vlerat min për 3 boshtet, vlerat maksimale për 3 boshtet.
- vlerat e temperaturës dhe baterisë do të përmbajnë 2 bajt të dhëna
- merrni emrin e sensorit, llojin, versioni i sensorit do të përmbajë 1 bajt të dhëna dhe mund të merret nga atje adresa përkatëse
nëse (Serial2.disponueshëm ()) {Serial.println ("Lexo Serialin"); të dhënat [0] = Serial2.read (); vonesa (k); if (të dhënat [0] == 0x7E) {Serial.println ("Got Paketë"); ndërsa (! Serial2.i disponueshëm ()); për (i = 1; i <55; i ++) {të dhënat = Serial2.lex (); vonesa (1); } nëse (të dhënat [15] == 0x7F) /////// për të kontrolluar nëse të dhënat e nxjerra janë të sakta {nëse (të dhënat [22] == 0x08) //////// sigurohuni që lloji i sensorit është e saktë {rms_x = ((uint16_t) (((të dhënat [24]) << 16) + ((të dhënat [25]) << 8) + (të dhënat [26]))/100); rms_y = ((uint16_t) (((të dhënat [27]) << 16) + ((të dhënat [28]) << 8) + (të dhënat [29]))/100); rms_z = ((uint16_t) (((të dhënat [30]) << 16) + ((të dhënat [31]) << 8) + (të dhënat [32]))/100); int16_t max_x = ((uint16_t) (((të dhënat [33]) << 16) + ((të dhënat [34]) << 8) + (të dhënat [35]))/100); int16_t max_y = ((uint16_t) (((të dhënat [36]) << 16) + ((të dhënat [37]) << 8) + (të dhënat [38]))/100); int16_t max_z = ((uint16_t) (((të dhënat [39]) << 16) + ((të dhënat [40]) << 8) + (të dhënat [41]))/100);
int16_t min_x = ((uint16_t) (((të dhënat [42]) << 16) + ((të dhënat [43]) << 8) + (të dhënat [44]))/100); int16_t min_y = ((uint16_t) (((të dhënat [45]) << 16) + ((të dhënat [46]) << 8) + (të dhënat [47]))/100); int16_t min_z = ((uint16_t) (((të dhënat [48]) << 16) + ((të dhënat [49]) << 8) + (të dhënat [50]))/100);
cTemp = ((((të dhënat [51]) * 256) + të dhënat [52])); bateri notuese = ((të dhëna [18] * 256) + të dhëna [19]); tension = 0.00322 * bateri; Serial.print ("Numri i sensorit"); Serial.println (të dhënat [16]); senseNumber = të dhëna [16]; Serial.print ("Lloji i sensorit"); Serial.println (të dhënat [22]); Serial.print ("Versioni i firmuerit"); Serial.println (të dhënat [17]); Serial.print ("Temperatura në Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Dridhja e RMS në boshtin X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("Dridhja e RMS në boshtin Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("Dridhja e RMS në boshtin Z:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Dridhje minimale në boshtin X:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Dridhje minimale në boshtin Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Dridhje minimale në boshtin Z:"); Serial.print (min_z); Serial.println ("mg");
Serial.print ("Vlera ADC:");
Serial.println (bateri); Serial.print ("Tensioni i baterisë:"); Serial.print (tension); Serial.println ("\ n"); if (tension <1) {Serial.println ("Koha për të zëvendësuar baterinë"); }}} tjetër {për (i = 0; i <54; i ++) {Serial.print (të dhënat ); Serial.print (","); vonesa (1); }}}}
Hapi 6: Lidhja me AWS
- Përfshi skedarët e kokës AWS_IOT.h, WiFi.h për të krijuar një lidhje me qendrën AWSIoT
- Vendosni adresën tuaj të hostit, ID -në e klientit i cili do të jetë emri i politikës dhe emrin e temës që do të jetë emri i sendit
// ********* Kredencialet AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Krijoni një ndryshore char për të ruajtur JSON tuaj, në këtë rast, ne kemi krijuar një format për të ruajtur JSON
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" tension / ":%. 2f}";
Krijoni një shembull të klasës AWS_IOT
AWS_IOT esp; // Instanca e klasës AWS_IOT
Tani lidheni me qendrën AWSIoT duke përdorur metodën e mëposhtme
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Lidhur me AWS"); vonesa (1000);
nëse (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Abonohu me sukses"); } else {Serial.println ("Abonimi dështoi, kontrolloni emrin e sendit dhe certifikatat"); ndërsa (1); }} else {Serial.println ("Lidhja AWS dështoi, kontrolloni adresën HOST"); ndërsa (1); }
vonesa (2000);
}
publikoni të dhënat e sensorit pas çdo 1 minutë
nëse (shënoni> = 60) // publikoni në temë çdo 5 sekonda {shënoni = 0; ngarkesë me ngarkesë [PAYLOAD_MAX_LEN]; snprintf (ngarkesa, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, tension); Serial.println (ngarkesa); if (hornbill.publish (TOPIC_NAME, ngarkesa) == 0) {Serial.print ("Publiko Mesazhin:"); Serial.println (ngarkesa); } else {Serial.println ("Publikimi dështoi"); }} vTaskDelay (1000 / portTICK_RATE_MS); shënoni ++;
Hapi 7: Vizualizimi i të dhënave në AWS
- Hyni në llogarinë tuaj AWS.
- në këndin e majtë të shiritit të veglave, do të gjeni skedën Shërbimet
- Klikoni në këtë skedë dhe nën titullin Internet of Things zgjidhni IoT Core.
- Zgjidhni QoS dhe nr. mesazhe për pajtimtarët. Shkruani emrin e temës.
Hapi 8: Kodi i përgjithshëm
Ju mund të gjeni kodin e përgjithshëm në këtë depo të Github.
Kredite
- Arduino Json
- Sensorë të temperaturës dhe lagështisë me valë
- ESP32
- PubSubClient
Recommended:
Ventilatori i Ftohjes Auto Duke Përdorur Servo dhe DHT11 Sensorin e Temperaturës dhe Lagështisë me Arduino: 8 Hapa
Ventilatori i Ftohjes Auto Duke përdorur Sensorin e Temperaturës dhe Lagështisë Servo dhe DHT11 Me Arduino: Në këtë tutorial do të mësojmë se si të fillojmë & rrotulloni një tifoz kur temperatura ngrihet mbi një nivel të caktuar
Leximi i temperaturës duke përdorur sensorin e temperaturës LM35 Me Arduino Uno: 4 hapa
Leximi i temperaturës duke përdorur sensorin e temperaturës LM35 Me Arduino Uno: Përshëndetje djema në këtë udhëzues ne do të mësojmë se si të përdorim LM35 me Arduino. Lm35 është një sensor i temperaturës i cili mund të lexojë vlerat e temperaturës nga -55 ° C në 150 ° C. Shtë një pajisje 3-terminale që siguron tension analog proporcional me temperaturën. E lartë
Krijimi i sinjalizimeve me email për sensorin e temperaturës dhe lagështisë me valë NCD duke përdorur Nyjen-Kuqe: 22 hapa
Krijimi i paralajmërimeve me email për sensorin e temperaturës dhe lagështisë pa tel NCD duke përdorur Node-Red: Ne po përdorim këtu sensorin e temperaturës dhe lagështisë të NCD, por hapat qëndrojnë të barabartë për cilindo nga produktet ncd, kështu që nëse keni sensorë të tjerë wireless wireless, përjetoni falas vëzhgoni krahas përveç. Me anë të ndalimit të këtij teksti, ju duhet të
Metodat e zbulimit të nivelit të ujit Arduino duke përdorur sensorin tejzanor dhe sensorin e ujit Funduino: 4 hapa
Metodat e zbulimit të nivelit të ujit Arduino duke përdorur sensorin tejzanor dhe sensorin e ujit Funduino: Në këtë projekt, unë do t'ju tregoj se si të krijoni një detektor të lirë uji duke përdorur dy metoda: 1. Sensori tejzanor (HC-SR04) .2. Sensori i ujit Funduino
Automatizoni një tifoz duke përdorur sensorin e temperaturës MESH: 4 hapa (me fotografi)
Automatizoni një tifoz duke përdorur sensorin e temperaturës MESH: A jeni të lodhur nga ndërrimi i ventilatorit tuaj " Aktivizuar " dhe " Fikur "? Po sikur ventilatori juaj të ishte i automatizuar dhe i personalizuar në bazë të cilësimeve tuaja të preferuara të temperaturës? Ne ’ kemi ndërtuar një tifoz të automatizuar duke përdorur Temperaturën MESH & Lagështia, Wemo dhe