Perangkat IoT dapat melakukan hal-hal keren, tetapi bagian penting dari persamaannya adalah bagaimana mereka berkomunikasi. Anda dapat mengaturnya dengan modul ESP-01.
Memiliki anggaran terbatas tidak berarti Anda tidak dapat mengerjakan proyek DIY tingkat lanjut. Jika Anda mencari modul WiFi yang kecil, terjangkau, dan nyaman untuk meningkatkan proyek IoT Anda, modul ESP-01 adalah pilihan tepat. Namun, mengintegrasikan modul seperti itu dengan protokol ringan seperti MQTT bisa jadi rumit, terutama jika Anda baru mengenal pengembangan IoT.
Memprogram board ESP-01 saja dapat menjadi tantangan dibandingkan dengan modul lain dari seri ESP8266. Namun mari kita membahas dasar-dasar dari semua penyiapan perangkat keras dan perangkat lunak yang Anda perlukan untuk mulai menggunakan modul serta cara menyiapkan MQTT dengan cara yang sederhana dan prosedural.
Mengenal Dewan
ESP8266 ESP-01 adalah modul WiFi kecil dan ringkas yang dilengkapi dengan chip ESP8266EX, yang merupakan SoC terintegrasi tinggi yang dirancang untuk aplikasi IoT.
Modul ini mencakup mikrokontroler nirkabel chip tunggal dengan tumpukan protokol TCP/IP dan mampu terhubung ke jaringan nirkabel atau bertindak sebagai titik akses. Modul ESP-01 juga dilengkapi dengan header 2x4 pin yang menyediakan akses ke pin GPIO, power and ground, dan antarmuka UART.
Menyiapkan Perangkat Keras
Modul ini sama sekali tidak ramah papan tempat memotong roti. Untuk kenyamanan, Anda dapat membeli papan ekstensi yang sudah dibuat sebelumnya atau hanya menggunakan cara lama — menggunakan kabel jumper dan papan tempat memotong roti.
Ada programmer khusus, Papan Modul Serial ESP8266, yang dapat memudahkan pengalaman pemrograman Anda. Jika Anda memilih untuk pergi rute ini, DIYHOBI memiliki tutorial praktis tentang cara mem-flash program ke modul ESP-01 menggunakan programmer (termasuk Adaptor Modul Konverter USB ke TTL CH340G).
Namun, Anda masih dapat memprogram modul menggunakan papan Arduino. Lihatlah diagram sirkuit di bawah ini untuk referensi.
Meskipun mungkin terlihat menggoda, kami umumnya tidak menyarankan untuk menghubungkan modul langsung ke pin 3.3v Arduino karena membutuhkan lebih banyak arus daripada yang disediakan pin. Sebagai gantinya, sambungkan Arduino 5V ke regulator tegangan 3.3V seperti LM1117/LD117, lalu nyalakan modul WiFi dari regulator.
Jangan menghubungkan VCC Dan CH_PD pin dari ESP ke 5V pin Arduino. Menghubungkan modul ke 5V listrik dapat merusaknya.
Semua kapasitor 10uF dan resistornya adalah a 1K penghambat.
Persyaratan Perangkat Lunak
Modul ESP-01 umumnya digunakan dengan platform Arduino. Dengan demikian, pengaturan perangkat lunaknya cukup sederhana, terutama jika Anda sudah familiar dengan Arduino C. Namun, jika Anda lebih familiar dengan Raspberry, ada banyak sekali Proyek IoT Raspberry Pi Anda dapat mencoba.
Ini adalah persyaratan dasar:
- Broker atau server MQTT (seperti Mosquitto atau CloudMQTT).
- Arduino IDE dengan pustaka inti ESP8266.
- Pustaka PubSubClient untuk Arduino.
Anda harus ingat bahwa memiliki server MQTT Anda sendiri secara lokal memberi Anda fleksibilitas dalam proyek Anda.
Memasang Perpustakaan yang Diperlukan
Pertama, unduh dan instal Arduino IDE di komputer Anda. Setelah diinstal, buka Arduino IDE, dan buka Mengajukan > Preferensi.
Dalam URL Pengelola Papan Tambahan, masukkan URL berikut:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Klik OKE untuk menutup jendela Preferensi.
Selanjutnya, pergi ke Peralatan > Papan > Manajer Dewan.
Lalu cari esp8266 dan instal paket papan esp8266—ini mencakup semua pustaka yang diperlukan untuk modul ESP-01.
Untuk menginstal pustaka PubSubClient, buka Sketsa > Sertakan Perpustakaan > Kelola Perpustakaan.
Pencarian untuk PubSubClient dan klik pada perpustakaan untuk menginstalnya.
Setelah Anda menginstal semua pustaka yang diperlukan, Anda dapat mulai memprogram modul ESP-01. Satu hal yang perlu diperhatikan, adalah Anda dapat menggunakan Wifi.h yang termasuk dalam perpustakaan, atau unduh ESPWifi.h perpustakaan dan sertakan dalam sketsa Anda.
Membangun Koneksi Antara ESP-01 dan MQTT Broker
Broker MQTT adalah server yang bertindak sebagai perantara antara klien MQTT. Ini memungkinkan klien untuk mengirim dan menerima pesan ke dan dari satu sama lain melalui model terbitkan-berlangganan.
Untuk menghubungkan modul ESP-01 Anda ke broker MQTT, Anda harus menentukan alamat IP broker dan nomor port dalam kode Anda. Anda juga perlu memberikan ID klien unik yang mengidentifikasi modul ESP-01 Anda kepada broker.
Pertama, sertakan perpustakaan yang diperlukan di bagian atas sketsa Anda
#termasuk <ESP8266WiFi.H>
#termasuk <PubSubClient.H>
Selanjutnya, tentukan detail koneksi WiFi dan MQTT.
constarang*ssd = "SSID_ANDA";
constarang* kata sandi = "KATA SANDI ANDA";
constarang* mqtt_server = "SERVER_MQTT_SERVER ANDA";
Jangan lupa untuk mengganti placeholder dengan detail koneksi WiFi dan MQTT Anda sendiri.
Setelah itu, buat klien WiFi dan sambungkan ke jaringan WiFi lokal Anda:
WiFiClient espClient;
ruang kosongsetup_wifi(){
penundaan (10);
WiFi.mulai (ssid, kata sandi);
ketika (WiFi.status() != WL_CONNECTED) {
penundaan (500);
}
}
Fungsi ini harus dipanggil di mempersiapkan() fungsi sketsa Anda.
Selanjutnya, Anda harus membuat klien MQTT dan terhubung ke broker MQTT Anda:
PubSubClient klien(espClient);
ruang kosongmenghubungkan kembali(){
ketika (!klien.terhubung()) {
jika (klien.sambungkan("ESP01", mqtt_user, mqtt_password)) {
// Berlangganan ke suatu topik
klien.berlangganan("tes/topik");
} kalau tidak {
penundaan (5000);
}
}
}
Setelah terhubung ke broker MQTT Anda, Anda dapat mulai menerbitkan dan berlangganan topik.
Menerbitkan Data Dari ESP-01 ke MQTT Broker
Sekarang setelah Anda berhasil menghubungkan modul ESP01 Anda ke broker MQTT, mari kita lihat bagaimana Anda dapat mempublikasikan data dari ESP-01 ke broker.
Untuk mempublikasikan data, gunakan client.publish() berfungsi untuk mempublikasikan pesan ke inTopic tema.
klien.terbitkan("dalam Topik", "Halo dari ESP-01");
Ini akan menerbitkan pesan "Halo dari ESP-01" ke inTopic tema.
Anda juga dapat mempublikasikan data sensor dari ESP-01 ke broker. Misalnya, jika Anda memiliki sensor suhu yang terhubung ke ESP-01 Anda, Anda dapat mempublikasikan data suhu ke broker seperti yang ditunjukkan di bawah ini.
mengambang suhu = 25.5;
Rangkaian suhuString = Rangkaian(suhu);
arang suhuChar[5];
suhuString.toCharArray(suhuChar, 5);
klien.terbitkan("Temp", suhuChar);
Ini akan mempublikasikan data suhu ke Suhu tema.
Data dapat dipublikasikan dalam satu lingkaran atau secara berkala, tergantung pada kebutuhan proyek Anda. Pastikan Anda tidak membanjiri broker dengan terlalu banyak data dan Anda menerbitkannya pada interval yang wajar.
Berlangganan Topik MQTT dan Menerima Data di ESP-01
Untuk berlangganan topik, gunakan klien.berlangganan() fungsi. Untuk kasus kami di bawah ini, klien berlangganan ke outTopic tema.
klien.berlangganan("keluarTopik");
Setelah berlangganan suatu topik, Anda dapat menerima pesan yang dipublikasikan ke topik tersebut menggunakan klien.loop() berfungsi di lingkaran() fungsi pada sketsa di bawah ini:
ruang kosonglingkaran(){
jika (!klien.terhubung()) {
menyambung kembali();
}
klien.lingkaran();
}
Ini akan terus memeriksa pesan baru dan menjalankan fungsi callback ketika pesan baru telah diterima.
Untuk menangani pesan yang diterima, tentukan fungsi panggilan balik seperti yang ditunjukkan di bawah ini:
ruang kosongpanggilan balik(arang* tema, byte* muatan, tidak ditandatangani int panjang){
// Cetak pesan yang diterima
Serial.mencetak("Pesan diterima pada topik: ");
Serial.mencetak(tema);
Serial.mencetak(". Pesan: ");
untuk (int saya=0;SayaSerial.mencetak((arang)muatan[Saya]);
}
Serial.println();
}
Fungsi ini akan dipanggil saat pesan baru diterima tentang topik langganan. Ini akan mencetak pesan yang diterima ke Serial Monitor.
Menggunakan Tingkat QoS (Quality of Service) dan Fitur Keamanan
Salah satu teknik terpenting yang digunakan dalam menangani permintaan adalah menggunakan level QoS (Quality of Service) untuk pesan MQTT Anda. Tingkat QoS menentukan bagaimana broker dan pelanggan harus menangani pesan Anda. Ada tiga level QoS: 0, 1, dan 2.
QoS level 0 adalah yang paling tidak dapat diandalkan, karena pesan dikirim hanya sekali dan tidak dijamin akan terkirim ke pelanggan. QoS level 1 lebih andal, karena pesan dikirim setidaknya satu kali dan dijamin akan dikirimkan ke pelanggan setidaknya sekali. QoS level 2 adalah yang paling andal, karena pesan dikirim tepat satu kali dan dijamin akan dikirimkan ke pelanggan tepat satu kali. Cara perangkat Anda berkomunikasi sejalan dengan yang lain masalah dan perbaikan keamanan Internet of Things (IoT) yang umum Anda ingin tetap di atas.
Untuk menggunakan level QoS, Anda dapat menentukan level yang diinginkan saat menerbitkan pesan menggunakan client.publish() fungsi:
klien.terbitkan("tema", "Halo Dunia!", 1);
Ini akan menerbitkan pesan Halo Dunia! ke tema topik dengan tingkat QoS 1.
Teknik canggih lainnya adalah menggunakan Surat Wasiat dan Wasiat Terakhir (LWT) pesan. Pesan LWT adalah pesan yang dikirim oleh broker ketika klien tiba-tiba terputus. Kami yakin ini penting untuk mendeteksi perangkat offline atau untuk memicu tindakan saat perangkat terputus.
Untuk menggunakan pesan LWT, Anda dapat menentukan pesan LWT saat terhubung ke broker menggunakan klien.setWill() fungsi:
klien.setWill("status", "luring", 1, BENAR);
Ini akan mengatur pesan LWT ke luring pada status topik dengan QoS level 1 dan tanda penahan diatur ke BENAR.
Bersiaplah untuk Proyek IoT Anda Berikutnya
Modul ESP-01 adalah solusi yang terjangkau dan ringkas untuk proyek IoT, dan menggunakannya dengan MQTT dapat membawa proyek Anda ke level berikutnya. Meskipun penyiapan awal mungkin menakutkan, manfaat MQTT, seperti komunikasi yang ringan dan skalabilitas tinggi, menjadikannya investasi yang berharga.