I det här projektet ska vi upptäcka färgerna med hjälp av TCS3200 färgsensormodul med Raspberry Pi. Här använde vi Python-kod för Raspberry Pi för att upptäcka färgerna med hjälp av TCS3200-sensorn. För att visa vilken färgdetektering vi har använt en RGB-LED lyser denna RGB-LED i samma färg, av vilken objektet presenteras nära sensorn. För närvarande har vi programmerat Raspberry Pi för att bara upptäcka röda, gröna och blå färger. Men du kan programmera den för att upptäcka vilken färg som helst efter att du fått RGB-värden, eftersom varje färg består av dessa RGB-komponenter. Kolla demo-videon i slutet.
Vi har tidigare läst och visat RGB-värdena för färgerna med samma TCS3200 med Arduino. Innan du går vidare, berätta om TCS3200 Färgsensor.
TCS3200 Färgsensor:
TCS3200 är en färgsensor som kan upptäcka valfritt antal färger med rätt programmering. TCS3200 innehåller RGB-matriser (rödgrönblå). Som visas i figuren på mikroskopisk nivå kan man se de fyrkantiga rutorna inuti ögat på sensorn. Dessa fyrkantiga lådor är matriser med RGB-matris. Var och en av dessa lådor innehåller tre sensorer för avkänning av ljusintensitet för rött, grönt och blått.
Så vi har röda, blå och gröna matriser på samma lager. Så när vi upptäcker färg kan vi inte upptäcka alla tre elementen samtidigt. Var och en av dessa sensormatriser ska väljas separat efter varandra för att detektera färgen. Modulen kan programmeras för att känna av den specifika färgen och lämna de andra. Den innehåller stift för det valändamålet, vilket har förklarats senare. Det finns fjärde läge som inte är något filterläge; utan filterläge detekterar sensorn vitt ljus.
Vi ansluter denna sensor till Raspberry Pi och kommer att programmera Raspberry Pi för att ge lämpligt svar beroende på färg.
Komponenter som krävs:
Här använder vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alla grundläggande hårdvaru- och mjukvarukrav har tidigare diskuterats, du kan slå upp det i Raspberry Pi Introduction och Raspberry PI LED Blinking för att komma igång, annat än vad vi behöver:
- Raspberry Pi med förinstallerat operativsystem
- TCS3200 färgsensor
- CD4040 motchip
- RGB-LED
- 1KΩ motstånd (3 delar)
- 1000uF kondensator
Kretsschema och anslutningar:
Anslutningarna som görs för att ansluta färgsensorn till Raspberry Pi anges i nedanstående tabell:
Sensorstift |
Hallon Pi Pins |
Vcc |
+ 3,3 v |
GND |
jord |
S0 |
+ 3,3 v |
S1 |
+ 3,3 v |
S2 |
GPIO6 av PI |
S3 |
GPIO5 för PI |
OE |
GPIO22 av PI |
UT |
CLK av CD4040 |
Anslutningarna för CD4040-räknare med Raspberry Pi anges i nedanstående tabell:
CD4040 stift |
Hallon Pi Pins |
Vcc16 |
+ 3,3 v |
Gnd8 |
gnd |
Clk10 |
UTAN för sensorn |
Återställ11 |
GPIO26 av PI |
Q0 |
GPIO21 av PI |
Q1 |
GPIO20 av PI |
Q2 |
GPIO16 av PI |
Q3 |
GPIO12 av PI |
Q4 |
GPIO25 av PI |
Q5 |
GPIO24 av PI |
F6 |
GPIO23 av PI |
F7 |
GPIO18 av PI |
Q8 |
Ingen förbindelse |
F9 |
Ingen förbindelse |
Q10 |
Ingen förbindelse |
F11 |
Ingen förbindelse |
Nedan är det fullständiga kretsschemat för gränssnittsfärgsensor med Raspberry Pi:
Arbetsförklaring:
Varje färg består av tre färger: Röd, grön och blå (RGB). Och om vi känner till intensiteten hos RGB i vilken färg som helst, kan vi upptäcka den färgen. Vi har tidigare läst dessa RGB-värden med Arduino.
Med TCS3200 färgsensor kan vi inte upptäcka rött, grönt och blått ljus samtidigt, så vi måste kontrollera dem en efter en. Färgen som behöver avkänns av färgsensorn väljs med två stift S2 och S3. Med dessa två stift kan vi berätta för sensorn vilken färg ljusintensitet som ska mätas.
Säg om vi behöver känna den röda färgintensiteten så måste vi ställa in båda stiften till LÅG. Efter att ha mätt det RÖDA ljuset ställer vi in S2 LOW och S3 HIGH för att mäta det blå ljuset. Genom att sekventiellt ändra logiken för S2 och S3 kan vi mäta rött, blått och grönt ljusintensitet enligt nedanstående tabell:
S2 |
S3 |
Fotodiodtyp |
Låg |
Låg |
Röd |
Låg |
Hög |
Blå |
Hög |
Låg |
Inget filter (vitt) |
Hög |
Hög |
Grön |
När sensorn upptäcker intensiteten hos RGB-komponenter skickas värdet till styrsystemet inuti modulen som visas i bilden nedan. Ljusintensiteten mätt med matrisen skickas till ström till frekvensomvandlaren inuti modulen. Frekvensomvandlaren genererar en fyrkantig våg vars frekvens är direkt proportionell mot det värde som matrisen skickar. Med högre värde från ARRAY genererar ström till frekvensomvandlare fyrkantvåg med högre frekvens.
Utgångssignalfrekvensen från färgsensormodulen kan justeras till fyra nivåer. Dessa nivåer väljs med hjälp av S0 och S1 på sensormodulen enligt bilden nedan.
S0 |
S1 |
Utgångsfrekvensskalning (f0) |
L |
L |
Strömavbrott |
L |
H |
2% |
H |
L |
20% |
H |
H |
100% |
Denna funktion är till nytta när vi gränssnitt denna modul till systemet med låg klocka. Med Raspberry Pi väljer vi 100%. Kom ihåg här, under skuggan genererar färgsensormodulen en kvadratvågsutgång vars maximala frekvens är 2500Hz (100% skalning) för varje färg.
Även om modulen tillhandahåller en fyrkantig våg vars frekvens är i direkt proportion till ljusintensiteten som faller på dess yta, finns det inget enkelt sätt att beräkna ljusintensiteten för varje färg med denna modul. Vi kan dock se om ljusintensiteten ökar eller minskar för varje färg. Vi kan också beräkna och jämföra de röda, gröna, blå värdena för att detektera ljusets färg eller färgen på förinställda objekt på modulens yta. Så detta är mer av färgsensormodulen snarare än ljusintensitetssensormodulen.
Nu kommer vi att mata denna fyrkantvågsutgång till Raspberry Pi men vi kan inte ge den direkt till PI, eftersom Raspberry Pi inte har några interna räknare. Så först ger vi denna utgång till CD4040 binär räknare och vi kommer att programmera Raspberry Pi för att ta frekvensvärdet från räknaren med periodiska intervall på 100 ms.
Så läser PI ett värde på 2500/10 = 250 max för varje RÖD, GRÖN och BLÅ färg. Vi har också programmerat Raspberry Pi för att skriva ut dessa värden som representerar ljusintensiteterna på skärmen som visas nedan. Värdena subtraheras från standardvärdena för att nå noll. Detta kommer till nytta när du bestämmer färgen.
Här är standardvärdena värdena för RGB, som har tagits utan att placera något föremål framför sensorn. Det beror på de omgivande ljusförhållandena och dessa värden kan variera beroende på omgivningen. I grund och botten kalibrerar vi sensorn för standardavläsningar. Så kör först programmet utan att placera något objekt och notera avläsningarna. Dessa värden kommer inte att vara nära noll eftersom det alltid kommer att falla något ljus på sensorn oavsett var du placerar den. Därefter subtraherar dessa avläsningar med avläsningarna som vi får efter att ett objekt har testats. På så sätt kan vi få standardavläsningar.
Raspberry Pi är också programmerad för att jämföra R-, G- och B-värdena för att bestämma färgen på objektet som placeras nära sensorn. Detta resultat visas med glödande RGB-LED ansluten till Raspberry Pi.
Så i nötskal,
1. Modulen känner av det ljus som reflekteras av objektet placerat nära ytan.
2. Färgsensormodulen ger utgångsvåg för R eller G eller B, vald i följd av Raspberry Pi genom stiften S2 och S3.
3. CD4040 Counter tar vågen och mäter frekvensvärdet.
4. PI tar frekvensvärdet från räknaren för varje färg för varje 100 ms. Efter att värdet tagits varje gång återställer PI räknaren för att detektera nästa värde.
5. Raspberry Pi skriver ut dessa värden på skärmen och jämför dessa värden för att upptäcka objektets färg och slutligen lysa RGB-lysdioden i lämplig färg beroende på objektets färg.
Vi har följt ovanstående sekvens i vår Python-kod. Hela programmet ges nedan med en demonstrationsvideo.
Här är Raspberry Pi programmerad att bara detektera tre färger, du kan matcha R-, G- och B-värdena för att upptäcka fler färger som du tycker.