SISTEM DETEKSI OBJEK BERBASIS ARDUINO UNO DAN SISTEM KOMUNIKASI DUA ARAH BERBASIS ESP32 DAN PROTOKOL MQTT
Disusun Oleh:
BAB I
PENDAHULUAN
1.1 Latar Belakang
Perkembangan teknologi komputasi dan mikroelektronika saat ini telah mendorong adopsi sistem cerdas dalam berbagai aspek kehidupan manusia. Dua konsep utama yang terus berkembang adalah sistem otomatisasi lokal berbasis sensor dan sistem komunikasi nirkabel berbasis Internet of Things (IoT). Melalui pemahaman yang mendalam mengenai Organisasi dan Arsitektur Komputer, mahasiswa Teknik Informatika dapat menganalisis bagaimana instruksi program dieksekusi secara efisien oleh prosesor pada unit mikrokontroler.
Laporan ini membahas implementasi dua sistem IoT yang dikembangkan oleh Kelompok 1. Sistem pertama adalah sistem deteksi objek lokal berbasis Arduino Uno. Sistem ini memanfaatkan sensor ultrasonik HC-SR04 untuk membaca jarak, motor servo sebagai aktuator fisik, dan LED sebagai indikator visual. Keunggulan teknis sistem pertama ini terletak pada penerapan algoritma timer non-blocking berbasis fungsi 'millis()'. Pendekatan non-blocking sangat penting dalam arsitektur komputer untuk menghindari pemborosan siklus clock CPU akibat instruksi tunggu (blocking delay) yang biasa ditimbulkan oleh fungsi 'delay()'.
Sistem kedua adalah arsitektur IoT dua arah berbasis ESP32 dan protokol MQTT (Message Queuing Telemetry Transport). Dalam sistem ini, ESP32 berperan sebagai node sensor nirkabel yang membaca suhu dan kelembaban udara melalui sensor DHT22, kemudian mengirimkannya dalam format JSON ke broker publik (broker.emqx.io) pada topik 'publish'. Di saat yang bersamaan, ESP32 juga dapat menerima perintah kontrol eksternal dari aplikasi pusat kendali MQTTX pada topik 'led' secara real-time. Kombinasi kedua sistem ini memberikan gambaran komparatif yang komprehensif antara sistem kontrol waktu nyata lokal dan sistem terdistribusi berbasis cloud.
1.2 Rumusan Masalah
Bagaimana arsitektur dan konfigurasi pin sistem deteksi objek ultrasonik berbasis Arduino Uno dengan aktuator motor servo dan LED?
Bagaimana cara kerja algoritma non-blocking menggunakan fungsi 'millis()' pada Arduino Uno untuk mengendalikan beberapa periferal secara simultan?
Bagaimana struktur komunikasi data dua arah berbasis protokol MQTT pada perangkat ESP32 dengan sensor DHT22 dan aktuator LED?
Bagaimana mengonfigurasi MQTTX sebagai pusat kendali untuk memantau data sensor serta mengontrol LED pada ESP32 menggunakan payload plaintext maupun JSON?
1.3 Tujuan Laporan
Mendokumentasikan konfigurasi perangkat keras dan pemrograman sistem deteksi objek berbasis Arduino Uno secara presisi.
Menganalisis efisiensi algoritma multi-tasking non-blocking menggunakan penunjuk waktu 'millis()' sebagai pengganti 'delay()'.
Menjelaskan mekanisme pertukaran data dua arah menggunakan protokol MQTT dengan arsitektur publish dan subscribe.
Menyediakan panduan pengaturan MQTTX untuk visualisasi data sensor DHT22 dan pengiriman pesan perintah kontrol ke ESP32.
1.4 Manfaat Penulisan
Penulisan laporan ini diharapkan memberikan manfaat akademis dan praktis. Secara akademis, laporan ini memperjelas keterkaitan teori arsitektur komputer (seperti manajemen interupsi, polling, dan siklus instruksi) dengan penerapannya pada mikrokontroler AVR dan chip Tensilica Xtensa pada ESP32. Secara praktis, rancangan sistem ini dapat menjadi acuan dalam pengembangan sirkuit otomatisasi industri skala kecil atau media pembelajaran sistem tertanam terdistribusi.
BAB II
TINJAUAN PUSTAKA
2.1 Dasar Teori
Sistem mikrokomputer modern tersusun atas unit pemroses pusat (CPU), memori, serta modul masukan/keluaran (I/O). Pada mikrokontroler tipe sistem chip tunggal (system-on-chip/SoC) seperti ESP32 atau papan pengembangan seperti Arduino Uno, seluruh modul tersebut terintegrasi dalam satu papan sirkuit terpadu. Pengolahan data dari sensor fisik ke sistem kontrol lokal maupun jaringan global memerlukan pemahaman mendalam tentang prinsip-prinsip komunikasi data.
Dalam komunikasi data IoT, protokol MQTT menempati posisi yang sangat penting. MQTT dirancang khusus untuk kondisi bandwidth rendah dan latensi tinggi dengan mengandalkan sebuah 'broker' sebagai mediator pesan. Alur kerjanya terbagi menjadi dua peran utama: 1) Publish, yaitu aksi mengirim pesan dari pengirim ke topik tertentu di broker; dan 2) Subscribe, yaitu mendaftarkan diri pada broker untuk menerima pesan dari topik tertentu secara real-time. Melalui pola ini, perangkat IoT tidak perlu menjaga koneksi peer-to-peer secara langsung, sehingga sangat menghemat daya dan meningkatkan skalabilitas sistem jaringan.
2.2 Komponen
Berikut adalah rincian komponen perangkat keras (hardware) dan perangkat lunak (software) yang digunakan dalam implementasi kedua sistem simulasi berbasis Wokwi ini:
BAB III
PEMBAHASAN
3.1 Penjelasan simulasi
A. Sistem Deteksi Jarak Lokal Berbasis Arduino Uno
Gambar 1. Rangkaian Arduino dan alat-alat lain
Sistem deteksi objek lokal dikembangkan menggunakan papan pengembang Arduino Uno sebagai pusat kendali. Modul sensor jarak ultrasonik HC-SR04 dihubungkan secara elektrik ke pin digital mikrokontroler, dengan pin 'Trigger' dihubungkan ke pin digital 7 dan pin 'Echo' dihubungkan ke pin digital 6. Output dari sistem ini berupa aktuator motor servo pada pin digital 9 dan LED indikator visual pada pin digital 4.
Alur kerja sirkuit ini didasarkan pada interval waktu non-blocking (timer berbasis millis) untuk memastikan bahwa eksekusi loop utama program tidak terganggu oleh jeda waktu (delay). Sensor HC-SR04 diprogram untuk melakukan pembacaan setiap 60 milidetik. Pembacaan dilakukan dengan mengirimkan pulsa HIGH pada pin Trigger selama 10 mikrodetik. Durasi waktu perjalanan pulsa suara balik dibaca menggunakan fungsi 'pulseIn' dengan batas timeout 30.000 mikrodetik. Konversi dari waktu perjalanan pulsa menjadi jarak fisik menggunakan persamaan fisis:
Jarak = (Durasi × 0.0343) / 2
Di mana konstanta 0.0343 merepresentasikan kecepatan rambat gelombang suara di udara dalam satuan cm/μs. Hasil perhitungan dibagi dua karena pulsa menempuh perjalanan bolak-balik dari pemancar menuju permukaan objek lalu memantul kembali ke penerima. Jika jarak objek terdeteksi berada di antara 0 cm hingga batas aktif 20 cm, maka status 'objekTerdeteksi' bernilai 'true'. Kondisi ini memicu motor servo untuk bergerak memutar bolak-balik antara posisi sudut minimal 20° dan sudut maksimal 160° dengan interval pembaruan 15 milidetik (setiap pembaruan merubah posisi sudut sebanyak 2°), serta membuat LED berkedip secara periodik setiap 250 milidetik. Sebaliknya, bila tidak ada objek yang berada di dalam batas jangkauan (≤ 20 cm), status LED langsung diset 'LOW' dan motor servo secara dinamis kembali ke posisi awalnya (20°).
B. Sistem Komunikasi Dua Arah Berbasis ESP32 dan MQTT
Gambar 2. Rangkaian ESP32 dan alat-alat lain
Sistem komunikasi IoT dua arah memanfaatkan papan pengembang ESP32 yang terhubung ke jaringan nirkabel lokal Wi-Fi. Dalam simulasi ini, ESP32 dikonfigurasi untuk terhubung ke jaringan virtual 'Wokwi-GUEST' tanpa kata sandi. Perangkat keras sensor DHT22 dihubungkan ke pin digital 15 ESP32 untuk mendeteksi suhu dan kelembaban udara. Selain itu, LED indikator eksternal dihubungkan ke pin digital 2 sebagai target kontrol kendali.
ESP32 menjalankan program berbasis MicroPython yang menggunakan pustaka 'umqtt.simple' untuk mengelola koneksi soket ke broker MQTT publik 'broker.emqx.io' pada port 1883. Identifikasi unik klien diatur menggunakan Client ID 'wokwi-micropython'. Alur kerja utama sistem terbagi menjadi dua mekanisme simultan:
Monitoring Lingkungan (Publish): Secara periodik setiap 1 detik, ESP32 menginstruksikan sensor DHT22 untuk melakukan pengukuran fisik. Data suhu (°C) dan kelembaban (%) dibaca secara digital, kemudian disusun ke dalam sebuah variabel dictionary. Dictionary tersebut dikonversi menjadi representasi string dalam format JSON (misalnya, {"temperature": 24.5, "humidity": 60.0}) melalui fungsi 'ujson.dumps()' sebelum dipublikasikan ke broker EMQX pada topik bernama 'publish'.
Penerimaan Kontrol (Subscribe): Pada waktu yang bersamaan, ESP32 berlangganan (subscribe) secara aktif ke topik bernama 'led'. Ketika broker meneruskan paket data dari topik tersebut, fungsi 'control_callback()' dipicu untuk membaca isi pesan (payload). Logika pemrograman callback dirancang sangat fleksibel dengan menangani dua format pesan: Format Plaintext ('on' / 'off', 'led:on' / 'led:off') dan Format terstruktur JSON (contoh payload: {"device": "led", "action": "on"}). Ketika sinyal 'on' terdeteksi, pin LED diset HIGH (led.value(1)). Sebaliknya, sinyal 'off' diset LOW (led.value(0)).
C. Prosedur Pengujian dan Pengaturan MQTTX
Aplikasi klien MQTTX bertindak sebagai pusat pemantauan dan kontrol dalam sistem IoT ini. Berikut adalah langkah-langkah sistematis konfigurasi koneksi dan pengujian:
1. Inisiasi Koneksi: Buat profil koneksi baru di MQTTX dengan parameter Host 'mqtt://broker.emqx.io' dan Port '1883'. Pastikan Client ID dibiarkan sesuai nilai acak default bawaan (misalnya 'mqttx_3ba6bb31') dan TIDAK diubah menjadi 'wokwi-micropython' untuk mencegah terjadinya kegagalan koneksi (connection crash) akibat bentrok identitas di broker. Username, Password, dan SSL/TLS dinonaktifkan.
2. Pemantauan Sensor: Lakukan subscribe ke topik 'publish'. Setelah berhasil terhubung, MQTTX akan menerima paket data suhu dan kelembaban dalam bentuk pesan JSON secara berkala dan menampilkannya di panel obrolan.
3. Pengiriman Perintah (Kontrol LED): Di area pengiriman pesan (Publish panel), atur target topik ke 'led'. Atur format pesan ke 'Plaintext' dan kirimkan string 'on' untuk menyalakan LED fisik di simulator, atau 'off' untuk mematikannya. Selain itu, pengujian juga dapat dilakukan dengan mengubah format payload menjadi 'JSON' dan mengirimkan instruksi berupa '{"device": "led", "action": "on"}' atau '{"device": "led", "action": "off"}' yang akan langsung diparsing oleh fungsi callback ESP32.
3.2 Progam
Berikut adalah kode program lengkap yang digunakan dalam proyek implementasi sistem IoT ini. Kode program ditulis dan didefinisikan secara presisi untuk masing-masing mikrokontroler.
Kode Sumber 1. Pemrograman Non-Blocking Arduino Uno (C++)
Kode Sumber 2. Pemrograman Komunikasi ESP32 & MQTT (MicroPython)
BAB IV
PENUTUP
Kesimpulan
Berdasarkan hasil perancangan, implementasi program, dan simulasi yang telah dilaksanakan, dapat ditarik beberapa kesimpulan akademis sebagai berikut:
1. Sistem deteksi objek lokal berbasis Arduino Uno berhasil diimplementasikan dengan memanfaatkan sensor HC-SR04, motor servo, dan LED. Logika non-blocking menggunakan fungsi 'millis()' terbukti efektif menggantikan fungsi 'delay()' yang bersifat blocking. Dengan demikian, prosesor dapat membagi siklus kerjanya untuk menggerakkan servo (setiap 15 ms), mengedipkan LED (setiap 250 ms), dan membaca jarak sensor (setiap 60 ms) secara simultan.
2. Sistem komunikasi IoT dua arah berbasis ESP32 berhasil dibangun menggunakan protokol MQTT. Data fisik lingkungan berupa suhu dan kelembaban berhasil diukur oleh sensor DHT22 dan dikirimkan secara periodik setiap 1 detik dalam format data JSON yang terstruktur (menggunakan 'ujson.dumps') ke topik 'publish' pada broker EMQX.
3. Mekanisme subscribe pada topik 'led' dan eksekusi callback pada ESP32 berhasil menerima instruksi dari aplikasi pusat kendali MQTTX. Sistem secara adaptif mengenali input perintah baik dalam format Plaintext standar ('on'/'off') maupun format JSON terstruktur ('{"device": "led", "action": "on"}') untuk memicu perubahan tingkat tegangan (HIGH/LOW) pada pin LED.
Saran
Untuk pengembangan dan penelitian sistem lebih lanjut, beberapa saran konstruktif yang dapat diajukan adalah:
1. Aspek Keamanan: Mengingat broker EMQX publik (broker.emqx.io) tidak mensyaratkan otentikasi kata sandi dan enkripsi data, pengembangan selanjutnya disarankan menggunakan broker privat yang mendukung protokol MQTTS (MQTT over SSL/TLS) serta otentikasi username/password untuk mencegah penyadapan data sensor dan pengambilalihan kontrol aktuator.
2. Antarmuka Pengguna: Integrasi dengan platform visualisasi (dashboard) seperti Node-RED, Blynk, atau Grafana dapat diterapkan untuk menyajikan data sensor secara grafis dan menyediakan tombol kontrol interaktif yang lebih ramah pengguna (user-friendly) dibandingkan antarmuka terminal MQTTX.
3. Skalabilitas Sistem: Pemanfaatan mode deep-sleep pada ESP32 dapat dikaji untuk mengoptimalkan efisiensi konsumsi energi, khususnya ketika sistem diimplementasikan pada perangkat bertenaga baterai di lapangan.
DAFTAR PUSTAKA
EMQX Team. (2024). MQTTX: Cross-platform MQTT 5.0 Desktop Client. EMQ Technologies Co., Ltd. Retrieved from https://mqttx.app/
Kurniawan, A. (2020). IoT Projects with ESP32 and MicroPython: Learning System-on-Chip Programming. Jakarta: Penerbit Informatika.
Stallings, W. (2018). Computer Organization and Architecture: Designing for Performance (10th ed.). Boston: Pearson Education.
Tanenbaum, A. S., & Austin, T. (2013). Structured Computer Organization (6th ed.). Boston: Pearson.
Wokwi. (2024). Wokwi: Embedded System Simulator Online. Retrieved from https://wokwi.com/
LAMPIRAN
Link Video : https://drive.google.com/file/d/1_4ZpnuIB_nOG-MnX3LqHAPLYgpz02e_z/view?usp=sharing
Tidak ada komentar:
Posting Komentar