Sabtu, 18 Juli 2026

MODUL : ESP 32

Modul Pembelajaran: Pengenalan ESP32

Pembelajaran Mendalam IoT

Tujuan Pembelajaran

Selamat datang di modul Internet of Things (IoT) dengan ESP32. Pada akhir pembelajaran ini, siswa diharapkan mampu:

  • Mengenal arsitektur dasar dan fitur mikrokontroler ESP32.
  • Memahami perbedaan ESP32 dengan mikrokontroler standar (seperti Arduino Uno).
  • Mampu memprogram ESP32 untuk terhubung ke jaringan Wi-Fi lokal.

Pertanyaan Pemantik

Smart Home Concept

Pernahkah kamu membayangkan bagaimana lampu, kipas angin, atau mesin kopi di rumah bisa dikendalikan dari jarak jauh hanya menggunakan smartphone-mu?

Di balik kemudahan "Benda Pintar" tersebut, terdapat sebuah otak kecil yang bertugas menghubungkan benda fisik ke internet. Kira-kira, komponen apa yang memungkinkan hal luar biasa itu terjadi?

Memahami: Apa itu ESP32?

ESP32 adalah mikrokontroler berbiaya rendah dan hemat daya yang dikembangkan oleh Espressif Systems. Berbeda dengan Arduino Uno biasa, ESP32 ibarat "komputer mini" yang sudah dilengkapi dengan fitur jaringan.

Fitur Utama ESP32:

  • Dual-Core Processor: Memiliki dua otak pemrosesan, sehingga mampu menjalankan banyak tugas (multitasking) dengan sangat cepat.
  • Built-in Wi-Fi & Bluetooth: Ini adalah fitur pembunuhnya! ESP32 bisa langsung terhubung ke internet tanpa perlu modul tambahan.
  • Pin I/O yang Kaya: Mendukung berbagai sensor analog dan digital.
Microcontroller Chip

Dengan fitur Wi-Fi ini, ESP32 menjadi pilihan utama bagi pengembang di seluruh dunia untuk membuat proyek Internet of Things (IoT).

Mengaplikasi: Proyek Koneksi Wi-Fi

Sekarang saatnya kita mempraktikkan pengetahuan tersebut! Mari kita buat program agar ESP32 bisa mendeteksi dan terhubung ke jaringan Wi-Fi sekolah/rumah Anda.

Langkah-langkah:

  1. Buka Arduino IDE di komputer Anda. Pastikan Board ESP32 sudah terinstal di Board Manager.
  2. Sambungkan kabel Micro-USB/Type-C dari komputer ke board ESP32.
  3. Tuliskan kerangka kode berikut (pseudocode/konsep logika):
#include <WiFi.h>

const char* ssid = "NAMA_WIFI_KAMU";
const char* password = "PASSWORD_WIFI";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Terhubung ke Wi-Fi!");
}

void loop() {
  // Biarkan kosong untuk saat ini
}

Tugas Anda: Unggah kode di atas, buka Serial Monitor (baud rate 115200), dan buktikan apakah ESP32 Anda berhasil mendapatkan alamat IP dari router!

Merefleksi Pembelajaran

Luar biasa! Jika Anda sudah melihat tulisan "Terhubung ke Wi-Fi!" di layar komputer Anda, berarti Anda baru saja membuat fondasi dari sistem IoT.

Mari Berdiskusi:

  • Apa tantangan terbesar yang kamu alami saat mengonfigurasi Arduino IDE untuk pertama kalinya?
  • Bagaimana perasaanmu saat melihat perangkat fisik berukuran kecil ini berhasil masuk ke dalam jaringan yang sama dengan ponselmu?
  • Ide proyek "Gila" atau bermanfaat apa yang ingin kamu buat selanjutnya menggunakan ESP32?
© Rislyon Ripi - SMA Kristen Barana - 2025/2026

Jumat, 24 April 2026

Modul 7 Arduino

Modul 7: Arduino - Lampu Lalu Lintas

Tujuan Pembelajaran

Selamat datang di Modul 7: Arduino! Pada pembelajaran mandiri ini, kita akan masuk ke dalam konsep pemrograman *microcontroller* tingkat menengah yang sangat penting di dunia nyata.

Setelah menyelesaikan modul ini, siswa diharapkan mampu:
  1. Memahami perbedaan dan keunggulan penggunaan fungsi millis() dibandingkan delay() pada Arduino.
  2. Menggunakan konsep Sub Program (Fungsi/Void tambahan) untuk membuat script yang lebih rapi, terstruktur, dan mudah dibaca.
  3. Merangkai dan memprogram simulasi Lampu Lalu Lintas menggunakan Tinkercad berdasarkan logika non-blocking.
  4. Berkolaborasi dalam kelompok untuk merangkai Lampu Lalu Lintas secara fisik menggunakan perangkat Arduino Uno asli.
Arduino Concept
Ilustrasi perangkat keras mikrokontroler (Gambar placeholder, klik untuk memperbesar)

Pertanyaan Pemantik

Sebelum kita mulai membuat kode dan merangkai kabel, mari sejenak kita berpikir tentang apa yang terjadi di dunia nyata.

Lampu Lalu Lintas
Lampu Lalu Lintas di jalan raya.

Pikirkan Hal Ini:

  • Bayangkan jika otak manusia menggunakan sistem perintah delay(). Ketika Anda diperintahkan "Tunggu lampu merah selama 30 detik", maka selama 30 detik itu Anda tidak bisa bernapas, tidak bisa mendengar, dan tidak bisa melihat hal lain. Tentu berbahaya, bukan?
  • Di modul sebelumnya, kita menggunakan delay(). Masalahnya, delay() menghentikan total kerja Arduino. Arduino tidak bisa membaca sensor atau tombol selama `delay` berlangsung (Blocking).
  • Pertanyaannya: Bagaimana cara kita menyuruh Arduino "menunggu" 3 detik untuk lampu hijau, namun dalam 3 detik tersebut Arduino tetap bisa melakukan pekerjaan lain secara bersamaan (Multitasking)?

Jawabannya ada di pemanfaatan fitur Stopwatch Internal yang disebut millis(), dikombinasikan dengan kerapian Sub Program!

Memahami Konsep Inti

1. Apa itu millis()?

Fungsi millis() mengembalikan jumlah milidetik (1 detik = 1000 milidetik) sejak board Arduino mulai menjalankan program. Ini seperti stopwatch yang terus berjalan. Berbeda dengan delay() yang menghentikan program, millis() hanya mengecek waktu, sehingga Arduino bisa mengeksekusi baris kode lain secara terus-menerus.

2. Konsep Sub Program (Custom Void)

Agar kode di dalam void loop() tidak terlalu panjang dan membingungkan, kita memecah tugas-tugas kecil ke dalam "blok fungsi" atau Sub Program. Misalnya, kita membuat instruksi khusus nyalaMerah() yang berisi perintah menyalakan pin merah dan mematikan pin lainnya.

3. Skema Rangkaian

Untuk praktikum Lampu Lalu Lintas, berikut adalah rancangan pin yang akan kita gunakan pada Arduino Uno:

  • LED Merah terhubung ke Pin 13
  • LED Kuning terhubung ke Pin 12
  • LED Hijau terhubung ke Pin 11
  • Semua kaki negatif LED (Katoda) disambungkan ke GND (Ground) melalui Resistor 220Ω.
Rangkaian Elektronika
Ilustrasi Breadboard dan Komponen Elektronika.

4. Script Program Lampu Lalu Lintas (millis & Sub Program)

Pelajari dengan teliti struktur kode di bawah ini. Perhatikan bagaimana void loop() menjadi sangat pendek, dan kerja berat dipindahkan ke sub-program.

// --- DEKLARASI VARIABEL ---
int pinMerah = 13;
int pinKuning = 12;
int pinHijau = 11;

// Variabel untuk millis()
unsigned long waktuSebelumnya = 0;
long jeda = 0; // Waktu tunggu dinamis
int statusLampu = 1; // 1:Merah, 2:Kuning, 3:Hijau

void setup() {
  pinMode(pinMerah, OUTPUT);
  pinMode(pinKuning, OUTPUT);
  pinMode(pinHijau, OUTPUT);
}

void loop() {
  // Membaca 'stopwatch' saat ini
  unsigned long waktuSekarang = millis();

  // Jika selisih waktu sudah melewati 'jeda' yang ditentukan
  if (waktuSekarang - waktuSebelumnya >= jeda) {
    waktuSebelumnya = waktuSekarang; // Reset stopwatch
    
    // Panggil Sub Program pengatur siklus
    aturSiklusLampu(); 
  }
}

// --- SUB PROGRAM: Mengatur Urutan ---
void aturSiklusLampu() {
  if (statusLampu == 1) {
    nyalaMerah();     // Panggil sub program nyala merah
    jeda = 3000;      // Set jeda 3 detik
    statusLampu = 2;  // Lanjut ke state kuning
  } 
  else if (statusLampu == 2) {
    nyalaKuning();
    jeda = 1000;      // Set jeda 1 detik
    statusLampu = 3;  // Lanjut ke state hijau
  } 
  else if (statusLampu == 3) {
    nyalaHijau();
    jeda = 3000;      // Set jeda 3 detik
    statusLampu = 1;  // Kembali ke state merah
  }
}

// --- SUB PROGRAM: Kontrol Hardware ---
void nyalaMerah() {
  digitalWrite(pinMerah, HIGH);
  digitalWrite(pinKuning, LOW);
  digitalWrite(pinHijau, LOW);
}

void nyalaKuning() {
  digitalWrite(pinMerah, LOW);
  digitalWrite(pinKuning, HIGH);
  digitalWrite(pinHijau, LOW);
}

void nyalaHijau() {
  digitalWrite(pinMerah, LOW);
  digitalWrite(pinKuning, LOW);
  digitalWrite(pinHijau, HIGH);
}

Mengaplikasi: Penugasan

Misi 1: Simulasi di Tinkercad (Mandiri)

Berdasarkan "Modul 4" yang pernah kalian pelajari sebelumnya tentang dasar Tinkercad:

  1. Buka platform Tinkercad Circuits.
  2. Buat rangkaian 3 buah LED (Merah, Kuning, Hijau) beserta resistor.
  3. Salin dan masukkan *script program* menggunakan konsep millis() yang ada di menu "Memahami" ke dalam editor teks Tinkercad.
  4. Jalankan simulasi (Start Simulation) dan pastikan urutan lampu menyala dengan benar.

Misi 2: Praktikum Hardware Berkelompok

Instruksi Kelompok (Maksimal 6 Orang):
Tugas utama kalian adalah mewujudkan simulasi tadi ke dalam bentuk perangkat keras (hardware) yang nyata!
  • Alat & Bahan: 1 buah Arduino Uno, 1 buah Breadboard, 3 buah LED (Merah, Kuning, Hijau), 3 buah Resistor 220 Ohm, Kabel Jumper secukupnya, Kabel USB Arduino, Laptop/PC dengan Arduino IDE.
  • Tugas:
    1. Bagilah peran: Ada yang merangkai komponen, ada yang mengetik script di Arduino IDE, dan ada yang mengecek keamanan rangkaian sebelum dihubungkan ke listrik.
    2. Rangkai komponen di breadboard persis seperti skema di simulasi.
    3. Ketikkan script millis() dan sub program. Modifikasi tantangan: Ubah durasi lampu hijau menjadi 5 detik dan lampu kuning menjadi 2 detik!
    4. Upload kode ke board Arduino Uno.
    5. Presentasikan hasil kerja kelompok kalian di depan guru.

Merefleksi

Luar biasa! Kalian telah menyelesaikan tantangan beralih dari program statis (delay) ke program dinamis dan multitasking (millis).

Silakan jawab pertanyaan-pertanyaan berikut di buku catatan jurnal praktikum kalian untuk merekam jejak belajar hari ini:

  1. Apa kendala terbesar yang kelompok kalian hadapi saat menyusun logika waktu menggunakan millis() dibandingkan saat masih memakai delay()?
  2. Menurut kalian, apa manfaat memisahkan perintah menghidupkan LED ke dalam Sub Program seperti nyalaMerah()? Apakah membuat perbaikan error (debugging) menjadi lebih mudah?
  3. Coba pikirkan 1 buah alat di kehidupan sehari-hari (selain lampu lalu lintas) yang *wajib* menggunakan sistem millis() agar tidak "hang" saat menunggu proses selesai. Sebutkan dan jelaskan alasannya!

Selamat Belajar & Teruslah Berinovasi!

Modul 6 Arduino

Modul 6: Pembelajaran Mendalam Arduino

📘 Pembelajaran Mendalam

Modul 6: Arduino & Interaksi Sistem

🎯 Tujuan Pembelajaran

  • Siswa mampu memahami konsep sinyal input analog dan input digital pada mikrokontroler.
  • Siswa mampu merangkai dan membaca data sensor (potensiometer & push button) lalu menampilkannya pada Serial Monitor.
  • Siswa mampu memprogram Arduino untuk mengontrol output (LED) berdasarkan intervensi input fisik.

💡 Pertanyaan Pemantik

Pernahkah Anda memikirkan bagaimana volume radio atau speaker bisa dibesarkan dan dikecilkan hanya dengan memutar sebuah kenop bulat? Atau bagaimana lampu layar HP Anda bisa menyala sesaat setelah Anda menekan tombol daya?

Bagaimana sebuah "otak" elektronik (mikrokontroler) dapat menerjemahkan putaran tangan atau tekanan jari manusia menjadi sebuah perintah digital? Mari kita pecahkan misterinya di modul ini!

Memahami: Potensiometer & Serial Monitor

Pada tahap ini, kita akan melakukan simulasi praktikum menggunakan Tinkercad. Kita akan menggunakan Potensiometer sebagai input (analog) dan Serial Monitor sebagai sarana output data untuk melihat nilai yang dibaca oleh Arduino.

Langkah Praktikum di Tinkercad:

  1. Buka platform Tinkercad dan buat sirkuit baru.
  2. Tambahkan komponen: 1 buah Arduino Uno R3, 1 buah Breadboard, dan 1 buah Potensiometer.
  3. Rangkaian Kabel:
    • Kaki kiri potensiometer dihubungkan ke GND Arduino.
    • Kaki kanan potensiometer dihubungkan ke 5V Arduino.
    • Kaki tengah (Wiper) potensiometer dihubungkan ke pin A0 (Analog In) Arduino.

Klik gambar untuk memperbesar ilustrasi:

Ilustrasi Komponen Elektronik Arduino

Ilustrasi: Komponen Elektronika

Penjelasan Script & Rangkaian

Setelah komponen dirangkai, masukkan kode berikut pada area Code (pilih mode Teks) di Tinkercad:

void setup() {
  // Memulai komunikasi serial dengan kecepatan 9600 bps
  Serial.begin(9600);
}

void loop() {
  // Membaca nilai dari pin analog A0
  int nilaiSensor = analogRead(A0);
  
  // Menampilkan nilai ke Serial Monitor
  Serial.print("Nilai Potensiometer: ");
  Serial.println(nilaiSensor);
  
  // Jeda waktu agar pembacaan tidak terlalu cepat
  delay(100);
}

Bedah Script:

  • Serial.begin(9600); : Perintah wajib di setup() untuk mengaktifkan Serial Monitor (jalur komunikasi Arduino ke komputer). Angka 9600 adalah kecepatan data (baud rate).
  • analogRead(A0); : Fungsi untuk membaca nilai tegangan pada pin A0. Karena ini sinyal analog (bukan sekadar Nyala/Mati), Arduino akan menerjemahkannya ke dalam rentang angka 0 hingga 1023 (tergantung posisi putaran potensiometer).
  • Serial.println(); : Fungsi untuk mencetak hasil bacaan ke layar komputer kita di jendela Serial Monitor.

Mengaplikasi: Tantangan Kelas

🚀 Tugas Berkelompok (Maksimal 6 Orang)

Kini saatnya beralih dari simulasi ke dunia nyata! Gunakan perangkat Arduino Uno asli milik kelompok Anda.

Misi Kelompok:

Rangkailah sirkuit dan buatlah script program menggunakan Push Button sebagai input dan LED beserta Serial Monitor sebagai output.

Instruksi Kerja:

  1. Rangkaian: Hubungkan Push Button ke salah satu pin Digital (misal: Pin 2). Hubungkan LED (+Resistor) ke pin Digital lainnya (misal: Pin 13). Pastikan penggunaan resistor pull-up/pull-down pada tombol, atau gunakan fitur INPUT_PULLUP bawaan Arduino.
  2. Logika Program: Buat script di mana jika Push Button ditekan, maka LED akan menyala. Jika dilepas, LED mati.
  3. Serial Monitor: Bersamaan dengan nyala/matinya LED, program harus mencetak teks "Tombol Ditekan" atau "Tombol Dilepas" pada Serial Monitor di layar laptop Anda.
Kerja Kelompok Merangkai Arduino

Merefleksi Pembelajaran

Setelah melakukan simulasi dan praktek langsung secara berkelompok, mari kita renungkan pengalaman belajar hari ini. Diskusikan pertanyaan berikut di dalam kelompok Anda:

  1. Apa perbedaan mendasar yang kalian amati antara menggunakan input analog (Potensiometer) dan input digital (Push Button)?
  2. Apa tantangan atau kesulitan terbesar saat memindahkan desain sirkuit dari layar komputer (Tinkercad) ke perangkat keras fisik secara langsung? Bagaimana kalian menyelesaikannya?
  3. Berdasarkan praktek hari ini, bisakah kalian memberikan satu contoh alat di rumah tangga yang menerapkan kombinasi tombol (input) dan lampu indikator (output) seperti yang baru saja kalian buat?

Selamat, Anda telah menyelesaikan Modul 6! Pastikan meja kerja Anda kembali rapi dan simpan komponen Arduino dengan aman.

Rislyon Ripi - SMA Kristen Barana - 2025/2026

Kamis, 23 April 2026

Modul 5 Arduino

Modul 5: Arduino
Pengantar Modul

Input Push Button & Output Serial Monitor pada Arduino

Tujuan Pembelajaran

  • Peserta didik mampu memahami konsep input digital menggunakan push button.
  • Peserta didik mampu membaca dan menampilkan data input melalui Serial Monitor.
  • Peserta didik dapat merangkai dan memprogram simulasi sirkuit di Tinkercad maupun pada perangkat keras Arduino Uno asli secara kolaboratif.

Pertanyaan Pemantik

Pernahkah Anda membayangkan, bagaimana cara remote TV mengirimkan perintah hanya dengan menekan satu tombol karet kecil? Atau bagaimana keyboard di laptop Anda bisa menerjemahkan tekanan jari menjadi huruf di layar?

Di balik semua interaksi teknologi sehari-hari tersebut, ada "otak" mikrokontroler yang terus-menerus bertanya: "Apakah tombol ini sedang ditekan?" Hari ini, kita akan belajar bagaimana mengajarkan Arduino untuk mengenali sentuhan kita!

Memahami

Konsep Dasar Input dan Komunikasi

Berdasarkan data industri teknologi terbaru, lebih dari 30 miliar mikrokontroler diproduksi setiap tahunnya di seluruh dunia. Sebagian besar perangkat tersebut mengandalkan sensor dan tombol untuk berinteraksi dengan manusia.

Analogi Gerbang Tol

Mari kita bayangkan aliran listrik sebagai mobil. Push Button bertindak persis seperti palang gerbang tol. Saat tombol tidak ditekan, palang tertutup (arus listrik terputus / LOW atau 0). Saat tombol ditekan, palang terbuka, mobil bisa lewat (arus listrik mengalir / HIGH atau 1).

Lalu, bagaimana kita tahu tombolnya ditekan? Di sinilah peran Serial Monitor. Serial Monitor adalah ibarat aplikasi obrolan (chat) antara Arduino dan Laptop Anda. Arduino mengirimkan pesan "Hei Laptop, tombol baru saja ditekan nih!", dan kita membacanya di layar.

Konsep INPUT_PULLUP

Dalam dunia elektronika, pin input yang dibiarkan "menggantung" tanpa sambungan bisa menjadi bingung, menangkap sinyal radio nyasar, dan nilainya melompat antara 0 dan 1. Untuk mencegahnya, Arduino memiliki fitur luar biasa bernama INPUT_PULLUP. Fitur ini mengaktifkan resistor internal yang memastikan pin bernilai HIGH saat tombol dilepas, dan bernilai LOW saat tombol ditekan (dihubungkan ke Ground/GND).

Mengaplikasi

Praktikum Tinkercad: Push Button

Mari kita mulai mensimulasikan rangkaian tanpa takut membuat komponen terbakar! Buka akun Tinkercad Anda dan buat sirkuit baru.

1. Rangkaian Sirkuit

  • Siapkan 1 buah Arduino Uno R3 dan 1 buah Pushbutton.
  • Hubungkan salah satu kaki (terminal) Pushbutton ke pin digital 2 pada Arduino.
  • Hubungkan kaki (terminal) Pushbutton yang berseberangan secara diagonal ke pin GND (Ground) pada Arduino.
  • Catatan: Karena kita menggunakan INPUT_PULLUP di kode, kita tidak memerlukan resistor eksternal!
Ilustrasi papan sirkuit mikrokontroler

Ilustrasi Rangkaian Sirkuit. (Klik gambar untuk memperbesar)

2. Script / Kode Program

Buka tab Code (pilih opsi Text), lalu masukkan script berikut:

arduino_push_button.ino C++
int pinTombol = 2; // Menentukan pin 2 untuk tombol
int statusTombol = 0; // Variabel untuk menyimpan status tombol

void setup() {
  // Mengatur kecepatan komunikasi serial
  Serial.begin(9600); 
  
  // Mengatur pin 2 sebagai input dengan pull-up internal
  pinMode(pinTombol, INPUT_PULLUP); 
}

void loop() {
  // Membaca status tombol (0 atau 1)
  statusTombol = digitalRead(pinTombol); 
  
  // Mencetak status ke Serial Monitor
  if(statusTombol == LOW) {
    Serial.println("Tombol DITEKAN!");
  } else {
    Serial.println("Tombol Dilepas.");
  }
  
  delay(100); // Jeda 100 milidetik agar tidak terlalu cepat
}
Memahami & Mengaplikasi

Membedah Serial Monitor dan Baud Rate

Setelah Anda memulai simulasi (Start Simulation) di Tinkercad, klik tombol Serial Monitor di bagian bawah area kode untuk melihat outputnya.

Apa itu Baud Rate?

Di dalam fungsi setup(), kita menuliskan Serial.begin(9600);. Angka 9600 ini disebut Baud Rate (bit per detik).

Analogi sederhananya: Baud Rate adalah kecepatan berbicara. Jika Arduino "berbicara" dengan kecepatan 9600, maka komputer/laptop kita juga harus "mendengarkan" dengan kecepatan 9600.

Peringatan Baud Rate

Jika kecepatan berbicara dan mendengar tidak sama (misal Arduino diatur 9600, tapi Serial Monitor di aplikasi Arduino IDE diatur 115200), maka teks yang muncul di layar akan berupa karakter acak atau simbol aneh (seperti ⸮⸮⸮x). Selalu pastikan angka pada Serial.begin() cocok dengan pilihan baud rate di pojok kanan bawah jendela Serial Monitor Anda.

Ilustrasi layar kode program

Ilustrasi antarmuka baris perintah/monitor. (Klik gambar untuk memperbesar)

Penugasan

Tugas Berkelompok

Proyek Fisik: Push Button + LED

Bentuk kelompok dengan maksimal 6 anggota.

Tugas Anda adalah memindahkan pemahaman dari simulasi Tinkercad ke perangkat keras (Hardware) Arduino Uno sesungguhnya.

  1. Rangkaian: Buatlah rangkaian menggunakan Breadboard yang terdiri dari 1 Push Button (sebagai Input) dan 1 LED + Resistor 220 ohm (sebagai Output).
  2. Skenario Program:
    • Saat tombol ditekan: LED menyala, dan Serial Monitor menampilkan teks: "Tombol ditekan, LED ON".
    • Saat tombol dilepas: LED mati, dan Serial Monitor menampilkan teks: "Sistem siaga...".
  3. Uji Coba: Unggah (Upload) program ke Arduino Uno masing-masing kelompok, dan tunjukkan hasilnya kepada Guru saat praktikum berlangsung.
Merefleksi

Refleksi Pembelajaran

Setelah melakukan praktikum simulasi dan fisik, mari kita sejenak merefleksikan apa yang telah kita pelajari hari ini:

  1. Bagaimana perasaan Anda saat pertama kali berhasil membuat tulisan muncul di Serial Monitor hanya dengan menekan sebuah tombol fisik?
  2. Kira-kira, dalam kehidupan nyata, perangkat elektronik canggih apa saja (misal di sistem Smart Home atau Internet of Things) yang menggunakan prinsip dasar input digital seperti yang kita pelajari hari ini?
  3. Kendala terbesar apa yang kelompok Anda hadapi saat merangkai komponen fisik di breadboard dibandingkan di Tinkercad, dan bagaimana kalian mengatasinya?

Teknologi otomasi bermula dari pemahaman hal-hal kecil seperti membaca tekanan jari pada sebuah tombol. Tetap semangat bereksplorasi, karena kalian sedang mempelajari bahasa masa depan!

Zoomed image

Modul 4 Arduino

Modul 4: Arduino - Lampu Lalu Lintas

Modul 4

Modul Pembelajaran Mendalam

Membangun Sistem Lampu Lalu Lintas Berbasis Arduino

Selamat datang di modul 4! Kali ini kita akan mengubah diri menjadi insinyur lalu lintas dan programmer sekaligus. Kita akan membangun prototipe sistem yang mengatur detak nadi sebuah kota.

Tujuan Pembelajaran

  • Memahami konsep Sub Program dalam koding.
  • Mengenal dan mengimplementasikan Tipe Data dasar.
  • Mampu melakukan debugging / membaca error di panel output.
  • Merangkai komponen di Tinkercad dan Arduino Uno fisik secara kolaboratif.

Pertanyaan Pemantik

"Bayangkan persimpangan tersibuk di kotamu tanpa lampu lalu lintas. Apa yang terjadi? Lalu, bagaimana lampu-lampu di berbagai persimpangan kota bisa tersinkronisasi tanpa menyebabkan kekacauan? Jika kamu yang harus memprogramnya, logika seperti apa yang akan kamu gunakan?"

Tahap 1: Memahami Konsep

Berdasarkan data dari Inrix Traffic Scorecard, kemacetan membuang puluhan jam waktu produktif manusia setiap tahunnya. Sistem lampu lalu lintas yang terprogram menggunakan mikrokontroler seperti Arduino adalah fondasi awal dari *Smart City*. Dengan mempelajari ini, kalian sedang meletakkan batu bata pertama menuju pemahaman Kecerdasan Buatan (AI) yang kelak bisa memanajemen lalu lintas secara mandiri dan real-time!

Analogi Tipe Data

Dalam pemrograman, kita sering menyimpan nilai. Anggap saja variabel itu seperti "Kotak Penyimpanan", dan tipe data adalah "Bentuk Kotaknya". Kamu tidak bisa menaruh air di keranjang bambu, bukan? Berikut adalah 5 tipe data dasar:

int

(Integer): Angka bulat. Analogi: Rak telur. Hanya bisa diisi telur utuh (1, 2, 100). Tidak bisa 1.5 telur.

float

(Floating Point): Angka desimal. Analogi: Gelas ukur air. Bisa berisi 1.5 liter atau 3.14 liter.

double

Mirip float, tapi kapasitasnya dua kali lipat lebih presisi untuk angka di belakang koma yang sangat panjang.

char

(Character): Satu karakter tunggal. Analogi: Stempel huruf. Contoh: 'A', 'B', '1', atau '?'.

bool

(Boolean): Hanya punya dua nilai: BENAR/SALAH. Analogi: Saklar lampu (ON/OFF atau 1/0).

Konsep Sub Program (Fungsi Khusus)

Bayangkan tugas mengatur lalu lintas di simpang empat. Jika semua instruksi ditulis di satu buku catatan utama (void loop), bukunya akan sangat tebal dan membingungkan.

Sub Program (atau Fungsi) adalah memecah buku catatan itu menjadi bab-bab kecil. Kita membuat fungsi bernama nyalakanMerah() dan di dalam fungsi utama, kita tinggal "memanggil" namanya. Ini membuat kode lebih bersih, mudah dibaca, dan meminimalisir error.

Tahap 2: Mengaplikasi (Tinkercad)

Sekarang, mari kita merangkai di Tinkercad secara virtual. Kita akan membutuhkan: 1 Arduino Uno, 1 Breadboard, 3 LED (Merah, Kuning, Hijau), dan 3 Resistor (220 ohm).

*Klik gambar untuk memperbesar*

Ilustrasi Komponen Elektronika. Placeholder untuk gambar skema Tinkercad Arduino.

Ilustrasi rangkaian elektronik. (Ganti dengan *screenshot* rangkaian Tinkercad Anda)

Menulis Script (Kode)

Perhatikan bagaimana konsep tipe data (int) dan Sub Program (void lampuMerah()) digunakan di bawah ini:

// Mendeklarasikan variabel (Tipe Data: int)
int pinMerah = 13;
int pinKuning = 12;
int pinHijau = 11;

void setup() {
  // Mengatur pin sebagai jalur keluar (OUTPUT)
  pinMode(pinMerah, OUTPUT);
  pinMode(pinKuning, OUTPUT);
  pinMode(pinHijau, OUTPUT);
}

void loop() {
  // Memanggil Sub Program yang kita buat sendiri
  panggilLampuMerah(); 
  panggilLampuKuning();
  panggilLampuHijau();
}

// ==========================================
// INI ADALAH SUB PROGRAM
// ==========================================
void panggilLampuMerah() {
  digitalWrite(pinMerah, HIGH); // Nyalakan Merah
  delay(5000);                  // Tunggu 5 detik
  digitalWrite(pinMerah, LOW);  // Matikan Merah
}

void panggilLampuKuning() {
  digitalWrite(pinKuning, HIGH);
  delay(2000);
  digitalWrite(pinKuning, LOW);
}

void panggilLampuHijau() {
  digitalWrite(pinHijau, HIGH);
  delay(4000);
  digitalWrite(pinHijau, LOW);
}

Cara Membaca Error di Panel Output

Sebagai programmer, error adalah sahabat, bukan musuh! Jika kodemu gagal berjalan di Tinkercad, perhatikan kotak hitam di bawah (Serial Monitor/Output):

  • Cari Angka Baris: Pesan error biasanya menyebutkan angka, misal: error: expected ';' before '}' token pada baris 24. Artinya kamu lupa menaruh titik koma (;) di akhir perintah dekat baris 24.
  • Perhatikan 'Case Sensitive': Arduino membedakan huruf besar/kecil. digitalwrite akan error, yang benar adalah digitalWrite (W besar).
  • Typo Variabel: Jika tertulis 'pinmerah' was not declared, artinya kamu memanggil nama variabel yang salah ketik (harusnya pinMerah).

Tahap 3: Praktik & Refleksi

Tugas Kelompok (Hands-on Lab)

Tinggalkan simulator virtual, saatnya menyentuh perangkat keras sungguhan!

  1. Bentuk kelompok berisi 5-6 orang.
  2. Ambil kit Arduino Uno, kabel jumper, resistor, dan LED dari laboratorium.
  3. Rangkai sirkuit fisik lampu lalu lintas persis seperti desain Tinkercad kalian.
  4. Tulis ulang *script* di aplikasi Arduino IDE komputer.
  5. Upload program tersebut ke *board* Arduino dan saksikan lampu lalu lintas kalian beroperasi di dunia nyata!

Mari Merefleksi

Sembari membereskan meja kerja, diskusikan pertanyaan berikut bersama kelompokmu. Guru akan menunjuk beberapa kelompok untuk berbagi pemikiran:

1. Apa kendala paling menantang saat menerjemahkan kode dari layar komputer (Tinkercad) ke kabel fisik di dunia nyata?

2. Jika kalian ditantang untuk membuat lampu lalu lintas untuk simpang empat (bukan sekadar 1 arah), bagaimana kalian akan mengubah logika Sub Program kalian?

3. Menurutmu, mengapa pemahaman tentang "membaca error" (debugging) sangat penting tidak hanya dalam koding, tapi juga dalam memecahkan masalah kehidupan?

© Rislyon Ripi - SMA Kristen Barana - 2025/2026

Dibuat dengan optimisme untuk masa depan pendidikan Indonesia.