Tentang KamiPedoman Media SiberKetentuan & Kebijakan PrivasiPanduan KomunitasPeringkat PenulisCara Menulis di kumparanInformasi Kerja SamaBantuanIklanKarir
2025 © PT Dynamo Media Network
Version 1.96.0
Konten dari Pengguna
Membuat Modul Pengukur Kelembaban Tanah dengan Sensor dan Mikrokontroler ESP32
30 Januari 2025 20:54 WIB
·
waktu baca 8 menitTulisan dari Saukat Muhammad tidak mewakili pandangan dari redaksi kumparan
ADVERTISEMENT
*) Muhammad Saukat, Mimin Muhaemin, Handarto
Laboratorium Alat dan Mesin Pertanian – Universitas Padjadjaran
ADVERTISEMENT
Tulisan ini merupakan kelanjutan dari tulisan sebelumnya mengenai bagaimana merancang suatu sistem kontrol untuk irigasi lahan pertanian yang dapat berjalan secara otomatis. Tulisan sebelumnya ada di [ sini ].
***
Membuat sistem seperti ini, tentu dimulai dari intinya dulu, yaitu mikrokontroler. Dimana mikrokontroler dipasangi sensor kelembaban tanah, dan membaca nilai data sensor ini. Data ini lalu dikirimkan ke sistem pengendali utama, untuk dianalisa apakah saat ini perlu dilakukan penyiraman atau tidak. Pengiriman data ini dilakukan melalui jaringan lokal (LAN) dengan protokol UDP. Proses ini akan dijabarkan secara lebih terinci pada bagian berikut.
Apa itu Mikrokontroler?
Menurut Wikipedia , mikrokontroler atau disebut juga pengendali mikro, merupakan suatu sistem mikroprosesor lengkap yang terkandung dalam sebuah cip.
ADVERTISEMENT
Mirip seperti mikroprosesor di dalam sebuah komputer (PC, Laptop), telepon pintar atau juga lainnya. Namun terdapat perbedaan di dalam jenis dan kegunaannya, dimana mikroprosesor untuk komputer dan telepon pintar, lebih kompleks dan mampu menangani banyak pekerjaan (multitasking dan multithreading). Sedangkan mikroprosesor di dalam pengendali mikro, biasanya hanya menangani proses yang spesifik dalam cakupan yang lebih sempit. Dan tentu saja, semua mikrokontroler, memiliki unit memori internal yang bisa diisi program untuk menangani proses-proses yang diinginkan.
Jenis mikrokontroler yang beredar di pasaran saat ini cukup beragam. Dua jenis yang cukup populer dengan dukungan open source program dari seluruh dunia adalah Arduino dan ESP32 . Kedua jenis mikrokontroler ini relatif murah dan dapat menggunakan lingkungan pembuatan program terintegrasi (IDE) yang sama, yaitu menggunakan IDE nya Arduino. Kedua jenis itupun memiliki tipe-tipe turunan yang beragam. Jenis lainnya juga ada, seperti ESP8266 , STM dan Raspberry Pi .
ADVERTISEMENT
Berikutnya kita akan bahas lebih jauh penggunaan ESP32 yang digunakan dalam project sistem irigasi otomatis ini. Kenapa menggunakan ESP32 ? Salah satu fitur dari jenis mikrokontroler ESP32 ini, selain cukup murah, adalah tersedianya modul WiFi bawaan. Sehingga untuk kebutuhan pengiriman data melalui jaringan sudah tersedia tanpa perlu modul tambahan lagi (Arduino menggunakan shield tambahan, kecuali jenis tertentu yang harganya lebih mahal).
ESP32 digunakan dalam dua macam modul dalam sistem irigasi otomatis yang dibangunsaat ini, yaitu: (1) Modul pembaca sensor kelembaban tanah; dan (2) Modul utama, sebagai pengendali sistem keseluruhan. Jumlah unit modul (1) dibuat sebanyak 3 buah, sedangkan untuk modul (2) dibuat hanya 1 buah saja.
Modul (1) sebanyak 3 buah akan mengirimkan data ke modul (2) melalui jaringan dengan protokol transmisi UDP. Skema rancangan sistem sudah dipaparkan pada bagian sebelumnya di [ sini ]. Berikut diberikan lagi skematikanya (Sistem sensor kelembaban tanah, ada pada bagian E pada gambar):
ADVERTISEMENT
ESP32 sebagai Modul Pembaca Sensor
Modul ini terdiri atas beberapa komponen, yaitu mikrokontroler ESP32 dan Sensor kapasitif kelembaban tanah. Untuk bisa membaca nilai sensor, diberikan program yang diisikan ke dalam memori internal ESP32. Nilai sensor ini dikirim kepada (modul) kontroler utama melalui jaringan dengan protokol UDP.
[a] Pemasangan sensor
Rincian informasi dari sensor yang digunakan dapat diperoleh dari situs web ini: https://www.keyestudio.com/products/keyestudio-soil-humidity-sensor-to-detect-soil-humidity-imported-ti-chip-for-arduino
Pada modul sensor, terdapat 4 buah Pin (kaki-kaki),
Penyambungan kaki-kaki pin ini kepada mikrokontroler sesuai skema berikut:
Dalam hal pin data yang digunakan, kita menggunakan data analog, sehingga pin A0 yang dihubungkan kepada mikrokontroler yaitu pin nomor 33 (sedangkan pin D0, tidak digunakan).
ADVERTISEMENT
Secara umum, perbedaan nilai digital dan nilai analog dapat dibaca pada referensi [ ini ]. Secara teknis, data analog dipilih, dimaksudkan untuk nantinya dilakukan perbandingan antara nilai hasil kadar air tanah dengan pengukuran di laboratorium dan nilai hasil pengukuran sensor, sehingga diperoleh persamaan kalibrasinya untuk penyesuaian. Nilai analog yang dimunculkan dari ESP32 memiliki rentang nilai angka 0-4095 yang mewakili tegangan kerja sistem yakni 0 - 3.3 Volt DC.
Pin A0 (pada sensor) dihubungkan pada pin 33 (pada ESP32). Pin 33 ESP32 ini, berperan sebagai ADC (Analog to Digital Converter), yang akan memberikan nilai analog sesuai dengan sinyal tegangan yang diterima dari sensor. Untuk lebih jelasnya dapat dibaca mengenai ADC di link berikut: https://elektrologi.iptek.web.id/apa-itu-adc-dan-fungsi-adc/
ADVERTISEMENT
[b] Pembuatan program
Program yang dimaksud adalah sekumpulan baris kode program. Penulisan kode pemrograman ini, nantinya akan diisikan pada cip mikrokontroler. Sehingga saat mikrokontroler dinyalakan, program akan langsung berjalan sesuai urutan dari baris-baris kode program tersebut.
Pemrograman mikrokontroler ESP32, menggunakan lingkungan pengembangan terintegrasi (IDE, Integrated Development Environment) Arduino, dengan bahasa pemrograman C++. Pengenalan bahasa program dengan IDE Arduino ini dapat diikuti pada link ini: https://www.bluino.com/2019/10/bahasa-pemrograman-arduino.html
Untuk IDE-nya sendiri dapat diperoleh secara gratis (open source) di [ sini ], yang dapat dijalankan melalui proses instalasi.
Penggunaan IDE Arduino untuk ESP32 membutuhkan sedikit penyesuaian, proses tersebut dapat diikuti tutorialnya di [ sini ].
Pembacaan sensor ini, mengikuti langkah-langkah algoritma pemrograman. Langkah-langkah tersebut secara garis besar, diberikan sebagai berikut:
ADVERTISEMENT
Dalam penulisan bahasa program Arduino (untuk ESP32), biasanya dibuat dalam beberapa blok program, yaitu
Bagian deklarasi awal diberikan sebagai berikut:
Bagian setup():
Bagian loop():
Bagian fungsi (perintah membaca sensor)
Bagian fungsi merupakan bagian program yang dipanggil untuk menjalankan serangkaian perintah yang dituliskan di dalam fungsi tersebut (mirip seperti juga fungsi dalam pengertian pelajaran matematika). Dalam contoh hal di atas, nama fungsi : baca_sensor_kt(), dipanggil dari baris 56 dengan menyertakan pengiriman nilai awal yang akan diproses.
[c] Kalibrasi nilai sensor
Kalibrasi adalah proses pemadanan suatu nilai yang belum diketahui acuannya, kepada nilai lain sebagai acuan. Dalam hal ini adalah nilai analog yang dibaca dari sensor dengan rentang nilai 0 - 4095, disandingkan dengan nilai kondisi kelembaban tanah dengan pengukuran di laboratorium. Biasanya pengukuran secara langsung dilakukan untuk lebih memastikan kesesuaian antara nilai hasil pengukuran sensor dengan nilai sebenarnya, sehingga diperoleh persamaan untuk mengeoreksi nilai analog sensor menjadi nilai kelembaban tanah dalam satuan persen (%).
ADVERTISEMENT
Berikut persamaan kalibrasi yang diperoleh berdasarkan perbandingannya kepada hasil pengukuran laboratorium. Persamaan ini bersifat spesifik pada sampel tanah yang diukur saat itu. Untuk sampel yang lain perlu dilakukan pengukuran tersendiri.
Hasil percobaan lainnya yang menggunakan data digital secara langsung (dengan pin board sensor D0), dapat dilihat dari penelitian ini : https://e-journal.unwiku.ac.id/teknik/index.php/JT/article/view/477
Pengiriman Data dalam Jaringan
Pengiriman data ini dilakukan melalui jaringan lokal (LAN, Local Area Network) dengan protokol UDP (User Diagram Protokol).
Saat ini sangat populer pemanfaatan internet dengan istilah IoT (Internet of Thing), walaupun secara teknis proses ini tidak mensyaratkan internet dan bisa diterapkan dalam jaringan lokal (LAN).
Untuk kebutuhan lokal, dengan cakupan area yang lebih kecil dan sedikit unit yang terlibat, penggunaan protokol UDP sudah cukup memadai. Salah satu penjelasan yang cukup luas mengenai UDP ada di artikel ini: https://it.telkomuniversity.ac.id/udp-adalah/ .
ADVERTISEMENT
Pada kasus penggunaan dengan banyak unit sensor, dan monitoring sistem secara lebih luas, biasanya menggunakan protokol MQTT (pemanfaatan IoT dengan MQTT akan coba dibahas pada kesempatan lain). Untuk informasi lebih jauh dapat membaca artikel ini: https://www.cloudcomputing.id/pengetahuan-dasar/apa-itu-protocol-mttq
Proses pengiriman data ini, karena menggunakan jaringan, maka perlu dukungan jaringan, dalam hal ini adalah tersedianya unit WiFi (Access Point). Bila jaringan sudah tersedia, maka perlu dilakukan pengaturan program, supaya unit ESP32 dapat terhubung pada jaringan yang ada.
[a] Menghubungkan ESP32 ke jaringan
Program yang sudah dibahas pada bagian sebelumnya, di dalam pemrograman ESP32, perlu ditambahkan library (paket program tambahan), yaitu WiFi.h. Library ini ditambahkan dengan fitur Manage Libraries... dari menu Tools dalam IDE Arduino.
Seteah itu, program dimodifikasi seperti berikut:
Pada bagian deklarasi ditambahkanpenyisipan header WiFi.h dan pada baris 11 dan 12, mesti diisikan informasi nama WiFi dan passwordnya. Bila ESP32 dijalankan akan memberikan informasi koneksi kepada WiFi yang ada.
ADVERTISEMENT
Sebagai informasi tambahan, dapat juga membaca artikel berikut: https://www.robotikindonesia.com/2020/02/menyambungkan-esp32-ke-wifi-menggunakan-arduino-ide.html
[b] Pengiriman data dengan protokol UDP
Setelah sensor kelembaban tanah bisa dibaca dan sistem juga terhubung ke jaringan. Sekarang kita lanjutkan dengan mengirimkan data tersebut ke sistem kendali utama, melalui protokol UDP.
Untuk bisa mengirimkan data dengan UDP, perlu tambahan program. Dalam program disisipkan pemanggilan header WiFiUDP.h, header sudah termasuk dalam library WiFi yang sudah ditambahkan pada bagian sebelumnya. Lalu lakukan inisialisasi untuk penggunaannya, seperti baris program berikut:
Program pada bagian deklarasi:
Beberapa baris yang perlu dicermati adalah, penyisipan header di baris 9. Konstanta alamat nomor IP pengiriman data, di baris 16 disebutkan nomor IP kontrol utama (nantinya) adalah "192.168.1.222", dengan nomor port: 4210. Dan deklarasi pendifinisian kelas program UDP, di baris 22: WiFiUDP udp;
ADVERTISEMENT
Untuk UDP sendiri tidak ada baris program khusus dibagian setup.
Sedangkan untuk pengiriman data nilai sensor secara berkala dilakukan di bagian loop, yaitu:
Pada baris 54, terdapat inisialisasi udp, dengan menyebutkan nomor IP alamat tujuan dan port-nya. Berikutnya adalah pengkondisian data, dengan penambahan kode nomor sensor (baris 57), lalu menggabungkannya dengan data nilaisensor hasil kalibrasi (baris 58) dan mengkonversikan tipe datanya dari string menjadi CharArray.
Data dikirimkan dengan perintah udp.sprintf(buf) dan selesai dengan udp.endPacket(), padabaris 61 dan 62.
Pengiriman data secara berkala dilakukan dengan pengaturan jeda, dengan perintah delay(10000), dalam nilai satuan milisekon.
*****
Demikian tulisan pada bagian ini diakhiri, dan akan bersambung lagi pada kesempatan berikutnya.