Daftar Isi:

Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT: 8 Langkah
Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT: 8 Langkah

Video: Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT: 8 Langkah

Video: Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT: 8 Langkah
Video: Cara Menghubungkan NodeMCU dengan MQTT | Tutorial Pemrograman Arduino dan IoT 2024, Juli
Anonim
Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT
Memulai AWS IoT Dengan Sensor Suhu Nirkabel Menggunakan MQTT

Di Instructables sebelumnya, kami telah melalui berbagai platform cloud seperti Azure, Ubidots, ThingSpeak, Losant dll. Kami telah menggunakan protokol MQTT untuk mengirim data sensor ke cloud di hampir semua platform cloud. Untuk informasi lebih lanjut tentang MQTT, kelebihan dan manfaatnya dibandingkan protokol HTTP, Anda dapat merujuk ke instruksi ini.

Dalam instruksi ini, kami akan memperbesar platform cloud lain dan paling akrab Amazon Web Services. Banyak dari Anda mungkin akrab dengan AWS alias Amazon Web Services dan fungsionalitas cloud yang disediakan oleh AWS. Ini telah menjadi inti dari pengembangan web selama bertahun-tahun. Dengan meningkatnya skala aplikasi IoT, AWS telah menghadirkan solusi AWSIoT. AWSIoT adalah solusi andal untuk menghosting aplikasi IoT kami.

Dengan mengikuti instruksi ini:

  • Anda akan dapat mengatur akun AWS untuk aplikasi IoT Anda
  • Anda akan dapat menghubungkan ESP32 ke inti AWS IoT
  • Kirim dan terima pesan menggunakan protokol MQTT dan
  • Visualisasikan data yang dikirim di AWS

Langkah 1: Menyiapkan Akun AWS

Menyiapkan akun AWS cukup mudah. Anda hanya perlu mengunggah beberapa sertifikat, melampirkan kebijakan, Daftarkan perangkat dan mulai menerima pesan data sensor di AWS.

Untuk mengatur akun AWS ikuti tutorial ini.

Langkah 2: Spesifikasi Perangkat Keras dan Perangkat Lunak

Spesifikasi Perangkat Keras dan Perangkat Lunak
Spesifikasi Perangkat Keras dan Perangkat Lunak

Spesifikasi Perangkat Lunak

Akun AWS

Spesifikasi Perangkat Keras

  • ESP32
  • Sensor Suhu dan Getaran Nirkabel
  • Penerima Gerbang Zigmo

Langkah 3: Sensor Getaran dan Suhu Nirkabel

Sensor Getaran dan Suhu Nirkabel
Sensor Getaran dan Suhu Nirkabel

Ini adalah sensor suhu dan getaran nirkabel IoT Industri Jarak Jauh, yang dapat dibanggakan hingga jarak 2 Mil menggunakan arsitektur jaringan mesh nirkabel. Menggabungkan sensor Getaran dan Suhu 16-bit, sensor ini mentransmisikan data getaran yang sangat akurat pada interval yang ditentukan pengguna. Ini memiliki fitur berikut:

  • Sensor Getaran 3-sumbu Kelas Industri dengan Rentang ± 32g
  • Menghitung RMS, MAX, dan MIN g Getaran
  • Penghapusan Kebisingan menggunakan Filter Low-pass
  • Rentang Frekuensi (Bandwidth) hingga 12.800 Hz
  • Tingkat Sampel hingga 25, 600Hz
  • Komunikasi Terenkripsi dengan Jangkauan Nirkabel 2 Mil
  • Kisaran Suhu Pengoperasian -40 hingga +85 °C
  • Perangkat Lunak Contoh Enklosur dengan Nilai IP65 yang Dipasang di Dinding atau Dipasang Magnet untuk Visual Studio dan LabVIEW
  • Sensor Getaran dengan Opsi Probe Eksternal
  • Hingga 500.000 Transmisi dari 4 Baterai AA Tersedia Banyak Pilihan Gateway dan Modem

Langkah 4: Firmware AWS ESP32

Untuk terhubung ke AWS dan mulai mengirim data, lakukan langkah-langkah berikut

  • Unduh perpustakaan AWS dari repositori Github berikut
  • mengkloning repo dan menempatkan file AWS_IOT ke folder perpustakaan direktori Arduino

git clone

Sekarang mari kita lihat kodenya:

  • Dalam aplikasi ini, kami telah menggunakan portal tawanan untuk menyimpan kredensial WiFi dan mengarahkan kursor melalui pengaturan IP. Untuk pengenalan terperinci tentang portal tawanan, Anda dapat mengikuti instruksi berikut.
  • Portal captive memberi kita pilihan untuk memilih antara pengaturan Statis dan DHCP. Cukup masukkan kredensial seperti IP Statis, Subnet Mask, gateway dan Wireless Sensor Gateway akan dikonfigurasi pada IP tersebut.
  • Halaman web sedang di-host di mana daftar yang menunjukkan jaringan WiFi yang tersedia dan RSSI di sana. Pilih jaringan WiFi dan kata sandi dan masukkan kirim. Kredensial akan disimpan di EEPROM dan pengaturan IP akan disimpan di SPIFFS. Lebih lanjut tentang ini dapat ditemukan di instruksi ini.

Langkah 5: Mendapatkan Data Sensor Dari Sensor Getaran dan Suhu Nirkabel

Mendapatkan Data Sensor Dari Sensor Getaran dan Suhu Nirkabel
Mendapatkan Data Sensor Dari Sensor Getaran dan Suhu Nirkabel
Mendapatkan Data Sensor Dari Sensor Getaran dan Suhu Nirkabel
Mendapatkan Data Sensor Dari Sensor Getaran dan Suhu Nirkabel

Kami mendapatkan bingkai 54-byte dari Sensor Suhu dan Getaran Nirkabel. Bingkai ini dimanipulasi untuk mendapatkan suhu aktual dan data Getaran.

ESP32 memiliki tiga UART yang tersedia untuk penggunaan Serial

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

dan 3 port serial perangkat keras

  • Serial
  • Serial1
  • Serial2

Pertama, inisialisasi file header Hardware Serial. Di sini kita akan menggunakan RX2 dan TX2 alias. GPIO 16 dan GPIO 17 pin papan ESP32 untuk mendapatkan data serial.

#termasuk

# tentukan RXD2 16 # tentukan TXD2 17

Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2); // pin 16 rx2, 17 tx2, 19200 bps, 8 bit tanpa paritas 1 stop bit

Langkah-langkah berikut akan membawa Anda lebih jauh untuk mendapatkan nilai sensor yang sebenarnya

  • Buat variabel untuk menyimpan suhu, kelembaban, baterai, dan nilai sensor lainnya
  • Atur Rx, tx pin, baud rate, dan bit paritas untuk serial perangkat keras
  • Pertama, periksa apakah ada sesuatu untuk dibaca menggunakan Serial1.available()
  • Kami akan mendapatkan bingkai 54 byte.
  • Periksa 0x7E yang merupakan byte awal.
  • Data getaran terdiri dari nilai RMS untuk 3 sumbu, nilai min untuk 3 sumbu, nilai maks untuk 3 sumbu.
  • suhu dan nilai baterai akan berisi 2 byte data
  • dapatkan nama sensor, jenis, versi sensor akan berisi 1 byte data dan dapat diperoleh dari alamat masing-masing di sana

if (Serial2.available()) { Serial.println("Baca Serial"); data[0] = Serial2.read(); penundaan (k); if(data[0]==0x7E) { Serial.println("Mendapat Paket"); while (!Serial2.available()); for (i = 1; i< 55; i++) { data = Serial2.read(); penundaan (1); } if(data[15]==0x7F) /////// untuk memeriksa apakah data yang diterima sudah benar { if(data[22]==0x08) //////// pastikan jenis sensor benar { 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])); baterai float = ((data[18] * 256) + data[19]); tegangan = 0,00322 * baterai; Serial.print("Nomor Sensor "); Serial.println(data[16]); senseNumber = data[16]; Serial.print("Jenis Sensor "); Serial.println(data[22]); Serial.print("Versi Firmware "); Serial.println(data[17]); Serial.print("Suhu dalam Celcius:"); Serial.print(cTemp); Serial.println("C"); Serial.print("Getaran RMS pada sumbu X:"); Serial.print(rms_x); Serial.println("mg"); Serial.print("Getaran RMS pada sumbu Y:"); Serial.print(rms_y); Serial.println("mg"); Serial.print("Getaran RMS pada sumbu Z:"); Serial.print(rms_z); Serial.println("mg");

Serial.print("Getaran minimum pada sumbu X:");

Serial.print(min_x); Serial.println("mg"); Serial.print("Getaran minimum pada sumbu Y:"); Serial.print(min_y); Serial.println("mg"); Serial.print("Getaran minimum pada sumbu Z:"); Serial.print(min_z); Serial.println("mg");

Serial.print("Nilai ADC:");

Serial.println(baterai); Serial.print("Tegangan Baterai:"); Serial.print(tegangan); Serial.println("\n"); if (tegangan < 1) { Serial.println("Waktunya Mengganti Baterai"); } } } else { untuk (i = 0; i< 54; i++) { Serial.print(data); Serial.print(", "); penundaan (1); } } } }

Langkah 6: Menghubungkan ke AWS

Menghubungkan ke AWS
Menghubungkan ke AWS
  • Sertakan file header AWS_IOT.h, WiFi.h untuk mengatur koneksi dengan hub AWSIoT
  • Masukkan Alamat Host Anda, ID Klien yang akan menjadi nama kebijakan, dan nama topik yang akan menjadi nama hal

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

Buat variabel char untuk menyimpan JSON Anda, dalam hal ini, kami telah membuat format untuk menyimpan JSON

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

Buat instance kelas AWS_IOT

AWS_IOT terutama; //Instance dari kelas AWS_IOT

Sekarang sambungkan ke hub AWSIoT menggunakan metode berikut

void reconnectMQTT(){ if(hornbill.connect(HOST_ADDRESS, CLIENT_ID)== 0) { Serial.println("Terhubung ke AWS"); penundaan (1000);

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

{ Serial.println("Berhasil Berlangganan"); } else { Serial.println("Gagal Berlangganan, Periksa Nama Barang dan Sertifikat"); sementara(1); } } else { Serial.println("Koneksi AWS gagal, Periksa Alamat HOST"); sementara(1); }

penundaan(2000);

}

mempublikasikan data sensor setelah setiap 1 menit

if(centang >= 60) // publikasikan ke topik setiap 5 detik { tick=0; muatan char[PAYLOAD_MAX_LEN]; snprintf(payload, PAYLOAD_MAX_LEN, format, senseNumber, msgCount++, rms_x, rms_y, rms_z, cTemp, voltase); Serial.println(muatan); if(hornbill.publish(TOPIC_NAME, payload) == 0) { Serial.print("Publikasikan Pesan:"); Serial.println(muatan); } else { Serial.println("Penerbitan gagal"); } } vTaskDelay(1000 / portTICK_RATE_MS); centang++;

Langkah 7: Memvisualisasikan Data di AWS

Memvisualisasikan Data di AWS
Memvisualisasikan Data di AWS
Memvisualisasikan Data di AWS
Memvisualisasikan Data di AWS
Memvisualisasikan Data di AWS
Memvisualisasikan Data di AWS
  • Masuk ke akun AWS Anda.
  • di sudut kiri bilah alat, Anda akan menemukan tab Layanan
  • Klik pada tab ini dan di bawah judul Internet of Things pilih IoT Core.
  • Pilih QoS dan no. dari pesan ke pelanggan. Masukkan nama topik.

Langkah 8: Kode Keseluruhan

Anda dapat menemukan kode keseluruhan di Repositori Github ini.

Kredit

  • Arduino Json
  • Sensor Suhu dan Kelembaban Nirkabel
  • ESP32
  • PubSubClient

Direkomendasikan: