Բովանդակություն:

Սկսելով AWS IoT- ով ՝ անլար ջերմաստիճանի տվիչով ՝ օգտագործելով MQTT ՝ 8 քայլ
Սկսելով AWS IoT- ով ՝ անլար ջերմաստիճանի տվիչով ՝ օգտագործելով MQTT ՝ 8 քայլ

Video: Սկսելով AWS IoT- ով ՝ անլար ջերմաստիճանի տվիչով ՝ օգտագործելով MQTT ՝ 8 քայլ

Video: Սկսելով AWS IoT- ով ՝ անլար ջերմաստիճանի տվիչով ՝ օգտագործելով MQTT ՝ 8 քայլ
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Հուլիսի
Anonim
Սկսելով AWS IoT- ով անլար ջերմաստիճանի տվիչով `օգտագործելով MQTT
Սկսելով AWS IoT- ով անլար ջերմաստիճանի տվիչով `օգտագործելով MQTT

Ավելի վաղ Instructables- ում մենք անցել ենք տարբեր ամպային հարթակներով, ինչպիսիք են Azure- ը, Ubidots- ը, ThingSpeak- ը, Losant- ը և այլն: Մենք օգտագործում էինք MQTT արձանագրությունը `սենսորային տվյալները ամպ ուղարկելու համար գրեթե բոլոր ամպային հարթակում: MQTT- ի, HTTP արձանագրության նկատմամբ դրա առավելությունների և առավելությունների մասին լրացուցիչ տեղեկությունների համար կարող եք ծանոթանալ այս հրահանգվողին:

Այս ուսանելի դասում մենք խոշորացնելու ենք Amazon Web ծառայությունների մեկ այլ և առավել ծանոթ ամպային հարթակը: Ձեզանից շատերը կարող են ծանոթ լինել AWS aka Amazon Web Services- ին և AWS- ի կողմից տրամադրվող ամպի գործառույթներին: Այն երկար տարիներ եղել է վեբ զարգացման առանցքը: IoT ծրագրերի աճող մասշտաբների հետ AWS- ը գտել է AWSIoT լուծումը: AWSIoT- ը հուսալի լուծում է մեր IoT ծրագրերը հյուրընկալելու համար:

Հետևելով այս հրահանգին.

  • Դուք կկարողանաք ստեղծել AWS հաշիվ ձեր IoT հավելվածի համար
  • Դուք կկարողանաք ESP32- ը միացնել AWS IoT միջուկին
  • Ուղարկեք և ստացեք հաղորդագրություններ ՝ օգտագործելով MQTT և HTTP արձանագրություն
  • Պատկերացրեք ուղարկված տվյալները AWS- ում

Քայլ 1: AWS հաշվի ստեղծում

AWS հաշիվ ստեղծելը բավականին հեշտ է: Պարզապես պետք է մի քանի վկայագիր վերբեռնել, դրան կցել քաղաքականություն, գրանցել սարքը և սկսել սենսորների տվյալների հաղորդագրությունները ստանալ AWS- ում:

AWS հաշիվ ստեղծելու համար հետևեք այս ձեռնարկին:

Քայլ 2: Սարքավորման և ծրագրակազմի բնութագրերը

Սարքավորման և ծրագրակազմի բնութագրերը
Սարքավորման և ծրագրակազմի բնութագրերը

Softwareրագրաշարի բնութագրում

AWS հաշիվ

Սարքաշարի բնութագրում

  • ESP32
  • Անլար ջերմաստիճանի և թրթռման տվիչ
  • Zigmo Gateway ընդունիչ

Քայլ 3. Անլար թրթռման և ջերմաստիճանի տվիչներ

Անլար թրթռման և ջերմաստիճանի տվիչներ
Անլար թրթռման և ջերմաստիճանի տվիչներ

Սա երկարաժամկետ արդյունաբերական IoT անլար թրթռման և ջերմաստիճանի տվիչ է, որը կարող է պարծենալ մինչև 2 Մղոն հեռավորությամբ ՝ օգտագործելով անլար ցանցային ցանցային ճարտարապետություն: Ներառելով 16-բիթանոց թրթռման և ջերմաստիճանի տվիչ ՝ այս սենսորը փոխանցում է թրթռումների շատ ճշգրիտ տվյալներ օգտվողի կողմից սահմանված ընդմիջումներով: Այն ունի հետևյալ հատկանիշները.

  • Արդյունաբերական դասարանի 3 առանցքի թրթռման սենսոր ± 32 գ միջակայքով
  • Հաշվում է RMS, MAX և MIN գ թրթռում
  • Աղմուկի հեռացում ցածր անցման ֆիլտրի միջոցով
  • Հաճախականությունների տիրույթ (թողունակություն) մինչև 12, 800 Հց
  • Նմուշի տոկոսադրույքը մինչև 25, 600 Հց
  • Գաղտնագրված հաղորդակցություն 2 մղոն անլար տիրույթի հետ
  • Գործող ջերմաստիճանի միջակայք -40 -ից +85 ° C
  • Պատի վրա տեղադրված կամ մագնիսով տեղադրված IP65 գնահատված պարիսպ Օրինակելի ծրագրակազմ Visual Studio- ի և LabVIEW- ի համար
  • Թրթռման սենսոր `արտաքին զոնդի տարբերակով
  • Մինչև 500, 000 փոխանցում 4 AA մարտկոցից: Մատչելի են բազմաթիվ դարպասների և մոդեմի ընտրանքներ

Քայլ 4: ESP32 AWS որոնվածը

AWS- ին միանալու և տվյալները ուղարկելու համար անցեք հետևյալ քայլերով

  • Ներբեռնեք AWS գրադարանը հետևյալ Github պահոցից
  • clone repo- ն և տեղադրեք AWS_IOT ֆայլը Arduino գրացուցակի գրադարանի թղթապանակում

git կլոն

Հիմա եկեք անցնենք ծածկագրի միջոցով.

  • Այս հավելվածում մենք օգտագործել ենք գերի ընկած պորտալը ՝ WiFi հավատարմագրերը պահպանելու և IP կարգավորումների միջով սավառնելու համար: Գերի ընկած պորտալում մանրամասն ծանոթանալու համար կարող եք անցնել հետևյալ ուսանելի:
  • Գերի ընկած պորտալը մեզ հնարավորություն է տալիս ընտրել ստատիկ և DHCP պարամետրերի միջև: Պարզապես մուտքագրեք հավատարմագրերը, ինչպիսիք են Static IP- ն, Subnet Mask- ը, gateway- ը և Wireless Sensor Gateway- ը կկարգավորվեն այդ IP- ում:
  • Տեղադրվում է մի վեբ էջ, որտեղ առկա WiFi ցանցերի և այնտեղ RSSI- ի ցուցակը: Ընտրեք WiFi ցանցը և գաղտնաբառը և մուտքագրեք ներկայացնել: Հավատարմագրերը կպահվեն EEPROM- ում, իսկ IP- ի կարգավորումը ՝ SPIFFS- ում: Այս մասին ավելին կարելի է գտնել այս հրահանգի մեջ:

Քայլ 5. Ստացեք տվիչների տվյալները անլար թրթռման և ջերմաստիճանի տվիչից

Սենսորային տվյալների ստացում անլար թրթռման և ջերմաստիճանի տվիչից
Սենսորային տվյալների ստացում անլար թրթռման և ջերմաստիճանի տվիչից
Սենսորային տվյալների ստացում անլար թրթռման և ջերմաստիճանի տվիչից
Սենսորային տվյալների ստացում անլար թրթռման և ջերմաստիճանի տվիչից

Մենք ստանում ենք 54 բայթ շրջանակ ՝ անլար ջերմաստիճանի և թրթռման տվիչներից: Այս շրջանակը շահարկված է իրական ջերմաստիճանի և թրթռման տվյալները ստանալու համար:

ESP32- ն ունի երեք UART, որոնք հասանելի են սերիական օգտագործման համար

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

և 3 ապարատային սերիական նավահանգիստ

  • Սերիական
  • Սերիա 1
  • Սերիա 2

Նախ, նախաստորագրեք Hardware Serial վերնագրի ֆայլը: Այստեղ մենք կօգտագործենք RX2 և TX2 aka: ESP32 տախտակի GPIO 16 և GPIO 17 կապում ՝ սերիական տվյալները ստանալու համար:

#ներառում

# սահմանել RXD2 16 # սահմանել TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // կապում 16 rx2, 17 tx2, 19200 bps, 8 բիթ առանց պարիտետի 1 կանգառ բիթ

Հետևյալ քայլերը ձեզ հետագայում կհանգեցնեն սենսորների իրական արժեքներին

  • Ստեղծեք փոփոխականներ ջերմաստիճանի, խոնավության, մարտկոցի և տվիչների այլ արժեքների պահպանման համար
  • Սահմանեք Rx, tx pin, baud rate և parity bits ապարատային սերիայի համար
  • Նախ, ստուգեք, որ կարդալ ինչ -որ բան կա ՝ օգտագործելով Serial1.available ()
  • Մենք կստանանք 54 բայթ շրջանակ:
  • Ստուգեք 0x7E- ի համար, որը մեկնարկային բայթ է:
  • Թրթռման տվյալները բաղկացած են 3 առանցքի RMS արժեքից, 3 առանցքի համար նվազագույն արժեքներից, 3 առանցքի առավելագույն արժեքներից:
  • ջերմաստիճանի և մարտկոցի արժեքները կպարունակեն 2 բայթ տվյալներ
  • ստացեք սենսորի անունը, տեսակը, տվիչի տարբերակը կպարունակի 1 բայթ տվյալներ և կարող եք ստանալ համապատասխան հասցեից

if (Serial2.available ()) {Serial.println («Կարդա սերիալ»); տվյալներ [0] = Serial2.read (); ուշացում (k); if (տվյալներ [0] == 0x7E) {Serial.println («Ստացա փաթեթ»); իսկ (! Serial2.available ()); համար (i = 1; i <55; i ++) {data = Serial2.read (); ուշացում (1); } եթե (տվյալներ [15] == 0x7F) /////// ստուգելու համար, թե արդյոք ստացված տվյալները ճիշտ են {if (տվյալներ [22] == 0x08) //////// համոզվեք, որ սենսորի տեսակը ճիշտ է {rms_x = ((uint16_t) (((տվյալները [24]) << 16) + ((տվյալները [25]) << 8) + (տվյալները [26]))/100); rms_y = ((uint16_t) (((տվյալները [27]) << 16) + ((տվյալները [28]) << 8) + (տվյալները [29]))/100); rms_z = ((uint16_t) (((տվյալները [30]) << 16) + ((տվյալները [31]) << 8) + (տվյալները [32]))/100); int16_t max_x = ((uint16_t) (((տվյալները [33]) << 16) + ((տվյալները [34]) << 8) + (տվյալները [35]))/100); int16_t max_y = ((uint16_t) (((տվյալները [36]) << 16) + ((տվյալները [37]) << 8) + (տվյալները [38]))/100); int16_t max_z = ((uint16_t) (((տվյալները [39]) << 16) + ((տվյալները [40]) << 8) + (տվյալները [41]))/100);

int16_t min_x = ((uint16_t) (((տվյալները [42]) << 16) + ((տվյալները [43]) << 8) + (տվյալները [44]))/100); int16_t min_y = ((uint16_t) (((տվյալները [45]) << 16) + ((տվյալները [46]) << 8) + (տվյալները [47]))/100); int16_t min_z = ((uint16_t) (((տվյալները [48]) << 16) + ((տվյալները [49]) << 8) + (տվյալները [50]))/100);

cTemp = ((((տվյալները [51]) * 256) + տվյալները [52])); լողացող մարտկոց = ((տվյալներ [18] * 256) + տվյալներ [19]); լարման = 0.00322 * մարտկոց; Serial.print («Սենսորային համար»); Serial.println (տվյալները [16]); senseNumber = տվյալներ [16]; Serial.print («Սենսորային տեսակ»); Serial.println (տվյալները [22]); Serial.print («irmրագրակազմի տարբերակ»); Serial.println (տվյալները [17]); Serial.print ("Cերմաստիճանը Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS թրթռում X առանցքի մեջ."); Serial.print (rms_x); Serial.println («մգ»); Serial.print ("RMS թրթռում Y- առանցքում."); Serial.print (rms_y); Serial.println («մգ»); Serial.print ("RMS թրթռում Z- առանցքում."); Serial.print (rms_z); Serial.println («մգ»);

Serial.print («Առնվազն թրթռում X առանցքում.»);

Serial.print (min_x); Serial.println («մգ»); Serial.print ("Նվազագույն թրթռում Y- առանցքում."); Serial.print (min_y); Serial.println («մգ»); Serial.print («Նվազագույն թրթռում Z առանցքի մեջ.»); Serial.print (min_z); Serial.println («մգ»);

Serial.print ("ADC արժեքը:");

Serial.println (մարտկոց); Serial.print («Մարտկոցի լարումը.»); Serial.print (լարման); Serial.println ("\ n"); if (լարման <1) {Serial.println («Մարտկոցը փոխարինելու ժամանակը»); }}} այլ {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); ուշացում (1); }}}}

Քայլ 6: Միացում AWS- ին

Միացում AWS- ին
Միացում AWS- ին
  • Ներառեք AWS_IOT.h, WiFi.h վերնագրի ֆայլերը ՝ AWSIoT հանգույցի հետ կապ ստեղծելու համար
  • Մուտքագրեք ձեր տանտիրոջ հասցեն, Client ID- ն, որը կլինի քաղաքականության անվանումը, և թեմայի անունը, որը կլինի իրի անունը

// ********* AWS հավատարմագրեր ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

Ստեղծեք char փոփոխական ՝ ձեր JSON- ը պահելու համար, այս դեպքում մենք ստեղծել ենք JSON պահելու ձևաչափ

const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" լարման / ":%. 2f}";

Ստեղծեք AWS_IOT դասի օրինակ

AWS_IOT esp; // AWS_IOT դասի օրինակ

Այժմ միացեք AWSIoT հանգույցին ՝ օգտագործելով հետևյալ մեթոդը:

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Միացված է AWS- ին"); ուշացում (1000);

եթե (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Բաժանորդագրվել հաջողությամբ"); } else {Serial.println ("Բաժանորդագրությունը ձախողվեց, ստուգեք բանի անունը և վկայականները"); մինչդեռ (1); }} else {Serial.println ("AWS կապը ձախողվեց, ստուգեք HOST հասցեն"); մինչդեռ (1); }

ուշացում (2000);

}

հրապարակեք տվիչների տվյալները յուրաքանչյուր 1 րոպեից հետո:

if (tick> = 60) // թեմային հրապարակել յուրաքանչյուր 5 վայրկյանում {tick = 0; char բեռնվածություն [PAYLOAD_MAX_LEN]; snprintf (բեռնվածություն, PAYLOAD_MAX_LEN, ձևաչափ, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, լարում); Serial.println (բեռնվածություն); if (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("Հրապարակել հաղորդագրությունը."); Serial.println (բեռնվածություն); } else {Serial.println ("Հրապարակումը ձախողվեց"); }} vTaskDelay (1000 / նավահանգիստ TICK_RATE_MS); տիզ ++;

Քայլ 7: Տվյալների արտացոլում AWS- ում

Տվյալների արտացոլում AWS- ում
Տվյալների արտացոլում AWS- ում
Տվյալների արտացոլում AWS- ում
Տվյալների արտացոլում AWS- ում
Տվյալների արտացոլում AWS- ում
Տվյալների արտացոլում AWS- ում
  • Մուտք գործեք ձեր AWS հաշիվ:
  • Գործիքադարակի ձախ անկյունում կգտնեք «Servicesառայություններ» ներդիրը
  • Կտտացրեք այս ներդիրին և «Իրերի ինտերնետ» խորագրի ներքո ընտրեք IoT Core:
  • Ընտրեք QoS և ոչ: հաղորդագրություններ բաժանորդներին: Մուտքագրեք թեմայի անունը:

Քայլ 8: Ընդհանուր ծածկագիր

Դուք կարող եք գտնել ընդհանուր ծածկագիրը այս Github պահեստում:

Վարկեր

  • Արդուինո sonսոն
  • Անլար ջերմաստիճանի և խոնավության տվիչներ
  • ESP32
  • PubSubClient

Խորհուրդ ենք տալիս: