Raspberry Pi Dải LED NeoPixel

Dải LED RGB NeoPixel là một tập hợp các LED có thể điều chỉnh màu sắc và độ sáng một cách riêng lẻ. Hướng dẫn này sẽ chỉ bạn cách sử dụng Raspberry Pi để điều khiển dải LED RGB NeoPixel. Cụ thể, chúng ta sẽ học:

Chúng ta chỉ cần sử dụng một chân digital của Raspberry Pi để điều khiển tất cả các LED trên dải.

Linh Kiện Cần Thiết

1×Raspberry Pi 5
1×Dải LED RGB NeoPixel
1×Tụ điện 1000uF
1×Điện trở 470Ω
1×Bộ Nguồn 5V
1×Jack Nguồn DC
1×Dây Jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi
1×(Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit
1×(Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following kits:

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

Về Dải LED RGB NeoPixel

Sơ Đồ Chân Dải LED NeoPixel

Dải LED NeoPixel có ba chân cần được kết nối:

  • Chân GND: Chân này phải được kết nối với GND (0V)
  • Chân VCC: Chân này phải được kết nối với nguồn 5V từ bộ nguồn ngoài
  • Chân Din: Đây là chân nhận tín hiệu điều khiển và nên được kết nối với một chân của Raspberry Pi.
neopixel sơ đồ chân

※ Lưu ý:

Thứ tự các chân có thể khác nhau giữa các nhà sản xuất. BẮT BUỘC phải sử dụng theo nhãn được in trên Dải LED.

Sơ Đồ Kết Nối

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

This image is created using Fritzing. Click to enlarge image

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

  • Tạo một đối tượng NeoPixel.
import time from rpi_ws281x import Adafruit_NeoPixel, Color PIN_NEO_PIXEL = 18 # Chân GPIO kết nối với NeoPixel NUM_PIXELS = 30 # Số lượng LED (pixel) trên NeoPixel NeoPixel = Adafruit_NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL) # Tạo đối tượng NeoPixel
  • Khởi tạo thư viện cho NeoPixel.
NeoPixel.begin() # Khởi tạo đối tượng dải NeoPixel (BẮT BUỘC)
  • Chỉ định màu sắc của từng LED riêng lẻ (được gọi là pixel).
NeoPixel.setPixelColor(pixel, Color(0, 255, 0))
  • Điều chỉnh độ sáng của toàn bộ dải.
NeoPixel.setBrightness(100); # giá trị từ 0 đến 255

※ Lưu ý:

  • NeoPixel.setBrightness() được sử dụng để điều chỉnh độ sáng của tất cả pixel trên dải LED. Để đặt độ sáng cho từng pixel riêng lẻ, chúng ta có thể điều chỉnh giá trị màu (R,G, B) với cùng tỷ lệ.
  • Các giá trị được đặt bởi NeoPixel.setBrightness()NeoPixel.setPixelColor() sẽ chỉ được áp dụng khi NeoPixel.show() được thực thi.

Code Raspberry Pi

Code dưới đây:

  • Thay đổi màu từng pixel thành xanh lá cây theo thứ tự, với khoảng nghỉ giữa mỗi cái
  • Tắt tất cả pixel trong hai giây
  • Thắp sáng tất cả pixel màu đỏ cùng lúc trong hai giây
  • Lặp lại chu kỳ vô hạn

Các Bước Thực Hiện

  • Đảm bảo bạn đã cài đặt Raspbian hoặc hệ điều hành tương thích với Raspberry Pi khác trên Pi của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt một số thư viện.
  • Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, xem Raspberry Pi - Cài Đặt Phần Mềm
  • Kết nối PC của bạn với Raspberry Pi qua SSH bằng SSH client tích hợp sẵn trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
  • Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, hãy cài đặt bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Trước khi sử dụng NeoPixel với Raspberry Pi, chúng ta cần kích hoạt giao tiếp SPI trên Raspberry Pi. Kích hoạt giao tiếp SPI trên Raspberry Pi bằng cách làm theo hướng dẫn tại Raspberry Pi - cách kích hoạt giao tiếp SPI
  • Cài đặt thư viện NeoPixel bằng cách chạy lệnh sau:
sudo pip3 install rpi_ws281x
  • Tạo một file script Python NeoPixel.py và thêm code sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi 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/raspberry-pi/raspberry-pi-neopixel-led-strip import time from rpi_ws281x import Adafruit_NeoPixel, Color # NeoPixel configuration PIN_NEO_PIXEL = 18 # The GPIO pin that connects to NeoPixel NUM_PIXELS = 30 # The number of LEDs (pixels) on NeoPixel DELAY_INTERVAL = 50 # Delay between each pixel change in milliseconds # Create NeoPixel object NeoPixel = Adafruit_NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL) NeoPixel.begin() # Initialize NeoPixel strip object (REQUIRED) try: while True: # Turn on all pixels to green for pixel in range(NUM_PIXELS): NeoPixel.setPixelColor(pixel, Color(0, 255, 0)) NeoPixel.show() time.sleep(DELAY_INTERVAL / 1000.0) # Turn off all pixels NeoPixel.clear() NeoPixel.show() time.sleep(2) # Turn on all pixels to red for pixel in range(NUM_PIXELS): NeoPixel.setPixelColor(pixel, Color(255, 0, 0)) NeoPixel.show() time.sleep(DELAY_INTERVAL / 1000.0) # Turn off all pixels NeoPixel.clear() NeoPixel.show() time.sleep(2) except KeyboardInterrupt: # Clean up code before exiting the script NeoPixel.clear() NeoPixel.show()
  • Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
python3 NeoPixel.py
  • Kiểm tra hiệu ứng LED.

Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.

※ Lưu ý:

Đối với bất kỳ hiệu ứng LED phức tạp nào, chúng tôi cung cấp dịch vụ lập trình có trả phí

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ài hướng dẫn liên quan