Tutorial ESP32 31/55 - Proyek Strip LED dengan Penghindaran Rintangan | Kit Pembelajaran IoT ESP32 SunFounder
Dalam tutorial ini, kita akan membuat proyek menggunakan mikrokontroler ESP32 dan strip LED WS2812 yang dapat mengubah arahnya berdasarkan deteksi rintangan. Ketika strip LED bergerak maju, strip akan menampilkan warna acak, dan saat mendeteksi rintangan, strip akan beralih ke warna yang telah ditentukan dan membalikkan arah. Proyek ini menunjukkan kemampuan ESP32 yang dikombinasikan dengan sensor penghindar rintangan inframerah.
Sepanjang tutorial ini, kita akan membahas komponen perangkat keras yang diperlukan, instruksi pengkabelan, dan kode yang dibutuhkan untuk mewujudkan proyek ini. Untuk penjelasan yang lebih visual, pastikan untuk menonton video yang ditautkan di bawah ini (di video pada 00:00).
Penjelasan Perangkat Keras
Proyek ini membutuhkan beberapa komponen, termasuk mikrokontroler ESP32, strip LED WS2812, dan sensor penghindar rintangan inframerah. ESP32 adalah mikrokontroler yang kuat dengan Wi-Fi dan Bluetooth bawaan, menjadikannya sempurna untuk aplikasi IoT. Strip LED WS2812 adalah strip LED RGB yang dapat diprogram yang memungkinkan kontrol individual untuk setiap LED, memungkinkan kita untuk membuat efek pencahayaan dinamis.
Sensor penghindar rintangan inframerah bekerja dengan memancarkan cahaya inframerah dan mendeteksi pantulan dari objek di dekatnya. Ketika rintangan terdeteksi, sensor mengubah status keluarannya, memungkinkan ESP32 untuk merespons dengan mengubah perilaku strip LED.
Detail Datasheet
| Produsen | WS2812B |
|---|---|
| Nomor bagian | WS2812B |
| Tegangan logika/IO | 3,3 V (khas) |
| Tegangan suplai | 5 V (khas) |
| Arus keluaran (per saluran) | 20 mA (maks) |
| Arus puncak (per saluran) | 60 mA (maks) |
| Panduan frekuensi PWM | 400 Hz (khas) |
| Ambang logika masukan | 0,3 Vcc (tinggi), 0,1 Vcc (rendah) |
| Penurunan tegangan / RDS(on) / saturasi | 1,2 V (maks) |
| Batas termal | 85 °C (maks) |
| Kemasan | Pemasangan permukaan |
| Catatan / varian | Tersedia dalam berbagai panjang dan kepadatan |
- Pastikan strip LED diberi daya 5 V untuk kinerja optimal.
- Gunakan resistor yang sesuai untuk pin data untuk mencegah masalah integritas sinyal.
- Berhati-hatilah dengan batasan arus keluaran untuk menghindari panas berlebih.
- Dekopling catu daya dengan benar untuk mencegah lonjakan tegangan.
- Sesuaikan sensor inframerah dengan hati-hati untuk mencapai jangkauan deteksi yang diinginkan.
Instruksi Pengkabelan

Untuk menghubungkan komponen, mulailah dengan sensor penghindar rintangan inframerah. Hubungkan pin keluaran sensor ke pin 25 pada ESP32. Pin tengah harus dihubungkan ke ground, dan pin terakhir (VCC) harus dihubungkan ke sumber daya 3,3 V.
Selanjutnya, untuk strip LED WS2812, hubungkan pin data (biasanya kabel kuning) ke pin 14 pada ESP32. Kabel merah harus dihubungkan ke sumber daya 5 V, dan kabel hitam harus dihubungkan ke ground. Pastikan untuk mengamankan semua koneksi dengan benar untuk mencegah kabel longgar.
Contoh Kode & Penjelasan
Berikut adalah gambaran singkat tentang kode yang menjalankan proyek ini. Pertama, kita mendefinisikan jumlah piksel di strip LED dan pin data yang digunakan untuk komunikasi:
#define NUM_PIXELS 8
#define DATA_PIN 14
Dalam fungsi setup(), kita menginisialisasi strip LED dan sensor inframerah:
void setup() {
pixels.begin();
pinMode(AVOID_PIN, INPUT_PULLUP);
uint32_t color = pixels.Color(random(256), random(256), random(256));
pixels.fill(color);
pixels.show();
}
Dalam fungsi loop(), kita memeriksa apakah rintangan terdeteksi dan mengontrol strip LED sesuai:
if (avoid_value) {
for (int i = 0; i < NUM_PIXELS; i++) {
pixels.setPixelColor(i, color);
pixels.show();
pixels.setPixelColor(i, 0);
delay(100);
}
} else {
for (int i = NUM_PIXELS - 1; i >= 0; i--) {
pixels.setPixelColor(i, color);
pixels.show();
pixels.setPixelColor(i, 0);
delay(100);
}
}
Kode ini memungkinkan strip LED menampilkan warna acak saat bergerak maju dan mengubah arah ketika rintangan terdeteksi. Kode lengkap dimuat di bawah artikel, jadi pastikan untuk memeriksanya untuk semua detail.
Demonstrasi / Apa yang Diharapkan
Ketika pengaturan selesai dan kode diunggah, strip LED akan mulai menampilkan warna acak sambil bergerak maju. Ketika rintangan terdeteksi, strip akan beralih ke warna yang telah ditentukan (seperti hijau) dan membalikkan arah. Jika rintangan dihilangkan, strip akan melanjutkan gerakan maju dengan warna acak. Perlu diketahui bahwa jangkauan deteksi sensor inframerah dapat bervariasi berdasarkan catu daya yang digunakan (di video pada 10:30).
Stempel Waktu Video
- 00:00 Mulai
- 2:14 Pengenalan proyek
- 4:58 Penjelasan kabel
- 7:41 Menyesuaikan Sensor Penghindar Halangan
- 10:03 Penjelasan kode Arduino
- 15:40 Memilih papan ESP32 dan port COM di Arduino IDE
- 17:22 Proyek 1: Demonstrasi
- 18:17 Mengubah warna yang dikembalikan
#include <Adafruit_NeoPixel.h>
// Set the number of pixels for the running light
#define NUM_PIXELS 8
// Set the data pin for the RGB LED strip
#define DATA_PIN 14
// Initialize the RGB LED strip object
Adafruit_NeoPixel pixels(NUM_PIXELS, DATA_PIN, NEO_GRB + NEO_KHZ800);
// Initialize the avoid sensor
#define AVOID_PIN 25
void setup() {
// Initialize the RGB LED strip
pixels.begin();
// Initialize the avoid sensor
pinMode(AVOID_PIN, INPUT_PULLUP);
// Set the initial LED color
uint32_t color = pixels.Color(random(256), random(256), random(256));
pixels.fill(color);
pixels.show();
}
void loop() {
// Read the input from the infrared sensor
bool avoid_value = digitalRead(AVOID_PIN);
// Generate a random color for the current pixel
uint32_t color = pixels.Color(random(256), random(256), random(256));
// If no obstacle is detected
if (avoid_value) {
for (int i = 0; i < NUM_PIXELS; i++) {
// Turn on the current pixel with the random color
pixels.setPixelColor(i, color);
// Update the RGB LED strip display
pixels.show();
// Turn off the current pixel
pixels.setPixelColor(i, 0);
delay(100);
}
}
// If detects an obstacle, change the direction of the LED strip
else {
for (int i = NUM_PIXELS - 1; i >= 0; i--) {
pixels.setPixelColor(i, color);
pixels.show();
pixels.setPixelColor(i, 0);
delay(100);
}
}
}
Common Course Links
Common Course Files
Sumber daya & referensi
-
DokumentasiESP32 Tutorial 31/55 - SunFounder doc page for flowing lightdocs.sunfounder.com
Berkas📁
Tidak ada file tersedia.