Мазмұны:

MQTT көмегімен сымсыз температура сенсоры бар AWS IoT -ті бастау: 8 қадам
MQTT көмегімен сымсыз температура сенсоры бар AWS IoT -ті бастау: 8 қадам

Бейне: MQTT көмегімен сымсыз температура сенсоры бар AWS IoT -ті бастау: 8 қадам

Бейне: MQTT көмегімен сымсыз температура сенсоры бар AWS IoT -ті бастау: 8 қадам
Бейне: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 2024, Қараша
Anonim
MQTT көмегімен сымсыз температура сенсоры бар AWS IoT -ті бастау
MQTT көмегімен сымсыз температура сенсоры бар AWS IoT -ті бастау

Бұрынғы нұсқаулықтарда біз Azure, Ubidots, ThingSpeak, Losant сияқты әр түрлі бұлтты платформалардан өттік. Біз бұлтты платформаның барлығында сенсорлық деректерді бұлтқа жіберу үшін MQTT хаттамасын қолдандық. MQTT, оның HTTP протоколынан артықшылықтары мен артықшылықтары туралы қосымша ақпарат алу үшін осы нұсқаулыққа жүгіне аласыз.

Бұл нұсқаулықта біз Amazon Web Services -тің тағы бір және ең танымал бұлтты платформасына енеміз. Сіздердің көпшілігіңіз Amazon Web Services деп аталатын AWS және AWS ұсынатын бұлт функциясын жақсы білетін шығарсыз. Бұл көптеген жылдар бойы веб -дамудың өзегі болды. IoT қосымшаларының масштабының ұлғаюымен AWS AWSIoT шешімін тапты. AWSIoT - бұл IoT қосымшаларын орналастырудың сенімді шешімі.

Нұсқауды орындау арқылы:

  • Сіз IoT қосымшасы үшін AWS есептік жазбасын орната аласыз
  • Сіз ESP32 AWS IoT ядросына қосыла аласыз
  • MQTT және HTTP протоколы арқылы хабарларды жіберу және алу
  • AWS -те жіберілген деректерді визуализациялаңыз

1 -қадам: AWS есептік жазбасын орнату

AWS есептік жазбасын орнату өте қарапайым. Сізге бірнеше сертификаттарды жүктеу, оған саясатты қосу, құрылғыны тіркеу және AWS -те сенсорлық деректер туралы хабарламаларды қабылдауды бастау қажет.

AWS есептік жазбасын орнату үшін осы оқулықты орындаңыз.

2 -қадам: Аппараттық құралдар мен бағдарламалық жасақтама сипаттамалары

Аппараттық құралдар мен бағдарламалық қамтамасыз ету ерекшеліктері
Аппараттық құралдар мен бағдарламалық қамтамасыз ету ерекшеліктері

Бағдарламалық қамтамасыз ету ерекшелігі

AWS есептік жазбасы

Жабдық сипаттамасы

  • ESP32
  • Сымсыз температура мен діріл сенсоры
  • Zigmo Gateway қабылдағышы

3 -қадам: сымсыз діріл мен температура сенсорлары

Сымсыз діріл мен температура сенсорлары
Сымсыз діріл мен температура сенсорлары

Бұл сымсыз торлы желінің архитектурасын қолдана отырып, 2 мильге дейінгі диапазонмен мақтанатын Long Range Industrial IoT сымсыз діріл мен температура сенсоры. 16 биттік діріл мен температура сенсоры бар бұл сенсор пайдаланушы анықтайтын аралықта жоғары дәл діріл деректерін жібереді. Оның келесі ерекшеліктері бар:

  • ± 32г диапазоны бар өндірістік 3-осьті діріл сенсоры
  • RMS, MAX және MIN g дірілін есептейді
  • Төменгі сүзгі көмегімен шуды жою
  • Жиілік диапазоны (өткізу қабілеттілігі) 12, 800 Гц дейін
  • Үлгі жиілігі 25, 600 Гц дейін
  • Сымсыз 2 мильдік диапазонмен шифрланған байланыс
  • Жұмыс температурасының диапазоны -40 -тан +85 ° C -қа дейін
  • Қабырғаға немесе магнитке бекітілген IP65 есептік корпусы Visual Studio мен LabVIEW үшін үлгі бағдарламалық қамтамасыз ету
  • Сыртқы зонд опциясы бар діріл сенсоры
  • 4 АА батареясынан 500 000 -ға дейін трансляциялар. Көптеген шлюздер мен модем опциялары бар

4 -қадам: ESP32 AWS микробағдарламасы

AWS -ке қосылу және деректерді жіберуді бастау үшін келесі қадамдарды орындаңыз

  • AWS кітапханасын келесі Github репозиторийінен жүктеңіз
  • репо клондау және AWS_IOT файлын Arduino каталогының кітапхана қалтасына орналастыру

git clone

Енді кодты қарастырайық:

  • Бұл қосымшада біз WiFi тіркелгі деректерін сақтау және IP параметрлері арқылы апару үшін тұтқын порталды қолдандық. Тұтқында отырған порталда егжей -тегжейлі таныстыру үшін сіз келесі нұсқаулықты өтуге болады.
  • Тұтқын порталы бізге статикалық және DHCP параметрлері арасында таңдау жасауға мүмкіндік береді. Статикалық IP, ішкі желі маскасы, шлюз және сымсыз сенсор шлюзі сияқты тіркелгі деректерін енгізіңіз, сол 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 ака қолданамыз. Сериялық деректерді алу үшін 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 түйреуішін, беру жылдамдығын және паритеттік биттерді орнатыңыз
  • Алдымен, Serial1.available () көмегімен оқылатын нәрсе бар -жоғын тексеріңіз.
  • Біз 54 байт кадрды аламыз.
  • Бастапқы байт болып табылатын 0x7E бар -жоғын тексеріңіз.
  • Діріл деректері 3 ось үшін RMS мәнінен, 3 ось үшін мин мәндерден, 3 ось үшін максималды мәндерден тұрады.
  • температура мен батареяның мәні 2 байтты құрайды
  • сенсордың атын, түрін, сенсорлық нұсқасын алу үшін 1 байт деректер болады және оларды тиісті адрестен алуға болады

if (Serial2.available ()) {Serial.println («Сериялық оқу»); деректер [0] = Serial2.read (); кешіктіру (k); if (деректер [0] == 0x7E) {Serial.println («Got Packet»); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); кешіктіру (1); } if (деректер [15] == 0x7F) /////// қайталанатын деректердің дұрыстығын тексеру үшін {if (data [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 («Микробағдарлама нұсқасы»); Serial.println (деректер [17]); Serial.print («Цельсий бойынша температура:»); Serial.print (cTemp); Serial.println («C»); Serial.print («X осінде RMS тербелісі:»); Serial.print (rms_x); Serial.println («мг»); Serial.print («Y осінде RMS тербелісі:»); Serial.print (rms_y); Serial.println («мг»); Serial.print («Z осінде RMS тербелісі:»); 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.println («\ n»); if (кернеу <1) {Serial.println («Батареяны ауыстыру уақыты»); }}} else {for (i = 0; i <54; i ++) {Serial.print (деректер ); Serial.print («,»); кешіктіру (1); }}}}

6 -қадам: AWS -ке қосылу

AWS -ке қосылу
AWS -ке қосылу
  • AWSIoT хабымен байланыс орнату үшін AWS_IOT.h, WiFi.h тақырып файлдарын қосыңыз.
  • Саясат атауы болатын хост адресін, клиент идентификаторын және зат атауы болатын тақырып атауын енгізіңіз

// ********* AWS тіркелгі деректері ************* // char HOST_ADDRESS = «a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com»; char CLIENT_ID = «ncdGatewayPolicy»; char TOPIC_NAME = «ncdGatewayThing»;

JSON сақтау үшін char айнымалысын жасаңыз, бұл жағдайда біз 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);

if (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; пайдалы жүктеме [PAYLOAD_MAX_LEN]; snprintf (пайдалы жүктеме, PAYLOAD_MAX_LEN, формат, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, кернеу); Serial.println (пайдалы жүктеме); if (hornbill.publish (TOPIC_NAME, пайдалы жүктеме) == 0) {Serial.print («Хабарламаны жариялау:»); Serial.println (пайдалы жүктеме); } else {Serial.println («Жарияланбады»); }} vTaskDelay (1000 / portTICK_RATE_MS); белгілеу ++;

7 -қадам: AWS -те деректерді визуализациялау

AWS -те деректерді визуализациялау
AWS -те деректерді визуализациялау
AWS -те деректерді визуализациялау
AWS -те деректерді визуализациялау
AWS -те деректерді визуализациялау
AWS -те деректерді визуализациялау
  • AWS есептік жазбаңызға кіріңіз.
  • құралдар тақтасының сол жақ бұрышында «Қызметтер» қойындысын табасыз
  • Осы қойындыны нұқыңыз және Интернет заттарының астында IoT Core таңдаңыз.
  • QoS таңдаңыз және жоқ. жазылушыларға хабарламалар. Тақырып атауын енгізіңіз.

8 -қадам: Жалпы код

Сіз жалпы кодты осы Github репозиторийінен таба аласыз.

Несие

  • Ардуино Джсон
  • Сымсыз температура мен ылғалдылық сенсорлары
  • ESP32
  • PubSubClient

Ұсынылған: