Proyek sederhana
Semua bagian sudah kamu kuasai satu per satu. Di bab terakhir ini bagian-bagian itu digabung menjadi alat yang benar-benar berguna. Setiap proyek dimulai dari rangkaian yang sudah kamu kenal, jadi fokusnya ada pada cara menyatukan dan merapikannya.
DI BAB INI KAMU BAKAL BISA
- membuat termometer digital dengan layar
- membuat sensor parkir yang bunyinya makin cepat saat makin dekat
- membuat lampu taman yang menyala sendiri
- membagi daya 5V untuk banyak komponen
- menjalankan proyek tanpa laptop
YANG DIBUTUHKAN
- DHT11 + resistor 10 kΩ
- LCD 16×2 I2C
- HC-SR04
- buzzer pasif
- LDR + resistor 10 kΩ
- modul relay, baterai 4 × AA, lampu 6 volt
- adaptor 9 volt atau power bank (8.4)
8.1Termometer digital
DHT11 dari 6.3 ditambah LCD dari 5.2: suhu dan kelembapan tampil di layar, tanpa laptop. Masalah pertamanya justru bukan di kode.
DHT11 butuh 5V, LCD juga butuh 5V, tapi Arduino Uno cuma punya satu pin 5V. Caranya: pin 5V disambung ke rel merah breadboard, dan semua komponen mengambil 5V dari rel itu. Hal yang sama untuk GND: walaupun Uno punya tiga pin GND, lebih rapi kalau semuanya lewat rel biru. Rel atas dan bawah breadboard tidak tersambung satu sama lain, jadi kalau dua-duanya dipakai, sambungkan dengan satu kabel di ujungnya.
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <DHT.h> LiquidCrystal_I2C lcd(0x27, 16, 2); DHT dht(2, DHT11); void setup() { lcd.init(); lcd.backlight(); dht.begin(); lcd.print("Termometer"); delay(1500); lcd.clear(); } void loop() { float suhu = dht.readTemperature(); float lembap = dht.readHumidity(); if (isnan(suhu) || isnan(lembap)) { lcd.setCursor(0, 0); lcd.print("Sensor error "); delay(2000); return; } lcd.setCursor(0, 0); lcd.print("Suhu : "); lcd.print(suhu, 1);1 lcd.print((char)223);2 lcd.print("C "); lcd.setCursor(0, 1); lcd.print("Lembap: "); lcd.print(lembap, 0); lcd.print("% "); delay(2000); }
- 1Angka kedua di
print()adalah jumlah angka di belakang koma: 1 menghasilkan29.0, 0 menghasilkan74. - 2LCD 16×2 tidak punya tombol huruf "°". Di daftar huruf bawaan LCD, simbol derajat ada di nomor 223, jadi dikirim dengan
(char)223.
Tambahkan catatan suhu tertinggi dan terendah sejak papan menyala: dua variabel float di luar loop(), diperbarui setiap
pembacaan. Tampilkan bergantian dengan suhu sekarang setiap 5 detik. Atau tambahkan buzzer dari 7.2 yang berbunyi kalau suhu lewat 33 °C.
8.2Sensor parkir
Seperti di mobil: makin dekat ke tembok, bunyi "tit" makin rapat, dan saat sudah sangat dekat bunyinya menyambung terus. Gabungan HC-SR04 dari 6.4 dan buzzer dari 7.2, ditambah lampu L di papan sebagai penanda.
const int TRIG = 9; const int ECHO = 10; const int BUZZER = 8; const int LAMPU = 13; float ukurJarak() {1 digitalWrite(TRIG, LOW); delayMicroseconds(2); digitalWrite(TRIG, HIGH); delayMicroseconds(10); digitalWrite(TRIG, LOW); long durasi = pulseIn(ECHO, HIGH, 30000); return durasi * 0.0343 / 2; } void setup() { pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT); pinMode(LAMPU, OUTPUT); } void loop() { float jarak = ukurJarak(); if (jarak <= 0 || jarak > 100) {2 noTone(BUZZER); digitalWrite(LAMPU, LOW); delay(100); } else if (jarak < 10) {3 tone(BUZZER, 1000); digitalWrite(LAMPU, HIGH); delay(100); } else { int jeda = map(jarak, 10, 100, 60, 700);4 tone(BUZZER, 1000, 60); digitalWrite(LAMPU, HIGH); delay(60); digitalWrite(LAMPU, LOW); delay(jeda); } }
- 1Kode pengukur jarak dari 6.4 dibungkus jadi fungsi (cara 4.6), sehingga
loop()pendek dan mudah dibaca. - 2Lebih dari 1 meter atau tidak ada pantulan: diam.
- 3Kurang dari 10 cm: bunyi menyambung, tanda berhenti.
- 4Di antaranya, jeda antar bunyi dihitung dengan
map(): 10 cm menjadi 60 ms, 100 cm menjadi 700 ms.
Tambahkan tiga LED lampu lalu lintas dari 3.3 (pindahkan ke pin 5, 6, 7 karena pin 10 sudah dipakai ECHO): hijau di atas 60 cm, kuning 20 sampai 60 cm, merah di bawah 20 cm.
8.3Lampu taman otomatis
Lampu yang menyala sendiri saat matahari terbenam dan mati saat pagi. Rangkaiannya gabungan LDR dari 6.2 dan relay dari 7.4. Yang membuatnya layak dipakai sungguhan adalah dua trik dari 6.5 dan 4.8: bacaan dirata-rata, dan lampu baru berubah kalau keadaan gelap atau terang sudah bertahan beberapa detik. Lampu tidak akan berkedip karena bayangan orang lewat atau lampu mobil sesaat.
- Rangkai LDR dan resistor 10 kΩ seperti gambar di 6.2, ke A0.
- Sambungkan modul relay seperti 7.4: IN ke pin 7. Karena pin 5V sudah dipakai rel breadboard, ambil VCC relay dari rel merah, dan GND-nya dari rel biru.
- Sisi beban tetap baterai dan lampu 6 volt.
const int LDR = A0; const int RELAY = 7; const bool AKTIF = LOW; // lihat 7.4 const int BATAS_GELAP = 280; const int BATAS_TERANG = 340; const unsigned long TAHAN = 5000;1 bool lampuNyala = false; unsigned long mulaiBeda = 0; int bacaRataRata(int pin) { long total = 0; for (int i = 0; i < 10; i++) { total += analogRead(pin); delay(2); } return total / 10; } void setup() { Serial.begin(9600); pinMode(RELAY, OUTPUT); digitalWrite(RELAY, !AKTIF); } void loop() { int cahaya = bacaRataRata(LDR); bool harusNyala = lampuNyala; if (!lampuNyala && cahaya < BATAS_GELAP) harusNyala = true;2 if (lampuNyala && cahaya > BATAS_TERANG) harusNyala = false; if (harusNyala == lampuNyala) { mulaiBeda = millis();3 } else if (millis() - mulaiBeda >= TAHAN) { lampuNyala = harusNyala; digitalWrite(RELAY, lampuNyala ? AKTIF : !AKTIF);4 } Serial.print("cahaya:"); Serial.println(cahaya); delay(100); }
- 1Keadaan baru harus bertahan 5 detik sebelum lampu berubah.
- 2Dua batas dari 6.5: nyala di bawah 280, mati di atas 340. Sesuaikan angkanya dengan Serial Plotter.
- 3Selama keadaan sesuai, "stopwatch" terus diulang dari sekarang. Stopwatch baru berjalan saat keadaan mulai berbeda.
- 4Bentuk
syarat ? A : Bartinya "kalau syarat benar pakai A, kalau tidak pakai B". Ini versi singkat dari if-else.
Saat menguji, tutup LDR dengan tangan lalu hitung dalam hati sampai lima. Relay baru berbunyi klik setelah lima detik, bukan langsung. Untuk
dipasang sungguhan, angka TAHAN bisa dinaikkan menjadi 60000 (satu menit).
8.4Dari breadboard ke proyek rapi
Proyek yang sudah jalan biasanya ingin dipakai tanpa laptop. Programnya sudah tersimpan di papan, jadi yang dibutuhkan tinggal listrik.
| SUMBER LISTRIK | DISAMBUNG KE | CATATAN |
|---|---|---|
| Power bank | colokan USB | Paling gampang. Beberapa power bank mati sendiri kalau arus yang dipakai terlalu kecil. |
| Charger HP 5V | colokan USB | Cocok untuk proyek yang terpasang permanen di dalam rumah. |
| Adaptor 7–12 V | colokan DC bulat | Tegangan yang disarankan untuk colokan DC Uno. 9 V paling umum. |
| Baterai 9 V kotak | colokan DC (pakai konektor) | Praktis untuk dicoba, tapi kapasitasnya kecil, cepat habis. |
Jangan menyambungkan baterai atau adaptor ke pin 5V. Pin itu tidak lewat pengatur tegangan, jadi tegangan berlebih langsung masuk ke chip. Sumber di atas 5 volt selalu lewat colokan DC atau pin VIN.
Membuatnya awet
- Kabel jumper longgar adalah penyebab kerusakan nomor satu pada proyek yang dipindah-pindah. Kalau proyeknya akan dipakai lama, pindahkan ke PCB lubang dan solder, atau pakai proto shield yang ditancapkan langsung di atas Uno.
- Beri label kecil di kabel yang penting: 5V, GND, pin sensor. Kamu akan berterima kasih saat membongkarnya enam bulan lagi.
- Simpan programnya dengan nama yang jelas, dan tulis di komentar baris pertama: tanggal, pin yang dipakai, dan library yang dibutuhkan.
- Masukkan ke kotak supaya tidak tersentuh benda logam. Kaki komponen di bawah papan Uno bisa korsleting kalau ditaruh di atas meja logam.
8.5Setelah seri ini
Kalau kamu sudah sampai halaman ini dan mengerjakan proyek-proyeknya, kamu sudah bisa membaca sensor, mengambil keputusan dengan program, dan menggerakkan sesuatu. Dari sini, arahnya bebas. Beberapa yang paling sering dipilih:
- Sensor dan modul lain. Caranya selalu mirip: cari library-nya di Library Manager, buka contoh bawaannya (File › Examples), sambungkan sesuai petunjuk, lalu ubah sedikit demi sedikit. Contohnya sensor tekanan udara BMP280, sensor gerak MPU6050, layar OLED, modul jam RTC DS3231.
- Papan yang lebih kecil. Arduino Nano isinya sama dengan Uno dalam ukuran seukuran jempol, cocok untuk proyek yang mau dimasukkan ke kotak kecil. Semua kode di tutorial ini jalan di Nano tanpa diubah.
- Tersambung ke internet. Papan ESP32 dan ESP8266 punya WiFi dan bisa diprogram dengan Arduino IDE yang sama. Data dari sensor suhumu bisa dikirim ke HP atau ke dashboard di internet. Inilah yang disebut IoT (Internet of Things).
Pilih satu masalah kecil di sekitarmu (tanaman yang lupa disiram, pintu kamar yang lupa ditutup, suhu kandang ayam) lalu coba selesaikan dengan yang sudah kamu tahu. Kamu akan menemui hal yang belum ada di tutorial ini, mencarinya, dan memahaminya jauh lebih dalam karena kamu butuh. Proyek pertama yang benar-benar kamu pakai sendiri biasanya mengajarkan lebih banyak dari sepuluh contoh.
Komponen untuk semua proyek di tutorial ini, juga untuk langkah berikutnya, ada di store.ichibot.id. Kalau ada pertanyaan atau proyekmu berhasil, ceritakan ke kami di Instagram @store.ichibot. Kami senang melihatnya.