Mündəricat:

MQTT istifadə edərək Simsiz Temperatur Sensoru olan AWS IoT ilə İşə Başlama: 8 Addım
MQTT istifadə edərək Simsiz Temperatur Sensoru olan AWS IoT ilə İşə Başlama: 8 Addım

Video: MQTT istifadə edərək Simsiz Temperatur Sensoru olan AWS IoT ilə İşə Başlama: 8 Addım

Video: MQTT istifadə edərək Simsiz Temperatur Sensoru olan AWS IoT ilə İşə Başlama: 8 Addım
Video: Ethernet və wi-fi ilə Dingtian DT-R008 çoxkanallı ağıllı rele - ümumi baxış və Home Assistant 2024, Iyul
Anonim
MQTT istifadə edərək Simsiz Temperatur Sensoru olan AWS IoT ilə İşə Başlama
MQTT istifadə edərək Simsiz Temperatur Sensoru olan AWS IoT ilə İşə Başlama

Əvvəlki Təlimatlarda Azure, Ubidots, ThingSpeak, Losant kimi fərqli bulud platformalarından keçdik. Demək olar ki, bütün bulud platformalarında sensor məlumatlarını buluda göndərmək üçün MQTT protokolundan istifadə edirik. MQTT, HTTP protokolu üzərindəki üstünlükləri və faydaları haqqında daha çox məlumat üçün bu təlimata müraciət edə bilərsiniz.

Bu təlimatda, başqa bir və ən tanış Amazon Web Services bulud platformasına yaxınlaşacağıq. Bir çoxunuz AWS aka Amazon Web Services və AWS tərəfindən təmin edilən bulud funksionallığı ilə tanış ola bilərsiniz. Uzun illər veb inkişafının əsasını təşkil etdi. IoT tətbiqlərinin artan miqyası ilə AWS, AWSIoT həlli ilə çıxış etdi. AWSIoT, IoT tətbiqlərimizi yerləşdirmək üçün etibarlı bir həlldir.

Bu təlimata əməl edərək:

  • IoT tətbiqiniz üçün AWS hesabı qura biləcəksiniz
  • ESP32 -ni AWS IoT nüvəsinə qoşa biləcəksiniz
  • MQTT və HTTP protokolundan istifadə edərək mesaj göndərin və alın
  • AWS -də göndərilən məlumatları görüntüləyin

Addım 1: AWS Hesabının Qurulması

AWS hesabı qurmaq olduqca asandır. Yalnız bir neçə sertifikat yükləməlisiniz, ona siyasət əlavə etməlisiniz, cihazı qeydiyyatdan keçirməlisiniz və AWS -də sensor məlumatları almağa başlamalısınız.

AWS hesabını qurmaq üçün bu təlimatı izləyin.

Addım 2: Avadanlıq və Proqram Xüsusiyyətləri

Avadanlıq və Proqram Xüsusiyyətləri
Avadanlıq və Proqram Xüsusiyyətləri

Proqram Təminatı

AWS hesabı

Avadanlıq spesifikasiyası

  • ESP32
  • Simsiz Temperatur və Titrəmə Sensoru
  • Zigmo Gateway qəbuledicisi

Addım 3: Simsiz Vibrasiya və Temperatur Sensorları

Simsiz Vibrasiya və Temperatur Sensorları
Simsiz Vibrasiya və Temperatur Sensorları

Bu simsiz mesh şəbəkə arxitekturasından istifadə edərək 2 mil məsafəyə qədər öyünən Uzun Menzilli Sənaye IoT simsiz vibrasiya və temperatur sensoru. 16 bitlik Titrəmə və Temperatur sensoru olan bu sensor istifadəçi tərəfindən müəyyən edilmiş vaxt aralığında yüksək dəqiqlikli vibrasiya məlumatlarını ötürür. Aşağıdakı xüsusiyyətlərə malikdir:

  • ± 32 q aralığında Sənaye dərəcəli 3 oxlu Vibrasiya Sensoru
  • RMS, MAX və MIN g Titrəməni hesablayır
  • Aşağı keçid filtrindən istifadə edərək səs-küyün aradan qaldırılması
  • Tezlik Aralığı (Bant Genişliyi) 12, 800 Hz -ə qədər
  • Nümunə Hızı 25, 600 Hz -ə qədər
  • 2 mil simsiz şəbəkə ilə şifrələnmiş əlaqə
  • İşləmə temperaturu aralığı -40 ilə +85 ° C arasında
  • Divara və ya Maqnitə Quraşdırılmış IP65 Nominal Qoşun Visual Studio və LabVIEW üçün Nümunə Proqram
  • Xarici Prob Seçimi olan Vibrasiya Sensoru
  • 4 AA Batareyadan 500.000 -ə qədər ötürmə Çoxlu Ağ Geçidi və Modem Seçimləri mövcuddur

Addım 4: ESP32 AWS Firmware

AWS -ə qoşulmaq və məlumatları göndərməyə başlamaq üçün aşağıdakı addımlardan keçin

  • AWS kitabxanasını aşağıdakı Github deposundan yükləyin
  • repo klonlayın və AWS_IOT faylını Arduino qovluğunun kitabxana qovluğuna yerləşdirin

git klonu

İndi kodu keçək:

  • Bu tətbiqetmədə, WiFi məlumatlarını saxlamaq və IP parametrlərində gəzmək üçün əsir bir portaldan istifadə etdik. Əsir portal haqqında ətraflı məlumat üçün aşağıdakı təlimatlardan keçə bilərsiniz.
  • Əsir portal bizə Statik və DHCP parametrləri arasında seçim etmək imkanı verir. Sadəcə Statik IP, Alt Ağ Maskası, ağ geçidi və Simsiz Sensor Ağ Geçidi kimi etimadnamələrini daxil edin ki, həmin IP -də konfiqurasiya olunsun.
  • Mövcud WiFi şəbəkələrini və RSSI -ni göstərən bir siyahının olduğu bir veb səhifəsi yerləşdirilir. WiFi şəbəkəsini və şifrəni seçin və göndərin daxil edin. Etimadnamələr EEPROM -da, IP qəbulu isə SPIFFS -də saxlanılacaq. Bu barədə daha çox məlumatı bu təlimatda tapa bilərsiniz.

Addım 5: Simsiz Vibrasiya və Temperatur Sensorundan Sensor Məlumatlarının Alınması

Sensor Məlumatlarının Simsiz Vibrasiya və Temperatur Sensorundan Alınması
Sensor Məlumatlarının Simsiz Vibrasiya və Temperatur Sensorundan Alınması
Sensor Məlumatlarının Simsiz Vibrasiya və Temperatur Sensorundan Alınması
Sensor Məlumatlarının Simsiz Vibrasiya və Temperatur Sensorundan Alınması

Simsiz Temperatur və Vibrasiya Sensorlarından 54 baytlıq çərçivə alırıq. Bu çərçivə faktiki temperatur və Vibrasiya məlumatlarını əldə etmək üçün manipulyasiya olunur.

ESP32 -nin Serial istifadəsi üçün üç UART var

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

və 3 hardware Serial port

  • Serial
  • Serial 1
  • Serial 2

Əvvəlcə Hardware Serial başlıq faylını işə salın. Burada RX2 və TX2 aka istifadə edəcəyik. Seriya məlumatlarını əldə etmək üçün ESP32 kartının GPIO 16 və GPIO 17 pinləri.

#daxil edin

# RXD2 müəyyən 16 # TXD2 müəyyən 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // sancaqlar 16 rx2, 17 tx2, 19200 bps, 8 bit parite yoxdur 1 stop bit

Aşağıdakı addımlar, əsl sensor dəyərlərini əldə etməyinizə səbəb olacaq

  • İstilik, rütubət, batareya və digər sensor dəyərlərini saxlamaq üçün dəyişənlər yaradın
  • Avadanlıq seriyası üçün Rx, tx pin, baud dərəcəsi və parite bitlərini təyin edin
  • Əvvəlcə Serial1.available () istifadə edərək oxumaq üçün bir şeyin olub olmadığını yoxlayın.
  • 54 bayt çərçivə alacağıq.
  • Başlanğıc baytı olan 0x7E olub olmadığını yoxlayın.
  • Titrəmə məlumatları 3 ox üçün RMS dəyərindən, 3 ox üçün minimum dəyərlərdən, 3 ox üçün maksimum dəyərlərdən ibarətdir.
  • temperatur və batareya dəyərləri 2 bayt məlumatdan ibarət olacaq
  • sensorun adını, növünü, sensor versiyasını 1 bayt məlumatdan ibarət olacaq və oradan müvafiq ünvandan əldə etmək olar

if (Serial2.available ()) {Serial.println ("Serialı Oxu"); data [0] = Serial2.read (); gecikmə (k); if (data [0] == 0x7E) {Serial.println ("Paket əldə etdim"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); gecikmə (1); } if (data [15] == 0x7F) /////// recive məlumatların doğru olub olmadığını yoxlamaq üçün {if (data [22] == 0x08) //////// sensorun növündən əmin olun doğrudur {rms_x = ((uint16_t) (((data [24]) << 16) + ((data [25]) << 8) + (data [26]))/100); rms_y = ((uint16_t) (((məlumatlar [27]) << 16) + ((məlumatlar [28]) << 8) + (məlumatlar [29]))/100); rms_z = ((uint16_t) ((((məlumatlar [30]) << 16) + ((məlumatlar [31]) << 8) + (məlumatlar [32]))/100); int16_t max_x = ((uint16_t) ((((məlumatlar [33]) << 16) + ((məlumatlar [34]) << 8) + (məlumatlar [35]))/100); int16_t max_y = ((uint16_t) ((((məlumatlar [36]) << 16) + ((məlumatlar [37]) << 8) + (məlumatlar [38]))/100); int16_t max_z = ((uint16_t) ((((məlumatlar [39]) << 16) + ((məlumatlar [40]) << 8) + (məlumatlar [41]))/100);

int16_t min_x = ((uint16_t) (((məlumatlar [42]) << 16) + ((məlumatlar [43]) << 8) + (məlumatlar [44]))/100); int16_t min_y = ((uint16_t) (((məlumatlar [45]) << 16) + ((məlumatlar [46]) << 8) + (məlumatlar [47]))/100); int16_t min_z = ((uint16_t) (((məlumat [48]) << 16) + ((məlumat [49]) << 8) + (məlumat [50]))/100);

cTemp = (((((məlumat [51]) * 256) + məlumat [52])); üzən batareya = ((məlumat [18] * 256) + məlumat [19]); gərginlik = 0.00322 * batareya; Serial.print ("Sensor nömrəsi"); Serial.println (məlumatlar [16]); senseNumber = məlumatlar [16]; Serial.print ("Sensor Tipi"); Serial.println (məlumatlar [22]); Serial.print ("Firmware Versiyası"); Serial.println (məlumatlar [17]); Serial.print ("Selsi temperaturu:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("X oxunda RMS vibrasiyası:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("Y oxunda RMS vibrasiyası:"); Serial. çap (rms_y); Serial.println ("mg"); Serial.print ("Z oxunda RMS vibrasiyası:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("X oxunda minimum titrəmə:");

Serial. çap (min_x); Serial.println ("mg"); Serial.print ("Y oxunda minimum titrəmə:"); Serial. çap (min_y); Serial.println ("mg"); Serial.print ("Z oxunda minimum titrəmə:"); Serial. çap (min_z); Serial.println ("mg");

Serial.print ("ADC dəyəri:");

Serial.println (batareya); Serial.print ("Batareya Gərginliyi:"); Serial. çap (gərginlik); Serial.println ("\ n"); if (gərginlik <1) {Serial.println ("Batareyanı dəyişdirmə vaxtı"); }}} başqa {üçün (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); gecikmə (1); }}}}

Addım 6: AWS -ə qoşulun

AWS -ə qoşulmaq
AWS -ə qoşulmaq
  • AWSIoT hub ilə əlaqə qurmaq üçün AWS_IOT.h, WiFi.h başlıq fayllarını daxil edin
  • Siyasət adı olacaq Host Adınızı, Müştəri Kimliyinizi və əşyanın adı olacaq mövzu adını daxil edin

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

JSON -u saxlamaq üçün bir char dəyişənini yaradın, bu halda JSON -u saxlamaq üçün bir format yaratdıq

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

AWS_IOT sinifinin bir nümunəsini yaradın

AWS_IOT esp; // AWS_IOT sinifinin nümunəsi

İndi aşağıdakı metoddan istifadə edərək AWSIoT mərkəzinə qoşulun

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("AWS -ə qoşuldu"); gecikmə (1000);

əgər (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Abunəlik Müvəffəqiyyətli"); } başqa {Serial.println ("Abunə Olmadı, Şeyin Adını və Sertifikatlarını yoxlayın"); isə (1); }} başqa {Serial.println ("AWS bağlantısı uğursuz oldu, HOST ünvanını yoxlayın"); isə (1); }

gecikmə (2000);

}

sensor məlumatlarını hər 1 dəqiqədən bir dərc edin

if (tick> = 60) // hər 5 saniyədə bir mövzuya dərc edin {tick = 0; yük yükü [PAYLOAD_MAX_LEN]; snprintf (yük, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, gərginlik); Serial.println (faydalı yük); if (hornbill.publish (TOPIC_NAME, yük) == 0) {Serial.print ("Mesajı dərc edin:"); Serial.println (faydalı yük); } başqa {Serial.println ("Yayımlanmadı"); }} vTaskDelay (1000 / portTICK_RATE_MS); işarələyin ++;

Addım 7: AWS -də məlumatların görüntülənməsi

AWS -də məlumatların görüntülənməsi
AWS -də məlumatların görüntülənməsi
AWS -də məlumatların görüntülənməsi
AWS -də məlumatların görüntülənməsi
AWS -də məlumatların görüntülənməsi
AWS -də məlumatların görüntülənməsi
  • AWS hesabınıza daxil olun.
  • alətlər çubuğunun sol küncündə Xidmətlər sekmesini tapacaqsınız
  • Bu sekməni vurun və Əşyalar İnterneti başlığı altında IoT Core seçin.
  • QoS seçin və yox. abunəçilərə göndərilən mesajlar. Mövzu adını daxil edin.

Addım 8: Ümumi Kod

Ümumi kodu bu Github Deposunda tapa bilərsiniz.

Kreditlər

  • Arduino Json
  • Simsiz Temperatur və Nəmlik Sensorları
  • ESP32
  • PubSubClient

Tövsiyə: