Агуулгын хүснэгт:

MQTT ашиглан утасгүй температур мэдрэгч бүхий AWS IoT -ийг эхлүүлэх нь: 8 алхам
MQTT ашиглан утасгүй температур мэдрэгч бүхий AWS IoT -ийг эхлүүлэх нь: 8 алхам

Видео: MQTT ашиглан утасгүй температур мэдрэгч бүхий AWS IoT -ийг эхлүүлэх нь: 8 алхам

Видео: MQTT ашиглан утасгүй температур мэдрэгч бүхий AWS IoT -ийг эхлүүлэх нь: 8 алхам
Видео: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Арваннэгдүгээр
Anonim
MQTT ашиглан утасгүй температур мэдрэгч бүхий AWS IoT -ийг эхлүүлэх
MQTT ашиглан утасгүй температур мэдрэгч бүхий AWS IoT -ийг эхлүүлэх

Өмнөх зааварчилгаанд бид Azure, Ubidots, ThingSpeak, Losant гэх мэт өөр өөр үүл платформуудыг туулсан бөгөөд бид бараг бүх үүлний платформ дээр мэдрэгчийн өгөгдлийг үүл рүү илгээх MQTT протоколыг ашиглаж ирсэн. MQTT, түүний HTTP протоколоос давуу болон давуу талуудын талаар нэмэлт мэдээлэл авахыг хүсвэл энэхүү зааварчилгааг ашиглаж болно.

Энэхүү зааварчилгааны хүрээнд бид Amazon Web Services -ийн өөр нэг хамгийн алдартай үүл платформыг үзэх болно. Та нарын ихэнх нь AWS буюу Amazon Web Services буюу AWS -ийн үүлний функцийг мэддэг байх. Энэ нь олон жилийн турш вэб хөгжүүлэлтийн гол цөм болсон юм. IoT програмын цар хүрээ нэмэгдэж байгаатай холбогдуулан AWS нь AWSIoT -ийн шийдлийг гаргаж ирэв. AWSIoT бол манай IoT програмыг байршуулах найдвартай шийдэл юм.

Энэхүү зааварчилгааны дагуу:

  • Та IoT програмдаа AWS данс тохируулах боломжтой болно
  • Та ESP32 -ийг AWS IoT цөмтэй холбох боломжтой болно
  • MQTT болон HTTP протокол ашиглан мессеж илгээх, хүлээн авах
  • AWS дээр илгээсэн өгөгдлийг төсөөлөх

Алхам 1: AWS данс тохируулах

AWS данс нээх нь маш хялбар юм. Та хэд хэдэн гэрчилгээ байршуулж, түүнд бодлого хавсаргаж, төхөөрөмжийг бүртгүүлж, мэдрэгчийн өгөгдлийг AWS дээр хүлээн авч эхлэх хэрэгтэй.

AWS данс тохируулахын тулд энэ зааврыг дагана уу.

Алхам 2: Техник хангамж ба програм хангамжийн үзүүлэлтүүд

Техник хангамж ба програм хангамжийн үзүүлэлтүүд
Техник хангамж ба програм хангамжийн үзүүлэлтүүд

Програм хангамжийн тодорхойлолт

AWS данс

Тоног төхөөрөмжийн тодорхойлолт

  • ESP32
  • Утасгүй температур ба чичиргээ мэдрэгч
  • Zigmo гарц хүлээн авагч

Алхам 3: Утасгүй чичиргээ ба температур мэдрэгч

Утасгүй чичиргээ ба температур мэдрэгч
Утасгүй чичиргээ ба температур мэдрэгч

Энэ бол утасгүй сүлжээний сүлжээний архитектурыг ашиглан 2 милийн зайтай, урт хугацааны үйлдвэрлэлийн IoT утасгүй чичиргээ ба температур мэдрэгч юм. 16 битийн чичиргээ ба температур мэдрэгчийг агуулсан энэхүү мэдрэгч нь чичиргээний өгөгдлийг хэрэглэгчийн тодорхойлсон интервалаар дамжуулдаг. Энэ нь дараахь онцлог шинж чанартай байна.

  • Үйлдвэрийн зэрэглэлийн 3 тэнхлэгтэй чичиргээ мэдрэгч нь ± 32g хүрээтэй
  • RMS, MAX, MIN g Vibration -ийг тооцоолно
  • Бага нэвтрүүлэх шүүлтүүр ашиглан дуу чимээг арилгах
  • Давтамжийн хүрээ (зурвасын өргөн) 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, дэд сүлжээний маск, гарц, утасгүй мэдрэгчийн гарц зэрэг итгэмжлэлийг оруулна уу.
  • Wi -Fi сүлжээ болон 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.ben эхлэх (115200, SERIAL_8N1, RXD2, TXD2); // зүү 16 rx2, 17 tx2, 19200 bps, 8 бит нь паритетгүй 1 зогсолтын бит

Дараахь алхамууд нь мэдрэгчийн жинхэнэ утгыг олж авах болно

  • Температур, чийгшил, батерей болон бусад мэдрэгчийн утгыг хадгалах хувьсагч үүсгэх
  • Тоног төхөөрөмжийн сериалын Rx, tx pin, baud rate болон parity bit -ийг тохируулна уу
  • Эхлээд 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 (өгөгдөл [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 ("Firmware хувилбар"); Serial.println (өгөгдөл [17]); Serial.print ("Цельсийн температур:"); Цуваа.хэвлэх (cTemp); Serial.println ("C"); Serial.print ("X тэнхлэг дэх RMS чичиргээ:"); Цуваа.хэвлэх (rms_x); Serial.println ("мг"); Serial.print ("Y тэнхлэг дэх RMS чичиргээ:"); Цуваа.хэвлэх (rms_y); Serial.println ("мг"); Serial.print ("Z тэнхлэг дэх RMS чичиргээ:"); Цуваа.хэвлэх (rms_z); Serial.println ("мг");

Serial.print ("X тэнхлэг дэх хамгийн бага чичиргээ:");

Цуваа.хэвлэх (мин_х); Serial.println ("мг"); Serial.print ("Y тэнхлэг дэх хамгийн бага чичиргээ:"); Цуваа.хэвлэх (мин_y); Serial.println ("мг"); Serial.print ("Z тэнхлэг дэх хамгийн бага чичиргээ:"); Цуваа.хэвлэх (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 hub -тай холбоо тогтоохын тулд AWS_IOT.h, WiFi.h толгой файлуудыг оруулна уу.
  • Бодлогын нэр болох Хостын хаяг, Үйлчлүүлэгчийн ID, зүйлийн нэр болох сэдвийн нэрийг оруулна уу

// ********* 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 төвд холбогдоно уу

хүчингүй reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("AWS -д холбогдсон"); саатал (1000);

хэрэв (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Амжилттай бүртгүүлэх"); } өөр {Serial.println ("Захиалга амжилтгүй болсон, зүйлийн нэр, гэрчилгээг шалгана уу"); байхад (1); }} өөр {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 (ачаалал); } өөр {Serial.println ("Нийтэлж чадсангүй"); }} vTaskDelay (1000 / портTICK_RATE_MS); тэмдэглэгээ ++;

Алхам 7: AWS дээр өгөгдлийг дүрслэн харуулах

AWS дээр өгөгдлийг дүрслэн харуулах
AWS дээр өгөгдлийг дүрслэн харуулах
AWS дээр өгөгдлийг дүрслэн харуулах
AWS дээр өгөгдлийг дүрслэн харуулах
AWS дээр өгөгдлийг дүрслэн харуулах
AWS дээр өгөгдлийг дүрслэн харуулах
  • AWS данс руугаа нэвтэрнэ үү.
  • Хэрэгслийн самбарын зүүн буланд та "Үйлчилгээ" табыг олох болно
  • Энэ таб дээр дарж, Интернетийн зүйлийн гарчгийн доор IoT Core -ийг сонгоно уу.
  • QoS -ийг сонгоно уу, үгүй. захиалагчдад илгээсэн мессежүүд. Сэдвийн нэрийг оруулна уу.

Алхам 8: Ерөнхий код

Та энэ кодыг Github репозитороос олж болно.

Зээл

  • Ардуино Жсон
  • Утасгүй температур ба чийгшил мэдрэгч
  • ESP32
  • PubSubClient

Зөвлөмж болгож буй: