Šajā projektā mēs atklāsim krāsas, izmantojot TCS3200 krāsu sensora moduli ar Raspberry Pi. Šeit mēs izmantojām Raspberry Pi Python kodu, lai krāsas noteiktu, izmantojot TCS3200 sensoru. Lai parādītu krāsu noteikšanu, mēs izmantojām RGB LED, šis RGB gaismas diode spīdēs tādā pašā krāsā, kuras objekts tiek parādīts sensora tuvumā. Pašlaik mēs esam ieprogrammējuši Raspberry Pi, lai noteiktu tikai sarkanās, zaļās un zilās krāsas. Bet pēc RGB vērtību iegūšanas to var ieprogrammēt, lai noteiktu jebkuru krāsu, jo katra krāsa sastāv no šiem RGB komponentiem. Pārbaudiet demonstrācijas video beigās.
Iepriekš mēs esam izlasījuši un parādījuši krāsu RGB vērtības, izmantojot to pašu TCS3200 ar Arduino. Pirms turpināt darbu, informējiet par TCS3200 krāsu sensoru.
TCS3200 krāsu sensors:
TCS3200 ir krāsu sensors, kas ar pareizu programmēšanu var noteikt jebkuru krāsu skaitu. TCS3200 satur RGB (sarkani zaļi zili) blokus. Kā parādīts attēlā mikroskopiskā līmenī, uz sensora var redzēt kvadrātveida lodziņus acs iekšpusē. Šīs kvadrātveida rūtiņas ir RGB matricas masīvi. Katrā no šīm kastēm ir trīs sensori sarkanās, zaļās un zilās gaismas intensitātes noteikšanai.
Tātad uz viena slāņa mums ir sarkanie, zilie un zaļie bloki. Tātad, nosakot krāsu, mēs nevaram noteikt visus trīs elementus vienlaicīgi. Katrs no šiem sensoru blokiem ir jāizvēlas atsevišķi viens pēc otra, lai noteiktu krāsu. Moduli var ieprogrammēt, lai uztvertu konkrēto krāsu un atstātu pārējos. Tajā ir tapas šim atlases mērķim, kas ir paskaidrots vēlāk. Ir ceturtais režīms, kas nav filtra režīms; bez filtra režīma sensors uztver balto gaismu.
Mēs savienosim šo sensoru ar Raspberry Pi un ieprogrammēsim Raspberry Pi, lai nodrošinātu atbilstošu reakciju atkarībā no krāsas.
Nepieciešamās sastāvdaļas:
Šeit mēs izmantojam Raspberry Pi 2 B modeli ar Raspbian Jessie OS. Visas aparatūras un programmatūras pamatprasības ir iepriekš apspriestas, lai sāktu darbu, varat to apskatīt Raspberry Pi ievadā un mirgo Raspberry PI LED, izņemot mums nepieciešamo:
- Aveņu Pi ar iepriekš instalētu OS
- TCS3200 krāsu sensors
- CD4040 skaitītāja mikroshēma
- RGB gaismas diode
- 1KΩ rezistors (3 gab.)
- 1000uF kondensators
Shēmas shēma un savienojumi:
Savienojumi, kas tiek veikti, lai savienotu krāsu sensoru ar Raspberry Pi, ir norādīti zemāk esošajā tabulā:
Sensora tapas |
Aveņu Pi tapas |
Vcc |
+ 3,3 v |
GND |
zeme |
S0 |
+ 3,3 v |
S1 |
+ 3,3 v |
S2 |
PI GPIO6 |
S3 |
PI GPIO5 |
OE |
PI GPIO22 |
OUT |
CDK4040 CLK |
Savienojumi CD4040 skaitītājam ar Raspberry Pi ir norādīti zemāk esošajā tabulā:
CD4040 piespraudes |
Aveņu Pi tapas |
Vcc16 |
+ 3,3 v |
Gnd8 |
gnd |
Clk10 |
Sensora OUT |
11. Atiestatīt |
PI GPIO26 |
Q0 |
PI GPIO21 |
Q1 |
PI GPIO20 |
Q2 |
PI GPIO16 |
Q3 |
PI GPIO12 |
Q4 |
PI GPIO25 |
Q5 |
PI GPIO24 |
Q6 |
PI GPIO23 |
Q7 |
PI GPIO18 |
Q8 |
Nav savienojuma |
Q9 |
Nav savienojuma |
Q10 |
Nav savienojuma |
Q11 |
Nav savienojuma |
Zemāk ir pilna krāsu sensora un Raspberry Pi shēmas shēma:
Darba skaidrojums:
Katru krāsu veido trīs krāsas: sarkana, zaļa un zila (RGB). Un, ja mēs zinām RGB intensitāti jebkurā krāsā, tad mēs varam noteikt šo krāsu. Iepriekš mēs esam izlasījuši šīs RGB vērtības, izmantojot Arduino.
Izmantojot TCS3200 krāsu sensoru, mēs vienlaikus nevaram noteikt sarkanu, zaļu un zilu gaismu, tāpēc mums tie jāpārbauda pa vienam. Krāsu, kas jāuztver krāsu sensoram, izvēlas divas tapas S2 un S3. Izmantojot šīs divas tapas, mēs varam pateikt sensoram, kuras krāsas gaismas intensitāte ir jāmēra.
Sakiet, ja mums ir jāuztver sarkanās krāsas intensitāte, tad mums abiem tapām ir jāiestata LOW. Pēc sarkanās gaismas izmērīšanas mēs iestatīsim S2 LOW un S3 HIGH, lai izmērītu zilo gaismu. Secīgi mainot S2 un S3 loģiku, mēs varam izmērīt sarkanās, zilās un zaļās gaismas intensitāti saskaņā ar zemāk sniegto tabulu:
S2 |
S3 |
Fotodiodes tips |
Zems |
Zems |
sarkans |
Zems |
Augsts |
Zils |
Augsts |
Zems |
Nav filtra (balts) |
Augsts |
Augsts |
Zaļš |
Kad sensors nosaka RGB komponentu intensitāti, vērtība tiek nosūtīta uz vadības sistēmu moduļa iekšpusē, kā parādīts zemāk redzamajā attēlā. Gaismas intensitāte, ko mēra ar bloku, tiek nosūtīta uz strāvas pārveidotāju moduļa iekšpusē. Frekvences pārveidotājs rada kvadrātveida viļņu, kura frekvence ir tieši proporcionāla masīva sūtītajai vērtībai. Ar augstāku vērtību no ARRAY strāvas pārveidotājs ģenerē augstākas frekvences kvadrātveida vilni.
Krāsu sensora moduļa izejas signāla frekvenci var noregulēt četros līmeņos. Šie līmeņi tiek izvēlēti, izmantojot sensora moduļa S0 un S1, kā parādīts attēlā.
S0 |
S1 |
Izejas frekvences mērogošana (f0) |
L |
L |
Izslēgt |
L |
H |
2% |
H |
L |
20% |
H |
H |
100% |
Šī funkcija ir noderīga, ja mēs sasaistām šo moduli ar sistēmu ar zemu pulksteni. Ar Raspberry Pi mēs atlasīsim 100%. Atcerieties šeit, ka krāsu toņa modulis ģenerē kvadrātveida viļņu izvadi, kura maksimālā frekvence katrai krāsai ir 2500 Hz (100% mērogošana).
Lai gan modulis nodrošina izejas kvadrātveida viļņus, kuru frekvence ir tieši proporcionāla gaismas intensitātei, kas nokrīt uz tā virsmas, ar šo moduli nav vienkārša veida, kā aprēķināt katras krāsas gaismas intensitāti. Tomēr mēs varam pateikt, vai gaismas intensitāte palielinās vai samazinās katrai krāsai. Mēs varam arī aprēķināt un salīdzināt sarkanās, zaļās un zilās vērtības, lai noteiktu gaismas krāsu vai objekta krāsu, kas iepriekš iestatīta moduļa virsmā. Tātad tas drīzāk ir krāsu sensora modulis, nevis gaismas intensitātes sensora modulis.
Tagad mēs ievadīsim šo kvadrātveida viļņu izvadi Raspberry Pi, bet mēs to nevaram tieši dot PI, jo Raspberry Pi nav iekšēju skaitītāju. Tātad vispirms mēs piešķirsim šo izvadi CD4040 binārajam skaitītājam un mēs ieprogrammēsim Raspberry Pi, lai ņemtu frekvences vērtību no skaitītāja ar periodiskiem 100 ms intervāliem.
Tātad PI katrai RED, GREEN un BLUE krāsai nolasa vērtību 2500/10 = 250 max. Mēs arī esam ieprogrammējuši Raspberry Pi, lai drukātu ekrānā šīs vērtības, kas atspoguļo gaismas intensitāti, kā parādīts zemāk. Vērtības tiek atņemtas no noklusējuma vērtībām, lai sasniegtu nulli. Tas ir noderīgi, izlemjot krāsu.
Šeit noklusējuma vērtības ir RGB vērtības, kas ņemtas, sensora priekšā nenovietojot nevienu priekšmetu. Tas ir atkarīgs no apkārtējiem gaismas apstākļiem, un šīs vērtības var atšķirties atkarībā no apkārtnes. Būtībā mēs kalibrējam sensoru standarta rādījumiem. Tāpēc vispirms palaidiet programmu, nenovietojot nevienu objektu, un atzīmējiet rādījumus. Šīs vērtības nebūs tuvu nullei, jo uz sensora vienmēr būs nedaudz gaismas, neatkarīgi no tā, kur jūs to ievietojat. Pēc tam atņemiet šos rādījumus ar rādījumiem, kurus mēs iegūsim pēc testa objekta ievietošanas. Tādā veidā mēs varam iegūt standarta rādījumus.
Aveņu Pi ir ieprogrammēts arī salīdzināt R, G un B vērtības, lai noteiktu sensora tuvumā novietotā objekta krāsu. Šo rezultātu parāda kvēlojošs RGB LED, kas savienots ar Raspberry Pi.
Tātad īsumā
1. Modulis nosaka gaismu, ko atstaro objekts, kas novietots virsmas tuvumā.
2. Krāsu sensora modulis nodrošina izejas vilni R vai G vai B, ko secīgi izvēlējies Raspberry Pi caur tapām S2 un S3.
3. CD4040 Skaitītājs ņem vilni un mēra frekvences vērtību.
4. PI paņem frekvences vērtību no skaitītāja katrai krāsai ik pēc 100 ms. Pēc vērtības ņemšanas katru reizi PI atiestata skaitītāju, lai noteiktu nākamo vērtību.
5. Raspberry Pi izdrukā šīs vērtības ekrānā un salīdzina šīs vērtības, lai noteiktu objekta krāsu un visbeidzot spīdētu RGB gaismas diodi atbilstošā krāsā atkarībā no objekta krāsas.
Mēs esam ievērojuši iepriekš minēto secību savā Python kodā. Pilna programma ir sniegta zemāk ar demonstrācijas video.
Šeit Raspberry Pi ir ieprogrammēts, lai noteiktu tikai trīs krāsas, jūs varat attiecīgi saskaņot R, G un B vērtības, lai noteiktu vairāk krāsu pēc jūsu izvēles.