ESP32 NeoPixel LED Strip

Dải LED NeoPixel giống như một dải LED RGB đầy màu sắc, và bạn có thể điều khiển màu sắc và độ sáng của từng LED riêng biệt. Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng ESP32 để điều khiển dải LED RGB NeoPixel. Để điều khiển tất cả các LED trên dải NeoPixel, bạn chỉ cần một chân duy nhất trên ESP32.

Phần Cứng Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Dải LED RGB NeoPixel
1×Tụ điện 1000uF
1×Điện trở 470Ω
1×Adapter nguồn 5V
1×(Tùy chọn) Jack cắm nguồn DC
1×Dây jumper
1×breadboard
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới Thiệu Về Dải LED RGB NeoPixel

Sơ Đồ Chân

Dải LED RGB NeoPixel có ba chân:

  • Chân GND: cần được kết nối với GND (0V)
  • Chân VCC: cần được kết nối với 5V từ nguồn cấp điện ngoài
  • Chân Din: là chân nhận tín hiệu điều khiển. Nó nên được kết nối với một chân GPIO của ESP32.
neopixel sơ đồ chân

Sơ Đồ Đấu Nối

ESP32 neopixel rgb LED strip sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

Cách Lập Trình Cho Dải LED RGB NeoPixel

  • Khai báo một đối tượng NeoPixel
#define PIN_NEO_PIXEL 16 // Chân ESP32 GPIO16 kết nối với NeoPixel #define NUM_PIXELS 30 // Số lượng LED (pixel) trên NeoPixel Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800);
  • Khởi tạo NeoPixel
NeoPixel.begin(); // KHỞI TẠO đối tượng dải NeoPixel (BẮT BUỘC)
  • Đặt màu cho từng LED riêng lẻ (gọi là pixel).
NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0));
  • Đặt độ sáng cho toàn bộ dải LED.
NeoPixel.setBrightness(200); // giá trị từ 0 đến 255

※ Lưu ý:

  • NeoPixel.setBrightness() được sử dụng cho tất cả pixel trên dải LED. Để đặt độ sáng cho từng pixel riêng biệt, chúng ta có thể điều chỉnh giá trị màu sắc.
  • Các giá trị được đặt bởi NeoPixel.setBrightness() và NeoPixel.setPixelColor() chỉ có hiệu lực khi NeoPixel.show() được gọi.

Code ESP32

Code sau đây thực hiện những nhiệm vụ sau:

  • Nó thay đổi tuần tự các pixel thành màu xanh lá cây, với một khoảng dừng giữa mỗi pixel.
  • Nó tắt tất cả các pixel trong khoảng thời gian hai giây.
  • Nó đồng thời đặt tất cả các pixel thành màu đỏ, duy trì trạng thái này trong 1 giây.
  • Toàn bộ quá trình này sau đó được lặp lại vô hạn.
/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-neopixel-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_NEO_PIXEL 16 // The ESP32 pin GPIO16 connected to NeoPixel #define NUM_PIXELS 30 // The number of LEDs (pixels) on NeoPixel LED strip Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800); void setup() { NeoPixel.begin(); // initialize NeoPixel strip object (REQUIRED) } void loop() { NeoPixel.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called // turn pixels to green one-by-one with delay between each pixel for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel NeoPixel.setPixelColor(pixel, NeoPixel.Color(0, 255, 0)); // it only takes effect if pixels.show() is called NeoPixel.show(); // update to the NeoPixel Led Strip delay(500); // 500ms pause between each pixel } // turn off all pixels for two seconds NeoPixel.clear(); NeoPixel.show(); // update to the NeoPixel Led Strip delay(2000); // 2 seconds off time // turn on all pixels to red at the same time for two seconds for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0)); // it only takes effect if pixels.show() is called } NeoPixel.show(); // update to the NeoPixel Led Strip delay(1000); // 1 second on time // turn off all pixels for one seconds NeoPixel.clear(); NeoPixel.show(); // update to the NeoPixel Led Strip delay(1000); // 1 second off time }

Các Bước Nhanh

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Thực hiện đấu nối như hình ảnh trên.
  • Kết nối board ESP32 với PC của bạn qua cáp micro USB
  • Mở Arduino IDE trên PC của bạn.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Nhấp vào biểu tượng Libraries trên thanh bên trái của Arduino IDE.
  • Tìm kiếm "Adafruit NeoPixel", sau đó tìm thư viện NeoPixel của Adafruit
  • Nhấp nút Install để cài đặt thư viện NeoPixel.
ESP32 neopixel thư viện
  • Sao chép code trên và mở bằng Arduino IDE
  • Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
  • Kiểm tra hiệu ứng của dải LED

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Bình Luận