Selamat datang di blog kami yang penuh semangat! Kali ini, kami akan mengajak Anda untuk memasuki dunia menakjubkan Internet of Things (IoT) dengan proyek yang menyenangkan dan bermanfaat. Proyek kami kali ini adalah “Arduino Water Level dengan NodeMCU.” Bersiaplah untuk merenungkan keajaiban teknologi ini karena kami akan menyajikan Anda penjelasan lengkap, tutorial kode, dan bahkan link referensi gambar rangkaian. Ayo, mari kita mulai!
Pendahuluan: Memahami Internet of Things (IoT)
Sebelum kita melangkah lebih jauh, mari kita singgahi sejenak pada istilah yang mungkin masih terdengar asing: Internet of Things (IoT). IoT adalah konsep di mana objek fisik, seperti perangkat, kendaraan, atau bahkan bangunan, dilengkapi dengan teknologi yang memungkinkannya terhubung dan bertukar data melalui internet. Dalam konteks proyek ini, kita akan menggabungkan teknologi Arduino dan NodeMCU untuk menciptakan sistem pemantauan tingkat air yang cerdas.
Apa itu Arduino dan NodeMCU?
Arduino adalah platform elektronik open-source yang dirancang untuk memudahkan pengembangan berbagai proyek elektronik. Arduino menggunakan mikrokontroler yang bisa diprogram untuk melakukan berbagai tugas sesuai keinginan Anda. Fleksibilitasnya dan dukungan komunitas yang besar membuat Arduino menjadi pilihan populer bagi para hobiis, pelajar, dan bahkan para profesional.
NodeMCU adalah platform pengembangan yang memanfaatkan chip ESP8266. ESP8266 merupakan modul Wi-Fi yang memungkinkan perangkat tersebut terhubung ke internet secara nirkabel. NodeMCU menyediakan kemampuan Arduino-like dengan tambahan dukungan Wi-Fi, yang sangat berguna dalam proyek IoT seperti yang akan kita lakukan kali ini.
Proyek Arduino Water Level dengan NodeMCU
Bahan-bahan yang Diperlukan:
- NodeMCU (ESP8266) board
- Sensor water level (Contoh: Sensor Ultrasonik HC-SR04)
- Kabel jumper
- Breadboard atau PCB untuk merakit rangkaian
- Akses internet (opsional, untuk mengirim data ke cloud)
Langkah 1: Menyambungkan Komponen
- Sambungkan sensor ultrasonik HC-SR04 dengan NodeMCU seperti di bawah ini:
- VCC Sensor ke 3.3V pada NodeMCU
- GND Sensor ke GND pada NodeMCU
- Trig Sensor ke pin D1 pada NodeMCU
- Echo Sensor ke pin D2 pada NodeMCU
- Pastikan semua koneksi terpasang dengan benar dan tidak ada kabel yang terhubung dengan pin yang salah sebelum melanjutkan ke langkah selanjutnya.
Langkah 2: Instalasi Board dan Library pada Arduino IDE
- Buka Arduino IDE pada komputer Anda.
- Pergi ke menu “File” > “Preferences”.
- Di dalam kolom “Additional Boards Manager URLs”, tambahkan URL berikut untuk menginstal board NodeMCU (ESP8266): http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Klik “OK” untuk menyimpan preferensi.
- Selanjutnya, pergi ke menu “Tools” > “Board” > “Boards Manager”.
- Cari “esp8266” menggunakan kotak pencarian.
- Klik pada “esp8266 by ESP8266 Community” dan klik “Install” untuk menginstal board NodeMCU.
- Setelah instalasi selesai, tutup Arduino IDE dan buka kembali.
Langkah 3: Menulis Kode Program
Sekarang, kita akan menulis kode program untuk mengambil data dari sensor ultrasonik dan mengirimkannya melalui Serial Monitor.
#include <ESP8266WiFi.h>
// Konfigurasi WiFi
const char* ssid = "Nama_Jaringan_WiFi";
const char* password = "Kata_Sandi_WiFi";
// Pin untuk sensor ultrasonik
const int trigPin = D1;
const int echoPin = D2;
void setup() {
Serial.begin(115200); // Memulai komunikasi serial dengan baud rate 115200
pinMode(trigPin, OUTPUT); // Mengatur pin Trig sebagai OUTPUT
pinMode(echoPin, INPUT); // Mengatur pin Echo sebagai INPUT
// Menghubungkan ke jaringan WiFi
WiFi.begin(ssid, password); // Memulai proses koneksi WiFi dengan SSID dan password yang sudah diberikan
while (WiFi.status() != WL_CONNECTED) { // Menunggu hingga koneksi WiFi berhasil terhubung
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi!"); // Jika koneksi WiFi berhasil, mencetak pesan "Connected to WiFi!" di Serial Monitor
}
void loop() {
// Baca data dari sensor
long duration, distance;
digitalWrite(trigPin, LOW); // Menyimpan pin Trig pada level LOW selama 2 mikrodetik
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Menyimpan pin Trig pada level HIGH selama 10 mikrodetik
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Kembali mengubah pin Trig menjadi LOW
duration = pulseIn(echoPin, HIGH); // Mengukur durasi pulsa dari pin Echo yang berlangsung saat sinyal kembali dari sensor
distance = duration * 0.034 / 2; // Menghitung jarak berdasarkan waktu pulsa dengan asumsi kecepatan suara adalah 34 cm/mikrodetik
// Kirim data melalui Serial Monitor
Serial.print("Tinggi air: ");
Serial.print(distance); // Mencetak nilai tinggi air yang terukur (dalam satuan cm) di Serial Monitor
Serial.println(" cm"); // Mencetak satuan centimeter di baris baru untuk pemisah
delay(2000); // Menunda proses selama 2 detik sebelum membaca data sensor lagi
}
Penjelasan Koding:
- Library
ESP8266WiFi
diimpor untuk menggunakan fitur WiFi pada NodeMCU. - Konfigurasi WiFi diatur dengan menyediakan nama jaringan WiFi (
ssid
) dan kata sandi WiFi (password
) yang sesuai dengan jaringan yang ingin Anda hubungkan. - Dalam fungsi
setup()
,Serial.begin(115200)
menginisialisasi komunikasi serial dengan baud rate 115200, sehingga data dari sensor dapat dikirimkan dan ditampilkan di Serial Monitor. - Pin
trigPin
danechoPin
dideklarasikan sebagai pin untuk mengontrol sensor ultrasonik.trigPin
diatur sebagai OUTPUT untuk mengirimkan sinyal ultrasonik, danechoPin
diatur sebagai INPUT untuk menerima kembali sinyal yang dipantulkan. - NodeMCU terhubung ke jaringan WiFi menggunakan
WiFi.begin(ssid, password)
. Selama proses koneksi berlangsung, program akan menunggu hingga status WiFi terhubung (WL_CONNECTED
) denganwhile
loop. Pesan “Connecting to WiFi…” akan dicetak di Serial Monitor selama proses ini. - Setelah terhubung ke WiFi, pesan “Connected to WiFi!” akan dicetak di Serial Monitor untuk menandakan bahwa NodeMCU berhasil terhubung.
- Dalam fungsi
loop()
, rangkaian akan terus membaca data dari sensor secara berulang. - Proses membaca data dimulai dengan mengirimkan sinyal ultrasonik. Pin Trig diatur ke LOW selama 2 mikrodetik, lalu diubah ke HIGH selama 10 mikrodetik, dan akhirnya kembali ke LOW. Durasi pulsa dari pin Echo diukur menggunakan
pulseIn()
, yang memberikan waktu yang dibutuhkan oleh sinyal untuk kembali ke sensor. - Jarak air dihitung berdasarkan durasi pulsa yang diukur. Dalam kode ini, diasumsikan bahwa kecepatan suara adalah 34 cm/mikrodetik (dapat bervariasi tergantung kondisi lingkungan). Jarak dihitung dengan mengalikan durasi pulsa dengan 0,034 (34 cm/mikrodetik) dan dibagi 2 karena sinyal pergi ke target dan kembali lagi.
- Hasil pengukuran tinggi air dalam satuan cm akan dicetak di Serial Monitor dengan pesan “Tinggi air: [nilai] cm”.
- Proses akan diulang setelah menunggu selama 2 detik (
delay(2000)
) sebelum membaca data sensor kembali.
Langkah 4: Mengunggah Kode ke NodeMCU
- Pastikan NodeMCU telah terhubung ke komputer melalui kabel USB.
- Pilih board NodeMCU (ESP8266) dengan pergi ke menu “Tools” > “Board” > “NodeMCU 1.0 (ESP-12E Module)”.
- Pilih port yang sesuai dengan NodeMCU pada menu “Tools” > “Port”.
- Klik tombol panah mengarah ke kanan untuk mengunggah kode ke NodeMCU.
Langkah 5: Mengamati Hasil
Setelah kode diunggah, Anda dapat membuka Serial Monitor pada Arduino IDE untuk melihat hasil pembacaan tinggi air dari sensor ultrasonik. Pastikan baud rate pada Serial Monitor disetel ke 115200.
Project diatas adalah sebuah rangkaian yang menggunakan sensor ultrasonik untuk membaca level ketinggian air. Dalam proyek ini, hasil pembacaan ditampilkan pada serial monitor di komputer. Jika Anda tertarik untuk membuat proyek water level IoT yang dapat mengirimkan hasil pembacaan secara langsung ke handphone, Anda dapat menyimak video di bawah ini:
Sekarang Anda telah berhasil membuat rangkaian water level menggunakan NodeMCU dan sensor ultrasonik. Anda dapat memodifikasi kode untuk menambahkan fitur tambahan, seperti mengirim data ke cloud atau menampilkan informasi menggunakan aplikasi berbasis web. Selamat mencoba!