Anda di halaman 1dari 82

BUKU PRAKTIKUM

SENSOR DAN AKTUATOR


Universitas PGRI Semarang
Daftar Isi

Daftar Isi............................................................................................................................0

1. Pendahuluan...............................................................................................................3

2. Mempelajari Board Arduino........................................................................................6

Prinsip Dasar Arduino....................................................................................................6

3. Pemrograman Dasar Arduino...................................................................................10

BARE MINIMUM........................................................................................................10

void setup.................................................................................................................11

void loop....................................................................................................................11

KURUNG KURAWAL {}..............................................................................................12

TITIK KOMA ;............................................................................................................12

VARIABLES...............................................................................................................13

OPERATOR MATEMATIKA........................................................................................13

KODE DIGITAL..........................................................................................................14

KODE ANALOG..........................................................................................................15

4. Program Arduino: Menyalakan LED dan BLINK!......................................................17

5. Sensor Cahaya LDR..................................................................................................18

6. Analog Input Potensiometer!...................................................................................20

7. Membaca Nilai dari Potensiometer dan Mengatur Terang Redup Cahaya LED
(AnalogInOut)..................................................................................................................22

NOTES:......................................................................................................................23

MARI LEBIH KREATIF!!!............................................................................................23

8. Digital Read Push Button.........................................................................................24

9. Tutorial Arduino Mengakses Sensor Hujan.............................................................27

10. Program Sensor Suhu Dan Kelembaban DHT11 Dengan Arduino.......................30

11. Memprogram LCD 16×2 Tanpa I2C Dengan Arduino............................................35

12. Alat Pengatur Suhu dan Kelembaban Otomatis Sensor DHT11, LCD, dan
Relay! 37

13. Sensor Suhu DS18B20..........................................................................................39

14. Program Sensor Ultrasonic Dengan Arduino TANPA LIBRARY...........................42

15. Memprogram Servo Dengan Arduino....................................................................44

1
16. Driver Motor L298N...............................................................................................46

17. DETEKSI WARNA RGB MENGGUNAKAN TCS230................................................50

Cara kerja sensor.....................................................................................................50

Blok diagram TCS230...............................................................................................51

18. Cara Mudah Program RTC Module DS1302 Jam Digital Dengan Arduino...........56

19. Kontrol 4 Buah Relay menggunakan Infrared Remote........................................59

20. NodeMCU ESP8266...............................................................................................64

Tutorial pertama memprogram NodeMCU menggunakan Software Arduino IDE.....66

Mencoba Led Blinking NodeMCU ESP8266................................................................67

Konfigurasi Aplikasi Blynk.......................................................................................71

Coding Smartconfig..................................................................................................74

Coding Gabungan DHT11+WiFi+Smartconfig untuk ESP32...................................75


Menghubungkan ESP32 ke WiFi Menggunakan Aplikasi Smartconfig...................78

21. Laporan Praktikum Responsi...............................................................................81

2
1. Pendahuluan

Di Era millenial sekarang ini teknologi makin berkembang, termasuk Teknologi program yaitu Arduino, maka dari
artikel ini akan menjelaskan Belajar Program Arduino untuk Pemula Lengkap Beserta Fungsinya yang akan
memiliki tujuan untuk menjelaskan Apa itu Arduino tertutama pada programnya kepada pemula , karena ada banyak
sekali pengertian tentang Arduino dan jenis Arduino juga ada banyak sekali , Namuan Kita tidak akan membahasa
semua jenis-jenis Arduino satu persatu , saya akan menjelaskan dasar-dasar nya saja, Belajar Program Arduino
untuk Pemula sangat penting untekuk kita miliki ilmunya karena Arduino sudah menjadi andalan bagi para pakar
Teknologi didunia. oke mari kita mulai membahas Pengertian Arduino di bawah ada beberapa saja Pengertian
tentang Arduino salah satunya saya ambil dari Wikipedia .

Apa itu Arduino?

Arduino adalah pengendali mikro single-board yang bersifat sumber terbuka, diturunkan dari Wiring platform,
dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Perangkat kerasnya memiliki prosesor
Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri.

Arduino juga merupakan senarai perangkat keras terbuka yang ditujukan kepada siapa saja yang ingin membuat
purwarupa peralatan elektronik interaktif berdasarkan hardware dan software yang fleksibel dan mudah digunakan.
Mikrokontroler diprogram menggunakan bahasa pemrograman arduino yang memiliki kemiripan syntax dengan
bahasa pemrograman C. Karena sifatnya yang terbuka maka siapa saja dapat mengunduh skema hardware arduino
dan membangunnya.

Arduino menggunakan keluarga mikrokontroler ATMega yang dirilis oleh Atmel sebagai basis, namun ada
individu/perusahaan yang membuat clone arduino dengan menggunakan mikrokontroler lain dan tetap kompatibel

3
dengan arduino pada level hardware. Untuk fleksibilitas, program dimasukkan melalui bootloader meskipun ada opsi
untuk mem-bypass bootloader dan menggunakan pengunduh untuk memprogram mikrokontroler secara langsung
melalui port ISP.

Platform Arduino telah menjadi sangat populer di kalangan orang-orang yang baru memulai dengan elektronik, dan
untuk alasan yang baik. Tidak seperti kebanyakan papan sirkuit yang dapat diprogram sebelumnya, Arduino tidak
memerlukan perangkat keras terpisah (disebut programmer) untuk memuat kode baru ke papan - Anda cukup
menggunakan kabel USB. Selain itu, Arduino IDE menggunakan versi yang disederhanakan dari C ++, membuatnya
lebih mudah untuk belajar memprogram. Akhirnya, Arduino memberikan faktor bentuk standar yang memecah fungsi
mikrokontroler menjadi paket yang lebih mudah diakses.

Percaya atau tidak, 10 baris kode itu adalah yang Anda perlukan untuk mengedipkan LED on-board pada Arduino
Anda. Kode ini mungkin tidak masuk akal saat ini, tetapi, setelah membaca tutorial ini dan banyak lagi tutorial
Arduino yang menunggu Anda di situs kami, kami akan mempercepat Anda dalam waktu singkat!

Arduino adalah alat yang hebat untuk orang-orang dari semua tingkat keahlian. Namun, Anda akan memiliki waktu
yang jauh lebih baik belajar bersama Arduino Anda jika Anda memahami beberapa dasar elektronik dasar
sebelumnya. Kami menyarankan Anda memiliki setidaknya pemahaman yang layak tentang konsep-konsep ini
sebelum Anda terjun ke dunia Arduino.

4
Perangkat keras dan perangkat lunak Arduino dirancang untuk seniman, perancang, penggemar, peretas, pemula,
dan siapa pun yang tertarik untuk membuat objek atau lingkungan interaktif. Arduino dapat berinteraksi dengan
tombol, LED, motor, speaker, unit GPS, kamera, internet, dan bahkan ponsel pintar atau TV Anda! Fleksibilitas ini
dikombinasikan dengan fakta bahwa perangkat lunak Arduino gratis, papan perangkat kerasnya cukup murah, dan
perangkat lunak maupun perangkat kerasnya mudah dipelajari telah menyebabkan komunitas besar pengguna yang
telah berkontribusi kode dan mengeluarkan instruksi untuk berbagai macam Proyek berbasis Arduino.

Murah – Papan (perangkat keras) Arduino biasanya dijual relatif murah (antara 125ribu hingga 400ribuan rupiah saja)
dibandingkan dengan platform mikrokontroler pro lainnya. Jika ingin lebih murah lagi, tentu bisa dibuat sendiri dan itu
sangat mungkin sekali karena semua sumber daya untuk membuat sendiri Arduino tersedia lengkap di website
Arduino bahkan di website-website komunitas Arduino lainnya. Tidak hanya cocok untuk Windows, namun juga
cocok bekerja di Linux.

Sederhana dan mudah pemrogramannya – Perlu diketahui bahwa lingkungan pemrograman di Arduino mudah
digunakan untuk pemula, dan cukup fleksibel bagi mereka yang sudah tingkat lanjut. Untuk guru/dosen, Arduino
berbasis pada lingkungan pemrograman Processing, sehingga jika mahasiswa atau murid-murid terbiasa
menggunakan Processing tentu saja akan mudah menggunakan Arduino.

Perangkat lunaknya Open Source – Perangkat lunak Arduino IDE dipublikasikan sebagai Open Source, tersedia bagi
para pemrogram berpengalaman untuk pengembangan lebih lanjut. Bahasanya bisa dikembangkan lebih lanjut
melalui pustaka-pustaka C++ yang beihrbasis pada Bahasa C untuk AVR.

Perangkat kerasnya Open Source – Perangkat keras Arduino berbasis mikrokontroler ATMEGA8, ATMEGA168,
ATMEGA328 dan ATMEGA1280 (yang terbaru ATMEGA2560). Dengan demikian siapa saja bisa membuatnya (dan
kemudian bisa menjualnya) perangkat keras Arduino ini, apalagi bootloader tersedia langsung dari perangkat lunak
Arduino IDE-nya. Bisa juga menggunakan breadoard untuk membuat perangkat Arduino beserta periferal-periferal
lain yang dibutuhkan.

5
2. Mempelajari Board Arduino

Setelah sekian banyaknya Pembahasan Pengertian Dasar Program Arduino untuk Pemula yang di jelaskan di atas
sekarang kita akan membaas ke bentuk komponen Arduino, coba perhatikan gambar pada Arduino di atas, Arduino
memiliki banyak papan (Arduino), Mempelajari lebih dalam Program Arduino untuk Pemula pasti membuat anda
bingung dengan banyaknya papan Arduino tersebut, saya sarankan menggunakan papan Arduino uno yang sudah
familiar, tipe Arduino ini merupakan tipe yang sangat compact memiliki port I/0 (Input/Output) baik jenis analog
maupun digital.

Prinsip Dasar Arduino


Ada banyak jenis papan Arduino (dijelaskan di halaman berikutnya) yang dapat digunakan untuk tujuan yang
berbeda. Beberapa papan terlihat sedikit berbeda dari yang di bawah ini, tetapi sebagian besar Arduino memiliki
mayoritas komponen yang sama:

6
Power (USB / Barrel Jack)

Setiap papan Arduino membutuhkan cara untuk terhubung ke sumber daya. Arduino UNO dapat diaktifkan dari kabel
USB yang berasal dari komputer Anda atau catu daya dinding (seperti ini) yang diakhiri dengan jack barel. Pada
gambar di atas koneksi USB berlabel (1) dan jack laras diberi label (2).

CATATAN:

JANGAN gunakan catu daya yang lebih besar dari 20 Volt karena Anda akan mengalahkan (dan karenanya
menghancurkan) Arduino Anda. Tegangan yang disarankan untuk sebagian besar model Arduino adalah antara 6
dan 12 Volt.

Pin (5V, 3.3V, GND, Analog, Digital, PWM, AREF)

Pin pada Arduino Anda adalah tempat di mana Anda menghubungkan kabel untuk membangun sirkuit (mungkin
bersamaan dengan papan tempat memotong roti dan beberapa kawat. Mereka biasanya memiliki 'header' plastik
hitam yang memungkinkan Anda untuk hanya memasukkan kabel tepat ke papan. Arduino memiliki beberapa jenis
pin, yang masing-masing dilabeli di papan dan digunakan untuk fungsi yang berbeda.

GND (3): Singkatan dari 'Ground'. Ada beberapa pin GND di Arduino, yang salah satunya dapat digunakan untuk
menghubungkan ke sirkuit Anda.

5V (4) & 3.3V (5): Seperti yang Anda duga, pin 5V memasok daya 5 volt, dan pin 3,3V memasok daya 3,3 volt.
Sebagian besar komponen sederhana yang digunakan dengan Arduino berjalan dengan gembira dari 5 atau 3,3 volt.

Digital (7): Di seberang pin analog adalah pin digital (0 hingga 13 pada UNO). Pin ini dapat digunakan untuk input
digital (seperti memberi tahu jika tombol ditekan) dan output digital (seperti menyalakan daya LED).

PWM (8): Anda mungkin telah memperhatikan tilde (~) di sebelah beberapa pin digital (3, 5, 6, 9, 10, dan 11 pada
UNO). Pin ini bertindak sebagai pin digital normal, tetapi juga dapat digunakan untuk sesuatu yang disebut Pulse-
Width Modulation (PWM). Kami memiliki tutorial tentang PWM, tetapi untuk saat ini, anggap pin ini mampu
mensimulasikan output analog (seperti memudarkan LED masuk dan keluar).

AREF (9): Singkatan dari Referensi Analog. Sebagian besar waktu Anda dapat meninggalkan pin ini sendirian.
Kadang- kadang digunakan untuk mengatur tegangan referensi eksternal (antara 0 dan 5 Volts) sebagai batas atas
untuk pin input analog.

Tombol Atur ulang

Sama seperti Nintendo asli, Arduino memiliki tombol reset (10). Menekannya untuk sementara akan menghubungkan
pin reset ke ground dan me-restart kode yang dimuat pada Arduino. Ini bisa sangat berguna jika kode Anda tidak
berulang, tetapi Anda ingin mengujinya berulang kali. Berbeda dengan Nintendo yang asli, meniup Arduino biasanya
tidak memperbaiki masalah.

Indikator Daya LED

Tepat di bawah dan di sebelah kanan kata "UNO" di papan sirkuit Anda, ada LED kecil di sebelah kata 'ON' (11).
LED ini akan menyala setiap kali Anda mencolokkan Arduino ke sumber listrik. Jika lampu ini tidak menyala, ada
kemungkinan besar ada sesuatu yang salah. Saatnya memeriksa ulang sirkuit Anda!

LED TX RX

TX adalah kependekan dari pengiriman, RX adalah kependekan dari penerimaan. Tanda-tanda ini muncul sedikit di
elektronik untuk menunjukkan pin yang bertanggung jawab untuk komunikasi serial. Dalam kasus kami, ada dua
tempat di Arduino UNO di mana TX dan RX muncul - sekali dengan pin digital 0 dan 1, dan kedua kalinya di sebelah
TX dan

7
LED indikator RX (12). LED ini akan memberi kita beberapa indikasi visual yang bagus setiap kali Arduino kami
menerima atau mentransmisikan data (seperti ketika kami memuat program baru ke papan tulis).

IC utama

Benda hitam dengan semua kaki logam adalah IC, atau Integrated Circuit (13). Anggap saja sebagai otak Arduino
kita. IC utama pada Arduino sedikit berbeda dari jenis papan ke jenis papan, tetapi biasanya dari garis ATmega IC
dari perusahaan ATMEL. Ini bisa menjadi penting, karena Anda mungkin perlu mengetahui jenis IC (bersama dengan
jenis papan Anda) sebelum memuat program baru dari perangkat lunak Arduino. Informasi ini biasanya dapat
ditemukan secara tertulis di sisi atas IC. Jika Anda ingin tahu lebih banyak tentang perbedaan antara berbagai IC,
membaca lembar data seringkali merupakan ide yang bagus.

Regulator tegangan

Regulator tegangan (14) sebenarnya bukan sesuatu yang Anda dapat (atau harus) berinteraksi dengan Arduino.
Tetapi berpotensi bermanfaat untuk mengetahui bahwa itu ada dan untuk apa itu. Regulator tegangan melakukan
apa yang dikatakannya - ia mengontrol jumlah tegangan yang dibiarkan masuk ke papan Arduino. Anggap saja
sebagai semacam penjaga gerbang; itu akan mengubah tegangan ekstra yang dapat membahayakan sirkuit. Tentu
saja, ia memiliki batasnya, jadi jangan menghubungkan Arduino Anda dengan apa pun yang lebih besar dari 20 volt.

Bagaimana apakah kalian mulai memahami Dasar Program Arduino atau malah kalian bingung, jangan khawatir
coba anda baca ulang lagi Pengertian Dasar Program Arduino untuk Pemula yang sudah jelaskan di atas dengan
teliti, karena di bawah ini ada tips atau clue untuk mempelajari lebih dalam Dasar Program Arduino untuk Pemula ,
ada tigas tips berikut langkah-langkahnya :

1. Pelajari Mikrokontroller yang ada di papan Arduino, Karena ada banyak tipe mikrokontroller yang di gunakan
Arduino, cobalah pelajari tipe ATMEGA328 , dan pelajari bagian-bagian bagaimana mikrokontroller tersebut bekerja ,
masih bingung bentuk ATMEGA328 ??

2. Pelajari lebih dalam Papan Arduino Seperti yang sudah saya jelaskan diatas, Belajar Dasar Program Arduino
untuk pemula tidak cukup di jenis-jenis Arduino saja, papan (board) juga harus kalian pelajari lebih mendetail, coba
pelajar memorinya konfigurasi pin I/O baik digital maupun analog, coba perhatikan gambar di bawah yang
merupakan diagram Arduino

8
3. Pelajari software Arduino , terutama cara memprogram arduino dalam bahasa C, mengupload program, dan
pelajari bagian-bagian aplikasi Arduino IDE (Integrated development Environment) atau Skecth , Aplikasi tersebut
akan memudahkan semua hal yang berhubungan dengan software arduino , aplikasi tersebut dapat anda
download disitus webnya ,

9
3. Pemrograman Dasar Arduino

Seperti yang saya bilang pada postingan sebelumnya, bahasa pemrograman Arduino mirip bahasa C yang
digunakan pada AVR. Akan tetapi lebih sederhana, dan lebih mudah untuk dipelajari. Ada yang bilang juga bahwa
bahasa pemrograman Arduino adalah bahasa processing.

Nah pada kelas ini saya ingin mengajak kamu untuk belajar Bahasa Pemrograman Dasarnya. Penting sekali, supaya
saat dipembahasan selanjutnya saya kasih kamu contoh program. Kamu sudah bisa memahami dan tidak bingung,
karena kamu sudah tahu dasarnya. Ok!

Baiklah kita akan mulai dari:

BARE MINIMUM

void setup() {
// semua kode yang disini akan dibaca sekali oleh Arduino
}

void loop() {
//semua kode yang ada disini akan dibaca
//berulang kali (terus menerus) oleh Arduino
}

10
void setup

Semua kode program yang ada dalam void setup akan dibaca sekali oleh Arduino. Biasanya isinya berupa kode
perintah untuk menentukan fungsi pada sebuah pin. Contoh kodenya seperti:

pinMode(13, OUTPUT); // menentukan pin 13 sebagai OUTPUT


pinMode(3, INPUT); // menentukan pin 3 sebagai INPUT

Adapun untuk komunikasi antara Arduino dengan komputer, menggunakan:

Serial.begin(9600); // untuk komunikasi Arduino dengan computer

void loop

Semua kode program yang ada di void loop akan dibaca setelah void setup dan akan dibaca terus menerus oleh
Arduino. Isinya berupa kode-kode perintah kepada pin INPUT dan OUTPUT pada Arduino. Contoh kodenya seperti:

digitalWrite(13, HIGH); //untuk memberikan 5V (nyala) kepada pin 13.


digitalWrite(13, LOW); //untuk memberikan 0V (mati) kepada pin 13.
analogWrite(3, 225); //untuk memberikan nilai 225 (setara dengan 5V)
kepada pin 3.

Adapun untuk menampilkan nilai pada sebuah sensor di Serial Monitor, bisa menggunaka:

Serial.print(namasensor);
//menampilkan nilai sensor yang disimpan di variabel nama sensor

Untuk menampilkan teks, bis menggunakan:

Serial.print("Selamat Datang");
//menampilkan teks Selamat Datang pada Serial Monitor

Dan untuk membuka Serial Monitor sendiri pada Arduino, bisa dengan memilih menu Tools kemudian pilih Serial
Monitor. Atau dengan menekan kombinasi CTRL+SHIFT+M di keyboard. Atau bisa juga dengan meng-klik ikon Kaca
Pembesar di Arduino, seperti gambar dibawah ini:

–––––––––––––––––––––––––––––––––––––––––––––––––––––––

11
MARI BAHAS LEBIH DETAIL LAGI!
CATATAN PADA PROGRAM

Kamu bisa membuat catatan pada program dan tidak akan dibaca oleh Arduino, dengan cara mengetikan //
kemudian mengetikan catatannya, seperti:

void loop() {

// catatan pada baris ini tidak akan dibaca oleh program


}

Tapi pemakaian tanda // hanya berfungsi untuk catatan satu baris saja, jika kamu ingin membuat catatan yang
panjang yaitu berupa paragraf. Maka pertama kamu ketikan /* lalu ketikan catatan kamu, dan jika sudah selesai tutup
dengan kode */ . Contohnya seperti:

void loop() {

/* apapun yang kamu mau ketikan disini tidak


akan dibaca oleh program
sepanjang apapun kamu mengetiknya
*/

KURUNG KURAWAL {}

Digunakan untuk menentukan awal dan akhir dari program. Karena seperti bahasa pemrograman pada umumnya,
Arduino membaca mulai dari atas hingga kebawah.

void loop()
{
….program
….program
….program
}

TITIK KOMA ;
Setiap baris kode pada Arduino harus diakhiri dengan tanda ;

void setup()
{ pinMode(13,
OUTPUT);
}

12
void loop()
{ digitalWrite(13,
HIGH);
}

VARIABLES
Variabel adalah kode program yang digunakan untuk menyimpan suatu nilai pada sebuah nama. Yang biasa digunakan
diantaranya adalah Integer, Long, Boolean, Float, Character.

int (integer)

Variabel yang paling sering digunakan dan dapat menyimpan data sebesar 2 bytes (16 bits).

long (long)

Biasa digunakan jika nilai datanya lebih besar dari integer. Menggunakan 4 bytes (32 bits).

boolean (boolean)

Variabel yang hanya menyimpan nila TRUE dan FALSE saja. Hanya menggunakan 1 bit saja

float(float)
Digunakan untuk floating point pada nilai decimal. Memory yang digunakan 4 bytes (32 bits).

char(character)
Menyimpan character berdasarkan ASCII kode (contoh: ‘A’=65). Menggunakan 1 byte (8 bits).

OPERATOR MATEMATIKA

Digunakan untuk memanipulasi nilai dengan perhitungan matematika sederhana seperti: penjumlahan, pengurangan,
sama dengan, dan sebagainya.

= (sama dengan) (contoh x=10*2 (x sekarang jadi 20))


% (persentase) (contoh 12%10 (hasilnya yaitu 2))
+ (penambahan)
– (pengurangan)
* (perkalian)
/ (pembagian)

OPERATOR PERBANDINGAN
Digunakan untuk melakukan perbandingan secara logika.

== (sama dengan) contoh: 15 == 10 FALSE atau 15 == 15 TRUE


!= (tidak sama dengan) contoh: 15 != 10 TRUE atau 15 != 15 FALSE
< (lebih kecil dari) contoh: 15 < 10 FALSE atau 12 < 14 TRUE
> (lebih besar dari) contoh: 15 > 19 TRUE atau 15 > 10 FALSE

13
STRUKTUR PENGENDALI

Program yang digunakan untuk menentukan sebuah kondisi, dan jika kondisinya sudah terpenuhi maka akan
melaksanakan perintah yang sudah ditentukan. Dan saat tidak memenuhi kondisinya juga ada perintah yang
dilaksanakan oleh Arduino.

if(kondisi A)
{
Kode Perintah A
}
else if(kondisi B)
{
Kode Perintah B
}
else
{
Kode Perintah C
}

Pertama Arduino akan lihat Kondisi A. Jika terpenuhi, maka akan melaksanakan Kode Perintah A.
Tapi jika TIDAK, Arduino akan lihat Kondisi B. Jika terpenuhi, maka akan melaksanakan Kode Perintah B.
Tapi jika TIDAK juga, maka Arduino akan melaksanakan Kode Perintah C.

for(int i = 0; i < #repeats; i++)


{
Kode Perintah
}

Kode diatas digunakan saat kita ingin mengulangi kode atau nilai dalam beberapa kali. Penjelasan detailnya nanti
akan dibahas ketika mencoba membuat projek, biar lebih mudah dipahami.

KODE DIGITAL
Digunakan untuk pemrograman yang menggunakan Pin Digital pada Arduino.

pinMode( pin, mode);

Kode diatas digunakan untuk seting mode pin. Pin adalah nomer pin yang akan digunakan, kalo kamu pake Arduino
Uno, pin Digitalnya dari 0-13. dan mode sendiri bisa berupa INPUT atau OUTPUT.

Contoh:

pinMode(13, OUTPUT); // artinya pin 13 digunakan sebagai OUTPUT


pinMode(7, INPUT); // artinya pin 7 digunakan sebagai INPUT

Dan seperti yang sudah saya bilang untuk kode pinMode itu ada didalam void setup.

digitalRead(pin);

14
Kode diatas digunakan pin INPUT, untuk membaca nilai sensor yang ada pada pin. Dan nilainya hanya terbatas pada
1 (TRUE), atau 0 (FALSE).

Contoh:

digitalRead(13); // artinya kode akan membaca nilai sensor pada pin 13

Kode digitalRead kita masukan dalam void loop.

digitalWrite(pin, nilai);

Kode diatas digunakan untuk pin OUTPUT yang sudah kita seting apakah akan diberikan HIGH (+5V), atau LOW
(Ground).

Contoh:

digitalWrite(13, HIGH); // artinya pin 13 kita diberi tegangan +5V


digitalWrite(13, LOW); // artinya pin 13 kita diberi tegangan 0 / Ground

Dan untuk kode digitalWrite tentu saja kita masukan dalam void loop.

analogWrite(pin, nilai);

Meskipun Arduino adalah perangkat digital, tapi kita masih bisa menggunakan fungsi Analognya pada pin Digital
Arduino. Tapi hanya beberap pin saja, yang biasa kita sebut PWM (Pulse With Modulation). Pada Arduino Uno
memiliki 6 pin PWM, yaitu: 3,5,6,9, 10, dan 11.

Dengan begini nilai yang dihasilkan menjadi bervariasi dari 0-225, itu setara dengan 0-5V.

Contoh:

analogWrite(3, 150); // artinya pin 3 diberikan nilai sebesar 150

Dan untuk kode analogWrite juga kita masukan dalam void loop.

KODE ANALOG

Kode analog ini digunakan ketika ingin menggunakan pin Analog pada Arduino. Untuk Arduino Uno pin Analog dari
A0-A5. Dan karena ini pin Analog maka hanya bisa kita gunakan sebagai INPUT saja. Dan juga tidak perlu menulis
pinMode pada void setup.

analogRead(pin);

Kode diatas digunakan untuk membaca nilai pada sensor Analog. Yaitu antara 0-1024.

15
Contoh:

analogRead(A0); // artinya kode akan membaca nilai sensor pada pin AO.

CATATAN: Kode dalam Arduino adalah Case Sensitive. Maksudnya penggunaan huruf kecil atau huruf besar sangat
berpengaruh.

16
4. Program Arduino: Menyalakan LED dan BLINK!

buatlah rangkaian seperti gambar dibawah ini:

NOTES:

 Pin GND Arduino ke Breadboard.


 Pin negatif LED ke GND melalui resistor 220 ohm.
 pin positif LED ke pin 13 Arduino.

Pembuatan sketch untuk BLINK sangatlah mudah, setelah masuk ke Program ARDUINO
kemudian klik FILE => EXAMPLE => BASIC => BLINK.

Atau salin ulang sketch dibawah ini:

void setup()
{ pinMode(13,
OUTPUT);
}
void loop()
{ digitalWrite(13,
HIGH); delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

17
5. Sensor Cahaya LDR

Light Dependent Resistor (LDR) adalah jenis resistor yang nilai hambatannya di pengaruhi oleh
cahaya di sekitar. Maka kita bisa membuat LDR ini menjadi sensor cahaya. Karena memang
sudah banyak aplikasinya. Misalnya pada lampu jalan, tidak ada saklar untuk mematikan dan
menghidupkan lampu jalan.

Dengan menggunakan sensor cahaya LDR, lampu jalan akan mati ketika siang dan akan hidup
ketika malam secara otomatis.

Sekarang kita akan buat program Arduino yang akan melakukan, “Lampu LED menyala ketika
keadaan gelap dan mati ketika keadaan terang” (Automatic Lighting System).

Kemudian buat rangkaian seperti gambar dibawah ini.

NOTES:

 Hubungkan 5V dan GND dari Arduino ke Breadboard.


 Hubungkan kaki kiri LDR ke 5V.
 Hubungkan kaki kanan LDR ke pin A2 Arduino.
 Hubungkan kaki kiri resistor ke celah antara kaki kanan LDR dan GND arduino.
 Hubungkan kaki kanan resistor ke GND.
 Untuk pemasangan LED kamu bisa lihat pada Menyalakan LED dan BLINK.

Untuk pemrograman LDR, kamu bisa gunakan sketch program dibawah ini:

byte ldr = A2;


byte led = 13;
int nilai;

void setup()
{ pinMode(led,
OUTPUT);
Serial.begin(9600);
}

void loop() {
nilai = analogRead(ldr);

18
Serial.print("Nilai LDR: ");
Serial.println(nilai);

if (nilai < 500)


{ digitalWrite(led,
HIGH);
}
else {
digitalWrite(led, LOW);
}

REVIEW NOTES:

 int nilaiLDR= 0; membuat variabel nilaiLDR, dan akan membaca nilai mulai dari 0.
 pinMode(LED, OUTPUT); memilih mode OUTPUT untuk pin yang disimpan di variabel LED.
 Serial.begin(9600); digunakan agar Arduino bisa berkomunikasi dengan Komputer.
 nilaiLDR= analogRead(LDR); menyimpan nilai yang dibaca oleh sensor LDR kedalam variabel nilaiLDR.
 Serial.print(“NilaiLDR= “); digunakan untuk mencetak secara digital atau menampilkan teks nilaiLDR=,
untuk ini kita tampilkan pada Serial Monitor.
 Serial.println(nilaiLDR); untuk menampilkan nilai yang dibaca oleh sensor LDR
 if(nilaiLDR < 500) jika sensor membaca nilai 500 atau kurang dari 500
 digitalWrite(LED, HIGH); lampu LED menyala
 else jika tidak
 digitalWrite(LED, LOW); lampu LED mati

MARI LEBIH KRETIF LAGI!!!

1. Coba kamu buat program BLINK, dimana kecepatan BLINKnya diatur melalui nilai yang diterima oleh
Sensor LDR.
2. Pindahkan kaki positif LED dari pin 13 Arduino ke Pin 9 (PWM). Kemudian dengan perintah analogWrite,
buatlah lampu LED menyala terang dan redup berdasarkan nilai dari sensorLDR.

19
6. Analog Input Potensiometer!

Seperti yang kita tahu, Potensiometer adalah jenis resistor yang ukuran resistansinya atau nilai
hambatannya bisa kita rubah sesuai dengan kebutuhan kita. Nah pada Arduino, bahkan kita bisa
melihat berapa nilai yang dihasilkan oleh potensiometer pada posisi tertentu. Lalu bisa kita
manipulasi sesuai dengan kebutuhan kita.

Buatlah rangkaian seperti gambar dibawah ini:

NOTES:

 Hubungkan 5V dan GND dari Arduino ke Breadboard.


 Hubungkan kaki kanan Potensiometer ke VCC.
 Hubungkan kaki kiri Potensiometer ke GND.
 Hubungkan kaki tengah Potensiometer ke pin A3 Arduino.
 Untuk LED rangkaiannya tidak jauh berbeda dengan pembahasan sebelumnya.

***

Untuk programnya, kamu bisa gunakan sampel pada


File=>Examples=>Analog=>AnalogInput. Atau sallin ulang sketch ini:

byte sensor= A0;


byte led= 13;
int nilai;

void setup()
{ pinMode(led,
OUTPUT);
}

void loop(){
nilai= analogRead(sensor);

digitalWrite(led, HIGH);
delay(nilai);
digitalWrite(led, LOW);
delay(nilai);
}
NOTES:

20
 int sensorPin = A0; digunakan untuk membuat pin A0 menjadi variabel sensorPin dan karena
pin AO adalah input analog, maka pada void setup tidak perlu dibuat program
pinMode(sensorPin, INPUT); karena kalau pin analog sudah pasti INPUT, tidak bisa
digunakan untuk OUTPUT.
 mengingat kembali fungsi dari sensorValue = analogRead(sensorPin); adalah untuk menyimpan
nilai baca dari sensorPin kedalam variabel sensorValue.
 delay(sensorValue); digunakan untuk memberikan waktu jeda berdasarkan nilai yang keluar
dari sensorPin, jadi kecepatan lampu berkedip berdasarkan potensiometer.

21
7. Membaca Nilai dari Potensiometer dan Mengatur Terang Redup
Cahaya LED (AnalogInOut)

Seperti yang kita tahu bahwa potensiometer adalah jenis resistor yang hambatannya dapat
berubah.

Masih dengan rangkaian yang sama (pin 13 dipindakan ke pin 9) kita akan membuat sketch
program, untuk membaca nilai dari potensiometer. Yang mana kisaran nilai dari potensiometer
adalah 0-225.
0 ketika tidak ada hambatan, dan 225 saat hambatan maksimal.

Untuk program kamu bisa buka FILE=>EXAMPLES=>ANALOG=>ANALOGINOUT.


Atau salin ulang sketch berikut ini:

byte sensor= A0;


byte led= 9;

int nilai;
int output;

void setup()
{ pinMode(led,
OUTPUT);
Serial.begin(9600);
}

void loop(){
nilai= analogRead(sensor);
output= map(nilai, 0, 1023, 0, 255);

analogWrite(led, output);

Serial.print("sensor: ");
Serial.print(nilai);
Serial.print(" ");
Serial.print("output: ");
Serial.print(output);

delay(2);
}

untuk melihat nilai yang dihasilkan dari Potensiometer kamu bisa pilih TOOLS=>SERIAL
MONITOR atau CTRL+SHIFT+M , atau klik tombol yang ada di pojok kanan.

22
NOTES:

 const int analogInPin = A0; program seperti sama seperti sebelumnya digunakan untuk membuat variabel,
tambahan kode const sebelum int adalah untuk penetapan nilai.
 Serial.begin(9600); berfungsi agar arduino bisa berkomunikasi dengan komputer, 9600 adalah salah satu
nilai yang dipilih untuk komunikasi.
 outputValue = map(sensorValue, 0, 1023, 0, 255); nilai yang dihasilkan dari sensorValue adalah 0-1023,
nilainya akan dikonversi menjadi 0-225 pada variabel outputValue.
 analogWrite(analogOutPin, outputValue); menyalakan LED menggunakan PWM (agar bisa diatur
terang cahanya berdasarkan outputValue.
 Serial.print(“sensor = ” ); berguna untuk menampilkan teks yang ada didalam tanda kutip “sensor=“.
 Serial.print(sensorValue); untuk menampilkan nilai yang ada pada sensorValue.
 Serial.print(“t output = “); berguna untuk menampilkan teks yang ada didalam tanda kutip “t output=“.
 Serial.println(outputValue); untuk menampilkan nilai yang ada pada outputValue.

MARI LEBIH KREATIF!!!

Dengan membuat rangkaian seperti pada Gambar 1.5 B, kamu bisa membuat sketch program seperti;

1. Jika nilai potensiometer < 100 lampu merah menyala, jika nilai potensiometer < 150 lampu kuning
menyala, jika nilai potensiometer < 200 lampu hijau menyala.

Untuk membuat program seperti diatas tentu kamu membutuhkan kode if. Sebagai contoh:

if ( outputValue < 100) {


digitalWrite(LEDmerah, HIGH);
}

23
8. Digital Read Push Button

Hari ini kita akan mencoba membuat Program untuk Push Button, komponen elektronika jenis
Saklar yang pernah terbahas di Komponen Dasar Elektronika. Dimana kita mengetahui bahwa
Push Button ketika kita tekan akan menghubungkan arus listrik, dan terputus apabila dilepas
(tidak ditekan).

Saat ini kita akan membuat program sederhana untuk Push Button dengan logika program, “Jika
button ditekan LED menyala, jika tidak LED mati.”

Buatlah rangkain seperti gambar dibawah ini…

Rangkaian Untuk Push Button

NOTES:

 Hubungkan 5V dan GND dari Arduino ke Breadboard.


 Hubungkan kaki pertama button ke 5V dan kaki ke-2 ke kaki pertama resitor 10k.
 Hubungkan kaki ke-2 resistor 10k ke GND.
 Hubungkan pin 2 Arduino ke kaki ke-2 button.
 Untuk LED rangkaiannya tidak jauh berbeda dengan pembahasan sebelumnya.

Untuk sketch-nya kamu bisa ambil sampel pada FILE=>EXAMPLES=>DIGITAL=>BUTTON. Atau salin ulang
program dibawah ini:

byte tombol= 2;
byte led= 13;
int nilai;

void setup()
{ pinMode(led, OUTPUT);
pinMode(tombol, INPUT);
}

void loop(){
nilai= digitalRead(tombol);

24
if(nilai == 1)
{ digitalWrite(led,
HIGH);
}
else{
digitalWrite(led, LOW);
}
}

NOTES:

 Variabel int nilai; digunakan untuk membuat variabel nilai untuk menyimpan data nilai dari tombol.
 Variabel baru nilai = digitalRead(tombol); digunakan untuk menyimpan nilai baca dari tombol kedalam
variabel nilai.
 digitalRead sendiri berfungsi untuk membaca nilai sensor secara digital (0=GND, 1=5V).
 if (nilai == 1) digunakan untuk menampilkan jika nilai dari nilai adalah 1, maka lampu led akan menyala
digitalWrite(led, HIGH);
 else jika tidak maka lampu led akan mati digitalWrite(led, LOW);

MARI LEBIH KREATIF!!!

Dengan rangkaian yang sama, kamu bisa membuat sketch program seperti;

1. Jika button ditekan lampu LED mati, jika tidak menyala.


2. Jika button ditekan lampu LED berkedip, jika tidak hanya menyala.
3. Jika button ditekan lampu LED berkedip cepat, jika tidak berkedip lambat.

Menghidupkan Dan Mematikan LED dengan Satu Tombol – Program Kemudian rangkailah seperti gambar dibawah
ini:

Jika kamu sudah merangkai, sekarang kita masuk kebagian pemrograman. Buka Arduino IDE, kemudian ketik ulang
atau salin program dibawah ini:

int button= 2;
int nilaitombol;
int count;

int led= 13;

25
void setup()
{ pinMode(button,
INPUT); pinMode(led,
OUTPUT);
}

void loop(){
nilaitombol= digitalRead(button);

if(nilaitombol == 1){
count++;
delay(300); if(count==1)
{ digitalWrite(led,
HIGH);
}
if(count==2)
{ digitalWrite(led,
LOW); count=0;
}
}
}

26
9. Tutorial Arduino Mengakses Sensor Hujan

Sensor hujan adalah jenis sensor yang berfungsi untuk mendeteksi terjadinya hujan atau tidak,
yang dapat difungsikan dalam segala macam aplikasi dalam kehidupan sehari – hari. Dipasaran
sensor ini dijual dalam bentuk module sehingga hanya perlu menyediakan kabel jumper untuk
dihubungkan ke mikrokontroler atau Arduino.

Prinsip kerja dari module sensor ini yaitu pada saat ada air hujan turun dan mengenai panel
sensor maka akan terjadi proses elektrolisasi oleh air hujan. Dan karena air hujan termasuk
dalam golongan cairan elektrolit yang dimana cairan tersebut akan menghantarkan arus listrik.

Pada sensor hujan ini terdapat ic komparator yang dimana output dari sensor ini dapat berupa
logika high dan low (on atau off). Serta pada modul sensor ini terdapat output yang berupa
tegangan pula. Sehingga dapat dikoneksikan ke pin khusus Arduino yaitu Analog Digital
Converter.

Dengan singkat kata, sensor ini dapat digunakan untuk memantau kondisi ada tidaknya hujan di
lingkungan luar yang dimana output dari sensor ini dapat berupa sinyal analog maupun sinyal
digital.

Pada tutorial ini akan dibuat 2 sekaligus contoh program yaitu menggunakan ADC dan pin
digital sebagai inputannya.

Instruksi :

 Hubungkan module sensor ke power supply +5Vdc, setelah itu led indikator pada modul akan menyala.
Saat kondisi tidak adanya rintik hujan, output digital akan berlogika HIGH, dan membuat led deteksi akan
mati. Sedangkan saat kondisi terdeteksi adanya tetesan air hujan, output digital mengeluarkan logika LOW
dan led deteksi akan menyala.
 Ketika tetesan air hujan menghilang, nilai output kembali menjadi tinggi.

27
 Keluaran sinyal analog (AO) dihubungkan dengan Arduino melalui fitur ADC untuk mendeteksi intensitas
rintik air hujan ataupun disambungkan ke voltmeter DC dengan range maksimal 0-5v.
 Keluaran sinyal digital (DO) bisa dihubungkan dengan Arduino maupun relay untuk mendeteksi adanya
hujan atau tidak

Program 1 : mengakses Digital Output sensor

//Mendeteksi hujan dengan indikator LED secara sederhana

const int sensor_hujan = 12;


const int LED = 13;

void setup () {
pinMode (sensor_hujan, INPUT);
pinMode (LED, OUTPUT); }

void loop() {
int kondisi_sensor = digitalRead(sensor_hujan);
if (kondisi_sensor == LOW)
digitalWrite(LED, HIGH);
else digitalWrite(LED, LOW);
delay (1000);
}

Jika sensor hujan mendeteksi akan adanya hujan yang terkena pada modul, maka akan
memberikan indikator pada Arduino Uno yaitu indikator LED akan menyala, dan sebaliknya.

Program 2 : mengakses Output Analog sensor

int Led=13; //nama alias pin 13 yaitu LED


int OutputDO=12; //nama alias pin 12 yaitu Output DO
int OutputAO=A0; //nama alias pin AO yaitu Output AO

int val;//val sebagai buffer data


float sensor; //sebagai data buffer sensor

void setup()
{
pinMode (Led, OUTPUT) ; //Defisini LED sebagai output
pinMode (OutputDO, INPUT) ; //Defisini OutputDO sebagai input
pinMode (OutputAO, INPUT) ; //Defisini OutputAO sebagai input
//inisialisasi komunikasi serial
Serial.begin(9600);
}

void loop()
{
sensor = analogRead(OutputAO);//Pembacaan nilai sensor
Serial.println(sensor); //hasil akan ditampilkan di serial monitor

//pembacaan nilai sensor (logika 1 dan 0)


val = digitalRead (OutputDO);
//Pengondisian

28
if (val == LOW) //jika sensor hujan mendeteksi nyala api
{
//Lampu Led akan menyala
digitalWrite (Led, HIGH);
}
else
{
//Jika tidak mendeteksi, maka led akan padam
digitalWrite (Led, LOW);
}
delay(1000); //waktu tunda 1 detik
}

Selamat mencoba!

29
10. Program Sensor Suhu Dan Kelembaban DHT11 Dengan
Arduino
buatlah rangkaian seperti gambar dibawah ini:

NOTES:

1. Hubungkan kaki ke-1 DHT11 ke 5V Arduino


2. Hubungkan kaki ke-2 DHT11 ke pin 2 Arduino
3. dengan menggunakan Resisitor 10 Kilo Ohm, hubungkan kaki ke-2 DHT11 ke 5V Arduino.
4. Hubungkan kaki ke-4 DHT11 ke GND Arduino
5. Untuk kaki Ke-3 DHT11 kita abaikan saja 😀

Dengan rangkaian yang seperti diatas saya buat DHT11 saya menjadi DIY Modul. Yang mana hasil jadinya seperti
dibawah ini:

30
Untuk pemrogramannya kita akan menggunakan Library DHT. Untuk itu kamu perlu insert librarynya
terlebih dahulu ke Arduino. Tapi, kamu harus punya dulu Librarynya

Jika sudah selanjutnya adalah:

1. Buka aplikasi Arduinonya, lalu Masuk ke menu SKETCH, pilih INCLUDE LIBRARY, pilih ADD.
ZIP Library…

2. Cari file Library yang tadi sudah kamu Download, lalu OPEN.

31
3. Jika berhasil, aplikasi Arduino kamu akan muncul keterangan seperti dibawah ini:

Oke sekarang silahkan kamu salin Ulang Program Dibawah ini:

#include <DHT.h>
DHT dht(2, DHT11); //Pin, Jenis DHT

void setup(){
Serial.begin(9600);
dht.begin();
}

void loop(){
float kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();

Serial.print("kelembaban: ");
Serial.print(kelembaban);
Serial.print(" ");
Serial.print("suhu: ");
Serial.println(suhu);
}

Jika sudah DONE UPLOADING, sekarang kamu sudah bisa lihat nilainya di Serial Monitor.

32
Dari Serial Monitor menunjukan Kelembaban 61% dan Suhunya 29 Derajat Celcius. Tentu saja
nilainya akan berbeda ditempat kamu, tergantung suhu dan kelembaban di lingkungan kamu.
Nah untuk melihat perubahan nilai atau membuat nilai menjadi naik. Kamu bisa pegang
sensornya, maka nilainya akan berubah.

BONUS MATERI: MENGENDALIKAN LED DENGAN


SENSOR SUHU

Untuk mengendalikan LED berdasarkan suhu dan kelembaban kamu hanya tinggal
menambahkan program untuk LEDnya dan Pogram If. Silahkan salin program dibawah ini:

#include “DHT.h” //Memasukan Library DHT ke Program


#define DHTPIN 2 //menggunakan pin 2 untuk pemasangan sensornya
#define DHTTYPE DHT11 //memilih tipe DHT11, bisa diubah menjadi DHT22, DHT21

DHT dht(DHTPIN, DHTTYPE); //setting pin yang dipilih dan tipe DHT
int led= 13;

void setup() {
Serial.begin(9600); //komunikasi Serial dengan komputer
dht.begin(); //Komunikasi DHT dengan Arduino
pinMode(led, OUTPUT);
}

void loop() {
float kelembaban = dht.readHumidity(); //menyimpan nilai Humidity pada
variabel kelembaban
float suhu = dht.readTemperature(); //menyimpan nilai Temperature pada
variabel suhu

Serial.print(” Kelembaban: “); //menampilkan tulisan Kelembaban di Serial


Monitor
Serial.print(kelembaban); //menampilkan nilai kelembaban
Serial.print(” Suhu: “); //menampilkan tulisan suhu
Serial.println(suhu); //menampilkan nilai suhu

33
delay(500); //memberi jeda waktu baca selama 500 mili detik

//Jika Kelembaban lebih besar dari 65.00 atau suhu lebih besar dari 32.00 led
akan menyala
//Jika Kelembaban lebih kecil dari 66.00 atau suhu lebih kecil dari 33.00 led
akan mati

if ( kelembaban > 65.00){


digitalWrite(led, HIGH);
}
if ( suhu > 32.00){
digitalWrite(led, HIGH);
}
if ( kelembaban < 66.00){
digitalWrite(led, LOW);
}
if ( suhu < 33.00){
digitalWrite(led, LOW);
}

34
11. Memprogram LCD 16×2 Tanpa I2C Dengan Arduino

Sebelum mengerjakan barang kali dari kamu ada yang penasaran dengan pin out atau datasheet
dari LCD 16×2, lihatlah penampakan dibawah ini:

Lalu buatlah rangkaian seperti gambar dibawah ini:

Pastikan tidak ada yang salah dengan rangkaiannya ya, silahkan cek ulang untuk memastikan
rangkaianya sudah benar. OK, jika sudah yakin benar, kita akan langsung menuju ke
pemrograman, dan untuk pemrogramannya, kita akan menggunakan library bawaan dari aplikasi
arduinonya.

Silahkan salin atau ketik ulang skecth dibawah ini:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{ lcd.begin(16,
2);
}

void loop() {
lcd.setCursor(0,0);

35
lcd.print("Test LCD");
lcd.setCursor(0, 1);
lcd.print("KelasRobot.com");
}

Catatan Program:

 #include <LiquidCrystal.h> menambahkan library LCD pada program arduino, dengan library ini
pemrograman LCD pada arduino menjadi lebih sederhana dan mudah dipahami.
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); serangkaian pin yang digunakan pada arduino yang dihubungkan
dengan LCD, cukup banyak kan dibandingkan dengan menambahkan i2c yang hanya pin SCL dan SDA
aja.
 lcd.begin(16, 2); angka 16 dan 2 mengatur bahwa lcd yang kita gunakan adalah ukuran 16×2, jika kamu
menggunakan LCD 16×4, kamu tinggal ubah angka 2 nya menjadi angka 4.
 lcd.setCursor(0,0); jika ingin menampilkan kata pada baris pertama gunakan kode ini, lalu selanjutnya
gunakanlah lcd.print untuk menampilkan kata pada baris pertama.
 lcd.print(” Test LCD Tanpa I2C”); untuk menampilkan kata atau kalimat pada lcd.

36
12. Alat Pengatur Suhu dan Kelembaban Otomatis Sensor
DHT11, LCD, dan Relay!

silahkan pasang seperti gambar dibawah ini:

Jika sudah dirangkai, dibawah ini programnya. Silahkan, di salin ulang!

#include <DHT.h> //menyertakan library DHT kedalam program

#define DHTPIN 8 //kita pasang sensor pada pin 8


#define DHTTYPE DHT11 //kita menggunakan jenis sensor DHT11, ubah jika kamu
gunakan sensor lain seperti DHT22 (AM2302) atau DHT21 (AM2301)

DHT dht(DHTPIN, DHTTYPE); //deklarasi pin sensor dengan jenis sensor yang
dipilih

#include <LiquidCrystal.h>//menyertakan library LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pin yang dipadakai LCD

int relay= 9; //kita menggunakan pin 9 untuk relay

void setup() {
lcd.begin(16, 2); //mengatur ukuran lcd yang dipakai
dht.begin(); //program komunikasi atau setup untuk sensor DHT
pinMode(relay, OUTPUT); //mengatur relay sebagai OUTPUT
Serial.begin(9600);
}

void loop() {
float kelembaban = dht.readHumidity(); //menyimpan nilai kelembaban pada
variabel kelembaban
float suhu = dht.readTemperature(); //menyimpan nilai suhu pada variabel
suhu
delay(200); //mengatur jeda waktu pembacaan sensor selama 200 milidetik

37
Serial.print(kelembaban); //menampilkan nilai kelembaban pada Serial
Monitor
Serial.print(" "); //menambahkan spasi
Serial.println(suhu); //menampilkan nilai suhu pada Serial Monitor

//menampilkan nilai kelembaban pada LCD


lcd.setCursor(0, 0); //
lcd.print("Kelembaban.: ");
lcd.print((int) kelembaban);
lcd.print("%");
//menampilkan nilai suhu pada LCD
lcd.setCursor(0, 1);
lcd.print("Suhu.: ");
lcd.print((int) suhu);
lcd.println("*C ");

//kondisi if dibawah ini, sailahkan di atur sesuai dengan kebutuhan kamu

if ( kelembaban > 80.10){ //jika kelembaban lebih besar dari 80.10


digitalWrite(relay, LOW); //relay menyala
}

else if( suhu > 30.10){ //jika suhu lebih besar dari 30.10
digitalWrite(relay, LOW); //relay menyala
}

else{ //jika tidak


digitalWrite(relay, HIGH); //relay mati
}

38
13. Sensor Suhu DS18B20

Sensor DS18B20 merupakan sensor digital yang memiliki 12-bit ADC internal. Sangat presisi,
sebab jika tegangan referensi sebesar 5Volt, maka akibat perubahan suhu, ia dapat merasakan
perubahan terkecil sebesar 5/(212-1) = 0.0012 Volt ! Pada rentang suhu -10 sampai +85 derajat
Celcius, sensor ini memiliki akurasi +/-0.5 derajat. Sensor ini bekerja menggunakan protokol
komunikasi 1-wire (one-wire).

Amatilah Gambar 1. IC DS18B20 memiliki tiga kaki, yaitu GND (ground, pin 1), DQ (Data, pin
2), VDD (power, pin 3). Pada Arduino, VDD dikenal sebagai VCC. Dalam hal ini, kita
asumsikan VCC sama dengan VDD. Tergantung mode konfigurasi, ketiga kaki IC ini harus
dikonfigurasi terlebih dahulu. Sensor dapat bekerja dalam dua mode, yaitu mode normal power
dan mode parasite power.

Pada Mode Normal, GND akan terhubung dengan ground, VDD akan terhubung dengan 5V dan
DQ akan terhubung dengan pin Arduino, namun ditambahkan resistor pull-up sebesar 4,7k.
Mode ini sangat direkomendasikan pada aplikasi yang melibatkan banyak sensor dan
membutuhkan jarak yang panjang.

Pada Mode Parasite, GND dan VDD disatukan dan terhubung dengan ground. DQ akan
terhubung dengan pin Arduino melalui resistor pull-up. Pada mode ini, power diperoleh dari
power data. Mode ini bisa digunakan untuk aplikasi yang melibatkan sedikit sensor dalam jarak
yang pendek.

Siapkanlah sensor suhu DS18B20. Ada dua jenis packaging. Ada yang berupa single IC, ada
pula yang dikemas tahan air (waterproof). Penulis merekomendasikan yang tahan air, sebab
harga masih terjangkau, lebih aman secara teknis, dan lebih luas penggunaannya (dapat
digunakan untuk

39
mengukur suhu cairan). Pada tutorial kali ini, kita akan menggunakan satu buah sensor dengan
konfigurasi mode parasite. Konfigurasi ini cukup mudah untuk dilakukan.

Unduhlah library yang ikut disertakan pada tutorial ini. Bukalah IDE Arduino, kemudian
tambahkan pustaka dengan mencari: Sketch -> Include Library -> Add .ZIP Library.. .Pilihlah
library yang telah diunduh sebelumnya. Lakukan untuk kedua library.

Jika sudah terinstal, ketiklah program berikut:

#include <OneWire.h>

#include <DallasTemperature.h>

// sensor diletakkan di pin 2

#define ONE_WIRE_BUS 2

// setup sensor

OneWire oneWire(ONE_WIRE_BUS);

// berikan nama variabel,masukkan ke pustaka Dallas

DallasTemperature sensorSuhu(&oneWire);

40
float suhuSekarang;

void setup(void)

Serial.begin(9600);

sensorSuhu.begin();

void loop(void)

suhuSekarang = ambilSuhu();

Serial.println(suhuSekarang);

delay(2000);

float ambilSuhu()

sensorSuhu.requestTemperatures();

float suhu = sensorSuhu.getTempCByIndex(0);

return suhu;

41
14. Program Sensor Ultrasonic Dengan Arduino TANPA
LIBRARY

Kebanyakan tutorial pemograman ultrasonic, menggunakan library untuk mempermudah


pemrogramannya. Tapi yang ingin saya share kali ini, kita akan membuat program dari awal,
sehingga kita tau seperti apa cara kerja dari sensor ini.
Dan seperti yang kita tau, Sensor Ultrasonic memiliki 2 sensor kiri dan kanan, seperti
penampakan dibawah ini.

Yang kiri itu adalah Transmitter (pengirim sinyal suara) sebutannya adalah Trigger, dan yang
kanan itu adalah Receiver (penerima sinyal suara) sebutannya adalah Echo.

So, cara kerja sensor ini adalah Trigger mengirimkan suara ultrasonic kedepan, dan jika didepan
ada benda, suara tersebut akan memantul dan diterima oleh Echo. Nah dari pantulan suara
(pulsa) ini, kita dapat mengetahui berapa jarak benda yang ada didepan sensor.

Kemudian rangkailah seperti penampakan dibawah ini…

42
Klik gambar untuk memperbesar.

Catatan:

1. Pasang pin VCC HC-SR04 ke pin 5V Arduino


2. Pasang pin Trig HC-SR04 ke pin 11 Arduino
3. Pasang pin Echo HC-SR04 ke pin 12 Arduino
4. Pasang pin GND HC-SR04 ke pin GND Arduino

Jika sudah, sekarang silahkan salin atau ketik ulang sketch program dibawah ini…

int trig = 11; // membuat varibel trig yang di set ke-pin 3


int echo = 12; // membuat variabel echo yang di set ke-pin 2
long durasi, jarak; // membuat variabel durasi dan jarak

void setup() {
pinMode(trig, OUTPUT); // set pin trig menjadi OUTPUT
pinMode(echo, INPUT); // set pin echo menjadi INPUT
Serial.begin(9600); // digunakan untuk komunikasi Serial dengan
komputer
}

void loop() {

// program dibawah ini agar trigger memancarakan suara ultrasonic


digitalWrite(trig, LOW);
delayMicroseconds(8);
digitalWrite(trig, HIGH);
delayMicroseconds(8);
digitalWrite(trig, LOW);
delayMicroseconds(8);

durasi = pulseIn(echo, HIGH); // menerima suara ultrasonic


jarak = (durasi / 2) / 29.1; // mengubah durasi menjadi jarak (cm)
Serial.println(jarak); // menampilkan jarak pada Serial Monitor

Kalau sudah Done Uploading, kamu bisa buka Serial Monitor untuk melihat nilai jarak dari
sensornya, coba untuk mendekatkan dan menjauhkan tangan dari sensor, dan lihat angkanya.

43
15. Memprogram Servo Dengan Arduino

Servo bergerak berdasarkan sinyal pulse yang dikirimkan ke bagian input servo. Di arduino
sendiri sinyal pulse itu, dikirim berdasarkan derajat. Misal kita kirim 10 derajat, maka servo akan
berada di posisi 10 derajat, jika kita kirim 80 maka akan bergerak ke posisi 80.

Berdasarkan jenisnya servo ada yang bisa berputar continue atau 360 derajat, ada yang dibatasi
hanya sampai 180 derajat saja, seperti servo yang saya gunakan pada percobaan kali ini.

selanjutnya rangkailah seperti dibawah ini:

Jika sudah dirangkai selanjutnya kita masuk kebagian pemrograman. Untuk memprogram Servo
kita akan menggunakan library yang sudah ada, atau bawaan aplikasi Arduinonya. Jadi kamu
tidak perlu add library lagi.

Silahkan salin atau ketik ulang skecth dibawah ini:

#include <Servo.h>
Servo servoku;

void setup(){
servoku.attach(3);
}

void loop()
{ servoku.write(10
); delay(1000);
servoku.write(100);
delay(1000);
}

Catatan:

1. #include <Servo.h> digunakan untuk menyertakan library Servo pada program Arduino.

44
2. Servo servoku; membuat variabel servoku (bisa diubah terserah kamu), untuk servo.
3. servoku.attach(3); memilih atau mengatur pin 3 digital sebagai pin yang digunakan
untuk servo pada variabel servoku.
4. servoku.write(10); mengatur posisi servo pada 10 derajat, silahkan atur derajat sesuai
kebutuh pergerakan servo kamu

45
16. Driver Motor L298N

L298N berfungsi sebagai driver motor DC dan juga stepper motor.


Modul ini bisa mengendalikan hingga 2 buah motor DC dan satu Stepper Motor.
Modul ini dibutuhkan karena board Arduino UNO hanya dapat mensupply arus 20mA.
Sedangkan Driver ini mampu hingga 2 A atau 2000mA pada 12V.Modul yang kali ini dipakai
adalah modul dengan L298N siap pakai.

L298N Modul

prinsip kerja H-Bridge pada L298N

46
IN1 IN2 IN3 IN4 Direction

0 0 0 0 Stop

1 0 1 0 Forward

0 1 0 1 Reverse

1 0 0 1 Left

0 1 1 0 Right

47
Rangkaian

#define EnA = 10;


#define EnB = 5;
#define In1 = 9;
#define In2 = 8;
#define In3 = 7;
#define In4 = 6;
void setup()
{
// All motor control pins are outputs
pinMode(EnA, OUTPUT);
pinMode(EnB, OUTPUT);
pinMode(In1, OUTPUT);
pinMode(In2, OUTPUT);
pinMode(In3, OUTPUT);
pinMode(In4, OUTPUT);
}
void goStraight() //run both motors in the same direction
{
// turn on motor A
digitalWrite(In1, HIGH);
digitalWrite(In2, LOW);
// set speed to 150 out 255
analogWrite(EnA, 200);
// turn on motor B
digitalWrite(In3, HIGH);
digitalWrite(In4, LOW);

48
// set speed to 150 out 255
analogWrite(EnB, 200);
delay(2000);
// now turn off motors
digitalWrite(In1, LOW);
digitalWrite(In2, LOW);
digitalWrite(In3, LOW);
digitalWrite(In4, LOW);
}
void loop()
{
goStraight();
delay(1000);
}

49
17. DETEKSI WARNA RGB MENGGUNAKAN TCS230

Module sensor warna TCS230 adalah module sensor yang mempunyai fungsi mengkonversi
warna yang akan dideteksi menjadi Frekuensi yang akan diolah oleh mikrokontroler.

Nama lain dari sensor ini yaitu Programmable Converter ‘Color Light’ Sensor to Frequency.

Yang dimana bahan pembuatannya berasal dari penggabungan antara Silicon Photodiode dan IC
CMOS single monolithic yang berfungsi sebagai pengkonversi arus menjadi frekuensi.

Cara kerja sensor

Keluaran dari sensor warna ini yaitu berupa gelombang persegi dengan modulasi 50% yang
dimana berbanding lurus dengan intensitas cahaya yang terbaca oleh sensor.

Bagian – bagian penting dari sensor warna TCS230 tertampil pada gambar dibawah

Pada sensor terdapat sebuah photodiode dengan array 8 x 8 yang mengkonversi warna menjadi
frekuensi, yang terdiri dari :

 16 dioda untuk filter merah


 16 dioda untuk filter hijau
 16 dioda untuk filter biru
 16 dioda untuk clear (tanpa filter)

Dari kesemua dioda diatas terhubung ke dalam rangkaian paralel yang menggunakan metode
switching pin (S0,S1,S2,S3).

50
Blok diagram TCS230

Pada tiap ke-16 fotodioda tersebut terhubung secara paralel, melihat gambar diatas dengan
menggunakan 2 pin kontrol S2 dan S3 dapat memilih mana yang akan dibaca. Sehingga jika
mendeteksi warna merah, dapat menggunakan 16 red difference photodiodes dengan mengatur
dua pin ke tingkat logika rendah.

Sensor memiliki 2 pin kontrol, S0 dan S1 yang berfungsi untuk mengukur frekuensi keluaran.
Frekuensi ini dapat di adjust dengan 3 nilai preset yang berbeda yaitu 100%, 20% atau 2%.
Penskalaan frekuensi bertujuan untuk berbagai penghitung frekuensi dalam optimimalisasi
keluaran sensor.

Skema yang perlu dirangkaikan

51
Hasil dari trial dapat dilihat di serial monitor arduino, dan dipraktekan dengan menyediakan
kertas dengan warna merah, hijau dan biru. Yang dimana ketiga warna tersebut merupakan
warna dasar dari semua warna.

//Wiring PIN Sensor TCS3200 / TCS230


int s0=3;int s1=4;int s2=5;int s3=6;int out=7;

// sebagai indikator Warna Object telah dideteksi


const int LED=13;

void TCS3200(){
pinMode(LED,OUTPUT);
pinMode(s2,OUTPUT);pinMode(s3,OUTPUT);pinMode(s0,OUTPUT);pinMode(s1,OUTPUT);
return;
}

void setup(){
//Prosedur pemanggilan fungsi sensor TCS3200
TCS3200();

//Setting output untuk LED RGB


pinMode (10, OUTPUT); //Warna merah
pinMode (11, OUTPUT); //warna hijau
pinMode (12, OUTPUT); //warna biru

Serial.begin(9600);
delay(200);
}

void loop(){
Serial.print(detectColor(out));
delay(200);
}

52
unsigned int detectColor(int taosOutPin){
double isPresentTolerance=1;
//range nilai tolerance yaitu 1 - 10
//Fungsi tolerance yaitu penghindar noise pembacaan sensor
double isPresent=colorRead(taosOutPin,0,0)/colorRead(taosOutPin,0,1);

Serial.print("isPresent:");Serial.println(isPresent,2);

Serial.print("isPresentTolerance curently set


to:");Serial.println(isPresentTolerance,2);

if(isPresent<isPresentTolerance)
{ Serial.println("nothing is in front of
sensor"); return 0;
}

double red,blue,green;
double white = colorRead(taosOutPin,0,1);
unsigned int maxColor = white;
unsigned int red2, blue2, green2;

//Mode pendeteksian warna merah


red = white/colorRead(taosOutPin,1,1);red2=red*255/maxColor;

//Mode pendeteksian warna hijau


green = white/colorRead(taosOutPin,3,1);green2=green*255/maxColor;

//Mode pendeteksian warna biru


blue = white/colorRead(taosOutPin,2,1);blue2=blue*255/maxColor;

Serial.print("red :");Serial.println(red2);

if(red2>20){analogWrite (9, red2);} else {analogWrite (9, 0);}

53
Serial.print("green :");Serial.println(green2); if(green2>20)
{analogWrite (10, green2);}else {analogWrite (10, 0);}

Serial.print("blue :");Serial.println(blue2); if(blue2>20)


{analogWrite (11, blue2);}else {analogWrite (11, 0);}
}

unsigned int colorRead(unsigned int taosOutPin,unsigned int color, boolean


LEDstate)
{
pinMode(taosOutPin, INPUT);
taosMode(1);
int sensorDelay=1;

if(color==0){digitalWrite(s3, LOW);digitalWrite(s2, HIGH);}


else if(color==1){digitalWrite(s3, LOW);digitalWrite(s2, LOW);}
else if(color==2){digitalWrite(s3, HIGH);digitalWrite(s2, LOW);}
if(color==3){digitalWrite(s3, HIGH);digitalWrite(s2, HIGH);}

unsigned int readPulse; if(LEDstate==0)


{digitalWrite(LED, LOW);} if(LEDstate==1)
{digitalWrite(LED, HIGH);}

delay(sensorDelay);

readPulse=pulseIn(taosOutPin, LOW, 25000)/2;


if( readPulse<.1){readPulse = 25000;}

taosMode(0);
return readPulse;
}

void taosMode(int mode){

54
if(mode==0){digitalWrite(LED,LOW);digitalWrite(s0,LOW);digitalWrite(s1,LOW);}
else if(mode==1){digitalWrite(s0,HIGH);digitalWrite(s1,HIGH);}
else if(mode==2){digitalWrite(s0,HIGH);digitalWrite(s1,LOW);}
else if(mode==3){digitalWrite(s0,LOW);digitalWrite(s1,HIGH);}
return;
}

55
18. Cara Mudah Program RTC Module DS1302 Jam Digital
Dengan Arduino
Module RTC (Real Time Clock) sangat penting dalam pembuatan Jam Digital menggunakan
Arduino. Selain mempermudah, dengan RTC data waktu dan tanggal akan terus berjalan,
walaupun Arduinonya kita matikan. Karena RTC mempunyai memori dan daya sendiri yaitu
baterai lithium.

Ada banyak jenis Module RTC, saya memilih tipe DS1302. Karena tipe ini adalah yang paling
populer dan mudah digunakan.

Lalu pasang rangkaianya seperti gambar di bawah ini:

56
OK! Kalau library RTCnya sudah di masukin, sekarang kita masuk Kepemrograman. Silahkan
kamu copy paste Sketch dibawah ini, saran saya ketik ulang biar inget 😀

#include <virtuabotixRTC.h>

virtuabotixRTC myRTC(6, 7, 8); //CLK, DAT, RST

void setup() {
Serial.begin(9600);
//myRTC.setDS1302Time(00, 35, 16, 3, 14, 02, 2018);
}

void loop() {
myRTC.updateTime();
Serial.print("Tanggal / Waktu: ");
Serial.print(myRTC.dayofmonth); //menampilkan tanggal
Serial.print("/");
Serial.print(myRTC.month); //menampilkan bulan
Serial.print("/");
Serial.print(myRTC.year); //menampilkan tahun
Serial.print(" ");
Serial.print(myRTC.hours); //menampilkan jam
Serial.print(":");
Serial.print(myRTC.minutes); //menampilkan menit
Serial.print(":");
Serial.println(myRTC.seconds); //menampilkan detik
delay( 1000);
}

Jika sudah DONE UPLOADING, kamu bisa buka Serial Monitor untuk melihat data waktu dan
tanggalnya. Seperti gambar di bawah ini:

57
LITTLE NOTES:

1. #include <virtuabotixRTC.h> kode ini digunakan untuk menyertakan library virtuabotixRTC


kedalam pemrograman.
2. virtuabotixRTC myRTC(6, 7, 8); digunakan untuk membuat variabel myRTC, dan untuk pin
Arduino yang digunakan pin 6 untuk CLK, pin 7 untuk DAT, dan pin 8 untuk RST. Kamu bisa ubah
sesuai kebutuhan.
3. myRTC.setDS1302Time(00, 48, 20, 6, 17, 11, 2016); digunakan untuk mengatur detik, menit, jam, yang
angka 6 jangan di ubah, tanggal, bulan, dan tahun.
4. Serial.print(myRTC.dayofmonth); digunakan untuk menampilkan tanggal pada Serial Monitor

58
19. Kontrol 4 Buah Relay menggunakan Infrared Remote

Sistem Kerja Alat


Mengontrol 4 relay menggunakan remot kontrol. Tombol 1 s/d 4 untuk menghidupkan Relay1
s/d 4, sedangkan tombol 5 s/d 8 untuk mematikan Relay 1 s/d 4. LCD digunakan untuk
menampilkan data tombol yang ditekan. Relay sebagai aktuator yang akan mengontrol langsung
peralatan listrik yang dikendalikan ‘ON – OFF’ nya.

Diagram Blok

Schematics

59
Koneksi Arduino UNO dengan LCD

Koneksi Sensor

Koneksi Relay

Source Code/Sketch
#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int IR_PIN = 8;
int Rl1 = 9;

60
int Rl2 = 10;
int Rl3 = 11;
int Rl4 = 12;
IRrecv irrecv(IR_PIN);
decode_results results;
void setup(){
for(char i=9; i<13; i++){
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
lcd.begin(16, 2);
lcd.print(" Kontrol 4Relay");
lcd.setCursor(0, 1);
lcd.print(" dg Remot IR");
delay(2000);
irrecv.enableIRIn();
}
void loop()
{ lcd.setCursor(0,
1);
lcd.print("Tekan Tb 1 s/d 8");
if (irrecv.decode(&results))
{ irrecv.resume();
lcd.setCursor(0,1);
switch(results.value){
case 0xFF30CF: lcd.print("Relay 1 ON ");
digitalWrite(Rl1, HIGH);break;
case 0xFF18E7: lcd.print("Relay 2 ON ");
digitalWrite(Rl2, HIGH);break;
case 0xFF7A85: lcd.print("Relay 3 ON ");
digitalWrite(Rl3, HIGH);break;
case 0xFF10EF: lcd.print("Relay 4 ON ");
digitalWrite(Rl4, HIGH);break;
case 0xFF38C7: lcd.print("Relay 1 OFF ");
digitalWrite(Rl1, LOW);break;
case 0xFF5AA5: lcd.print("Relay 2 OFF ");
digitalWrite(Rl2, LOW);break;
case 0xFF42BD: lcd.print("Relay 3 OFF ");
digitalWrite(Rl3, LOW);break;
case 0xFF4AB5: lcd.print("Relay 4 OFF ");
digitalWrite(Rl4, LOW);break;
case 0xFF6897: lcd.print("Relay All ON ");
digitalWrite(Rl1, HIGH);
digitalWrite(Rl2, HIGH);
digitalWrite(Rl3, HIGH);
digitalWrite(Rl4, HIGH);break;
case 0xFF52AD: lcd.print("Relay All OFF ");
digitalWrite(Rl1, LOW);
digitalWrite(Rl2, LOW);
digitalWrite(Rl3, LOW);
digitalWrite(Rl4, LOW);break;
}
delay(2000);

61
}
}

Jalannya Alat

1. Koneksikan antara sistem Arduino dengan peripheral lain seperti pada rangkaian
(skematik).
2. Pasang power supply (adaptor 9 V) dan hidupkan (colokkan ke sumber PLN 220V)
sehingga lampu LED indikator nyala, LCD juga nyala.
3. Remot yang digunakan masih sama tipe remot NEC/remot mp3 player.
4. Selanjutnya upload program diatas.
5. Tampilan normal pada LCD

6. Tombol yang digunakan

7. Selanjutnya tekan tombol pada remot, misal tombol Power ditekan maka pada LCD
menampilkan

8. Selanjutnya tekan tombol pada remot, misal tombol 1 ditekan maka relay 1 ON dan pada
LCD
menampilkan

62
9. Penekanan tombol berikutnya akan direspon setelah 2 detik dan LCD kembali pada
tampilan
normal.

63
20. NodeMCU ESP8266

NodeMCU ESP8266 merupakan modul turunan pengembangan dari modul platform IoT
(Internet of Things) keluarga ESP8266 tipe ESP-12. Modul ESP8266 dapat dipelajari dari artikel
sebelumnya.

Secara fungsi modul ini hampir menyerupai dengan platform modul arduino, tetapi yang
membedakan yaitu dikhususkan untuk “Connected to Internet“.

Untuk saat ini modul NodeMCU sudah terdapat 3 tipe versi antara lain :

NodeMCU Versi 0.9

Pada versi ini (v0.9) merupakan versi pertama yang memiliki memori flash 4 MB sebagai
(System on Chip) SoC-nya dan ESP8266 yang digunakan yaitu ESP-12.

Kelemahan dari versi ini yaitu dari segi ukuran modul board lebar, sehingga apabila ingin
membuat protipe menggunakan modul versi ini pada breadboard, pin-nya kan habis digunakan
hanya untuk modul ini.

NodeMCU Versi 1.0

Versi ini merupakan pengembangan dari versi 0.9. Dan pada versi 1.0 ini ESP8266 yang
digunakan yaitu tipe ESP-12E yang dianggap lebih stabil dari ESP-12.

Selain itu ukuran board modulnya diperkecil sehingga compatible digunakan membuat prototipe
projek di breadboard.

64
Serta terdapat pin yang dikhusukan untuk komunikasi SPI (Serial Peripheral Interface) dan PWM
(Pulse Width Modulation) yang tidak tersedia di versi 0.9.

NodeMCU Versi 1.0 (unofficial board)

Dikatakan unofficial board dikarenakan produk modul ini diproduksi secara tidak resmi terkait
persetujuan dari Developer Official NodeMCU.

Perbedaannya tidak begitu mencolok dengan versi 1.0 (official board) yaitu hanya penambahan V
usb power output.

Berikut tabel perbandingan dari ketiga versi diatas :

Versi NodeMCU
Spesifikasi
Versi 0.9 Versi 1.0 (Official board) Versi 1.0 (Unofficial board)

Vendor Pembuat Amica Amica LoLin

Tipe ESP8266 ESP12 ESP-12E ESP-12E

USB port Micro Usb Micro Usb Micro Usb

GPIO Pin 11 13 13

ADC 1 pin (10 bit) 1 pin (10 bit) 1 pin (10 bit)

Usb to Serial Converter CH340G CP2102 CH340G

Power Input 5 Vdc 5 Vdc 5 Vdc

Ukuran Module 47 x 31 mm 47 x 24 mm 57 x 30 mm

* Note : saran saya untuk belajar lebih baik menggunakan NodeMCU Versi 1.0 dari
Amica. Dikarenakan performa dan kualitasnya lebih bagus dibanding lainnya.

65
Pin Out V.1 dengan ESP-12E yang menggunakan usb driver tipe CP212

Tutorial pertama memprogram NodeMCU menggunakan Software Arduino


IDE

Bahan yang diperlukan yaitu :

1. NodeMCU V.1.0
2. Micro USB
3. Komputer + Software IDE Arduino

Langkah – langkah yang perlu dilakukan untuk installing library ESP8266 NodeMCU :

1. Download dan install software IDE Arduino (sesuai dengan Operation System)
2. Kemudian buka software tersebut
3. Pilih dan klik menu file -> preferences
4. Pada bagian “Additional Boards Manager URL’s” masukan link dibawah berikut ini :

66
http://arduino.esp8266.com/stable/package_esp8266com_index.json

5. Dan klik “OK”


6. Setelah itu, klik “Boards Manager” pada menu tools -> board -> boards manager
7. Ketikan pada “filter your search” -> esp8266 by ESP8266 community
8. Kemudian klik install, dan tunggu beberapa detik sampai proses selesai
9. Terakhir pilih close
10. Dan untuk installing library NodeMCU ESP8266 sudah selesai dilakukan

Mencoba Led Blinking NodeMCU ESP8266

Modul ini juga memiliki LED pada boardnya seperti halnya Arduino. Tetapi perbedaan terletak
pada alamat I/O nya jika pada Arduino pada pin 13 sedangkan pada NodeMCU GPIO16 (D0).

 Pada software Arduino IDE klik menu tools -> boards -> NodeMCU 1.0 (ESP12-E
Module)
 masuk ke menu port dan pilih port mana yang digunakan si NodeMCU (COMxx)
 Setelah itu ke menu File -> Examples -> ESP8266 -> Blink
 klik tombol “upload“
 Tunggu beberapa detik, program aakan mulai didownload kan ke module dengan ditandai
adanya “blinking” pada LED di NodeMCU ESP8266 nya
 Pada modul akan menyala selama 1 detik karena diberi logic state “LOW” dan mati 1
detik karena diberi logic state “HIGH”

void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Inisialisasi pin LED_BUILTIN sebagai output
}

void loop() {
digitalWrite(LED_BUILTIN, LOW); //Perintah untuk menghidupkan lampu dengan
logika LOW
delay(1000); //Waktu jeda 1 detik
digitalWrite(LED_BUILTIN, HIGH); //Perintah untuk mematikan lampu dengan
logika HIGH
delay(1000); //Waktu jeda 1 detik
}

pada kali ini saya akan membahas bagaimana cara mengontrol beberapa LED dengan Android.
pertama kita perlu aplikasi ESP8266 kontrol Wifi perangkat.aplikasi dapat di download di
playstore.

lalu pasang LED dengan pin.pada LED terdapat 2 ujung.ujung 1 di koneksikan ke Ground ,yang
1 nya di koneksikan ke pin D0,D1,D2(Terserah anda).pada kali ini saya memasang pada pin
D5,D6,D7 dan D8

67
source code

#include<ESP8266WiFi.h>
#define ON 1
#define OFF 2
const char* ssid = "jangkrik";
const char* password= "welut";

#define LED1 D5
#define LED2 D6
#define LED3 D7
#define LED4 D8
bool value1= LOW;
bool value2 = LOW;
bool value3 = LOW;
bool value4 = LOW;
WiFiServer server (80);

void setup(){
Serial.begin(115200);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);

Serial.println("");
Serial.println("Connecting to");
Serial.println(ssid);
WiFi.begin(ssid,password);
while (WiFi.status() !=WL_CONNECTED){
delay(500)
Serial.print(".")
}
Serial.print("");
Serial.print("WiFi Connected");
server.begin();
Serial.println("Server Started");
delay(2000);

void loop() {//===1


if (request.indexOf("/status1=1") != -1){
digitalWrite(LED1,ON);
value1=HIGH;
}
if (request.indexOf("/status1=0") != -1){
digitalWrite(LED1,OFF);
value1=LOW;
}
if(value1==HIGH){

68
client.println("<br><br>");
client.print("status1=1");
}
if(value1==LOW){
client.println("<br><br>");
client.print("status1=0");
}
//===2
if (request.indexOf("/status2=1") != -1){
digitalWrite(LED2,ON);
value2=HIGH;
}
if (request.indexOf("/status2=0") != -1){
digitalWrite(LED2,OFF);
value1=LOW;
}
if(value2==HIGH){
client.println("<br><br>");
client.print("status2=1");
}
if(value1==LOW){
client.println("<br><br>");
client.print("status2=0");
}
//===3
if (request.indexOf("/status3=1") != -1){
digitalWrite(LED3,ON);
value3=HIGH;
}
if (request.indexOf("/status3=0") != -1){
digitalWrite(LED3,OFF);
value1=LOW;
}
if(value3==HIGH){
client.println("<br><br>");
client.print("status3=1");
}
if(value3==LOW){
client.println("<br><br>");
client.print("status3=0");
}
//===4
if (request.indexOf("/status4=1") != -1){
digitalWrite(LED4,ON);
value4=HIGH;
}
if (request.indexOf("/status4=0") != -1){
digitalWrite(LED4,OFF);
value4=LOW;
}
if(value4==HIGH){
client.println("<br><br>");
client.print("status4=1");
}
if(value4==LOW){
client.println("<br><br>");
client.print("status4=0");

69
}
delay(1);
Serial.print("Client Disconnected");
Serial.print("");
delay(1000);
}

kemudian upload, sekarang buka aplikasi yang kita sudah download tadi.klik CONNECT
TO.lalu klik gambar kunci ayng ada di pojok.lalu beri nama sesuai lampu kita .beri command
LED 1 dengan isi 2.begitu pula dengan LED2,3,4.kik tombol on jika kita ingin menghidupkan
dan klik off jika ingin mematikan

Sensor suhu tipe DHTxx merupakan komponen yang paling mudah ditemukan dan juga paling
murah, dengan sensor ini kalian bisa memulai membuat sebuah rangkaian sederhana untuk
membuat project IoT kalian. dan Smartconfig merupakan cara termudah bagi kalian untuk
menghubungkan ESP32 ke WiFi Hotspot. Berikut ini adalah cara-caranya:

1. Buat rangkaian seperti digambar ini

2. Hubungkan kaki positif ke 3,3 volt

3. Hubungkan kaki negatif ke Groung (GND)


4. Hubungkan kaki Data ke pin D2
5. Kalian bisa menyalakan ESP32 ini menggunakan Power Bank

70
6. INGAT!!! Setiap kalian upload program, jangan lupa untuk menekan tombol "Boot" pada
board ESP32 agar tidak Error

Konfigurasi Aplikasi Blynk

1. Download aplikasi Blynk di Playstore


2. Buka dan Register seperti biasa
3. Buat project baru di Blynk

4. Buat (Create) dan cek email pendafataran untuk melihat TOKEN


5. Copy TOKEN dan simpan untuk dimasukkan kedalam koding
6. Klik tanda (+) untuk menambahkan tampilan hasil pengukuran sensor suhu dan kelembaban
menggunakan "Gauge" atau sesuka kalian...

71
7. Setelah Selesai, klik tampilan "GAUGE" dan setting seperti dibawah ini.

8. Lakukan langkah ke 6 dan ke 7 untuk membuat tampilan hasil sensor suhu dan kelembaban.
Koding untuk membaca nilai suhu dan kelembaban DHT11:
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11

72
DHT dht(DHTPIN, DHTTYPE);

void setup()
{ Serial.begin(115200);
Serial.println("DHT11 test!");

dht.begin();
}
void loop() {
delay(2000);
// Membaca nilai Kelembaban
float h = dht.readHumidity();
// Membaca nilai suhu menggunakan derajat celcius
float t = dht.readTemperature();
// Membaca nilai suhu menggunakan derajat Farenheit
float f = dht.readTemperature(true);

// Cek apakah rangkaian sudah terhubung dengan baik dan sensor siap
digunakan?.
if (isnan(h) || isnan(t) || isnan(f))
{ Serial.println("Failed to read from DHT sensor!");
return;
}

float hic = dht.computeHeatIndex(t, h, false);

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");

73
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
}

Coding Smartconfig:

#include "WiFi.h"

void setup() {
Serial.begin(115200);

//Init WiFi as Station, start SmartConfig


WiFi.mode(WIFI_AP_STA);
WiFi.beginSmartConfig();

//Wait for SmartConfig packet from mobile


Serial.println("Waiting for SmartConfig.");
while (!WiFi.smartConfigDone()) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("SmartConfig received.");

//Wait for WiFi to connect to AP


Serial.println("Waiting for WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("WiFi Connected.");

74
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}

void loop() {
// put your main code here, to run repeatedly:

Coding Gabungan DHT11+WiFi+Smartconfig untuk ESP32


//Identitas Sensor Suhu DHT11
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

//Identitas Smartconfig WiFi


#include "WiFi.h"
//Identitas Blynk
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <SimpleTimer.h>
#include <BlynkSimpleEsp32.h> //bisa kalian ubah menjadi ESP8266 dll
char auth[] = ""; // Masukkan Auth Token yang sudah kalian buat di aplikasi
Blynk
SimpleTimer timer;

void setup(){
Serial.begin(115200);
//Untuk DHT11
Serial.println("DHT11 test!");
dht.begin();

75
// Menghubungkan ke WiFi
Connect_to_Wifi();

//Untuk Blynk
WiFi.printDiag(Serial);
Blynk.config(auth);
timer.setInterval(1000L, Hasil_Suhu);
}

void Hasil_Suhu(){
delay(2000);
// Membaca nilai Kelembaban
float h = dht.readHumidity();
// Membaca nilai suhu menggunakan derajat celcius
float t = dht.readTemperature();
// Membaca nilai suhu menggunakan derajat Farenheit
float f = dht.readTemperature(true);

// Cek apakah rangkaian sudah terhubung dengan baik dan sensor siap
digunakan?.
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

float hic = dht.computeHeatIndex(t, h, false);

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");

76
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");

// Inisialiasi untuk aplikasi Blynk


Blynk.virtualWrite(V0, t);
Blynk.virtualWrite(V1, h);
}

void loop(){
Blynk.run(); // Initiates Blynk
timer.run(); // Initiates SimpleTimer
}

void Connect_to_Wifi()
{ WiFi.mode(WIFI_AP_STA);
WiFi.beginSmartConfig();

//Wait for SmartConfig packet from mobile


Serial.println("Waiting for SmartConfig.");
while (!WiFi.smartConfigDone()) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("SmartConfig received.");

//Wait for WiFi to connect to AP


Serial.println("Waiting for WiFi");
while (WiFi.status() != WL_CONNECTED) {

77
delay(500);
Serial.print(".");

Serial.println("WiFi Connected.");

Serial.print("IP Address: ");


Serial.println(WiFi.localIP());
}

Menghubungkan ESP32 ke WiFi Menggunakan Aplikasi Smartconfig:

1. Download aplikasi ESP8266 di Playstore, meski menggunakan nama ESP8266 dan kita
menggunakan ESP32, aplikasi ini tetap bisa digunakan dengan baik.
2. Hubungkan Smartphone kalian ke WiFi target.

3. Buka aplikasi Smartconfig yang sudah di download sebelumnya, dan masukkan


password WiFi target kalian.

78
4. Klik Confirm dan tunggu 5 sampai 10 detik

5. Setetelah terhubung, maka kalian akan mendapatkan tampilan seperti dibawah ini,
kemudian klik confirm.

79
80
21. Laporan Praktikum Responsi

Format laporan praktikum adalah sebagai berikut :

1. Halaman Judul
2. Abstraksi
3. Daftar isi
4. Bab 1 Berisi Pendauluan yang memuat latar belakang dibuatnya alat
5. Bab 2 Landasan Teori yang memuat jurnal atau publikasi yang berkaitan dengan alat yang
akan dibuat
6. Bab 3 Metode Penelitian yang memuat rancangan elektronik dan flowchart alat yang akan
dibuat
7. Bab 4 Hasil dan Pembahasan yang memuat data-data pengujian serta pembahasannya
8. Bab 5 Kesimpulan yang memuat rangkuman hasil pengujian
9. Referensi

Dikumpulkan Hardcopy dan dijilid dengan sampul warna PUTIH

Apabila tidak mengumpulkan maka dianggap tidak mengikuti praktikum.

Dikumpulkan selambat-lambatnya H-7 sebelum UAS di kepala LAB atau koordiator Praktikum
Elektronika.

81

Anda mungkin juga menyukai