Tutorial ESP32 12/55 - Proyek 4 Strip RGB WS2812 dengan kit Pembelajaran IoT ESP32 dari SunFounder
Dalam tutorial ini, kita akan mempelajari cara mengontrol strip LED WS2812 menggunakan mikrokontroler ESP32. Proyek ini memungkinkan Anda untuk membuat berbagai macam warna dan mengontrol setiap LED secara individual, memberikan cara yang menyenangkan dan menarik secara visual untuk belajar tentang pemrograman dan elektronika. Di akhir tutorial ini, Anda akan memiliki pengaturan yang berfungsi penuh yang dapat mengubah warna dan pola secara dinamis.
Dengan menggunakan mikrokontroler ESP32 dari SunFounder, yang memiliki kemampuan Wi-Fi dan Bluetooth bawaan, kita dapat dengan mudah menghubungkan dan mengontrol strip LED RGB WS2812. Fleksibilitas strip LED ini memungkinkan aplikasi kreatif, baik untuk pencahayaan dekoratif maupun proyek pendidikan. Untuk pemahaman yang lebih baik tentang langkah-langkah yang terlibat, Anda dapat merujuk ke video di (dalam video pada 00:00).
Penjelasan Perangkat Keras
Komponen utama untuk proyek ini termasuk mikrokontroler ESP32 dan strip LED WS2812. ESP32 adalah mikrokontroler yang kuat yang dapat melakukan tugas-tugas yang mirip dengan Arduino, tetapi dengan opsi konektivitas tambahan. Ini memiliki serangkaian fitur yang kaya yang memungkinkannya terhubung ke cloud, memungkinkan kontrol jarak jauh dan pencatatan data.
Strip LED WS2812 terdiri dari LED RGB yang dapat dialamatkan secara individual, yang berarti setiap LED dapat dikontrol untuk menampilkan warna yang berbeda. Strip ini beroperasi pada protokol kabel tunggal, memungkinkan banyak LED dirangkai bersama tanpa kehilangan kualitas sinyal. Setiap LED berisi driver bawaan yang mengambil sinyal input dan memperkuatnya untuk LED berikutnya dalam rantai.
Detail Datasheet
| Pabrikan | Worldsemi |
|---|---|
| Nomor bagian | WS2812 |
| Tegangan logika/IO | 3,5–5,3 V |
| Tegangan suplai | 5 V |
| Arus keluaran (per saluran) | 20 mA maks |
| Arus puncak (per saluran) | 60 mA maks |
| Panduan frekuensi PWM | 400 Hz |
| Ambang batas logika input | 0,3 x VDD hingga 0,7 x VDD |
| Penurunan tegangan / RDS(on) / saturasi | 0,5 V maks |
| Batas termal | -25 hingga 80 °C |
| Kemasan | 5050 |
| Catatan / varian | Dapat dirangkai untuk strip yang lebih panjang |
- Pastikan catu daya yang tepat (5 V) untuk menghindari kerusakan LED.
- Gunakan kapasitor (100 µF) di terminal catu daya untuk meratakan lonjakan tegangan.
- Jaga kabel data tetap pendek untuk mengurangi degradasi sinyal.
- Berhati-hatilah dengan suhu LED; pastikan pembuangan panas yang tepat.
- Perhatikan polaritas yang benar saat menghubungkan daya dan ground.
- Gunakan resistor pull-up pada jalur data jika menggunakan strip yang panjang.
Instruksi Pengkabelan

Untuk menghubungkan strip LED WS2812 ke ESP32, mulailah dengan menghubungkan catu daya. Kabel +5V dari strip LED harus dihubungkan ke pin 5V pada ESP32, dan kabel ground (GND) harus dihubungkan ke salah satu pin GND pada ESP32.
Selanjutnya, hubungkan kabel input data dari strip LED ke pin 14 pada ESP32. Pastikan koneksi aman untuk memastikan transmisi data yang tepat. Jika Anda menggunakan beberapa strip atau jarak yang lebih jauh, pertimbangkan untuk menggunakan level shifter untuk memastikan integritas sinyal. Pengaturan ini akan memungkinkan Anda untuk mengontrol strip LED secara langsung dari ESP32.
Contoh Kode & Penjelasan
Kode ini menggunakan pustaka Adafruit NeoPixel untuk mengontrol strip LED WS2812. Ini dimulai dengan menginisialisasi strip LED dan mengatur warna awal menjadi hitam. Pengidentifikasi kunci dalam kode termasuk LED_PIN, yang mendefinisikan pin yang terhubung ke jalur data strip LED, dan NUM_LEDS, yang menentukan jumlah LED dalam strip.
#include // Sertakan pustaka Adafruit NeoPixel
#define LED_PIN 14 // Strip LED NeoPixel
#define NUM_LEDS 8 // Jumlah LED
Dalam fungsi setup, strip diinisialisasi menggunakan strip.begin(), dan warna awal diatur ke hitam dengan strip.show(). Ini menyiapkan strip untuk perubahan warna saat program berjalan.
void setup() {
strip.begin(); // Inisialisasi strip NeoPixel
strip.show(); // Atur warna awal menjadi hitam
}
Loop utama program terdiri dari dua loop for. Loop pertama menyalakan setiap LED satu per satu dengan mengatur warnanya dan memperbarui strip. Loop kedua mematikan setiap LED dengan cara yang sama. Ini menciptakan animasi cahaya yang sederhana namun efektif.
void loop() {
// Nyalakan LED satu per satu
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Atur warna LED ke-i menjadi merah
strip.show(); // Perbarui strip LED dengan warna baru
delay(100); // Tunggu 100 milidetik
}
// Matikan LED satu per satu
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Atur warna LED ke-i menjadi hitam (matikan)
strip.show(); // Perbarui strip LED dengan warna baru
delay(100); // Tunggu 100 milidetik
}
}
Tonton pemuatan kode lengkap di bawah artikel untuk detail lebih lanjut tentang cara menerapkan efek warna dan animasi yang berbeda.
Demonstrasi / Apa yang Diharapkan
Setelah Anda menyelesaikan pengkabelan dan mengunggah kode, Anda akan melihat LED pada strip menyala satu per satu dengan warna yang ditentukan, diikuti dengan matinya LED dalam urutan yang sama. Ini menciptakan efek "lampu berjalan". Jika LED tidak menyala seperti yang diharapkan, periksa kembali koneksi pengkabelan Anda dan pastikan catu daya mencukupi. Juga, verifikasi bahwa pin yang benar telah didefinisikan dalam kode (di video pada menit 12:30).
Stempel Waktu Video
- 00:00 Mulai
- 1:40 Pengenalan LED WS2812
- 7:25 Halaman dokumentasi proyek
- 9:16 Penjelasan Warna RGB
- 13:16 Penjelasan pengkabelan
- 13:48 Penjelasan Kode Arduino-1
- 19:03 Memilih papan ESP32 dan Port di Arduino IDE
- 20:45 Demo Kode-1
- 22:00 Mengontrol LED individual
- 24:16 LED lampu berjalan
- 25:41 Lampu bolak-balik
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library
#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs
// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // Initialize the NeoPixel strip
strip.show(); // Set initial color to black
}
void loop() {
// Turn on LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
// Turn off LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
}
Common Course Links
Common Course Files
Hal-hal yang mungkin Anda butuhkan
-
Amazon
-
eBay
-
AliExpressPurchase WS2812 LED stripe from AliExpresss.click.aliexpress.com
-
AliExpressPurchase WS2812 LED stripe from AliExpress-2s.click.aliexpress.com
-
BanggoodPurchase WS2812 LED stripe from Banggoodbanggood.com
Sumber daya & referensi
Belum ada sumber daya.
Berkas📁
Tidak ada file tersedia.