Minggu, 06 September 2026

SIMULASI LAMPU LALU LINTAS 4 ARAH MENGGUNAKAN ESP32

Minggu, 6 September 2026

 

 

SIMULASI LAMPU LALU LINTAS 4 ARAH MENGGUNAKAN ESP32

Mata Kuliah Internet Of Things

 

 

 

 

 

 

 

 

 

Disusun Oleh Kelompok 5:

Farel Rizky Aliansi (24051204016)

Moch Septian Yudis (24051204024)

Denny Kusuma Putra (24051204027)

Brian Fawwaz Atmajaya (24051204230)

 

 

 

 

Link Vidio : https://drive.google.com/file/d/12IOgK6sVIy7TogYhYZVloOGdsxIzmHcH/view?usp=dr ive_link

 

 

 

 

 

 

 

 

Program Studi Teknik Informatika Fakultas Teknik

Universitas Negeri Surabaya


 

BAB 1

PENDAHALUAN

 

 

  1. Latar Belakang

Pertumbuhan volume kendaraan bermotor sangat tinggi terutama pada wilayah perkotaan saat ini kerap tidak sebanding dengan infrastruktur jalan raya yang ada, sehingga memicu masalah kemacetan lalu lintas yang kerap kali kita temuin, khususnya di area persimpangan 4 arah. Ketidakefisienan dalam manajemen waktu pergantian lampu lalu lintas (Traffic Light) yang masih bersifat konvensional seringkali menjadi faktor utama penumpukan kendaraan. Hal ini tidak hanya berimbas pada kerugian waktu dan ekonomi, tetapi juga berdampak pada peningkatan emisi gas buang serta risiko kecelakaan lalu lintas.

Oleh karena itu, diperlukan pemahaman mendalam mengenai arsitektur sistem kontrol lalu lintas yang terotomatisasi, efisien, dan dapat diprogram secara dinamis.

Di era perkembangan Internet of Things (IoT) dan penerapan konsep Smart City, sistem otomasi berbasis mikrokontroler menjadi solusi fundamental dalam merancang purwarupa (prototype) pengatur lalu lintas cerdas. Mikrokontroler berfungsi sebagai otak pemroses utama yang mengatur timing, mengeksekusi algoritma sekuensial, dan mengelola kontrol logika digital pada komponen perangkat keras.

Dalam praktikum ini, ESP32 dipilih sebagai perangkat System on a Chip (SoC) utama karena memiliki kemampuan komputasi yang andal, efisiensi daya yang baik, serta kelengkapan pin General-Purpose

Input/Output (GPIO) yang sangat memadai untuk mengendalikan banyak komponen sekaligus, seperti 12 buah indikator LED pada persimpangan 4 arah. Melalui implementasi pada mata kuliah Organisasi dan Arsitektur Komputer, simulasi ini menjadi sarana vital bagi mahasiswa untuk menerjemahkan teori arsitektur hardware, pemahaman instruksi pemrograman tingkat rendah (low-level logic), serta penerapan algoritma state machine ke dalam sebuah sistem fisik yang merepresentasikan solusi nyata terhadap problematika infrastruktur transportasi publik.

 

 

  1. Rumusan masalah

    • Bagaimana arsitektur perangkat keras (hardware architecture) dirancang dan diintegrasikan menggunakan mikrokontroler ESP32 beserta antarmuka komponen I/O (LED dan resistor) untuk merepresentasikan topologi sistem kendali lampu lalu lintas 4 arah?
    • Bagaimana mengimplementasikan algoritma sekuensial berbasis konsep Finite State Machine (FSM) sederhana pada program untuk mengatur sinkronisasi waktu (timing control) dan transisi kondisi (state transition) secara presisi antar persimpangan?
    • Bagaimana memanajemen General-Purpose Input/Output (GPIO) pada ESP32 melalui konfigurasi perangkat lunak tingkat rendah agar dapat merutekan sinyal digital tanpa terjadinya konflik (traffic collision) pada siklus utama (infinite loop)?


 

  1. Tujuan Laporan

    • Merealisasikan dan menganalisis rancangan arsitektur sirkuit perangkat keras, termasuk pemetaan pin GPIO ESP32 secara efisien sebagai output sinyal digital ke aktuator visual dengan memperhatikan prinsip dasar elektronika arus lemah.
    • Mengembangkan dan menguji kode program kontrol logika (control logic) berstruktur prosedural yang memanfaatkan array, perulangan, dan modularisasi fungsi untuk meminimalisasi redundansi kode saat mengeksekusi siklus 12 titik lampu.
    • Memahami secara holistik organisasi dan cara kerja mikrokontroler dalam sistem tertanam (embedded system), mulai dari tahap pengarahan pra-pemroses (define), inisialisasi keadaan aman (fail-safe condition), hingga eksekusi rutinitas berkelanjutan tanpa henti.

 

 

  1. Manfaat Penulisan

Penulisan laporan ini diharapkan dapat memberikan pemahaman lebih luas terkait interaksi tingkat rendah (low-level interfacing) antara arsitektur perangkat keras mikrokontroler ESP32 dan instruksi perangkat lunak pada sistem tertanam (embedded system). Secara teknis, penyusunan ini melatih kompetensi mahasiswa dalam merancang teknis sirkuit elektronika digital sekaligus mengimplementasikan algoritma kendali sekuensial yang terstruktur dan efisien. Lebih jauh, simulasi kontrol lalu lintas ini dapat menjadi landasan konseptual yang kokoh bagi pengembangan infrastruktur teknologi rekayasa yang lebih mutakhir, seperti integrasi Internet of Things (IoT) dan Sistem Transportasi Cerdas (Intelligent Transportation System) guna mendukung terwujudnya ekosistem Smart City di masa depan.


 

BAB 2 TINJAUAN PUSTAKA

 

  1. Dasar Teori

Mikrokontroler dan Arsitektur System on a Chip (SoC) Mikrokontroler merupakan sistem komputer mikro yang terintegrasi secara utuh dalam sebuah cip tunggal (System on a Chip/SoC).

Perangkat ESP32 yang digunakan dalam simulasi ini ditenagai oleh arsitektur mikroprosesor 32-bit yang memproses instruksi melalui siklus fetch, decode, dan execute. Kode program (firmware) yang ditulis dalam bahasa tingkat tinggi (C/C++) akan dikompilasi menjadi bahasa mesin, disimpan pada memori flash, dan kemudian dieksekusi secara sekuensial (top-down execution) oleh unit pemroses pusat (CPU) untuk mengontrol berbagai fungsi periferal.

General-Purpose Input/Output (GPIO) dan Level Logika Digital Interaksi antara mikrokontroler dengan (komponen eksternal seperti LED) dihubungkan oleh antarmuka GPIO. Secara perangkat keras, pengaturan mode pin sebagai OUTPUT menginstruksikan register arah data (Data

Direction Register/DDR) di dalam mikrokontroler untuk membuka jalur transmisi sinyal dari prosesor ke pin fisik. Saat program mengeksekusi instruksi logika digital HIGH, sirkuit transistor internal (berbasis logika CMOS) akan menghubungkan pin tersebut ke tegangan suplai operasional (VDD, yakni 3.3V pada ESP32), sehingga arus listrik mengalir untuk mengaktifkan komponen eksternal. Sebaliknya, instruksi LOW akan merutekan sirkuit ke referensi tanah (Ground/0V), memutus beda potensial dan menghentikan aliran arus.

Finite State Machine (FSM) dalam Kontrol Sekuensial Secara algoritma, pengendalian lampu lalu lintas merupakan implementasi praktis dari konsep Finite State Machine (FSM). Sistem dirancang untuk berada pada satu keadaan (state) spesifik pada satu waktu tertentu (misalnya: jalur Utara hijau, jalur lainnya merah). Transisi perpindahan dari satu keadaan ke keadaan berikutnya (hijau ke kuning, lalu merah) diatur menggunakan instruksi pewaktuan basis waktu (delay/timer delay). Fungsi eksekusi berulang tanpa henti (void loop()) memastikan sistem menjalankan seluruh state secara berurutan dan deterministik, mencegah terjadinya kondisi bentrokan sinyal (race condition) atau malfungsi pada pengaturan persimpangan.

 

 

  1. Komponen

 

No.

Nama perangkat / Komponen

Fungsi Utama Dalam Sistem

1.

1 Unit Board ESP 32

Berfungsi sebagai unit pemrosesan (CPU) dan sebagai pengontrol logika utama dalam sistem chipnya.

2.

12 Led (4 merah, 4 kuning,

4 hijau)

Berfungsi sebagai aktuator visual atau indikator state dalam simulasi.

3.

12 Resitor

Bertindak sebagai komponen pasif pembatas arus listrik (current limiter). Resistor dipasang secara seri antara pin GPIO ESP32 dan

anoda LED untuk membatasi lonjakan arus listrik yang mengalir.


 

4.

Kabel Jumper

Berfungsi sebagai media transmisi fisik (konduktor) yang

merutekan sinyal arus listrik searah (DC) dari pin output mikrokontroler menuju ke komponen elektronika eksternal


 

BAB 3 PEMBAHASAN

 

  1. Penjelasan Simulasi

Simulasi sistem pengatur lalu lintas ini mengintegrasikan dua aspek fundamental yakni interkoneksi perangkat keras (hardware interfacing) dan perancangan perangkat lunak berbasis algoritma sekuensial (software logic).

 

 



image


 

 

 

  1. Interkoneksi Sirkuit Perangkat Keras (Hardware InterfacingProses perakitan purwarupa fisik didasarkan pada prinsip sirkuit elektronika tertutup (closed-loop circuit). Langkah-langkah konfigurasinya adalah sebagai berikut:
    1. Mengintegrasikan board mikrokontroler ESP32 sebagai unit pengolah pusat (CPU) ke dalam breadboard guna mendistribusikan jalur General-Purpose Input/Output (GPIO) secara efisien.
    2. Memosisikan 12 aktuator visual (LED) yang dibagi ke dalam 4 kuadran persimpangan (Utara, Timur, Selatan, Barat), di mana setiap kuadran memuat indikator state warna Merah, Kuning, dan Hijau.
    3. Melakukan pengondisian arus listrik (current limiting) dengan menghubungkan terminal anoda (kaki positif) dari masing-masing LED ke resistor secara seri sebelum direlasikan ke pin GPIO ESP32 yang telah dialokasikan (misalnya: pin 25, 26, 27). Hal ini krusial untuk menjaga integritas material semikonduktor dari disipasi daya berlebih akibat lonjakan arus (overcurrent).
    4. Menyatukan seluruh terminal katoda (kaki negatif) dari ke-12 LED ke dalam satu simpul referensi titik nol (Common Ground/GND) pada modul ESP32 untuk menutup sirkuit arus searah (DC) kembali ke board.


 

  1. Arsitektur Logika Perangkat Lunak (Software ArchitectureProgram disusun dengan pendekatan pemrograman prosedural terstruktur yang merepresentasikan Finite State Machine (FSM) sederhana. Berikut adalah penjelasan alur eksekusinya:
    • Direktif Pra-Pemroses (Pre-processor Directives): Penggunaan makro #define (seperti #define U_MERAH 25) diinstruksikan pada level sebelum kompilasi. Pendekatan abstraksi ini memetakan label alias ke alamat register pin fisik. Hal ini secara signifikan meningkatkan keterbacaan kode (readability) dan meminimalisasi kesalahan alokasi register I/O tanpa mengonsumsi ruang memori RAM berlebih pada saat runtime.
    • Protokol Keamanan Awal (Fail-Safe Initialization - void semuaMerah()): Sub-rutin ini dirancang untuk menetapkan kondisi default yang aman sesaat setelah sistem menyala. Instruksi digitalWrite(pin, HIGH) mengonfigurasi register untuk menginjeksi tegangan logika tinggi (3.3V) ke seluruh lampu merah, sedangkan LOW membuang potensial (pull-down menjadi 0V) pada lampu kuning dan hijau. Hal ini mencegah terjadinya malfungsi lalu lintas (tabrakan kendaraan) pada fase inisialisasi awal sistem (boot-up).
    • Blok Konfigurasi Sistem (void setup()): Blok esensial ini dieksekusi satu kali oleh bootloader mikrokontroler. Untuk optimalisasi penulisan, digunakan struktur data array (int pin[]) guna menghimpun ke-12 alamat pin fisik. Dikombinasikan dengan perulangan iteratif (for loop), mikrokontroler secara sistematis mendaftarkan Data Direction Register (DDR) ke-12 pin tersebut sebagai keluaran sinyal (OUTPUT). Pemanggilan semuaMerah() pada akhir blok mengunci status keamanan sistem.
    • Modularisasi Transisi Kondisi (State Transition Routine - void jalanArah()): Fungsi ini menerapkan konsep modularisasi parameter untuk mencegah redundansi kode (Don't Repeat Yourself / DRY). Algoritma ini mengeksekusi perpindahan transisi kondisi lalu lintas secara deterministik. Penggunaan fungsi delay() (misal: 3000 ms) menginstruksikan siklus clock pada CPU untuk berhenti sementara (blocking code), menahan state lampu hijau untuk menyala, dilanjutkan dengan fase transisi kuning, dan memulihkan kondisi kembali menjadi merah sebelum CPU beralih memproses memori instruksi selanjutnya.
    • Siklus Eksekusi Utama (Infinite Execution Loop - void loop()): Fungsi ini merupakan siklus iteratif tak terbatas yang merepresentasikan operasional waktu berjalan (real-time operation). Pemanggilan fungsi modular jalanArah() dilakukan secara sekuensial (top-down execution) pada kuadran Utara, Timur, Selatan, hingga Barat. Karena dieksekusi secara sinkron dan berurutan, sistem memastikan tidak akan terjadi bentrokan sinyal antarkuadran. Siklus ini akan terus berulang secara konstan selama mikrokontroler terhubung dengan sumber daya listrik.

 

 

  1. Program

Berikut adalah kode program lengkap yang digunakan dalam proyek implementasi sistem IoT ini.

Kode program ditulis dan diimplemntasikan secara presisi untuk masing-masing mikrokontroler.


 

Kode

// UTARA

#define U_MERAH 25

#define U_KUNING 26

#define U_HIJAU 27

 

// TIMUR

#define T_MERAH 23

#define T_KUNING 22

#define T_HIJAU 21

 

// SELATAN

#define S_MERAH 14

#define S_KUNING 12

#define S_HIJAU 13

 

// BARAT

#define B_MERAH 19

#define B_KUNING 18

#define B_HIJAU 5

 

void semuaMerah() { digitalWrite(U_MERAH, HIGH); digitalWrite(T_MERAH, HIGH); digitalWrite(S_MERAH, HIGH); digitalWrite(B_MERAH, HIGH);

 

digitalWrite(U_KUNING, LOW); digitalWrite(T_KUNING, LOW); digitalWrite(S_KUNING, LOW); digitalWrite(B_KUNING, LOW);

digitalWrite(U_HIJAU, LOW); digitalWrite(T_HIJAU, LOW); digitalWrite(S_HIJAU, LOW); digitalWrite(B_HIJAU, LOW);

}

 

void setup() { int pin[] = {

U_MERAH, U_KUNING, U_HIJAU, T_MERAH, T_KUNING, T_HIJAU, S_MERAH, S_KUNING, S_HIJAU, B_MERAH, B_KUNING, B_HIJAU

};

 

for (int i = 0; i < 12; i++) { pinMode(pin[i], OUTPUT);

}


 



 

BAB 4

PENUTUP

 

 

  1. Kesimpulan

Berdasarkan hasil simulasi yang telah diimplementasikan, dapat disimpulkan bahwa arsitektur System on a Chip (SoC) pada mikrokontroler ESP32 terbukti sangat akurat dan andal dalam mengeksekusi sistem kendali tertanam (embedded control system) untuk manajemen lalu lintas 4 arah. Konfigurasi tingkat rendah pada register General-Purpose Input/Output (GPIO) sebagai jalur transmisi sinyal digital (OUTPUT) beroperasi dengan presisi tinggi dalam mengendalikan aktuator visual (LED) tanpa mengorbankan stabilitas tegangan sistem. Dari perspektif arsitektur perangkat lunak, penerapan logika

Finite State Machine (FSM) yang dieksekusi melalui paradigma pemrograman prosedural dan sinkronisasi pewaktuan (hardware timer delay) berhasil mendemonstrasikan transisi state yang deterministik, stabil, dan mengeliminasi potensi bentrokan sinyal (race condition) secara komprehensif pada siklus operasional tak terbatas (infinite loop).

 

 

  1. Saran

Untuk optimalisasi performa CPU dan pengembangan arsitektur sistem di masa mendatang, disarankan untuk mensubstitusi metode blocking delay konvensional dengan pewaktuan asinkron (non-blocking timer seperti fungsi millis()), atau mengimplementasikan Real-Time Operating System (RTOS) guna memfasilitasi komputasi multitasking. Selain itu, purwarupa ini dapat dielevasi menjadi Adaptive Traffic Control System (ATCS) dengan mengintegrasikan perangkat sensor pendeteksi volume kendaraan serta mengaktifkan fitur Hardware Interrupt (ISR) untuk menangani interupsi eksternal secara real-time (seperti modul tombol penyeberang jalan pejalan kaki). Mengingat ESP32 memiliki kapabilitas radio komunikasi bawaan, penelitian selanjutnya dapat mengeksplorasi transmisi data telemetri status persimpangan ke server komputasi awan (cloud) berbasis Internet of Things (IoT) untuk pemantauan lalu lintas terpusat.

 

 

  1. Daftar Pustaka

Espressif Systems. (2023). ESP32 Series Datasheet. Espressif Systems. Diakses dari situs resmi Espressif (Sumber utama untuk spesifikasi perangkat keras dan arsitektur pin GPIO ESP32).

Patterson, D. A., & Hennessy, J. L. (2020). Computer Organization and Design: The Hardware/Software Interface (6th ed.). Morgan Kaufmann. (Buku referensi standar untuk memahami eksekusi instruksi tingkat rendah dan arsitektur hardware).

Ramadhan, dkk. (2025). Pengontrolan Lampu Lalu Lintas Menggunakan Teknologi ESP32 sebagai Perangkat Kontrol. Jurnal SIMETRIS, 16(2).

Stallings, W. (2022). Computer Organization and Architecture: Designing for Performance (11th ed.). Pearson Education. (Buku panduan utama untuk materi CPU, interkoneksi sistem, dan unit I/O).


 

Taufikurrachman, M., dkk. (2025). Sistem Lampu Lalu Lintas Pintar untuk Kendaraan Prioritas Menggunakan ESP32. Prosiding Seminar Nasional Teknologi dan Sains (STaINS).


LAPORAN PRAKTIKUM INTERNET OF THING PEMANTAU SUHU OTOMATIS BERBASIS ARDUINO UNO & SENSOR TMP36

LAPORAN PRAKTIKUM INTERNET OF THING PEMANTAU SUHU OTOMATIS BERBASIS ARDUINO UNO & SENSOR TMP36

 

 

 

Disusun Oleh Kelompok 4 TIA :

 

Muhamad Fauzan

(24051204013)

Julian Esa Mahendra P

(24051204018)

Rahman Abror Zati

(24051204019)

Firmas Ferdiansya

(24051204032)


 

 

BAB I PENDAHULUAN

 

 

  1. Latar Belakang

Perkembangan teknologi Internet of Things (IoT) telah membuka banyak peluang dalam bidang otomasi dan monitoring, salah satunya dalam pemantauan suhu lingkungan. Suhu merupakan salah satu parameter penting yang perlu dipantau dalam berbagai aplikasi, seperti penyimpanan bahan makanan, ruang server, hingga ruang penyimpanan obat-obatan. Ketika suhu melebihi batas normal, diperlukan suatu sistem yang dapat memberikan peringatan secara otomatis agar tindakan pencegahan dapat segera dilakukan.

Mikrokontroler Arduino Uno sebagai salah satu platform embedded system yang populer dapat dimanfaatkan untuk membangun sistem alarm suhu sederhana. Dengan memanfaatkan sensor suhu TMP36 sebagai pengambil data dan LED sebagai indikator, dapat dibangun sebuah sistem yang mampu mendeteksi perubahan suhu dan memberikan peringatan visual secara real-time. Berdasarkan latar belakang tersebut, penulis membuat simulasi "Alarm Suhu Menggunakan Sensor TMP36 dan Indikator LED" menggunakan platform simulasi Tinkercad sebagai alternatif gratis dari Wokwi.

 

 

 

  1. Rumusan Masalah

 

Berdasarkan latar belakang di atas, rumusan masalah dalam laporan ini adalah:

 

  1. Bagaimana cara membaca data suhu menggunakan sensor TMP36 pada Arduino Uno?
  2. Bagaimana cara mengonversi nilai analog dari sensor TMP36 menjadi nilai suhu dalam derajat Celcius?
  3. Bagaimana cara membuat sistem alarm suhu yang memberikan indikator visual melalui LED berdasarkan ambang batas suhu tertentu?

 

 

 

  1. Tujuan Laporan

 

Tujuan dari penulisan laporan ini adalah:

 

  1. Mengetahui cara kerja sensor suhu TMP36 dalam membaca perubahan suhu lingkungan.
  2. Memahami proses konversi nilai analog menjadi nilai suhu menggunakan pemrograman Arduino.


 

  1. Merancang dan mensimulasikan sistem alarm suhu sederhana menggunakan Arduino Uno, sensor TMP36, dan indikator LED melalui platform Tinkercad.

 

 

 

  1. Manfaat Penulisan

 

Manfaat dari penulisan laporan ini antara lain:

 

  1. Menambah pemahaman penulis mengenai konsep dasar sistem embedded dan IoT, khususnya dalam pemanfaatan sensor suhu.
  2. Memberikan gambaran implementasi sistem monitoring suhu sederhana yang dapat dikembangkan lebih lanjut untuk kebutuhan yang lebih kompleks.
  3. Sebagai bahan referensi bagi pembaca yang ingin mempelajari pembuatan alarm suhu berbasis Arduino.


 

 

BAB II
TINJAUAN PUSTAKA

 

 

 

  1. Dasar Teori

 

Internet of Things (IoT) merupakan konsep yang menghubungkan berbagai perangkat fisik dengan jaringan internet sehingga dapat saling bertukar data. Dalam piramida IoT, terdapat empat lapisan utama, yaitu data from things (pengambilan data melalui sensor), connectivity (jaringan penghubung), platform (pengolahan data), dan apps (aplikasi yang menggunakan data tersebut). Pada laporan ini, sistem yang dibangun berada pada lapisan dasar piramida IoT, yaitu pengambilan data dari sensor (things) dan eksekusi aktuator berupa LED.

Sensor TMP36 adalah sensor suhu analog yang menghasilkan tegangan keluaran linier terhadap suhu yang terbaca. Sensor ini bekerja dengan memberikan tegangan sekitar 750 mV pada suhu 25°C, dengan perubahan tegangan sebesar 10 mV setiap kenaikan 1°C. Nilai analog yang dibaca oleh mikrokontroler kemudian dikonversi menjadi nilai tegangan, lalu dari tegangan tersebut dikonversi lagi menjadi nilai suhu dalam derajat Celcius.

Arduino Uno merupakan salah satu papan mikrokontroler berbasis ATmega328P yang banyak digunakan untuk keperluan prototyping elektronika karena kemudahan penggunaannya dan dukungan pustaka (library) yang bersifat open source. Arduino Uno memiliki pin analog input (A0–A5) yang digunakan untuk membaca sinyal analog dari sensor, serta pin digital output  yang  dapat  digunakan  untuk  mengendalikan  komponen  seperti LED.

 

 

  1. Komponen

Komponen yang digunakan dalam simulasi ini adalah:

 

  1. Arduino Uno R3 — berfungsi sebagai pusat pengendali (mikrokontroler) yang membaca data dari sensor dan mengendalikan output LED berdasarkan program yang telah ditanamkan.
  2. Sensor Suhu TMP36 — berfungsi sebagai komponen input yang mendeteksi suhu lingkungan sekitar dan mengubahnya menjadi sinyal tegangan analog.
  3. LED Merah — berfungsi sebagai indikator alarm yang menyala ketika suhu terbaca melebihi ambang batas (30°C).
  4. LED Biru — berfungsi sebagai indikator kondisi normal yang menyala ketika suhu berada dalam batas aman (≤30°C).
  5. Resistor — digunakan sebagai pembatas arus pada rangkaian LED agar LED tidak rusak akibat arus berlebih.


 

BAB III
PEMBAHASAN

 

 

 

  1. Penjelasan Simulasi

 

Simulasi ini dibuat menggunakan platform Tinkercad alternatif Wokwi dengan rangkaian yang terdiri dari Arduino Uno, sensor TMP36, layar LCD 16x2 I2C, dan dua buah LED (merah dan biru) yang masing-masing dilengkapi resistor sebagai pembatas arus. Sensor TMP36 dihubungkan ke pin analog A0 Arduino untuk membaca nilai suhu. LED merah dihubungkan ke pin digital 10, LED biru dihubungkan ke pin digital 11, sedangkan modul LCD I2C dihubungkan melalui pin komunikasi (SDA ke A4 dan SCL ke A5).

 

Cara kerja rangkaian ini adalah sebagai berikut: sensor TMP36 secara terus-menerus membaca suhu lingkungan dan mengubahnya menjadi sinyal analog yang diterima oleh pin A0 Arduino. Nilai analog tersebut kemudian dikonversi oleh program menjadi nilai tegangan, lalu dari tegangan tersebut dihitung nilai suhu dalam derajat Celcius. Apabila suhu yang terbaca melebihi ambang batas yang ditentukan (30°C), maka LED merah akan menyala dan layar LCD baris kedua akan menampilkan status "PANAS" sebagai tanda peringatan, sementara LED biru akan mati. Sebaliknya, apabila suhu berada di bawah atau sama dengan ambang batas, LED biru akan menyala dan layar LCD menampilkan status "AMAN" menandakan kondisi suhu normal, sementara LED merah mati. Hasil pembacaan angka suhu secara real-time ditampilkan pada baris pertama layar LCD, serta dicetak pada Serial Monitor sebagai informasi tambahan.

 

 

 

  1. Program

 

Program yang digunakan dalam simulasi ini ditulis menggunakan bahasa C/C++ pada Arduino IDE. Berikut adalah penjelasan program secara garis besar:

  1. Pada bagian deklarasi variabel, ditentukan pin A0 sebagai input sensor suhu, pin 10 sebagai output LED merah, dan pin 11 sebagai output LED biru. Di bagian ini juga ditambahkan pemanggilan library untuk LCD dan inisialisasi LCD I2C dengan format 16 kolom dan 2 baris. Nilai ambang batas suhu (threshold) ditetapkan sebesar 30.0°C.
  2. Pada fungsi setup(), dilakukan inisialisasi komunikasi serial dengan baud rate 9600, serta pengaturan mode pin (INPUT untuk sensor dan OUTPUT untuk kedua LED). Selain itu, dilakukan juga inisialisasi untuk menyalakan layar LCD beserta lampu latarnya (backlight), dan menampilkan teks sapaan awal saat alat baru menyala.
  3. Pada fungsi loop(), program membaca nilai analog dari sensor menggunakan analogRead(), kemudian mengonversinya menjadi nilai tegangan dan suhu menggunakan rumus konversi. Nilai suhu yang didapat ditampilkan pada Serial Monitor dan juga pada baris pertama layar LCD. Lalu, nilai tersebut dibandingkan dengan nilai ambang batas menggunakan struktur kondisi if-else untuk menentukan LED mana yang akan menyala, sekaligus memperbarui teks status pada baris kedua LCD menjadi "PANAS" atau "AMAN". Proses ini diulang setiap 1 detik menggunakan fungsi delay(1000).


 

#include <Adafruit_LiquidCrystal.h>

 

// Setup LCD I2C Adafruit_LiquidCrystal lcd(0);

 

const int temperaturepin = A0; int nilaianalog;

const int redLEDPin = 10; const int blueLEDPin = 11; const float threshold = 30.0;

 

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

pinMode(temperaturepin, INPUT); pinMode(redLEDPin, OUTPUT); pinMode(blueLEDPin, OUTPUT);

// Nyalakan LCD pakai format library Adafruit lcd.begin(16, 2);

lcd.setBacklight(1); // Paksa lampu latar menyala

 

// Tampilkan pesan pembuka saat pertama kali nyala lcd.setCursor(0, 0);

lcd.print("Sistem Sensor"); lcd.setCursor(0, 1); lcd.print("Suhu Aktif...");

delay(2000); // Tahan tulisan selama 2 detik lcd.clear(); // Bersihkan layar

}

void loop() {

nilaianalog = analogRead(temperaturepin);

 

float voltage = (nilaianalog / 1024.0) * 5.0 - 0.498; float temperature = voltage * 100.0;

 

// Tampilkan di Serial Monitor (tetap jalan sebagai backup) Serial.print("Suhu: ");

Serial.print(temperature); Serial.println(" °C");

// Tampilkan teks suhu di baris pertama LCD lcd.setCursor(0, 0);

lcd.print("Suhu: "); lcd.print(temperature); lcd.print(" C ");

// Tampilkan status di baris kedua LCD lcd.setCursor(0, 1);

 

if (temperature > threshold) { digitalWrite(redLEDPin, HIGH);


 



 

BAB IV
PENUTUP

 

 

  1. Kesimpulan

Berdasarkan simulasi yang telah dibuat, dapat disimpulkan bahwa:

 

  1. Sensor TMP36 dapat digunakan untuk membaca suhu lingkungan melalui pembacaan nilai analog yang kemudian dikonversi menjadi nilai tegangan dan suhu.
  2. Sistem alarm suhu sederhana dapat dibangun menggunakan Arduino Uno dengan memanfaatkan LED sebagai indikator visual kondisi suhu, yaitu LED merah untuk kondisi suhu melebihi batas (alarm) dan LED biru untuk kondisi suhu normal.
  3. Simulasi menggunakan platform Wokwi memudahkan proses perancangan dan pengujian rangkaian elektronika tanpa memerlukan perangkat keras secara langsung.

 

 

 

  1. Saran

Sistem yang dibuat dalam laporan ini masih bersifat dasar dan hanya menampilkan indikator suhu melalui LED serta Serial Monitor. Untuk pengembangan lebih lanjut, disarankan untuk menambahkan konektivitas WiFi (misalnya menggunakan ESP32) sehingga data suhu dapat dikirim dan dipantau dari jarak jauh melalui aplikasi smartphone atau platform cloud IoT, seperti MQTT, Blynk, atau Telkom Antares. Selain itu, dapat pula ditambahkan komponen buzzer sebagai indikator suara agar peringatan lebih efektif.


 

 

DAFTAR PUSTAKA

 

 

Alfian Learning Center. (2025, 14 Januari). Belajar Membuat Alarm Suhu Menggunakan Sensor TMP36 dan Indikator LED. YouTube. https://youtu.be/w8NezUNxvak?si=nvVggbrC5Ht_Z-GP

 

 

Analog Devices. (n.d.). TMP35/TMP36/TMP37 low voltage temperature sensors data sheet. Analog Devices, Inc. https://www.analog.com/media/en/technical-documentation/data-sheets/tmp35_36_37.pdf

 

Autodesk. (n.d.). Tinkercad: Create digital designs with the free, easy to use app for schools, kids, hobbyists, and makers. Autodesk, Inc. https://www.tinkercad.com


 

LAMPIRAN

 

Link Video Penjelasan:

https://drive.google.com/file/d/1V6gUPIgFrDb36vxZ6NhmVayjV8SlSHyq/view?usp=sharing


LAPORAN PRAKTIKUM SIMULASI SIMULASI SISTEM PENGONTROL DUA MOTOR DC DENGAN INDIKATOR LCD 16X2 DAN LED BERBASIS ARDUINO NANO

LAPORAN PRAKTIKUM SIMULASI SIMULASI SISTEM PENGONTROL DUA MOTOR DC DENGAN INDIKATOR LCD 16X2 DAN LED BERBASIS ARDUINO NANO

 

Mata Kuliah Internet of Things

 

 

 

 

Disusun Oleh:

 

Amira Najihah Fadri Putri

24051204002

Mareta Surya Tananjaya

24051204006

Novasya Aulia Putri Hidayat

24051204028

Sulthania Auliya Afandi

24051204034

 

 

 

Prodi S1 Teknik Informatika UNIVERSITAS NEGERI SURABAYA


 

BAB I PENDAHULUAN

  1. Latar Belakang

 

Dalam era otomatisasi dan robotika, kontrol pergerakan motor DC merupakan salah satu fondasi utama dalam sistem embedded. Motor DC banyak digunakan karena kemampuannya menghasilkan gerakan maju dan mundur dengan pengendalian yang relatif sederhana. Penggunaan mikrokontroler seperti Arduino Nano memungkinkan pengendalian aktuator dan pemrosesan sinyal dari sensor maupun tombol secara efisien, sehingga sistem dapat bekerja secara otomatis tanpa intervensi manual yang berlebihan.

Selain itu, kebutuhan akan informasi status sistem menjadi penting agar pengguna dapat memahami kondisi operasi secara real-time. Oleh karena itu, integrasi dengan layar LCD 16x2 dan indikator LED menjadi solusi praktis untuk menampilkan status seperti Ready, Forward, dan Reverse. Tampilan visual ini tidak hanya berfungsi sebagai antarmuka sederhana, tetapi juga sebagai sarana monitoring yang meningkatkan keandalan sistem.

Proyek ini disusun untuk mensimulasikan sistem kontrol dua motor DC berbasis Arduino Nano yang terintegrasi dengan LCD 16x2 dan push-button melalui perangkat lunak Proteus 8 Professional. Proteus dipilih karena mampu menggabungkan simulasi rangkaian elektronik dengan kode program Arduino, sehingga memudahkan proses perancangan, pengujian, dan validasi sistem sebelum diwujudkan dalam bentuk fisik.

 

 

  1. Rumusan Masalah

 

  1. Bagaimana merangkai komponen Arduino Nano, driver motor L298, LCD 16x2, LED, dan tombol tekan dalam Proteus?
  2. Bagaimana logika pemrograman C/C++ pada Arduino untuk mengatur pergerakan maju (forward), mundur (reverse), dan pemberhentian otomatis (stop) pada motor DC?
  3. Bagaimana menampilkan status pergerakan motor dan counter secara real-time pada LCD 16x2?
  1. Tujuan Laporan

 

  1. Mendesain serta menginterkoneksikan skema rangkaian elektronik yang melibatkan komponen Arduino Nano, driver motor L298N, LCD 16x2, LED, dan push button pada perangkat lunak Proteus secara akurat dan berfungsi dengan baik.
  2. Menyusun dan mengimplementasikan algoritma pemrograman berbasis C/C++ pada Mikrokontroler  Arduino  untuk  mengendalikan  arah  pergerakan  motor  DC


 

(maju/forward, mundur/reverse, dan berhenti/stop) secara otomatis berbasis masukan tombol (input).

  1. Mengintegrasikan modul LCD 16x2 untuk menampilkan informasi status pergerakan motor DC beserta nilai penghitung (counter) secara real-time dan responsif terhadap perubahan sistem.
  1. Manfaat Penulisan

 

  1. Mengembangkan pemahaman praktis mengenai arsitektur I/O pada mikrokontroler.
  2. Membantu memahami simulasi hardware-software sebelum tahap implementasi fisik.


 

BAB II TINJAUAN PUSTAKA

  1. Dasar Teori

 

  • Mikrokontroler Arduino Nano: Papan pengembang berbasis ATmega328P yang menangani instruksi I/O digital dan analog, pembacaan register, serta pengolahan timer.
  • Driver Motor L298: Rangkaian jembatan-H (H-Bridge) yang berfungsi mengontrol arah putaran dan kecepatan motor DC menggunakan sinyal PWM (Pulse Width Modulation).
  • LCD 16x2 (HD44780): Display kristal cair yang dikendalikan dalam mode 4-bit data untuk menghemat penggunaan pin I/O pada mikrokontroler.
  1. Komponen

 

No

Nama Komponen

Fungsi dalam Rangkaian

1.

Arduino Nano

Mikrokontroler pemroses logika utama

2.

Driver Motor L298

Pengendali daya dan arah putaran motor DC

3.

2 Unit Motor DC

Aktuator mekanik utama

4.

LCD 16x2 (LM016L)

Indikator tampilan status & counter

5.

2 Unit Push Button

Input kontrol manuver (Forward/Reverse)

6.

2 Unit LED Indikator

Indikator visual mode gerak


 

BAB III PEMBAHASAN

  1. Penjelasan simulasi

 

Rangkaian ini bekerja berdasarkan 3 kondisi operasi:

  • Mode Standby: Saat sistem diaktifkan tanpa adanya penekanan tombol, LCD baris 1 menampilkan teks Ready, sedangkan baris 2 menampilkan angka counter (hitung++) yang bertambah secara bertahap setiap 1 detik.
  • Mode Forward: Penekanan tombol pada pin 13 memicu logika LOW. Sistem mengubah pesan LCD menjadi Forward, menyalakan LED Forward (pin A3), dan memutar motor A & B ke arah maju dengan kecepatan PWM penuh (255) selama 2 detik.Mode Reverse: Penekanan tombol pada pin 12 memicu logika LOW. Sistem mengubah pesan LCD menjadi Reverse, menyalakan LED Reverse (pin A4), dan memutar motor A & B ke arah sebaliknya (reverse).
  • Selama 2 detik.

Sistem Keamanan (Auto-Stop): Setelah durasi pererakan 2 detik selesai, fungsi stopMotor() secara otomatis dieksekusi untuk mematikan daya ke motor dan LED, lalu mengembalikan sistem ke kondisi standby.

  1. Program

 






 


int hitung = 0;

 

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

lcd.print("Ready");

 

pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);

 

pinMode(buttonForward, INPUT_PULLUP); pinMode(buttonReverse, INPUT_PULLUP);

 

pinMode(ledForward, OUTPUT); pinMode(ledReverse, OUTPUT);

}

 

void loop() {

// Tampilkan hitungan di LCD lcd.setCursor(0, 1); // Kolom 0, Baris 2

lcd.print(hitung++); // Tampilkan nilai variabel hitung delay(1000);

 

// Cek tombol Forward

if (digitalRead(buttonForward) == LOW) { lcd.setCursor(0, 0);

lcd.print("Forward ");

triggerMotors(2000); // Menyalakan motor selama 2 detik

}

 

// Cek tombol Reverse

if (digitalRead(buttonReverse) == LOW) { lcd.setCursor(0, 0);

lcd.print("Reverse ");

reverseMotors(2000); // Menyalakan motor mundur selama 2 detik

}

}

 

// Fungsi untuk menyalakan motor maju void triggerMotors(int duration) {

analogWrite(ENA, 255); // Kecepatan maksimal untuk motor A analogWrite(ENB, 255); // Kecepatan maksimal untuk motor B


 

// ledForward Menyala digitalWrite(ledForward, HIGH); digitalWrite(ledReverse, LOW);

 

// Motor A maju digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);

 

// Motor B maju digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);

 

// Jalankan motor selama durasi (2 detik) delay(duration);

 

// Matikan motor setelah durasi selesai stopMotor();

}

 

// Fungsi untuk menyalakan motor mundur void reverseMotors(int duration) {

analogWrite(ENA, 255); // Kecepatan maksimal untuk motor A analogWrite(ENB, 255); // Kecepatan maksimal untuk motor B

 

// ledReverse Menyala digitalWrite(ledForward, LOW); digitalWrite(ledReverse, HIGH);

 

// Motor A mundur digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);

 

// Motor B mundur digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);

 

delay(duration); // Jalankan motor mundur selama durasi (2 detik)

 

// Matikan motor setelah durasi selesai stopMotor();

}

 

// Fungsi untuk menghentikan motor void stopMotor() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW);


 



 

BAB IV

 

PENUTUP

 

  1. Kesimpulan

 

  1. Rangkaian pengontrol dua motor DC berhasil disimulasikan menggunakan Proteus dengan mengintegrasikan Arduino Nano, driver L298, LCD 16x2, LED, dan tombol input.
  2. Pemrograman logika active low menggunakan INPUT_PULLUP berjalan efektif untuk membaca input tombol, serta fungsi timer delay() mampu membatasi durasi pergerakan motor secara tepat selama 2 detik.
  3. LCD 16x2 dan LED indikator dapat menampilkan status pergerakan dan counter sistem secara akurat dan real-time.
  1. Saran

 

  1. Pengembangan selanjutnya dapat menambahkan sensor jarak (seperti HC-SR04) agar penghentian motor tidak hanya berbasis durasi waktu, melainkan berdasarkan halangan fisik.
  2. Penggunaan modul komunikasi nirkabel (seperti Bluetooth/Wi-Fi) dapat diterapkan untuk mengintegrasikan sistem ini ke dalam arsitektur Internet of Things (IoT).


 

DAFTAR PUSTAKA

 

Banzi, M., & Shiloh, M. (2014). Getting Started with Arduino. O'Reilly Media.

 

Mazidi, M. A., Naimi, S., & Naimi, S. (2016). The AVR Microcontroller and Embedded Systems: Using Assembly and C. Pearson.


 

LAMPIRAN

 

Link Video Penjelasan

 

https://drive.google.com/file/d/1xxVdY1Oy0Aj7qr9zBo4MpwSPhtM3UW0v/view?usp=shar ing