U ovom ćemo projektu Otkriti boje pomoću TCS3200 senzorskog modula u boji s Raspberry Pi. Ovdje smo koristili Python kod za Raspberry Pi za otkrivanje boja pomoću senzora TCS3200. Da bismo demonstrirali detekciju boja, koristili smo RGB LED, ovaj RGB LED će svijetliti u istoj boji od koje je objekt prikazan u blizini senzora. Trenutno smo programirali Raspberry Pi da otkriva samo crvenu, zelenu i plavu boju. Ali možete ga programirati tako da otkrije bilo koju boju nakon dobivanja RGB vrijednosti, jer se svaka boja sastoji od tih RGB komponenata. Provjerite demo video na kraju.
Prethodno smo pročitali i prikazali RGB vrijednosti boja koristeći isti TCS3200 s Arduinom. Prije nego što nastavite, obavijestite nas o TCS3200 senzoru boje.
TCS3200 senzor u boji:
TCS3200 je senzor za boje koji može prepoznati bilo koji broj boja pravim programiranjem. TCS3200 sadrži RGB (crveno zeleno plave) nizove. Kao što je prikazano na slici na mikroskopskoj razini, na senzoru se mogu vidjeti četvrtaste kutije unutar oka. Ovi su kvadratni okviri nizovi RGB matrice. Svaka od ovih kutija sadrži tri senzora za prepoznavanje intenziteta crvene, zelene i plave svjetlosti.
Dakle, imamo crveni, plavi i zeleni niz na istom sloju. Dakle, dok otkrivamo boju, ne možemo istovremeno otkriti sva tri elementa. Svaki od ovih polja senzora treba odabrati zasebno jedan za drugim kako bi se detektirala boja. Modul se može programirati tako da prepozna određenu boju i napusti ostale. Sadrži pribadače za tu svrhu odabira, što je kasnije objašnjeno. Postoji četvrti način koji nije način filtriranja; bez načina filtriranja senzor detektira bijelu svjetlost.

Ovaj ćemo senzor spojiti na Raspberry Pi i programirati ćemo Raspberry Pi da pruži odgovarajući odgovor ovisno o boji.
Potrebne komponente:
Ovdje koristimo Raspberry Pi 2 Model B s Raspbian Jessie OS. Svi osnovni hardverski i softverski zahtjevi su prethodno raspravljeni, možete ih potražiti u Uvodu Raspberry Pi i Trepćući LED Raspberry PI za početak, osim onoga što nam treba:
- Raspberry Pi s unaprijed instaliranim OS-om
- TCS3200 senzor u boji
- CD4040 brojač čip
- RGB LED
- Otpor 1KΩ (3 komada)
- Kondenzator od 1000uF
Kružni dijagram i veze:
Veze koje se rade za spajanje senzora boje s Raspberry Pi dane su u donjoj tablici:
|
Osovinice senzora |
Raspberry Pi pribadače |
|
Vcc |
+ 3,3 v |
|
GND |
tlo |
|
S0 |
+ 3,3 v |
|
S1 |
+ 3,3 v |
|
S2 |
GPIO6 od PI |
|
S3 |
GPIO5 od PI |
|
OE |
GPIO22 od PI |
|
VANJ |
CLK CD4040 |
Veze za brojač CD4040 s Raspberry Pi dane su u donjoj tablici:
|
CD4040 Pribadače |
Raspberry Pi pribadače |
|
Vcc16 |
+ 3,3 v |
|
Gnd8 |
gnd |
|
CLK10 |
IZVAN senzora |
|
Resetiraj11 |
GPIO26 od PI |
|
Q0 |
GPIO21 od PI |
|
Q1 |
GPIO20 od PI |
|
Q2 |
GPIO16 od PI |
|
Q3 |
GPIO12 od PI |
|
Q4 |
GPIO25 od PI |
|
P5 |
GPIO24 od PI |
|
P6 |
GPIO23 od PI |
|
P7 |
GPIO18 od PI |
|
P8 |
Nema veze |
|
P9 |
Nema veze |
|
Q10 |
Nema veze |
|
Q11 |
Nema veze |
Ispod je cjeloviti dijagram povezivanja senzora u boji s Raspberry Pi:

Radno objašnjenje:
Svaka se boja sastoji od tri boje: crvene, zelene i plave (RGB). A ako znamo intenzitet RGB-a u bilo kojoj boji, tada možemo otkriti tu boju. Prethodno smo pročitali ove RGB vrijednosti koristeći Arduino.
Korištenjem TCS3200 senzora u boji ne možemo istodobno otkriti crvenu, zelenu i plavu svjetlost, pa ih moramo provjeriti jednu po jednu. Boju koju senzor boje treba osjetiti odabiru dvije pinove S2 i S3. Pomoću ove dvije pinove senzoru možemo reći koju intenzitet svjetlosti u boji treba mjeriti.
Recimo ako trebamo osjetiti intenzitet crvene boje, onda moramo obje igle postaviti na LOW. Nakon izmjere CRVENOG svjetla, postavit ćemo S2 LOW i S3 HIGH za mjerenje plavog svjetla. Sekvencijalnom promjenom logike S2 i S3 možemo izmjeriti intenzitet crvene, plave i zelene svjetlosti, prema donjoj tablici:
|
S2 |
S3 |
Tip fotodiode |
|
Niska |
Niska |
Crvena |
|
Niska |
Visoko |
Plava |
|
Visoko |
Niska |
Bez filtra (bijeli) |
|
Visoko |
Visoko |
Zelena |
Jednom kada senzor prepozna intenzitet RGB komponenata, vrijednost se šalje upravljačkom sustavu unutar modula, kao što je prikazano na donjoj slici. Intenzitet svjetlosti izmjeren nizom šalje se pretvaraču struje u frekvenciju unutar modula. Pretvarač frekvencije generira kvadratni val čija je frekvencija izravno proporcionalna vrijednosti koju šalje niz. S većom vrijednošću iz ARRAY-a, pretvarač struje u frekvenciju generira kvadratni val veće frekvencije.

Frekvencija izlaznog signala modula senzora u boji može se podesiti na četiri razine. Te se razine odabiru pomoću S0 i S1 senzorskog modula kako je prikazano na donjoj slici.
|
S0 |
S1 |
Skaliranje izlazne frekvencije (f0) |
|
L |
L |
Nema struje |
|
L |
H |
2% |
|
H |
L |
20% |
|
H |
H |
100% |
Ova značajka dobro dođe kada povezujemo ovaj modul sa sustavom s niskim taktom. S Raspberry Pi ćemo odabrati 100%. Sjetite se ovdje, ispod sjene, modul osjetnika boje generira kvadratni val čija je maksimalna frekvencija 2500Hz (100% skaliranje) za svaku boju.
Iako modul pruža izlazni kvadratni val čija je frekvencija izravno proporcionalna intenzitetu svjetlosti koja pada na njegovu površinu, ovaj modul ne može izračunati intenzitet svjetlosti svake boje. Međutim, možemo utvrditi povećava li se ili smanjuje li se intenzitet svjetlosti za svaku boju. Također možemo izračunati i usporediti vrijednosti Crvena, Zelena, Plava kako bismo otkrili boju svjetlosti ili boju predmeta unaprijed postavljenog na površini modula. Dakle, ovo je više modul Senzor boje, a ne modul Senzor intenziteta svjetlosti.
Sada ćemo ovaj kvadratni izlaz napajati na Raspberry Pi, ali ne možemo ga dati izravno PI-u, jer Raspberry Pi nema nijedan unutarnji brojač. Dakle, najprije ćemo dati ovaj izlaz binarnom brojaču CD4040 i programirati ćemo Raspberry Pi da uzima vrijednost frekvencije s brojača u povremenim intervalima od 100 ms.
Dakle, PI očitava vrijednost 2500/10 = 250 max za svaku CRVENU, ZELENU i PLAVU boju. Također smo programirali Raspberry Pi za ispis ovih vrijednosti koje predstavljaju intenzitet svjetlosti na zaslonu, kao što je prikazano dolje. Vrijednosti se oduzimaju od zadanih vrijednosti da bi dosegle nulu. To dobro dođe prilikom odlučivanja o boji.
Ovdje su zadane vrijednosti vrijednosti RGB-a, koje su zabilježene bez postavljanja bilo kojeg predmeta ispred senzora. Ovisi o okolnim svjetlosnim uvjetima i ove se vrijednosti mogu razlikovati ovisno o okolini. U osnovi kalibriramo senzor za standardna očitanja. Dakle, prvo pokrenite program bez postavljanja bilo kojeg predmeta i zabilježite očitanja. Te se vrijednosti neće nalaziti blizu nule jer će na senzor uvijek padati malo svjetla bez obzira na to gdje ga postavite. Zatim oduzmite ta očitanja s očitanjima koja ćemo dobiti nakon stavljanja predmeta na testiranje. Na ovaj način možemo dobiti standardna očitanja.


Raspberry Pi je također programiran za usporedbu vrijednosti R, G i B kako bi se odredila boja predmeta smještenog u blizini senzora. Ovaj rezultat pokazuje užarena RGB LED spojena na Raspberry Pi.
Ukratko,
1. Modul otkriva svjetlost koju reflektira objekt smješten blizu površine.
2. Modul osjetnika boje pruža izlazni val za R ili G ili B, odabran uzastopno od strane Raspberry Pi kroz klinove S2 i S3.
3. Brojač CD4040 uzima val i mjeri vrijednost frekvencije.
4. PI uzima vrijednost frekvencije s brojača za svaku boju svakih 100 ms. Nakon uzimanja vrijednosti svaki put PI resetira brojač kako bi otkrio sljedeću vrijednost.
5. Raspberry Pi ispisuje ove vrijednosti na ekranu i uspoređuje ih kako bi prepoznao boju predmeta i konačno zasvijetlio RGB LED u odgovarajućoj boji, ovisno o boji predmeta.
Slijedili smo gornji slijed u našem Python kodu. Kompletan program dat je u nastavku s demonstracijskim video zapisom.
Ovdje je Raspberry Pi programiran da detektira samo tri boje, možete podudarati vrijednosti R, G i B kako biste otkrili više boja po vašem ukusu.
