Media Ajar Embedded System Programming Menggunakan Trainer dan E-Jobsheet Berbasis Arduino Nano di SMK By. Wiyono (Iyon Manakarra)
Pengembangan media pembelajaran merupakan salah satu upaya strategis untuk meningkatkan kualitas pembelajaran kejuruan, khususnya pada mata pelajaran Embedded System Programming di SMK Jurusan Teknik Elektronika Industri. Berdasarkan hasil penelitian pengembangan dengan model 4-D (Define, Design, Develop, dan Disseminate), pada Program Pascasarjana PPS-UNM Makassar Tahun 2026, telah dihasilkan Trainer Embedded System Programming berbasis Arduino Nano yang terintegrasi dengan E-Jobsheet digital. Media ini dirancang untuk menjawab permasalahan pembelajaran praktik, seperti keterbatasan trainer, penggunaan jobsheet konvensional, serta rendahnya keterlibatan siswa dalam praktik pemrograman mikrokontroler. Integrasi trainer fisik dan E-Jobsheet digital diharapkan mampu menjembatani kesenjangan antara teori dan praktik secara lebih kontekstual.
E-Jobsheet yang dikembangkan berbasis Google Sites sehingga mudah diakses melalui berbagai perangkat, baik laptop maupun smartphone. Di dalamnya tersedia materi ringkas, panduan praktik langkah demi langkah, gambar rangkaian, contoh kode program, serta evaluasi interaktif yang mendukung pembelajaran mandiri dan berbasis proyek. Hasil uji kelayakan menunjukkan bahwa media ini berada pada kategori Layak hingga Sangat Layak, sedangkan hasil uji kepraktisan pada siswa dan guru menunjukkan kategori Sangat Praktis. Temuan tersebut mengindikasikan bahwa E-Jobsheet dan Trainer tidak hanya mudah digunakan, tetapi juga efektif dalam mendukung pencapaian capaian pembelajaran pada elemen pemrograman sistem embedded, khususnya dalam penerapan input/output digital, analog, dan komunikasi serial.
Sebagai bagian dari tahap penyebaran (disseminate), E-Jobsheet ini dibagikan secara terbuka agar dapat dimanfaatkan oleh guru dan siswa SMK secara lebih luas sebagai referensi pembelajaran praktik pemrograman Arduino. Guru dapat mengadopsi media ini sebagai alternatif bahan ajar berbasis proyek, sementara siswa dapat menggunakannya untuk latihan mandiri di luar jam pelajaran. E-Jobsheet dapat diakses melalui tautan berikut:
Diharapkan media pembelajaran ini dapat berkontribusi dalam meningkatkan kualitas pembelajaran vokasi, memperkuat keterampilan praktik siswa, serta mendukung implementasi Kurikulum Merdeka yang relevan dengan kebutuhan dunia industri.
Membuat
Robot Obstacle Avoider 4WD Menggunakan Arduino Uno dan Sensor Ultrasonik
By. Iyon
manakarra
Robot obstacle
avoider atau robot penghindar halangan merupakan salah satu proyek
paling populer di dunia robotika pemula. Robot ini mampu bergerak
secara otomatis dan menghindari objek di depannya menggunakan sensor jarak.
Pada artikel ini, kita akan membahas pembuatan Robot Obstacle Avoider
4-Wheel Drive (4WD) lengkap dengan penjelasan komponen, cara kerja,
serta analisis program Arduino Uno yang digunakan.
1.Konsep
Dasar Robot Obstacle Avoider
Robot obstacle
avoider bekerja dengan prinsip sederhana:
Sensor ultrasonik HC-SR04 mendeteksi
jarak objek di depan.
Jika ada halangan yang jaraknya kurang dari ambang
batas (misalnya < 25 cm), robot akan berhenti.
Servo menggerakkan sensor ke kiri dan kanan untuk
mengukur ruang yang lebih bebas.
Robot memilih arah dengan jarak paling besar.
Setelah menentukan arah, robot akan berbelok
kemudian melanjutkan perjalanan.
Robot ini
sangat cocok sebagai media pembelajaran elektronika, robotika dasar,
pemrograman Arduino, dan pengontrolan motor DC.
2.Komponen
yang Digunakan
Berikut
komponen utama pada proyek robot ini:
Arduino Uno sebagai otak utama pemrosesan.
Motor Driver L298N untuk mengatur putaran
empat motor DC.
Motor DC 4 Buah (4WD) untuk sistem penggerak
robot.
Sensor Ultrasonik HC-SR04 untuk mendeteksi
jarak.
Servo SG90 untuk menggerakkan sensor ke
kiri, depan, dan kanan.
Baterai 7.4V / 18650 sebagai sumber daya.
Kabel jumper, rangka robot 4WD, dan dudukan servo.
3.Penjelasan Wiring / Koneksi Komponen
a.HC-SR04 ke Arduino
trigPin → Pin 13
echoPin → Pin 12
b.Motor
Driver L298N
IN1 → Pin 6
IN2 → Pin 5
IN3 → Pin 3
IN4 → Pin 4
ENA → Pin 8 (PWM)
ENB → Pin 9 (PWM)
c.Servo
Signal → Pin 11
Vcc → 5V
GND → GND
4.Cara
Kerja Program Arduino
Program ini
ditulis untuk mengontrol seluruh sistem robot. Berikut penjelasan bagian utama:
a.Mengukur
Jarak dengan Ultrasonik
int getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
Fungsi getDistance()
mengirimkan gelombang ultrasonik dan mengukur waktu pantulnya, kemudian
dihitung menjadi jarak.
b.Fungsi
Kontrol Motor
Program
menyediakan beberapa fungsi untuk mengontrol arah gerak robot:
moveForward() → maju
moveBackward() → mundur
turnLeft() → belok kiri
turnRight() → belok kanan
stopCar() → berhenti
Semua fungsi
bekerja dengan mengatur logika HIGH/LOW pada pin motor driver L298N dan
memberikan sinyal PWM ke pin ENA & ENB untuk mengatur kecepatan.
c.Algoritma
Penghindar Halangan
Logika utama
berada di dalam fungsi loop():
Servo diarahkan ke depan (myServo.write(90)).
Robot mengukur jarak halangan di depan.
Jika jarak < 25 cm, robot berhenti.
Servo belok ke kiri → ukur jarak.
Servo belok ke kanan → ukur jarak.
Bandingkan leftDistance dan rightDistance.
Belok ke arah yang lebih aman.
Robot kembali maju.
Inilah inti
dari kecerdasan dasar robot penghindar halangan.
5.Kode
Program Lengkap
Kode berikut
adalah program robot obstacle avoider yang digunakan:
// Design Program by. Iyon Manakarra//Mekatronika Manakarra
#include<Servo.h>
// Pin Definitions
#definetrigPin13
#defineechoPin12
#defineENA8
#defineENB9
#defineIN16
#defineIN25
#defineIN33
#defineIN44
#defineservoPin11
Servo myServo;
// Variables for distance measurement
long duration;
int distance;
int rightDistance, leftDistance;
// Function to calculate distance
intgetDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
// Motor control functions
voidmoveForward(){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 250); // Adjust speed using PWM (0-255)
analogWrite(ENB, 250); // Adjust speed using PWM (0-255)
}
voidmoveBackward(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, 250); // Adjust speed using PWM
analogWrite(ENB, 250); // Adjust speed using PWM
}
voidstopCar(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
voidturnLeft(){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
//analogWrite(ENA, 150); // Adjust speed for turning
//analogWrite(ENB, 150); // Adjust speed for turning
}
voidturnRight(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
//analogWrite(ENA, 150); // Adjust speed for turning
//analogWrite(ENB, 150); // Adjust speed for turning
}
voidsetup(){
// Setup pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
// Servo setup
myServo.attach(servoPin);
myServo.write(90); // Start servo at center position
Serial.begin(9600);
}
voidloop(){
// Scan forward
myServo.write(90); // Center position (looking straight ahead)
delay(50);
int frontDistance = getDistance();
// If an obstacle is closer than 20 cm
if(frontDistance < 25){
stopCar();
delay(200); // Pause to make a decision
// Scan left side
myServo.write(0); // Turn servo to the left
delay(500);
leftDistance = getDistance();
// Scan right side
myServo.write(180); // Turn servo to the right
delay(500);
rightDistance = getDistance();
// Decide direction based on the distances
if(leftDistance > rightDistance){
turnLeft();
delay(500); // Adjust the delay to control turning duration
}else{
turnRight();
delay(500); // Adjust the delay to control turning duration
}
stopCar(); // Stop after turning
delay(200); // Brief pause before moving forward again
}else{
moveForward(); // Continue moving forward if the path is clear
}
delay(50); // Short delay before next loop iteration
}
6.Tips
Pengembangan Lebih Lanjut
Setelah robot
berjalan, Anda dapat meningkatkan performanya dengan:
Menambahkan sensor inframerah di samping untuk
navigasi lebih tajam.
Menambahkan PID untuk gerakan motor lebih stabil.
Menggunakan baterai Li-ion agar robot lebih
bertenaga.
Robot Obstacle Avoider 4WD adalah proyek yang
sangat ideal bagi siswa dan hobiis robotika. Dengan kombinasi Arduino Uno,
sensor ultrasonik, motor driver, dan algoritma sederhana, robot ini bisa
melakukan navigasi otomatis dengan cukup baik. Proyek ini tidak hanya
mengajarkan pemrograman tetapi juga konsep sensor, aktuator, dan pengendalian
motor.
8.Dokumen Proses Pembuatan
a.Link Youtube
b.Galery Design
- Komponen Robot Avoider
Komponen Robot
- Hasil Rakitan Mekanik Robot dan Kontrol Elektronika
PENANGANAN SENSOR YANG
SANGAT SENSITIF (SENSOR PIR ATAU HALL EFFECT)
a.Deskripsi:
Program ini menghitung putaran roda
menggunakan rotary encoder. Dengan mendeteksi pulsa dari encoder, Arduino dapat
menentukan kecepatan atau jarak tempuh roda berdasarkan jumlah pulsa yang
terdeteksi. Rotary encoder adalah sensor elektromekanis yang mengubah gerakan
rotasi menjadi sinyal digital. Sinyal ini dapat diolah oleh Arduino untuk
menghitung jumlah putaran roda dan menentukan arah putaran.
Dasar teori yang digunakan dalam program
ini adalah prinsip kerja rotary encoder yang menghasilkan sinyal pulsa saat
porosnya berputar. Dengan menggunakan dua jalur sinyal (A dan B), Arduino dapat
membedakan arah putaran berdasarkan urutan pulsa yang diterima. Dengan
menerapkan interupsi, sistem dapat membaca perubahan sinyal secara cepat dan
akurat tanpa harus terus-menerus memeriksa status encoder dalam loop utama.