Trong dự án này, chúng tôi sẽ phát hiện màu sắc bằng cách sử dụng Mô-đun cảm biến màu TCS3200 với Raspberry Pi. Ở đây, chúng tôi đã sử dụng mã Python cho Raspberry Pi để phát hiện màu sắc bằng cảm biến TCS3200. Để chứng minh khả năng phát hiện màu sắc, chúng tôi đã sử dụng đèn LED RGB, đèn LED RGB này sẽ phát sáng cùng màu, trong đó đối tượng được hiển thị gần cảm biến. Hiện tại, chúng tôi đã lập trình Raspberry Pi để chỉ phát hiện các màu Đỏ, Xanh lục và xanh lam. Nhưng bạn có thể lập trình nó để phát hiện bất kỳ màu nào sau khi nhận các giá trị RGB, vì mọi màu đều được tạo thành từ các thành phần RGB này. Kiểm tra Video demo ở cuối.
Trước đây, chúng tôi đã đọc và hiển thị các giá trị RGB của các màu bằng cách sử dụng cùng một TCS3200 với Arduino. Trước khi đi xa hơn, hãy tìm hiểu về Cảm biến màu TCS3200.
Cảm biến màu TCS3200:
TCS3200 là Bộ cảm biến màu có thể phát hiện bất kỳ số lượng màu nào với lập trình phù hợp. TCS3200 chứa các mảng RGB (Đỏ xanh lục). Như trong hình ở cấp độ hiển vi, người ta có thể nhìn thấy các hộp vuông bên trong mắt trên cảm biến. Các hộp vuông này là các mảng của ma trận RGB. Mỗi hộp này chứa ba cảm biến để nhận biết cường độ ánh sáng Đỏ, Xanh lục và Xanh lam.
Vì vậy, chúng ta có các mảng Red, Blue và Green trên cùng một lớp. Vì vậy, trong khi phát hiện màu, chúng ta không thể phát hiện đồng thời cả ba yếu tố. Mỗi mảng cảm biến này phải được chọn riêng rẽ lần lượt để phát hiện màu sắc. Mô-đun có thể được lập trình để cảm nhận màu cụ thể và rời khỏi các màu khác. Nó chứa các chân cho mục đích lựa chọn đó, điều này sẽ được giải thích ở phần sau. Có chế độ thứ tư không phải là chế độ lọc; không có chế độ lọc, cảm biến phát hiện ánh sáng trắng.
Chúng tôi sẽ kết nối cảm biến này với Raspberry Pi và sẽ lập trình Raspberry Pi để cung cấp phản hồi thích hợp tùy thuộc vào màu sắc.
Các thành phần bắt buộc:
Ở đây chúng tôi đang sử dụng Raspberry Pi 2 Model B với Hệ điều hành Raspbian Jessie. Tất cả các yêu cầu cơ bản về Phần cứng và Phần mềm đã được thảo luận trước đây, bạn có thể tra cứu nó trong phần Giới thiệu Raspberry Pi và Nhấp nháy đèn LED Raspberry PI để bắt đầu, ngoài những điều chúng tôi cần:
- Raspberry Pi với hệ điều hành được cài đặt sẵn
- Cảm biến màu TCS3200
- Chip đếm CD4040
- LED RGB
- Điện trở 1KΩ (3 miếng)
- Tụ điện 1000uF
Sơ đồ mạch và kết nối:
Các kết nối được thực hiện để kết nối Cảm biến màu với Raspberry Pi được đưa ra trong bảng dưới đây:
Chân cảm biến |
Raspberry Pi Pins |
Vcc |
+ 3,3v |
GND |
đất |
S0 |
+ 3,3v |
S1 |
+ 3,3v |
S2 |
GPIO6 của PI |
S3 |
GPIO5 của PI |
OE |
GPIO22 của PI |
NGOÀI |
CLK của CD4040 |
Các kết nối cho bộ đếm CD4040 với Raspberry Pi được đưa ra trong bảng dưới đây:
Ghim CD4040 |
Raspberry Pi Pins |
Vcc16 |
+ 3,3v |
Gnd8 |
gnd |
Clk10 |
NGOÀI cảm biến |
Đặt lại11 |
GPIO26 của PI |
Q0 |
GPIO21 của PI |
Q1 |
GPIO20 của PI |
Quý 2 |
GPIO16 của PI |
Q3 |
GPIO12 của PI |
Q4 |
GPIO25 của PI |
Q5 |
GPIO24 của PI |
Q6 |
GPIO23 của PI |
Q7 |
GPIO18 của PI |
Q8 |
Không có kết nối |
Q9 |
Không có kết nối |
Q10 |
Không có kết nối |
Q11 |
Không có kết nối |
Dưới đây là sơ đồ mạch đầy đủ của Cảm biến màu giao thoa với Raspberry Pi:
Giải thích làm việc:
Mỗi màu được tạo thành từ ba màu: Đỏ, Xanh lục và Xanh lam (RGB). Và nếu chúng ta biết cường độ của RGB trong bất kỳ màu nào, thì chúng ta có thể phát hiện ra màu đó. Trước đây chúng tôi đã đọc các giá trị RGB này bằng Arduino.
Sử dụng Cảm biến màu TCS3200, chúng ta không thể phát hiện ánh sáng Đỏ, Xanh lục và Xanh lam cùng một lúc nên chúng ta cần kiểm tra từng ánh sáng một. Màu cần được cảm nhận bởi Cảm biến màu được chọn bởi hai chân S2 và S3. Với hai chân này, chúng ta có thể cho cảm biến biết cường độ ánh sáng màu cần đo.
Giả sử nếu chúng ta cần cảm nhận cường độ màu Đỏ thì chúng ta cần đặt cả hai chân thành LOW. Sau khi đo được ánh sáng ĐỎ, chúng ta sẽ đặt S2 LOW và S3 HIGH để đo ánh sáng xanh. Bằng cách thay đổi tuần tự logic của S2 và S3, chúng ta có thể đo cường độ ánh sáng Đỏ, Xanh lam và Xanh lục, theo bảng dưới đây:
S2 |
S3 |
Loại điốt quang |
Thấp |
Thấp |
Đỏ |
Thấp |
Cao |
Màu xanh da trời |
Cao |
Thấp |
Không có bộ lọc (màu trắng) |
Cao |
Cao |
màu xanh lá |
Khi cảm biến phát hiện cường độ của các thành phần RGB, giá trị được gửi đến hệ thống điều khiển bên trong mô-đun như thể hiện trong hình bên dưới. Cường độ ánh sáng được đo bằng mảng được gửi đến bộ chuyển đổi Dòng điện sang Tần số bên trong mô-đun. Bộ biến tần tạo ra một sóng vuông có tần số tỷ lệ thuận với giá trị được gửi bởi mảng. Với giá trị cao hơn từ ARRAY, bộ chuyển đổi Dòng điện sang Tần số tạo ra sóng vuông có tần số cao hơn.
Tần số tín hiệu đầu ra của mô-đun cảm biến màu có thể được điều chỉnh thành bốn mức. Các mức này được chọn bằng cách sử dụng S0 và S1 của mô-đun cảm biến như thể hiện trong hình dưới đây.
S0 |
S1 |
Tỷ lệ tần số đầu ra (f0) |
L |
L |
Tắt nguồn |
L |
H |
2% |
H |
L |
20% |
H |
H |
100% |
Tính năng này rất hữu ích khi chúng tôi đang giao tiếp mô-đun này với hệ thống với xung nhịp thấp. Với Raspberry Pi, chúng tôi sẽ chọn 100%. Hãy nhớ ở đây, dưới bóng râm, Mô-đun cảm biến màu tạo ra đầu ra sóng vuông có tần số tối đa là 2500Hz (tỷ lệ 100%) cho mỗi màu.
Mặc dù mô-đun cung cấp sóng vuông đầu ra có tần số tỷ lệ thuận với cường độ ánh sáng rơi trên bề mặt của nó, không có cách nào dễ dàng để tính cường độ ánh sáng của từng màu bằng mô-đun này. Tuy nhiên, chúng ta có thể biết cường độ ánh sáng đang tăng hay giảm đối với từng màu. Ngoài ra, chúng ta có thể tính toán và so sánh các giá trị Đỏ, Xanh lá cây, Xanh lam để phát hiện màu của ánh sáng hoặc màu của đối tượng được cài đặt trước trên bề mặt của mô-đun. Vì vậy, đây là mô-đun Cảm biến màu hơn là mô-đun Cảm biến cường độ ánh sáng.
Bây giờ chúng tôi sẽ cấp đầu ra sóng Vuông này cho Raspberry Pi nhưng chúng tôi không thể cung cấp trực tiếp cho PI, vì Raspberry Pi không có bất kỳ bộ đếm bên trong nào. Vì vậy, đầu tiên chúng tôi sẽ cung cấp đầu ra này cho Bộ đếm nhị phân CD4040 và chúng tôi sẽ lập trình Raspberry Pi để lấy giá trị tần số từ bộ đếm theo khoảng thời gian định kỳ là 100msec.
Vì vậy, PI đọc giá trị tối đa là 2500/10 = 250 cho mỗi màu ĐỎ, XANH LÁ và XANH LÁ. Chúng tôi cũng đã lập trình Raspberry Pi để in các giá trị này đại diện cho cường độ ánh sáng trên màn hình như hình dưới đây. Các giá trị được trừ khỏi các giá trị mặc định để đạt đến 0. Điều này có ích trong khi quyết định màu sắc.
Ở đây các giá trị mặc định là giá trị của RGB, được thực hiện mà không cần đặt bất kỳ đối tượng nào trước cảm biến. Nó phụ thuộc vào điều kiện ánh sáng xung quanh và những giá trị này có thể khác nhau tùy theo môi trường xung quanh. Về cơ bản, chúng tôi đang hiệu chỉnh cảm biến cho các bài đọc tiêu chuẩn. Vì vậy, trước tiên hãy chạy chương trình mà không đặt bất kỳ đối tượng nào và ghi lại các bài đọc. Các giá trị này sẽ không gần bằng 0 vì sẽ luôn có một số ánh sáng chiếu vào cảm biến cho dù bạn đặt nó ở đâu. Sau đó, trừ các số đọc đó với các số đọc mà chúng ta sẽ nhận được sau khi đặt một đối tượng để kiểm tra. Bằng cách này, chúng ta có thể có được các bài đọc chuẩn.
Raspberry Pi cũng được lập trình để so sánh các giá trị R, G và B nhằm xác định màu sắc của vật thể đặt gần cảm biến. Kết quả này được hiển thị bằng đèn LED RGB phát sáng kết nối với Raspberry Pi.
Tóm lại,
1. Mô-đun phát hiện ánh sáng phản xạ bởi đối tượng đặt gần bề mặt.
2. Mô-đun cảm biến màu cung cấp sóng đầu ra cho R hoặc G hoặc B, được chọn tuần tự bởi Raspberry Pi thông qua các Chân S2 và S3.
3. CD4040 Counter lấy sóng và đo giá trị tần số.
4. PI lấy giá trị tần số từ bộ đếm cho mỗi màu trong mỗi 100ms. Sau khi lấy giá trị mỗi lần PI đặt lại bộ đếm để phát hiện giá trị tiếp theo.
5. Raspberry Pi in các giá trị này trên màn hình và so sánh các giá trị này để phát hiện màu đối tượng và cuối cùng phát sáng đèn LED RGB với màu thích hợp tùy thuộc vào màu của đối tượng.
Chúng tôi đã làm theo trình tự trên trong Mã Python của chúng tôi. Dưới đây là đầy đủ chương trình kèm theo Video minh họa.
Ở đây Raspberry Pi được lập trình để chỉ phát hiện ba màu, bạn có thể ghép các giá trị R, G và B cho phù hợp để phát hiện thêm màu theo ý thích của mình.