Orodha ya maudhui:

Kuanza na AWS IoT na Sensor ya joto isiyo na waya Kutumia MQTT: Hatua 8
Kuanza na AWS IoT na Sensor ya joto isiyo na waya Kutumia MQTT: Hatua 8

Video: Kuanza na AWS IoT na Sensor ya joto isiyo na waya Kutumia MQTT: Hatua 8

Video: Kuanza na AWS IoT na Sensor ya joto isiyo na waya Kutumia MQTT: Hatua 8
Video: Маленький лисенок вышел к людям за помощью 2024, Desemba
Anonim
Kuanza na AWS IoT na Sensor ya joto isiyo na waya Kutumia MQTT
Kuanza na AWS IoT na Sensor ya joto isiyo na waya Kutumia MQTT

Katika Maagizo ya hapo awali, tumepitia majukwaa tofauti ya wingu kama Azure, Ubidots, ThingSpeak, Losant nk. Tumekuwa tukitumia itifaki ya MQTT kwa kutuma data ya sensorer kwenye wingu karibu kwenye jukwaa lote la wingu. Kwa habari zaidi juu ya MQTT, faida na faida zake juu ya itifaki ya HTTP unaweza kurejelea hii inayoweza kufundishwa.

Katika hii inayoweza kufundishwa, tutaongeza kwenye jukwaa jingine na la kawaida la wingu Huduma za Wavuti za Amazon. Wengi wenu mnaweza kufahamiana na AWS aka Amazon Web Services na utendaji wa wingu uliotolewa na AWS. Imekuwa msingi wa maendeleo ya wavuti kwa miaka mingi. Kwa kuongezeka kwa matumizi ya IoT, AWS imekuja na suluhisho la AWSIoT. AWSIoT ni suluhisho la kuaminika la kukaribisha matumizi yetu ya IoT.

Kwa kufuata mafundisho haya:

  • Utaweza kuanzisha akaunti ya AWS kwa programu yako ya IoT
  • Utaweza kuunganisha ESP32 na msingi wa AWS IoT
  • Tuma na upokee ujumbe ukitumia itifaki ya MQTT na
  • Tazama data iliyotumwa katika AWS

Hatua ya 1: Kuweka Akaunti ya AWS

Kuweka Akaunti ya AWS ni rahisi sana. Unahitaji tu kupakia vyeti kadhaa, ambatanisha sera nayo, Sajili kifaa na uanze kupokea ujumbe wa data ya sensorer katika AWS.

Kuanzisha akaunti ya AWS fuata mafunzo haya.

Hatua ya 2: Uainishaji wa vifaa na programu

Vifaa vya Hardware na Programu
Vifaa vya Hardware na Programu

Uainishaji wa Programu

Akaunti ya AWS

Ufafanuzi wa Vifaa

  • E3232
  • Joto lisilo na waya na Sura ya Mtetemo
  • Zigmo Gateway mpokeaji

Hatua ya 3: Vibration zisizo na waya na Sensorer za Joto

Vibration isiyo na waya na Sensorer za Joto
Vibration isiyo na waya na Sensorer za Joto

Huu ni mtetemo wa waya wa muda mrefu wa Viwanda IoT na sensorer ya joto, ikijivunia hadi safu ya 2 Mile ukitumia usanifu wa mitandao ya waya. Kujumuisha sensorer ya Vibration ya 16-bit na Joto, sensor hii inasambaza data sahihi ya mtetemo kwa vipindi vilivyoainishwa na mtumiaji. Inayo huduma zifuatazo:

  • Sensorer ya Viwango vya Mistari ya 3-mhimili wenye Viwango vya ± 32g
  • Huhesabu Utetemekaji wa RMS, MAX, na MIN g
  • Uondoaji wa Kelele ukitumia Kichujio cha pasi-chini
  • Mzunguko wa Mzunguko (Bandwidth) hadi 12, 800 Hz
  • Kiwango cha Mfano hadi 25, 600Hz
  • Mawasiliano yaliyosimbwa kwa njia fiche na Mbalizi Mbili ya Wireless Mile
  • Kiwango cha Joto la Kuendesha -40 hadi +85 ° C
  • Ukuta-uliowekwa au Sumaku Imewekwa IP65 Iliyokadiriwa Ufungaji Mfano wa Programu ya Studio ya Visual na LabVIEW
  • Sensorer ya Vibration na Chaguo la Kuchunguza Nje
  • Hadi 500,000 Uhamisho kutoka kwa Batri 4 za AA Njia nyingi za Lango na Modem Zinapatikana

Hatua ya 4: Firmware ya ESP32 AWS

Ili kuungana na AWS na kuanza kutuma data pitia hatua zifuatazo

  • Pakua maktaba ya AWS kutoka hazina ifuatayo ya Github
  • onyesha repo na uweke faili ya AWS_IOT kwenye folda ya maktaba ya saraka ya Arduino

clone ya git

Sasa wacha tuende kupitia nambari:

  • Katika programu tumizi hii, tumetumia bandari ya wafungwa kuhifadhi vitambulisho vya WiFi na kuelea kupitia mipangilio ya IP. Kwa utangulizi wa kina kwenye bandari ya wafungwa, unaweza kupitia yafuatayo yafundishwayo.
  • Mlango wa wafungwa hutupa fursa ya kuchagua kati ya mipangilio ya Static na DHCP. Ingiza tu vitambulisho kama Static IP, Subnet Mask, lango na Njia ya Sura isiyo na waya itasanidiwa kwenye IP hiyo.
  • Ukurasa wa wavuti unashughulikiwa ambapo orodha inayoonyesha mitandao inayopatikana ya WiFi na kuna RSSI. Chagua mtandao wa WiFi na nywila na uingie kuwasilisha. Sifa zitahifadhiwa katika EEPROM na mipangilio ya IP itahifadhiwa katika SPIFFS. Zaidi juu ya hii inaweza kupatikana katika hii inayoweza kufundishwa.

Hatua ya 5: Kupata Takwimu za Sensorer Kutoka Kutetemeka kwa Wavu na Sensor ya Joto

Kupata Takwimu za Sensorer Kutoka Kutetemeka kwa Wavu na Sura ya Joto
Kupata Takwimu za Sensorer Kutoka Kutetemeka kwa Wavu na Sura ya Joto
Kupata Takwimu za Sensorer Kutoka Kutetemeka kwa Wavu na Sura ya Joto
Kupata Takwimu za Sensorer Kutoka Kutetemeka kwa Wavu na Sura ya Joto

Tunapata fremu ya 54-byte kutoka kwa Sura ya Kutembea na Sensorer za Kutetemeka. Sura hii inadhibitiwa kupata joto halisi na data ya Vibration.

ESP32 ina UART tatu zinazopatikana kwa matumizi ya Serial

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

na bandari 3 za Serial

  • Serial
  • Serial1
  • Serial2

Kwanza, anzisha faili ya kichwa cha vifaa vya Hardware. Hapa tutatumia RX2 na TX2 aka. Pini za GPIO 16 na GPIO 17 za bodi ya ESP32 kupata data ya serial.

# pamoja

# fafanua RXD2 16 # fafanua TXD2 17

Serial2.anza (115200, SERIAL_8N1, RXD2, TXD2); // pini 16 rx2, 17 tx2, 19200 bps, bits 8 hakuna usawa 1 stop kidogo

Kufuata hatua zitakuongoza zaidi kupata maadili halisi ya sensorer

  • Unda vigezo vya kuhifadhi joto, unyevu, betri, na maadili mengine ya sensa
  • Weka Rx, pini ya tx, kiwango cha baud na vipande vya usawa kwa safu ya vifaa
  • Kwanza, angalia kuwa kuna kitu cha kusoma kwa kutumia Serial1.
  • Tutapata sura ya baiti 54.
  • Angalia 0x7E ambayo ni baiti ya kuanza.
  • Takwimu za mtetemeko zina thamani ya RMS kwa mhimili 3, min min kwa mhimili 3, maadili ya juu kwa mhimili 3.
  • viwango vya joto na betri vitakuwa na ka 2 za data
  • pata jina la sensorer, aina, toleo la sensorer litakuwa na 1 ka data na inaweza kupatikana kutoka kwa anwani husika

ikiwa (Serial2.available ()) {Serial.println ("Soma Serial"); data [0] = Serial2.read (); kuchelewesha (k); ikiwa (data [0] == 0x7E) {Serial.println ("Got Packet"); wakati (! Serial2.patikana ()); kwa (i = 1; i <55; i ++) {data = Serial2.read (); kuchelewesha (1); } ikiwa (data [15] == 0x7F) /////// kuangalia ikiwa data ya kurudisha ni sahihi {ikiwa (data [22] == 0x08) ///////// hakikisha aina ya kitambuzi ni sahihi {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])); kuelea betri = ((data [18] * 256) + data [19]); voltage = 0.00322 * betri; Serial.print ("Nambari ya Sensor"); Serial.println (data [16]); senseNumber = data [16]; Serial.print ("Aina ya Sensorer"); Serial.println (data [22]); Serial.print ("Toleo la Firmware"); Serial.println (data [17]); Serial.print ("Joto katika Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("mtetemo wa RMS katika mhimili wa X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("mtetemo wa RMS katika mhimili wa Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("mtetemo wa RMS katika mhimili wa Z:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Min vibration katika X-axis:");

Printa ya serial (min_x); Serial.println ("mg"); Serial.print ("Min vibration katika Y-mhimili:"); Printa ya serial (min_y); Serial.println ("mg"); Serial.print ("Min vibration katika Z-axis:"); Printa ya serial (min_z); Serial.println ("mg");

Serial.print ("Thamani ya ADC:");

Serial.println (betri); Serial.print ("Voltage ya Batri:"); Printa ya serial (voltage); Serial.println ("\ n"); ikiwa (voltage <1) {Serial.println ("Wakati wa Kubadilisha Betri"); }}}} mwingine {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); kuchelewesha (1); }}}}

Hatua ya 6: Kuunganisha na AWS

Kuunganisha na AWS
Kuunganisha na AWS
  • Jumuisha AWS_IOT.h, faili za kichwa za WiFi.h ili kuanzisha unganisho na kitovu cha AWSIoT
  • Ingiza Anwani yako ya Mwenyeji, Kitambulisho cha Mteja ambacho kitakuwa jina la sera, na jina la mada ambalo litakuwa jina la kitu

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

Unda ubadilishaji wa char kuhifadhi JSON yako, katika kesi hii, tumeunda fomati ya kuhifadhi JSON

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

Unda mfano wa darasa la AWS_IOT

AWS_IOT esp; // Hadhi ya darasa la AWS_IOT

Sasa unganisha kwenye kitovu cha AWSIoT ukitumia njia ifuatayo

batili unganisha tena MQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Imeunganishwa na AWS"); kuchelewesha (1000);

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

{Serial.println ("Jisajili Umefanikiwa"); } mwingine {Serial.println ("Usajili Umeshindwa, Angalia Jina la Vitu na Vyeti"); wakati (1); }} mwingine {Serial.println ("Uunganisho wa AWS umeshindwa, Angalia Anwani ya mwenyeji"); wakati (1); }

kuchelewa (2000);

}

chapisha data ya sensa baada ya kila dakika 1

ikiwa (tick> = 60) // chapisha kwa mada kila sekunde 5 {tick = 0; malipo ya char [PAYLOAD_MAX_LEN]; snprintf (malipo ya malipo, PAYLOAD_MAX_LEN, fomati, Nambari ya maana, msgCount ++, rms_x, rms_y, rms_z, cTemp, voltage); Serial.println (malipo ya malipo); ikiwa (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("Chapisha Ujumbe:"); Serial.println (malipo ya malipo); } mwingine {Serial.println ("Chapisha imeshindwa"); }} vTaskDelay (1000 / bandariTICK_RATE_MS); kupe ++;

Hatua ya 7: Kuangalia data katika AWS

Kuangalia Takwimu katika AWS
Kuangalia Takwimu katika AWS
Kuangalia Takwimu katika AWS
Kuangalia Takwimu katika AWS
Kuangalia Takwimu katika AWS
Kuangalia Takwimu katika AWS
  • Ingia kwenye akaunti yako ya AWS.
  • kwenye kona ya kushoto ya mwambaa zana, utapata kichupo cha Huduma
  • Bonyeza kwenye kichupo hiki na chini ya mtandao wa Vitu vinavyochagua chagua IoT Core.
  • Chagua QoS na hapana. ya ujumbe kwa wanachama. Ingiza jina la mada.

Hatua ya 8: Kanuni ya Jumla

Unaweza kupata nambari ya jumla kwenye Hifadhi hii ya Github.

Mikopo

  • Arduino Json
  • Joto lisilo na waya na sensorer za unyevu
  • E3232
  • Mshauri wa PubSub

Ilipendekeza: