"Fiat Lux - Hãy có ánh sáng": Giới thiệu về Neopixel WS2812

Mô tả dự án: 

Đây là chuỗi bài viết về 1 loại bóng LED RGB (WS2812) mà tui chưa thấy ai viết trên cộng đồng. Hôm nay, bạn sẽ biết được vì sao người ta lại có thể điều khiển nhiều LED RGB thế trong khi nó đến 3 chân xung.

Dẫn nhập

Thưở hồng hoang thế giới Arduino của bạn còn trống rỗng, chưa có hình dạng, bóng tối bao trùm vực thẳm. Bạn cắm bóng LED, nạp code BLINK huyền thoại và phán "Hãy có ánh sáng!". Thế là có ánh sáng. Bạn thấy thế là tốt đẹp. Qua một buổi chiều và một buổi sáng. Ngày đầu tiên trong thế giới Arduino của bạn là thế.

Bạn thấy một bóng LED là rất nhàm chán, và chúng phải sinh sôi nảy nở hơn. Bạn phán "Hãy có PWM!". Bạn cắm thêm nhiều bóng, chia xung và ra lệnh cho chúng nhấp nháy sáng tối theo ý bạn. Thế giới của bạn đã linh động và hoạt bát lên nhiều. Bạn cảm thấy tốt đẹp sau một buổi chiều và một buổi sáng. Đó là ngày thứ hai.

Khi số lượng bóng LED đã đầy dẫy lúc nhúc cho Arduino của bạn, bạn bắt đầu nghĩ đến phương án khác. Bạn phán "Hãy có mạch IC 595!". Thế là ma trận LED 64 bóng ra đời. Bạn thấy thế là tốt đẹp. Qua một buổi chiều và một buổi sáng. Đó là ngày thứ ba.

Bạn thấy bóng LED đơn sắc là chưa tốt nên phán: "Hãy có LED RGB." Thế là có LED RGB chung cực âm và cực dương tùy theo loại. Thế giới của bạn bây giờ đã 3 màu nhấp nháy. Bạn thấy hài lòng với công việc sáng tạo của mình. Đó là ngày thứ tư.

Ngày thứ năm, khi mạch của bạn đã lúc nhúc LED 3 màu trên Arduino, bạn bắt đầu nghĩ đến phương án điều khiển chúng. Ban đầu bạn nghĩ đến mạch IC 595, nhưng chẳng lẽ lại phải dùng đến 3 ICs vì mỗi bóng RGB có đến 3 chân, mỗi chân cho 1 màu. Chẳng lẽ sự nghiệp sáng thế nhấp nháy LED của bạn đến đây là kết thúc? broken heart

Câu thần chú trong ngày thứ năm của bạn là "Hãy có WS2812!"

WS2812 là gì vại? Ăn được hem?

WS2812 thực ra là 1 mạch tích hợp 3 bóng LED RGB và 1 IC điều khiển. Điều đặc biệt là bạn có thể nối tiếp nhiều bóng với nhau nhưng vẫn có thể điều khiển tới 144 bóng riêng biệt mà chỉ cần dùng 1 pin Arduino. Dưới đây là một vài thông số cơ bản của loại LED này (trích từ https://www.sparkfun.com/products/11821)

  • Góc nhìn: 120 degrees
  • Red: (620-630nm) @ 550-700mcd
  • Green: (515-530nm) @ 1100-1400mcd
  • Blue: (465-475nm) @ 200-400mcd

Một số ứng dụng

Vì nối tiếp được nên WS2812 có khả năng thiên biến vạn hóa rất ảo diệu. Dưới đây là một vài ví dụ: (trích từ https://www.adafruit.com/category/168)

 

Ưu và nhược điểm

Nhưng WS2812 cũng là 1 loài thụ tạo nên phải chịu số phận "nhân vô thập toàn" với những ưu và khuyết điểm như sau:

Ưu điểm

  • Tiết kiệm chân Arduino: bạn có thể dùng 1 pin duy nhất nhưng vẫn có thể điều chỉnh màu và độ sáng của từng LED riêng biệt.
  • Không phải lo về việc đây là bóng common anode hay cathode.
  • Nối tiếp các LED với nhau được (tới 144 bóng).
  • Có sẵn thư viện Arduino.

Nhược điểm

  • Là mạch IC tích hợp nên giá còn hơi cao (18USD) cho 100 bóng. Hơn nữa nếu bạn nhìn kỹ vào hình đầu bài, bạn sẽ thấy có các sợi dây màu vàng dài dài nối giữa các phần vi mạch với nhau. Vàng thật đó các bạn ạ! wink
  • Phải dùng với driver truyền tín hiệu. Cắm trực tiếp vào nguồn sẽ không sáng được.
  • Không phải là LED tròn nên giới hạn ứng dụng trong 2D.

Bài tới tui sẽ hướng dẫn phần cứng và phần mềm cho code BLINK thần thánh nha! heart

lên
23 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 
Các dự án được truyền cảm hứng

Cách dùng Module L298N để điều khiển 4 động cơ DC

Trên cộng đồng đã có nhiều bài viết về động cơ, nhưng chưa có bài viết nào nói về cách để điều khiển cùng 1 lúc 4 động cơ mà chỉ dùng 1 module L298N. Nên hôm nay mình sẽ chia sẻ về cách để điều khiển cùng lúc 4 động cơ trên 1 module L298N.

lên
24 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Raspberry Pi Thiên Lý Nhãn (Phần 3): Khóa thông minh nhận dạng khuôn mặt với Raspberry Pi và OpenCV

Trong bài trước tui đã giới thiệu về việc nhận diện khuôn mặt với Raspberry Pi và webcam. Tuy nhiên bài chỉ dừng lại ở việc Raspberry Pi có thể nhận diện được khuôn mặt của bất kỳ ai đứng trước webcam mà thôi. Bài toán đặt ra là làm thế nào để Raspberry Pi nhận được khuôn mặt của chính bạn? Đây là một bài toán khó và thú vị. Khó là vì chúng ta cần thuật toán và khả năng xử lí hình ảnh mạnh. Thú vị là do ta có thể "chế cháo" kết hợp với các hệ thống bảo mật khác như vân tay, mật khẩu để tăng tính an ninh cho đề án của bạn. Vì độ phức tạp của đề án này nên tui sẽ chia ra làm 2 phần.

  • Phần đầu tiên là "phần mềm": chúng ta sẽ ghi lại khoảng 200 tấm hình webcam với khuôn mặt của bạn và huấn luyện máy tính với thuật toán chính diện (eigenfaces) của OpenCV. Do tài nguyên của Pi hạn hẹp nên bạn cần chạy phần này trên máy tính của mình. 
  • Phần tiếp theo là "phần cứng": ta nối Pi với relay và cho webcam chụp ảnh. Nếu Pi nhận diện được chính khuôn mặt của bạn thì sẽ kích relay.

Lưu ý là các bạn phải tải OpenCV về trên cả Pi và máy tính. Các bạn vào đây để download code và các tập tin cần thiết nữa: https://github.com/johnkimdinh/Facial-recognition-Raspberry-Pi-OpenCV

lên
3 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Trí thông mình nhân tạo với Watson IBM và Raspberry Pi (Phần 2): Nhận dạng khuôn mặt, giới tính và tuổi

Bài trước tui đã hướng dẫn các bạn làm quen với Watson IBM trên Raspberry Pi. Bây giờ chúng ta sẽ quay trở lại với bài toán nhận diện khuôn mặt. Trong bài khóa "thông minh" với OpenCV, dữ liệu nhận dạng khuôn mặt được đưa ra bởi một thuật toán "tĩnh" OpenCV trên laptop của các bạn và sau đó kết quả được chép thủ công vào Raspberry Pi. Raspberry chỉ việc dựa vào kết quả training và đưa ra kết quả nhận diện khuôn mặt. Đây chưa phải là giải pháp tối ưu vì giả sử bạn muốn thay đổi thuật toán mới hoặc train cho tốt hơn thì không thể thực hiện trên Pi được. Thay vậy, bạn có thể dùng dịch vụ cloud của Watson cho việc training và chỉ việc up hình lên để Watson nhận diện. Kết quả sẽ được trả về qua json với lượng thông tin phong phú hơn nhiều. 

lên
6 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: