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.
Seperti yang kita telah pahami bersama, Arduino adalah sebuah papan mikrokontroler yang dapat digunakan untuk mengendalikan berbagai macam sensor dan komponen elektronik sesuai dengan perintah-perintah yang kita berikan lewat penulisan program.
Pada tulisan ini, kita akan memahami dan memperagakan cara mengendalikan sebuah LED dengan Arduino. Kita akan menyalakan dan mematikan LED tersebut secara otomatis dengan rentang waktu tertentu. Dalam peragaan ini juga kita akan mempelajari cara penulisan program Arduino yang kita kenal sebagai sketch dan pengenalan beberapa fungsi-fungsi yang sering digunakan dalam pemrograman. kamu juga dapat menonton video dibawah ini untuk mempermudah pembelajaran secara visual.
Sebelum kita masuk ke bagian utama dari peragaan ini, kita membutuhkan beberapa alat dan bahan, yaitu:
Arduino UNO
1 buah
Breadboard
1 buah
LED (Light Emitting Diode)
1 buah
Resistor 220 Ohm
1 buah
Kabel Jumper
Secukupnya
Kabel USB
1 buah
Laptop / PC
1 buah
Cara Menggunakan Breadboard
Breadboard disebut juga sebagai papan uji coba elektronik. papan ini digunakan untuk mempermudah kita menguji sebuah rangkaian elektronik tanpa harus melakukan proses soldering. Selain itu, penggunaan breadboard juga memungkinkan kita untuk melakukan penggantian maupun penambahan komponen dengan mudah.
Kalau kita perhatikan gambar diatas, sebuah breadboard terdiri dari lubang-lubang kecil yang tersusun rapi dan memiliki 4 kelompok berbeda. 2 kelompok yang berada di sisi breadboard disebut dengan Power Rails, dan 2 kelompok yang ada dibagian tengah disebut dengan DIP support.
Power Rails berfungsi sebagai penghubung sumber tenaga listrik. Lubang-lubang pada power rail ini terhubung satu sama lain secara horizontal. perhatikan gambar berikut:
Setiap titik kuning pada gambar diatas menandakan bahwa titik-titik tersebut terhubung satu sama lainnya.
Gambar rangkaian dengan dan tanpa breadboard
Gambar diatas adalah gambar rangkaian antara Arduino, LED dan Resistor tanpa menggunakan breadboard. Sedangkan gambar dibawah ini adalah gambar skema rangkaian dengan menggunakan breadboard. Perhatikan kembali jalur-jalur yang terdapat pada breadboard
Praktikum Arduino – Blink
Untuk memprogram sebuah Arduino, dibutuhkan sebuah aplikasi yang bernama Arduino IDE. Aplikasi ini harus terinstal di laptop atau PC sebelum kita melakukan coding. Arduino IDE dapat di download lewat link https://www.arduino.cc/en/software.
Setelah Arduino IDE berhasil di download dan sudah terinstal, maka kita bisa langsung melakukan coding Arduino.
setup() dan loop()
langkah berikutnya, kita akan melakukan penulisan perintah-perintah agar Arduino bisa melakukan tugasnya sesuai dengan yang kita inginkan (coding). Untuk melakukannya, pertama-tama kita buka aplikasi Arduino IDE yang sudah kita instal sebelumya. Aplikasi Arduino IDE yang sudah terbuka akan terlihat seperti gambar dibawah ini:
Pada lembar kerja terlihat dua baris fungsi yaitu void setup() dan void loop(). Kedua fungsi tersebut merupakan fungsi dasar yang harus ada setiap kali kita memprogram Arduino. Jika salah satu atau kedua fungsi tersebut tidak ada atau hilang, maka kita akan mengalami error ketika akan mengupload program ke Arduino.
void setup() adalah fungsi yang perintah-perintah didalamnya hanya di eksekusi atau dijalankan sekali saja oleh Arduino yaitu saat Arduino dihidupkan atau di restart. Karena hanya akan dijalankan sekali saja, perintah-perintah yang ditulis didalamnya biasanya berisi perintah-perintah yang berupa pengaturan dasar misalnya penentuan mode pin sebagai input / output, mengaktifkan komunikasi serial, mengaktifkan sensor, display dsb.
void loop() adalah fungsi yang perintah-perintah didalamnya akan dijalankan berulang-ulang selama Arduino aktif dan hanya akan berhenti jika Arduino diaktifkan atau di restart. semua perintah dalam void loop() akan dieksekusi secara berurutan mulai dari perintah yang paling atas sampai kebawah. Setalah semua perintah di laksanakan, Arduino akan mengulang lagi perintah yang diberikan dari atas dan seterusnya sampai arduio di matikan atau di reset.
Blink
Setelah memahami kedua fungsi diatas, langkah berikutnya kita akan menuliskan perintah-perintah program dengan mengetikkan program dibawah ini langsung ke Arduino IDE:
Perhatikan kembali program yang telah ditulis, pastikan tidak ada error atau kesalahan misalnya kesalahan tulisan, huruf besar/kecil, titik koma, tanda kurung buka dan tutup dll secara manual. Setelah itu, klik tombol centang untuk memeriksa error secara otomatis. Jika tidak terdapat error maka lanjutkan ke proses upload dengan menekan tombol upload (tombol dengan tanda panah), pastikan Arduino sudah dihubungkan ke laptop atau PC dan juga sudah memilih jenis board dan port dengan benar pada aplikasi Arduino IDE lalu tunggu sampai selesai.
Penjelasan Program
Selain setup() dan loop(), pada penulisan program kita menemukan beberapa fungsi lainnya yaitu pinMode, digitalWrite dan delay yang masing-masing memiliki kegunaan yang berbeda-beda. Dibawah ini, kita akan membahas fungsi-fungsi tersebut satu persatu dengan lengkap agar dapat diaplikasikan kembali pada pemrograman berikutnya.
pinMode()
Deskripsi
pinMode berfungsi untuk mengkonfigurasikan atau mengaktifkan pin sebagai output ataupun input.
Syntax
pinMode(pin, mode);
Parameter
pin
nomor pin pada Arduino, atau variabel yang berisi nomor pin
mode
mode pengaturan pin : OUTPUT, INPUT, INPUT_PULLUP
Contoh Penggunaan
pinMode(4, INPUT);
Mengaktifkan pin 4 sebagai input (biasanya digunakan untuk membaca sensor)
pinMode(4, OUTPUT);
Mengaktifkan pin 4 sebagai output
int ledPin = 4; pinMode(ledPin, OUTPUT);
Mengaktifkan ledPin (pin 4) sebagai output)
pinMode(4, INPUT_PULLUP);
mengaktifkan 4 sebagai input dengan pull up resistor internal
digitalWrite()
Deskripsi
Memberi nilai berupa HIGH atau LOW pada pin digital. Pin yang diberi nilai sebelumnya harus telah diaktifkan sebagai OUTPUT dengan pinMode. Nilai HIGH dan LOW bisa disamakan artinya dengan “on” dan “off”, “1” atau “0”, “hidup” dan “mati”.
Syntax
digitalWrite(pin, value);
Parameter
pin
nomor pin pada Arduino, atau variabel yang berisi nomor pin
value
HIGH untuk membuat pin menjadi “on” LOW untuk membuat pin menjadi “off”
Contoh Penggunaan
digitalWrite(4, HIGH);
Perintah pin 4 “on”
digitalWrite(4,LOW);
Perintah pin 4 “off”
int ledPin = 4; digitalWrite (ledPin, HIGH);
perintah variabel ledPin (pin 4) “on”
Delay
Deskripsi
Menghentikan program sementara selama x milidetik (ms)
Syntax
delay(ms)
Parameter
ms
Diisi dengan nilai waktu dalam milidetik, misalnya 1000 = 1 detik, 500 = 1/2 detik, 2000 = 2 detik
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.
Arduino adalah platform mikrokontroler open-source populer yang biasa digunakan untuk membuat perangkat elektronik interaktif. Arduino merupakan platform elektronik yang sangat serbaguna dan dapat digunakan untuk berbagai proyek, mulai dari yang sederhana seperti menyalakan lampu hingga proyek yang lebih kompleks misalnya robot dan mesin-mesin otomatis.
Arduino terdiri dari dua bagian utama yaitu perangkat keras Arduino yang berupa papan sirkuit elektronik dan perangkat lunak Arduino yang digunakan untuk membuat instruksi atau program. Perangkat keras Arduino terdiri dari mikrokontroler, konektor-konektor berupa pin, port USB dan soket power supply. Sedangkan perangkat lunak nya adalah Arduino IDE (Integrated Development Environment) yang digunakan untuk menulis program untuk Arduino.
Pembuatan proyek elektronik dengan Arduino secara garis besar terdiri dari 2 proses utama yaitu:
1. Perakitan komponen dan modul elektronik seperti sensor-sensor, motor dan komponen lainnya yang dihubungkan dengan Arduino
2. Pemrograman, yaitu menuliskan instruksi atau langkah-langkah tugas yang akan dikerjakan oleh arduino dengan menggunakan bahasa pemrograman komputer.
Sebelum kita masuk ke dua proses diatas, kita perlu mengenal Arduino lebih dalam lagi agar nantinya mudah untuk mengaplikasikannya.
Bagian-Bagian Utama Arduino
Ada banyak jenis atau tipe Arduino yang beredar saat ini, dimana setiap jenis tersebut memiliki fitur yang berbeda-beda. Dalam pembelajaran ini kita akan menggunakan Arduino Uno sebagai perangkat utama. Arduino Uno terdiri dari beberapa komponen pokok yaitu:
Mikrokontroler
Mikrokontroler adalah sebuah chip komputer sederhana yang merupakan otak dari sebuah Arduino. Mikrokontroler ini bertugas untuk melakukan pemrosesan data input dari sensor atau komponen lainnya, melakukan kalkulasi dan komputasi lalu menampilkan hasilnya lewat output. Arduino Uno menggunakan chip ATMega 328p sebagai CPU.
Pin Digital
Pin Digital pada Arduino berfungsi sebagai GPIO (General Purpose Input Output) atau disebut juga pin input dan output serbaguna. Pin Digital ini dapat digunakan untuk membaca nilai-nilai hasil pembacaan input dari sensor dan juga dapat digunakan untuk melakukan kontrol pada output
Pin analog input memiliki kemampuan membaca input dari sensor-sensor analog yang bekerja dengan cara merubah tegangan listrik. Misalnya, potensiometer, LDR dll.
Power Pin
Power pin berfungsi untuk memberikan daya listrik untuk menyalakan sensor-sensor yang terhubung dengan Arduino. power pin ini menyediakan tegangan kerja sebesar 5 volt dan 3.3 volt yang cukup untuk menghidupkan beberapa jenis sensor dan lampu LED.
Soket USB
Supaya Arduino dapat bekerja dengan baik, maka Arduino harus di program dahulu dengan menggunakan Arduino IDE. Pemrograman dilakukan dengan menggunakan komputer atau laptop yang sudah terinstal Arduino IDE sebelumnya. Setelah program berhasil dibuat, maka program harus di unggah kedalam mesin Arduino dengan cara menghubungkan Arduino dengan komputer lewat kabel USB. Soket USB pada Arduino digunakan untuk menghubungkan Arduino dengan komputer agar dapat di program.
Soket Power Supply
Terakhir, Arduino membutuhkan daya listrik untuk dapat bekerja dengan baik terutama jika sudah berbentuk proyek yang telah jadi. Untuk itu, arduino juga memiliki soket power supply sebagai tempat masuknya daya listrik dari adaptor maupun baterai. Soket power supply ini bekerja pada tegangan antara 5 – 12 Volt dan direkomendasikan untuk menggunakan tegangan antara 5-9 volt saja untuk memperpanjang masa pakainya.
Demikian materi kita kali ini, pada materi berikutnya kita akan membahas seluk beluk software atau aplikasi yang digunakan untuk memprogram Arduino yaitu, Arduino IDE.
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
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:
Membuat aplikasi android sederhana untuk menampilkan pembacaan DHT11 dengan kodular
Tulisan ini merupakan tulisan pertama dari 3 bagian yang tersedia dengan judul Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266. Langsung saja, berikut ini tutorialnya.
Bahan-bahan
pada tutorial ini kita menggunakan sensor DHT 11, NodeMCU ESP8266 dan beberapa helai kabel jumper.
NodeMCU ESP8266
1 Buah
Sensor DHT11
1 Buah
Kabel Jumper
Secukupnya
Skema Rangkaian
Setelah bahan-bahan tersedia, kita lanjutkan ke proses perangkaian komponen. Perhatikan gambar skema dibawah ini dengan seksama agar tidak salah colok kabel
Program / Sketch
Hubungkan NodeMCU ESP8266 ke komputer lewat kabel USB dan pilih board (saya menggunakan NodeMCU 1.0(ESP-12E Module)) dan port dengan benar lalu upload program dibawah ini:
Jika rangkaian telah dirakit dengan benar dan sketch atau program juga telah diketik dengan benar maka kita bisa melihat hasilnya pada layar serial monitor seperti dibawah ini.
perhatikan juga baudrate yang ada pada serial monitor harus sama dengan yang ada pada sketch yaitu 115200.
Jika tampilan serial monitor sudah menunjukkan nilai kelembaban dan suhu, maka bisa dikatakan peragaaan yang kamu kerjakan telah berhasil.