I dette prosjektet skal vi oppdage fargene ved hjelp av TCS3200 fargesensormodul med Raspberry Pi. Her brukte vi Python-kode for Raspberry Pi for å oppdage fargene ved hjelp av TCS3200-sensoren. For å demonstrere fargedeteksjonen vi har brukt en RGB LED, vil denne RGB LED lyse i samme farge, som objektet presenteres i nærheten av sensoren. Foreløpig har vi programmert Raspberry Pi til kun å oppdage røde, grønne og blå farger. Men du kan programmere den for å oppdage hvilken som helst farge etter å ha fått RGB-verdiene, da hver farge består av disse RGB-komponentene. Sjekk demovideoen på slutten.
Vi har tidligere lest og vist RGB-verdiene til fargene ved å bruke den samme TCS3200 med Arduino. Før du går videre, kan du vite om TCS3200 fargesensor.
TCS3200 fargesensor:
TCS3200 er en fargesensor som kan oppdage et hvilket som helst antall farger med riktig programmering. TCS3200 inneholder RGB (rød grønn blå) matriser. Som vist på figur på mikroskopisk nivå, kan man se de firkantede boksene inne i øyet på sensoren. Disse firkantede boksene er matriser av RGB-matrise. Hver av disse boksene inneholder tre sensorer for å registrere rød, grønn og blå lysintensitet.
Så vi har røde, blå og grønne matriser på samme lag. Så mens vi oppdager farge, kan vi ikke oppdage alle tre elementene samtidig. Hver av disse sensorarrayene skal velges separat etter hverandre for å oppdage fargen. Modulen kan programmeres for å føle den spesielle fargen og forlate de andre. Den inneholder pinner for det valgte formålet, som er forklart senere. Det er fjerde modus som ikke er filtermodus; uten filtermodus registrerer sensoren hvitt lys.
Vi vil koble denne sensoren til Raspberry Pi og vil programmere Raspberry Pi for å gi riktig respons avhengig av farge.
Nødvendige komponenter:
Her bruker vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alle de grunnleggende maskinvare- og programvarekravene er tidligere diskutert, du kan slå opp i Raspberry Pi Introduction og Raspberry PI LED Blinking for å komme i gang, annet enn det vi trenger:
- Raspberry Pi med forhåndsinstallert OS
- TCS3200 fargesensor
- CD4040 motbrikke
- RGB LED
- 1KΩ motstand (3 stk)
- 1000uF kondensator
Kretsdiagram og tilkoblinger:
Tilkoblingene som er gjort for å koble fargesensoren til Raspberry Pi er gitt i tabellen nedenfor:
Sensor Pins |
Bringebær Pi Pins |
Vcc |
+ 3.3v |
GND |
bakke |
S0 |
+ 3.3v |
S1 |
+ 3.3v |
S2 |
GPIO6 av PI |
S3 |
GPIO5 av PI |
OE |
GPIO22 av PI |
UTE |
CLK av CD4040 |
Tilkoblingene for CD4040-teller med Raspberry Pi er gitt i tabellen nedenfor:
CD4040 Pins |
Bringebær Pi Pins |
Vcc16 |
+ 3.3v |
Gnd8 |
gnd |
Clk10 |
UTEN for sensoren |
Tilbakestill 11 |
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 |
Q6 |
GPIO23 av PI |
Q7 |
GPIO18 av PI |
Q8 |
Ingen forbindelse |
Q9 |
Ingen forbindelse |
Q10 |
Ingen forbindelse |
Q11 |
Ingen forbindelse |
Nedenfor er det komplette kretsskjemaet for grensesnittfargesensor med Raspberry Pi:
Arbeidsforklaring:
Hver farge består av tre farger: rød, grønn og blå (RGB). Og hvis vi kjenner intensiteten til RGB i hvilken som helst farge, så kan vi oppdage den fargen. Vi har tidligere lest disse RGB-verdiene ved hjelp av Arduino.
Ved hjelp av TCS3200 fargesensor kan vi ikke oppdage rødt, grønt og blått lys samtidig, så vi må sjekke dem en etter en. Fargen som må registreres av fargesensoren velges av to pinner S2 og S3. Med disse to pinnene kan vi fortelle sensoren hvilken fargeintensitet som skal måles.
Si at hvis vi trenger å ane den røde fargeintensiteten, må vi sette begge pinnene på LAV. Etter å ha målt RØDT lys, vil vi stille S2 LAV og S3 HØY for å måle det blå lyset. Ved å endre logikkene til S2 og S3 sekvensielt, kan vi måle rød, blå og grønn lysintensitet, i henhold til nedenstående tabell:
S2 |
S3 |
Fotodiodetype |
Lav |
Lav |
rød |
Lav |
Høy |
Blå |
Høy |
Lav |
Intet filter (hvitt) |
Høy |
Høy |
Grønn |
Når sensoren oppdager intensiteten til RGB-komponenter, sendes verdien til kontrollsystemet inne i modulen som vist i figuren nedenfor. Lysintensiteten målt av matrisen sendes til strøm til frekvensomformer inne i modulen. Frekvensomformeren genererer en firkantbølge hvis frekvens er direkte proporsjonal med verdien som sendes av matrisen. Med høyere verdi fra ARRAY genererer strøm til frekvensomformer firkantbølgen med høyere frekvens.
Utgangssignalfrekvensen fra fargesensormodulen kan justeres til fire nivåer. Disse nivåene velges ved å bruke sensormodulen S0 og S1 som vist i figuren nedenfor.
S0 |
S1 |
Utgangsfrekvensskalering (f0) |
L |
L |
Slå av |
L |
H |
2% |
H |
L |
20% |
H |
H |
100% |
Denne funksjonen er nyttig når vi kobler denne modulen til systemet med lav klokke. Med Raspberry Pi velger vi 100%. Husk her, under skyggen genererer fargesensormodulen en firkantbølgeutgang med maksimal frekvens på 2500Hz (100% skalering) for hver farge.
Selv om modulen gir utgangs kvadratbølge hvis frekvens er i direkte proporsjon til lysintensiteten som faller på overflaten, er det ingen enkel måte å beregne lysintensiteten til hver farge av denne modulen. Vi kan imidlertid se om lysintensiteten øker eller synker for hver farge. Vi kan også beregne og sammenligne de røde, grønne, blå verdiene for å oppdage fargen på lys eller fargen på objektet som er forhåndsinnstilt på overflaten av modulen. Så dette er mer av fargesensormodulen i stedet for lysintensitetsmodulen.
Nå vil vi mate denne firkantbølgen til Raspberry Pi, men vi kan ikke gi den direkte til PI, fordi Raspberry Pi ikke har noen interne tellere. Så først vil vi gi denne utgangen til CD4040 binær teller, og vi vil programmere Raspberry Pi for å ta frekvensverdien fra telleren med periodiske intervaller på 100 ms.
Så PI leser en verdi på 2500/10 = 250 maks for hver RØD, GRØNN og BLÅ farge. Vi har også programmert Raspberry Pi til å skrive ut disse verdiene som representerer lysintensiteten på skjermen som vist nedenfor. Verdiene trekkes fra standardverdiene for å nå til null. Dette er nyttig når du bestemmer fargen.
Her er standardverdiene verdiene til RGB, som har tatt uten å plassere noe objekt foran sensoren. Det avhenger av de omgivende lysforholdene, og disse verdiene kan variere i henhold til omgivelsene. I utgangspunktet kalibrerer vi sensoren for standardavlesninger. Så kjør først programmet uten å plassere noe objekt og legg merke til avlesningene. Disse verdiene vil ikke være nær null, da det alltid vil falle noe lys på sensoren uansett hvor du plasserer den. Deretter trekker du avlesningene med avlesningene som vi får etter å ha plassert et objekt å teste. På denne måten kan vi få standardavlesninger.
Raspberry Pi er også programmert til å sammenligne R-, G- og B-verdiene for å bestemme fargen på objektet plassert nær sensoren. Dette resultatet vises med glødende RGB-LED koblet til Raspberry Pi.
Så i nøtteskall,
1. Modulen oppdager lyset som reflekteres av objektet plassert nær overflaten.
2. Fargesensormodulen gir utgangsbølge for R eller G eller B, valgt sekvensielt av Raspberry Pi gjennom pins S2 og S3.
3. CD4040 Counter tar bølgen og måler frekvensverdien.
4. PI tar frekvensverdien fra telleren for hver farge for hver 100 ms. Etter å ha tatt verdien hver gang PI tilbakestiller telleren for å oppdage neste verdi.
5. Raspberry Pi skriver ut disse verdiene på skjermen og sammenligner disse verdiene for å oppdage objektfargen og til slutt gløde RGB-LED-en i riktig farge, avhengig av fargen på objektet.
Vi har fulgt sekvensen ovenfor i vår Python-kode. Fullt program er gitt nedenfor med en demonstrasjonsvideo.
Her er Raspberry Pi programmert til å oppdage bare tre farger, du kan matche R-, G- og B-verdiene tilsvarende for å oppdage flere farger du liker.