Pada tulisan ini, saya akan membagikan sebuah tutorial project sederhana berbasis Arduino. Kita akan membuat sebuah alat pengukur suhu ruangan dengan menggunakan sensor DHT-11 dan hasil pembacaan sensornya akan tertampil pada layar LCD 16×2.
Project ini cocok diaplikasikan untuk memonitoring suhu & kelembaban ruangan-ruangan tertentu yang harus sering di awasi suhu & kelembabannya, misalnya ruangan penetas telur dan ruangan-ruangan sejenis.
Kamu juga dapat melihat versi video dari tutorial ini di bawah ini:
Ok, kita lanjutkan tulisannya dulu ya…
Alat & Bahan
Alat
Kebutuhan
Arduino UNO
1 buah
Sensor DHT 11
1 buah
LCD 16×2 I2C
1 buah
Kabel
secukupnya
breadboard
1 buah
Gambar Rangkaian
Instalasi Library DHT-11 dan LCD 16×2 I2C
untuk bisa mengendalikan sensor DHT 11 dan LCD 16×2 dengan mudah, kita perlu menginstal library untuk kedua modul tersebut dengan mengikuti langkah-langkah berikut ini:
Bukalah aplikasi Arduino IDE, lalu buka library manager yang terdapat disebelah kiri layar
Carilah dan instal masing-masing library dibawah ini. Gunakan kotak pencarian agar library gampang ditemukan
Setelah rangkaian & Coding dibuat dengan benar, langkah berikutnya adalah mengupload coding yang telah kita ketik sebelumnya ke microcontroler Arduino kita lalu dilanjutkan dengan pengujian.
keseluruhan proses pembuatan alat ini bisa kita lihat pada video dibawah ini.
Demikian tulisan saya kali ini, semoga bermanfaat, dan jangan lupa di subscribe akun youtube nya supaya makin semangat bikin konten berikutnya.
Sebelumnya kita sudah mempelajari bagaimana membaca kondisi suhu dan kelembaban lingkungan sekitar dengan menggunakan sensor DHT 11 – https://helmydx.my.id/2024/02/09/antarmuka-sensor-dht-11-dengan-menggunakan-arduino. Pada artikel tersebut, hasil pembacaan sensor DHT 11 hanya ditampilkan lewat serial monitor saja sehingga Arduino harus selalu terhubung ke komputer atau laptop kita.
Tutorial ini akan membahas bagaimana cara menampilkan output berupa teks dari Arduino ke LCD 1602 dan diakhir tutorial ini, kita akan mampu menggunakan LCD 1602 sebagai output dan menggunakannya untuk project kita selanjutnya.
LCD 1602 I2C
LCD 1602 I2C adalah sejenis LCD (liquid Crystal Display) yang dapat menampilkan karakter berupa angka dan huruf. LCD ini terdiri dari 16 baris dan 2 kolom sehingga disebut dengan LCD 1602. Untuk koneksi ke Arduino, LCD ini sudah dilengkapi dengan modul I2C (Inter Integrated Circuit) yang hanya membutuhkan 2 pin untuk komunikasi dan 2 pin power saja sehingga menghemat penggunaan pin pada Arduino.
Inter Integrated Circuit (I2C)
Inter Integrated Circuit atau biasa disingkat I2C adalah standar komunikasi serial 2 arah untuk mengirimkan dan menerima data dengan menggunakan 2 saluran khusus. Sistem I2C terdiri dari 2 saluran yaitu SDA (Serial Data) dan SCL (Serial Clock). SDA berfungsi untuk mengirimkan dan menerima data sedangkan SCL berfungsi sebagai clock untuk mengatur aliran data dari dan ke microcontroller. Salah satu pengaplikasian sistem I2C ini sering kita temui pada modul LCD 1602, modul RTC (Real Time Clock) dan beberapa jenis modul lainnya.
Pinout pada LCD 1602 I2C
Seperti dijelaskan sebelumnya, pinout pada LCD 1602 I2C hanya terdiri dari 2 pin untuk komunikasi yaitu pin SDA dan SCL dan 2 pin power VCC dan GND.
Rangkaian Modul LCD 1602 dengan menggunakan Arduino
Merakit modul LCD 1602 dengan Arduino relatif mudah karena modul LCD nya hanya terdiri dari 4 buah pin saja.
LCD 1602 I2C
Arduino
VCC
5V
GND
GND
SCL
pin SCL atau pin A5
SDA
pin SDA atau pin A4
Klik gambar untuk memperbesar
Atau bisa juga seperti skema dibawah ini
Klik gambar untuk memperbesar
Library LCD I2C
pemrograman LCD 1602 I2C membutuhkan library tambahan untuk mempermudah penulisan dan kontrol terhadap perangkat LCD, untuk menginstal library nya ikuti langkah-langkah sesuai gambar berikut.
Pastikan output pada Arduino IDE sudah seperti ini:
Program / Sketch
Setelah rangkaian dan library terinstal, maka langkah selanjutnya adalah memprogram Arduino agar dapat menampilkan tulisan di layar LCD. Ketikkan program dibawah ini pada halaman kerja Arduino IDE.
Upload program ke dalam Arduino dan perhatikan hasilnya.
Penjelasan Program
#include <LiquidCrystal_I2C.h>
Menambahan / include library LCD I2C yang sebelumnya kita instal ke dalam program
LiquidCrystal_I2C lcd(0x27,16,2);
menentukan object lcd dengan parameter (0x27, 16, 2). Dimana 0x27 adalah alamat I2C pada LCD (jika alamat ini tidak berfungsi, coba gunakan alamat 0x3F), 16 adalah jumlah baris pada LCD dan 2 adalah jumlah kolom LCD.
lcd.init();
lcd.init() berfungsi untuk mengaktifkan kontrol LCD
lcd.clear();
lcd.clear() berfungsi untuk mengosongkan tampilan pada layar LCD agar teks tidak saling timpa antara teks sebelumnya dengan teks yang akan tampil
lcd.backlight();
lcd.bcaklight() akan mengaktifkan lampu layar pada LCD, jika fungsi ini tidak dimasukkan, maka LCD akan menjadi gelap
lcd.setCursor(0,0);
lcd.setCursor(0, 0) berfungsi untuk mengatur tata letak huruf yang akan tampil pada layar. fungsi ini memiliki 2 parameter dengan syntax lcd.setCursor(nomor_baris, nomor_kolom). nomor_baris digunakan untuk mengatur posisi awal huruf pertama dari teks yang akan kita buat. Penomoran susunan baris pada LCD 1602 dimulai dari angka 0. Supaya huruf tampil agak ketengah, kita tuliskan lcd.setCursor (2, 0) atau lcd.setCursor (3, 0) sesuai tata letak yang kita inginkan.
Sedangkan parameter nomor_kolom digunakan untuk menentukan posisi teks berada diatas atau dibawah layar. Seperti yang telah kita ketahui, LCD 1602 memiliki 2 kolom dimana kolom yang atas diberi notasi 0 dan kolom yang bawah diberi notasi 1. jadi jika kita ingin menampilkan suatu teks di kolom bagian atas, maka kita ketikkan lcd.setCursor(0, 0); sedangkan jika ingin teks tampil dibagian bawah LCD maka ketikkan lcd.setCursor(0, 1);
lcd.print("MAN 1 LKT");
lcd.print() berfungsi untuk menampilkan tulisan pada layar. Tulisan yang akan ditampilkan adalah teks atau nilai variabel yang berada didalam kurung. Pada baris program diatas, lcd.print() akan menampilkan teks bertuliskan MAN 1 LKT pada layar. Posisi teks sudah diatur pada baris program diatasnya yaitu teks ada dibagian kiri atas layar LCD karena fungsi lcd.setCursor(0, 0).
Selanjutnya, silahkan mengekplorasi lebih jauh tentang penggunaan LCD ini dengan cara memanipulasi perintah-perintah yang sudah dijelaskan diatas. Sampai disini dulu tutorial nya sampai jumpa di tutorial berikutnya.
DHT 11 adalah sejenis sensor yang memiliki kemampuan untuk mengukur suhu dan kelembaban ruangan. Sensor ini sangat mudah digunakan bersama Arduino dan memiliki kemampuan membaca suhu antara 0 s/d 50 derajat Celcius. Berikut ini adalah spesifikasi lengkap dari sensor ini:
Tegangan kerja
3-5 Volt DC
Arus maksimal
2.5 mA
rentang pengukuran suhu
0-50 °C toleransi +- 2 °C
Rentang pengukuran kelembaban
20-80% toleransi 5%
Pinout pada DHT 11
Modul DHT 11 terdiri dari 3 pin yaitu seperti gambar dibawah ini:
Klik gambar untuk memperbesar tampilan
pin VCC digunakan untuk memberi supply listrik untuk sensor. Sesuai spesifikasi sensor, DHT 11 dapat disupply dengan menggunakan tegangan antara 3.3 – 5 volt. pemberian supply bisa langsung dari pin 5V pada Arduino atau menggunakan sumber tenaga lain seperti baterai dan powerbank.
pin OUT digunakan untuk mengirimkan sinyal ke Arduino. Sinyal dari pin ini akan diproses oleh Arduino yang outputnya berupa pembacaan suhu dan kelembaban ruangan.
pin GND adalah pin ground
Rangkaian Sensor DHT 11 dengan Arduino
Untuk dapat membaca suhu dan kelembaban, maka sensor DHT 11 harus dihubungkan ke microcontroller Arduino. Rangkaian sensor ini dengan DHT 11 relatif sangat mudah, perhatikan tabel dan gambar dibawah ini
DHT 11
Arduino
pin VCC
pin 5V
pin OUT
pin 8
pin GND
pin GND
Klik gambar untuk memperbesar tampilan
Klik gambar untuk memperbesar tampilan
Menginstal Library DHT
Untuk dapat mengendalikan sensor DHT 11 dengan baik, kita perlu menginstal library DHT kedalam aplikasi Arduino IDE. Penggunaan library ini akan mempermudah kita dalam memprogram sensor DHT 11.
Setelah library berhasil diinstal, langkah berikutnya adalah menulis dan mengupload program ke dalam Arduino. Program dibawah ini akan menampikan hasil pembacaan sensor pada serial monitor. S
Setelah program selesai ditulis, hubungkan Arduino dengan PC atau laptop, pastikan board dan port sudah disetting dengan benar sebelum mengupload. Bukalah Serial monitor dan perhatikan hasil pembacaan sensor. Jika pada layar serial monitor tampil tulisan “Gagal membaca sensor”, Periksalah kembali sambungan kabel antara Arduino dengan sensor DHT 11.
Penjelasan program
#include "DHT.h"
menambahkan (include) library DHT yang kita instal sebelumnya
#define DHTPIN 8
#define DHTTYPE DHT11
#define DHTPIN 8 : mendefinisikan pin 8 Arduino sebagai pin yang terhubung dengan DHT 11
#define DHTTYPE DHT11 : mendefinisikan jenis sensor DHT yang dipakai, dalam hal ini kita menggunakan DHT 11. Apabila sensor yang digunakan adalah sensor DHT22, maka diganti menjadi #define DHTTYPE DHT22.
dht.begin()
mengaktifkan sensor DHT11
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
mendeklarasikan variabel dengan tipe data float (desimal) untuk menyimpan data pembacaan sensor. variabel h akan menyimpan hasil pembacaan kelembaban, t akan menyimpan data suhu dalam Celcius, f akan menyimpan data suhu dalam Fahrenheit.
Arduino akan menjalalankan fungsi if dengan logika jika hasil pembacaan sensor yang tersimpan di salah satu variabel h, t atau f bukan berupa angka (isnan = is not a number) maka Arduino akan menampilkan teks “Gagal membaca sensor” di layar serial monitor.
Menampilkan hasil pembacaan sensor ke layar serial monitor. Hasil pembacaan sensor yang tampil di layar adalah kelembaban, suhu dalam celcius, dan suhu dalam Fahrenheit.
Program yang telah kita buat sebelumnya akan dibaca dan dilaksanakan oleh Arduino baris perbaris secara berurutan dan ketika program sudah sampai ke baris yang paling bawah maka Arduino akan membaca program dari atas kembali, perhatikan kembali program mengedipkan lampu dibawah ini:
int waktu = 100;
int Pin = 3;
void setup () {
pinMode(Pin, OUTPUT);
}
void loop () {
digitalWrite(Pin, HIGH);
delay(waktu);
digitalWrite(Pin, LOW);
delay(waktu);
waktu=waktu + 50;
}
Pada program diatas digitalWrite(Pin, HIGH) akan pertama kali dibaca oleh Arduino lalu dilanjutkan ke baris berikutnya yakni delay(waktu). Begitu seterusnya sampai baris terakhir, lalu program akan membaca ulang dari atas kembali.
Waktu delay secara otomatis dan bertahap akan bertambah dengan penambahan nilai 50 setiap kali perulangan program yang mengakibatkan lama-kelamaan lampu akan kedipan lampu akan melambat seperti pada video dibawah ini:
Program diatas memiliki 1 kelemahan, yaitu nilai variabel “waktu” akan bertambah terus sampai akhirnya lampu LED tidak berkedip lagi. Pada tulisan ini, kita akan mencoba untuk menambah beberapa baris program agar nilai variabel “waktu” akan kembali ke nilai awal ketika mencapai kondisi tertentu.
Perhatikan program berikut ini:
int waktu = 100;
int Pin = 3;
void setup () {
pinMode(Pin, OUTPUT);
}
void loop () {
digitalWrite(Pin, HIGH);
delay(waktu);
digitalWrite(Pin, LOW);
delay(waktu);
waktu=waktu + 50;
if(waktu == 1000){
waktu = 100;
}
}
Penjelasan
Pada baris ke 13, nilai variabel “waktu” saat ini ditambah 50, sehingga setiap kali perulangan nilai “waktu” akan bertambah 50 menjadi 150, 200, 250 dst.
Pada baris ke 15 kita tambahkan fungsi logika IF:
if(waktu == 1000) {
waktu = 100;
}
fungsi logika diatas bermakna “jika nilai variabel waktu sama dengan 1000, maka nilai variabel waktu kembali ke 100”. Dengan cara ini setiap kali nilai variabel “waktu” yang digunakan oleh delay mencapai nilai 1000, maka pada perulangan berikutnya akan kembali ke nilai 100 sehingga lampu LED berkedip cepat kembali. perhatikan video berikut ini:
Logika IF ini bisa diaplikasikan ke berbagai project seperti mengendalikan output berdasarkan hasil pembacaan sensor. Kita juga dapat membuat beberapa kondisi bertingkat dengan menambahkan ELSE. Sebagai contoh, kita bisa mengendalikan sebuah buah kipas angin dan sebuah AC berdasarkan kondisi suhu yang dirasakan sensor saat ini. perhatikan contoh dibawah ini.
Jika (if) suhu ruangan lebih besar atau sama dengan 30 derajat celcius, maka hidupkan AC dan matikan kipas angin, jika lain daripada itu (else) hidupkan kipas angin dan matikan AC.
fungsi logika IF juga bisa terdiri dari banyak kondisi, misalnya kita akan mengendalikan kecepatan sebuah kipas angin berdasarkan jumlah orang yang masuk kedalam ruangan. Perhatikan lagi contoh program dibawah ini:
if (orang==1){
kipasSpeed1;
}
else if (orang <=3) {
kipasSpeed2;
}
else if (orang > 5) {
kipasSpeed3;
}
else {
matikanKipas;
}
Jika orang didalam ruangan berjumlah sama dengan 1 maka hidupkan kipas dengan kecepatan 1, jika orang kurang dari atau sama dengan 3 orang, maka kipas kecepatan 2, jika orang lebih dari 5, maka hidupkan kipas kecepatan 3, selain daripada itu matikan kipas.
Pada program diatas, kita menggunakan operator sama dengan (==), lebih kecil dari atau sama dengan (<=) dan lebih besar dari (>). Lambang lengkap dari operator-operator diatas beserta fungsinya bisa kita lihat pada tabel dibawah ini
Operator
Arti
Contoh
Hasil
<
Kurang dari
7 < 8 8 > 7
true false
>
Lebih dari
8 > 7 7 > 8
true false
<=
Kurang dari sama dengan
8 <= 7 7 <=7
true true
>=
lebih dari sama dengan
7 >= 7 8 >= 7
true true
==
Sama dengan
8 == 8 8 == 9
True False
!=
tidak sama dengan
8 != 8 8 != 9
false true
Jadi, dengan logika IF, ELSE IF, dan ELSE kita bisa membuat sistem kendali Arduino dengan berbagai kondisi atau syarat sesuai keinginan kita atau sesuai pembacaan sensor.
Demikian tulisan ini, sampai jumpa di materi berikutnya yang akan membahas tentang fungsi perulangan for dan while.
Sebelumnya kita telah mengenal apa itu variabel dan cara menggunakannya untuk mengganti nilai delay() seperti pada program dibawah ini:
Pada program diatas, kita hanya butuh mengganti nilai variabel “waktu” dengan nilai angka yang kita ingikan. jika kita tuliskan int waktu = 100; maka secara otomatis nilai “waktu” yang terdapat didalam delay akan berubah menjadi 100 juga.
Selain itu, kita juga dapat memanipulasi data yang ada didalam variabel secara otomatis dengan cara melakukan operasi aritmatika didalam void loop. Perhatikan contoh berikut.
int waktu = 100;
int Pin = 3
void setup () {
pinMode(Pin, OUTPUT);
}
void loop () {
digitalWrite(Pin, HIGH);
delay(waktu);
digitalWrite(Pin, LOW);
delay(waktu);
waktu = waktu + 50;
}
Penjelasan
Pada baris pertama dan kedua kita deklarasikan variabel bernama waktu dan pin, dimana variabel waktu memiliki data angka bernilai 100 dan variabel pin bernilai 3. nilai pada variabel waktu akan kita gunakan sebagai nilai untuk parameter delay dan nilai pada varibel Pin akan kita gunakan untuk mendefinisikan nomor pin.
int waktu = 100;
int Pin = 3
Pada baris ke-5 kita tidak lagi menuliskan pinMode(3, OUTPUT), melainkan pinMode(Pin, OUTPUT). Begitu juga pada garis ke-9 dan 11 tidak lagi dituliskan sebagai digitalWrite(3, HIGH) atau digitalWrite(3, LOW), melainkan digitalWrite(Pin, LOW).
digitalWrite(Pin, HIGH);
Fungsi delay juga sudah menggunakan nilai variabel “waktu” sebagai nilai parameternya sehingga ditulis
delay(waktu);
Berikutnya pada baris ke-13, kita menemukan instruksi
waktu = waktu + 50;
Baris ini bermakna “nilai variabel waktu adalah sama dengan nilai saat ini ditambah 50” sehingga variabel “waktu” akan berubah nilainya secara otomatis dari yang awalnya bernilai 100 menjadi 150 (waktu + 50) dan karena operasi aritmatika digunakan di dalam void loop() maka setiap kali perulangan program terjadi nilai delay() akan bertambah 50, sehingga lama kelamaan LED akan berkedip lebih lambat dari sebelumnya. Perhatikan video berikut:
Selain penjumlahan, kita juga bisa menggunakan operator aritmatika lainnya yaitu:
Operator
Lambang
Penjumlahan
+
Pengurangan
–
Perkalian
*
Pembagian
/
Modulus / Sisa bagi
%
Akhirnya, semoga tulisan ini dapat dipahami dan menjadi sumber pengetahuan bagi kita semua. Pada tulisan berikutnya kita akan pengendalian dengan menggunakan logika dan algoritma perulangan dan mengimplementasikannya ke pengendalian LED.
Sebelumnya kalian sudah memperagakan cara mengendalikan 1 sampai 3 buah lampu LED dengan menggunakan Arduino. Kalian sudah mengenal beberapa fungsi dasar pada saaat memprogram Arduino yaitu setup(), loop(), pinMode(), digitalWrite() dan delay(). Selain itu, kalian juga sudah mempelajari bagaimana cara membuat rangkaian elektronik dengan menggunakan Arduino dan kabel jumper.
Pada praktikum kali ini kita akan menjelajahi penggunaan breadboard lebih dalam lagi. Untuk itu, penting bagi kalian untuk membaca tulisan ini dan tulisan sebelumnya tentang Praktikum Arduino – Blink supaya kalian lebih memahami cara kerja Arduino, breadboard dan rangkaian elektronik.
GND
Pada praktikum sebelumnya tentang Blink kalian sudah membuat rangkaian yang terdiri dari arduino dan LED. pada rangkaian itu, kaki LED yang panjang (+) dihubungkan ke salah satu pin pada Arduino dan kaki LED yang pendek dihubungkan ke resistor secara seri lalu dihubungkan lagi ke pin GND pada Arduino seperti pada gambar dibawah ini:
Jika kita ingin mengontrol LED lainnya, kita tinggal menambahkan LED dan menghubungkannya ke pin-pin yang tidak terpakai antara pin 1 sampai 13 dan ke pin GND. Namun demikian, ketika kalian akan menghubungkan lebih dari 3 LED ke Arduino, maka kalian akan menemukan masalah yaitu kurangnya pin GND. Hal ini dikarenakan Arduino hanya memiliki 3 pin GND saja yaitu pada sisi kanan atas bersebelahan dengan pin 13 dan 2 buah lagi berada di barisan power.
Untuk mengatasi hal tersebut diatas, maka kita bisa menggunakan 1 pin GND saja untuk semua sambungan yang memiliki anotasi negatif (-) dengan cara mencabangkan pin GND dengan menggunakan breadboard. perhatikan gambar dibawah ini
Pada gambar diatas, kita cukup menghubungkan satu pin GND ke salah satu titik lubang yang memiliki tanda garis biru (-) dan secara otomatis semua titik yang ada pada barisan tersebut akan menjadi GND.
Rangkaian 5 LED dengan menggunakan Arduino
Setalah memahami cara mencabangkan pin GND agar bisa dipakai bersama-sama oleh banyak komponen, maka sekarang kita sudah bisa membuat rangkaian dengan menggunakan 5 LED dengan menggunakan Arduino.
Peragakanlah rangkaian berikut ini:
Setelah rangkaian selesai dibuat, buka aplikasi Arduino IDE pada komputer atau laptop kalian, lalu programlah Arduino agar bisa menyalakan ke 5 LED secara bergantian dari lampu 1 ke lampu 5. Sebagai referensi, kalian bisa buka kembali tulisan sebelumnya disini : praktikum-arduino-blink
Motor DC adalah mesin listrik yang mengubah energi listrik menjadi energi mekanik/gerakan. Motor DC sangat cocok untuk digunakan untuk menggerakkan roda robot. Pada tulisan ini, kita akan mempelajari cara mengendalikan motor DC dengan menggunakan modul L298N dan Arduino.
Pinout Modul L298N
Keterangan Gambar
Motor Out
Konektor untuk menghubungkan motor
VCC
Input tegangan dari power supply atau baterai
GND
GND
5V
Input Logic 5V
ENA & ENB
Digunakan untuk mengontrol menghidupkan/mematikan dan mengatur kecepatan motor
IN1 & IN2
Kontrol arah putaran motor 1
IN3 & IN4
Kontrol arah putaran motor 2
Cara Kerja Modul
INPUT 1
INPUT 2
Arah Putaran
LOW
LOW
Mati
HIGH
LOW
Maju
LOW
HIGH
Mundur
HIGH
HIGH
Mati
Gambar Rangkaian
Coding
// Motor A
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B
int enB = 3;
int in3 = 5;
int in4 = 4;
void setup() {
//Semua pin motor sebagai output
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// motor dimatikan di awal
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}
// fungsi dibawah ini digunakan untuk mengontrol arah putaran motor
void directionControl() {
// kecepatan maksimum (bisa diatur antara 0-255)
analogWrite(enA, 255);
analogWrite(enB, 255);
// arah maju
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(2000);
// arah mundur
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// motor mati
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
// fungsi untuk mengatur kecepatan motor
void speedControl() {
// hidupkan motor
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Perputaran mulai dari lambat ke cepat
for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Perputaran mulai dari cepat ke lambat
for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Matikan motor
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
//ulang kembali
Setelah rangkaian dan coding selesai dikerjakan, langkah berikutnya adalah mengupload program yang kita buat tadi lalu menghubungkan rangkaian ke powersupply atau baterai 12 V. Perhatikan gerakan motor dan bandingkan dengan coding yang telah kita buat.
LDR (Light Dependent Resistor) adalah sejenis resistor variabel yang nilai hambatannya berubah-ubah sesuai intensitas atau tingkat kecerahan cahaya. Ketika cahaya mengenai permukaan LDR, maka konduktivitas atau kekuatan hantaran listrik pada bahan LDR akan meningkat. Begitu pula sebaliknya, kemampuan menghantarkan listrik akan menurun apabila LDR tidak terpapar cahaya.
berdasarkan sifatnya ini, kita bisa menggunakannya sebagai sensor peka cahaya yang bisa dimanfaatkan untuk berbagai inovasi elektronik misalnya lampu jalan otomatis atau jendela otomatis.
Penggunaan LDR sebagai sensor dengan Arduino
LDR merupakan komponen analog, karena LDR menaikkan dan menurunkan daya hantar listrik dengan cara merubah nilai hambatan karena perubahan cahaya. Oleh karena itu, LDR akan dihubungkan ke pin Analog input pada Arduino. Perhatikan rangkaian berikut ini:
Setelah rangkaian selesai dibuat, buka software Arduino IDE dan ketikkan program dibawah ini:
Setelah itu, hubungkan Arduino ke komputer atau laptop kamu dan upload program yang telah ditulis tadi. Berikutnya, perhatikan hasil output lewat serial monitor sambil perlahan-lahan menutupi LDR yang terpapar cahaya dengan menggunaan tangan atau benda lainnya.
Proyek membuat lampu otomatis dengan LDR
Setelah kita memperhatikan dan memahami cara kerja LDR, berikutnya kita akan menggunakan sifat-sifat LDR ini untuk mengontrol lampu agar hidup dan mati sesuai dengan intensitas cahaya yang diterima nya. Perhatikan gambar dan kode dibawah ini:
int sensorPin = A0; //pin analog yang digunakan untuk membaca LDR
int ledPin = 7; //pin LED
int nilaiSensor = 0; //nilai awal sensor LDR
void setup() {
pinMode(ledPin,OUTPUT); //mengaktifkan pin "ledPin" sebagai output
Serial.begin(9600); //mengaktifkan serial monitor untuk membaca nilai dari sensor
}
void loop() {
nilaiSensor = analogRead(sensorPin); //membaca nilai yang dihasilkan oleh sensor
Serial.println(nilaiSensor); //menampilkan hasil pembacaan nilai sensor ke serial monitor
if(nilaiSensor < 600){ //jika nilai sensor mencapai kurang dari 600, maka.....
digitalWrite(ledPin,HIGH); //lampu akan dihidupkan
}
else{ //jika tidak.....
digitalWrite(ledPin,LOW); //maka lampu akan dimatikan
}
delay(100);
}
Program diatas sudah dilengkapi dengan penjelasan di tiap baris nya, silahkan dipahami dan diperagakan sesuai dengan hasil pengamatan yang telah dilakukan.
Demikian tulisan ini, semoga bermanfaat, selamat bereksperimen.
pada tulisan kali ini, kita akan menggunakan situs kodular membuat aplikasi android sederhana yang akan digunakan untuk membaca nilai yang tersimpan di firebase. Baiklah, tanpa berpanjang lebar lagi, langsung saja kit ake materi pokok nya
Kodular
Kodular adalah situs yang menyediakan platform pembuatan aplikasi android dengan mudah tanpa menggunakan text-based programming. Untuk membuat aplikasi android di kodular, kita hanya perlu melakukan drag and drop komponen untuk membuat tampilan aplikasi android. Untuk melakukan programming terhadap komponen yang telah disusun, kodular menyediakan sistem programming model block yang juga digunakan dengan metode drag and drop.
Tampilan Designer Tab pada KodularTampilan Block Tab pada Kodular
Memulai Kodular
Untuk mulai menggunakan situs aplikasi kodular, ikutilah langkah-langkah berikut ini:
2. Kita akan diarahkan ke halaman sign in. Pada halaman ini pilih sign in dengan menggunakan akun google.
3. lalu pilih akun gmail yang kamu miliki sebagai akun untuk log in ke kodular.
4. Setelah berhasil log in, kalian akan diarahkan ke halaman creator. Pada halaman ini akan terlihat project-project yang sudah pernah dibuat sebelumnya.
5. Untuk membuat project baru, maka klik tombol “Create project” pada bagian kiri atas halaman Kodular Creator.
6. Berikan nama untuk project yang akan kita buat.
7. Pada “Configure your project”, biarkan saja semua konfigurasi tetap default dan langsung klik finish.
8. Kita akan diarahkan ke tab Designer untuk membuat tampilan aplikasi android yang akan kita buat.
Membuat Aplikasi Android
Aplikasi android yang akan kita buat di situs kodular ini adalah aplikasi yang berfungsi untuk membaca data yang terdapat pada realtime database nya firebase. Untuk mempermudah pembuatan aplikasi silahkan ikuti langkah-langkah berikut ini.
1. Buatlah tampilan android sederhana seperti dibawah ini:
2. untuk komponen image, kalian bisa download asset nya disini lalu nanti upload di properties “Background Image” pada komponen Image2.
3. Pada komponen Firebase_Database1, kita akan diminta untuk memasukkan Firebase token dan firebase URL.
Firebase token bisa didapatkan dengan cara:
Buka web firebase dan masuk ke console.
Pilih project firebase yang telah kita buat sebelumnya.
Klik icon gear yang terdapat pada sebelah kiri atas layar lalu klik project settings
pada menu project settings, copy isian web API lalu paste kan ke firebase token di kodular
Firebase URL bisa didapatkan dengan cara
Buka web firebase dan masuk ke console.
Pilih project firebase yang telah kita buat sebelumnya.
Klik Realtime Database
Copy link yang terdapat didalam Realtime Database lalu pastekan ke Firebase URL di kodular
4. Masuk ke tab block dan ikuti gambar dibawah ini
Sampai disini, aplikasi kita sudah bisa di download dalam bentuk apk dengan cara klik export >> android APK. Copy aplikasi yang telah kita buat tadi ke HP kita lalu install
Jika pembuatan aplikasi berhasil, maka tampilan aplikasi yang kita buat akan terlihat seperti ini:
Jika kalian masih merasa kesulitan membuat aplikasi nya, silahkan download file aia dibawah ini lalu masukkan ke kodular dengan klik tombol import project pada halaman project.
Demikianlah Membaca Database Firebase dan Menampilkannya di Aplikasi Android dengan menggunakan kodular, semoga tulisan ini bermanfaat. Sampai jumpa pada tulisan-tulisan berikutnya
Tujuan dari proyek ini adalah untuk mengirim dan menyimpan data dari sensor DHT11 supaya nantinya data tersebut bisa dibaca oleh perangkat atau aplikasi lain yang juga terhubung dengan google firebase.
Seperti yang kita ketahui bersama, ESP8266 adalah mikrokontroller yang memliki fitur jaringan wireless sehingga sangat cocok digunakan untuk proyek-proyek IoT yang membutuhkan kontrol perangkat dari jarak jauh. Oleh karena itu, tulisan kali ini akan dibagi menjadi beberapa bagian yaitu:
Google firebase adalah platform pengembangan aplikasi yang membantu para developer untuk membangun serta mengembangkan aplikasi yang di dukung oleh google. firebase memiliki berbagai service yang dapat digunakan untuk berbagai kebutuhan aplikasi digital.
Dalam tulisan ini, kita akan mencoba untuk membuat database sederhana dengan menggunakan realtime database yang merupakan salah satu fitur yang terdapat di dalam google firebase.
Adapun Langkah mulai menggunakan Google Firebase adalah sebagai berikut:
Membuat Project Firebase
buka firebase.google.com lalu klik “sign in” dengan memasukkan akun google dan password kita (aplikasi google saya berbahasa Inggris, silahkan disesuaikan)
Berikutnya, setelah berhasil login, klik tombol “Get started”
pada laman berikutnya, kita pilih “add project”
Selanjutnya, beri nama project yang akan kita buat lalu klik continue
Berikutnya, saya menonaktifkan google analytics untuk project ini lalu klik tombol “Create project”
Setelah itu, kita tunggu proses pembuatan project nya, klik continue dan kita akan masuk ke halaman utama project firebase seperti gambar dibawah ini
Sampai disini kita telah berhasil membuat project firebase yang kita inginkan, namun masih perlu beberapa penyesuaian dan aktivasi fitur realtime database yang nantinya akan digunakan untuk menyimpan data hasil pembacaan sensor dari NodeMCU ESP8266.
Membuat Realtime Database
Setelah kita berhasil membuat project, langkah berikutnya kita akan membuat Realtime Database dengan cara klik menu build > Realtime Database
Kita akan diarahkan ke laman Realtime Database. Klik tombol “Create Database” untuk membuat database baru.
Berikutnya, kita pilih server “Singapore (asia-southeast1)” karena lebih dekat dengan lokasi kita, lalu klik next.
pada menu ‘Set up database”, pilih “Start in locked mode”. Setelah itu klik enable.
Sampai disini kita sudah berhasil membuat database, langkah berikutnya adalah memberi ijin untuk read/write database dengan cara klik tab “Rules”, ubah kedua tulisan “false” menjadi “true”.
Berikutnya, kita kembali ke menu build > autentication, lalu arahkan mouse ke “Sign in method” lalu pilih tombol “Anonymous”
Geser slider menjadi enable lalu save
Sampai disini Realtime Database sudah dapat menerima data dari NodeMCU ESP8266. Langkah berikutnya adalah melakukan programming di Arduino IDE.
Buka Library manager di sebelah kiri layar (saya menggunakan Arduino IDE 2.1.0), cari library “Firebase Arduino Client Library for ESP8266 and ESP32”. Jika sudah ketemu, Klik install (perhatikan gambar)
Setelah library berhasil diinstal, kita lanjutkan menulis sketch dengan menambahkan beberapa library supaya ESp8266 bisa terhubung ke firebase.
Tambahkan library ESP8266WIF.I.h dan buatlah variabel untuk menyimpan data SSID dan password wifi
Sampai disini Sketch atau program telah selesai dikerjakan, langkah berikutnya adalah melakukan upload ke ESP8266.
Keseluruhan code dapat kamu lihat di bawah ini:
#include "DHT.h"
#include <ESP8266WiFi.h>
#define WIFI_SSID "nama_wifi"
#define WIFI_PASSWORD "password_wifi"
#include <Firebase_ESP_Client.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define API_KEY "API_Key dati project setting"
#define DATABASE_URL "link yang ada di realtime database"
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
//firebase data object
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis = 0;
bool signupOK = false;
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
config.api_key = API_KEY;
config.database_url = DATABASE_URL;
/* Sign up */
if (Firebase.signUp(&config, &auth, "", "")){
Serial.println("ok");
signupOK = true;
}
else{
Serial.printf("%s\n", config.signer.signupError.message.c_str());
}
/* Assign the callback function for the long running token generation task */
config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("gagal membaca DHT11"));
return;
}
Serial.print(F("Kelembaban: "));
Serial.print(h);
Serial.print(F("% Suhu Udara: "));
Serial.print(t);
Serial.println(F("°C "));
if (Firebase.ready() && signupOK && (millis() - sendDataPrevMillis > 15000 || sendDataPrevMillis == 0)){
sendDataPrevMillis = millis();
if (Firebase.RTDB.setFloat(&fbdo, "DHT/Kelembaban", h)){
Serial.println("PASSED");
Serial.println("PATH: " + fbdo.dataPath());
Serial.println("TYPE: " + fbdo.dataType());
}
else {
Serial.println("FAILED");
Serial.println("REASON: " + fbdo.errorReason());
}
if (Firebase.RTDB.setFloat(&fbdo, "DHT/Suhu", t)){
Serial.println("PASSED");
Serial.println("PATH: " + fbdo.dataPath());
Serial.println("TYPE: " + fbdo.dataType());
}
else {
Serial.println("FAILED");
Serial.println("REASON: " + fbdo.errorReason());
}
}
}
Jika upload berhasil maka data akan terkirim ke Realtime Database seperti yang terlihat dibawah ini
Tampilan FirebaseTampilan serial monitor
Demikianlah tulisan saya hari ini, tulisan yang lebih banyak gambarnya daripada teks nya. pada tulisan berikutnya kita akan ke judul selanjutnya yaitu: Membuat aplikasi android sederhana untuk menampilkan pembacaan DHT11 dengan kodular