Šiame projekte mes ketiname aptikti spalvas naudodami TCS3200 spalvų jutiklio modulį su „Raspberry Pi“. Čia mes naudojome „Python“ kodą „Raspberry Pi“ spalvoms aptikti naudodami jutiklį TCS3200. Norėdami parodyti spalvų aptikimą, mes panaudojome RGB šviesos diodą, šis RGB šviesos diodas šviečia ta pačia spalva, kurios objektas yra šalia jutiklio. Šiuo metu esame užprogramavę „Raspberry Pi“ aptikti tik raudoną, žalią ir mėlyną spalvas. Bet jūs galite užprogramuoti ją aptikti bet kokią spalvą gavę RGB reikšmes, nes kiekvieną spalvą sudaro šie RGB komponentai. Pabaigoje patikrinkite demonstracinį vaizdo įrašą.
Anksčiau mes skaitėme ir rodėme spalvų RGB reikšmes naudodami tą patį TCS3200 su „Arduino“. Prieš eidami toliau, praneškite apie spalvų jutiklį TCS3200.
TCS3200 spalvų jutiklis:
TCS3200 yra spalvų jutiklis, kuris, tinkamai programuodamas, gali aptikti bet kokį spalvų skaičių. TCS3200 yra RGB (raudona žalia mėlyna) masyvai. Kaip parodyta paveiksle mikroskopiniu lygiu, ant jutiklio galima pamatyti kvadratines dėžutes akies viduje. Šios kvadratinės dėžutės yra RGB matricos masyvai. Kiekvienoje iš šių dėžučių yra trys jutikliai, skirti nustatyti raudonos, žalios ir mėlynos šviesos intensyvumą.
Taigi tame pačiame sluoksnyje turime raudonos, mėlynos ir žalios masyvus. Taigi aptikdami spalvą negalime aptikti visų trijų elementų vienu metu. Kiekviena iš šių jutiklių matricų turi būti parinkta atskirai viena po kitos, kad būtų galima nustatyti spalvą. Modulis gali būti užprogramuotas taip, kad pajustų tam tikrą spalvą ir paliktų kitus. Jame yra smeigtukai tam atrankos tikslui, kuris buvo paaiškintas vėliau. Yra ketvirtasis režimas, kuris nėra filtro režimas; be filtro režimo jutiklis aptinka baltą šviesą.
Mes sujungsime šį jutiklį su „Raspberry Pi“ ir užprogramuosime „Raspberry Pi“, kad jis suteiktų tinkamą atsaką, atsižvelgiant į spalvą.
Būtini komponentai:
Čia mes naudojame „ Raspberry Pi 2 Model B“ su „Raspbian Jessie OS“. Visi pagrindiniai aparatinės ir programinės įrangos reikalavimai buvo aptarti anksčiau, jų galite rasti „Raspberry Pi“ įvade ir mirksi „Raspberry PI“ šviesos diodas, išskyrus tai, ko mums reikia:
- „Raspberry Pi“ su iš anksto įdiegta OS
- TCS3200 spalvų jutiklis
- CD4040 skaitiklio lustas
- RGB šviesos diodas
- 1KΩ rezistorius (3 vnt.)
- 1000uF kondensatorius
Grandinės schema ir jungtys:
Jungtys, daromos norint prijungti spalvų jutiklį su „Raspberry Pi“, pateiktos žemiau esančioje lentelėje:
Jutiklio kaiščiai |
Aviečių Pi smeigtukai |
Vcc |
+ 3,3v |
BND |
žemės |
S0 |
+ 3,3v |
S1 |
+ 3,3v |
S2 |
PI GPIO6 |
S3 |
PI GPIO5 |
OE |
PI GPIO22 |
OUT |
CDK4040 CLK |
CD4040 skaitiklio jungtys su „Raspberry Pi“ pateiktos žemiau esančioje lentelėje:
CD4040 kaiščiai |
Aviečių Pi smeigtukai |
Vcc16 |
+ 3,3v |
Gnd8 |
gnd |
Clk10 |
OUT jutiklis |
11. Atstatyti |
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 |
Nėra ryšio |
Q9 |
Nėra ryšio |
Q10 |
Nėra ryšio |
Q11 |
Nėra ryšio |
Žemiau pateikiama visa spalvų jutiklio su avietėmis Pi grandinės schema:
Darbinis paaiškinimas:
Kiekvieną spalvą sudaro trys spalvos: raudona, žalia ir mėlyna (RGB). Ir jei mes žinome RGB intensyvumą bet kokia spalva, tada galime aptikti tą spalvą. Anksčiau mes perskaitėme šias RGB reikšmes naudodami „Arduino“.
Naudodami TCS3200 spalvų jutiklį, mes negalime aptikti raudonos, žalios ir mėlynos šviesos tuo pačiu metu, todėl turime juos patikrinti po vieną. Spalvą, kurią reikia pajusti spalvų jutikliu, parenka du kaiščiai S2 ir S3. Naudodami šiuos du kaiščius, jutikliui galime pasakyti, kurios spalvos šviesos intensyvumas turi būti matuojamas.
Tarkime, jei turime pajusti raudonos spalvos intensyvumą, turime nustatyti, kad abu kaiščiai būtų žemi. Išmatavę RED šviesą, mes nustatysime S2 LOW ir S3 HIGH, kad pamatuotumėte mėlyną šviesą. Nuosekliai keisdami S2 ir S3 logiką, mes galime matuoti raudonos, mėlynos ir žalios šviesos intensyvumą pagal toliau pateiktą lentelę:
S2 |
S3 |
Fotodiodo tipas |
Žemas |
Žemas |
Raudona |
Žemas |
Aukštas |
Mėlyna |
Aukštas |
Žemas |
Nėra filtro (baltas) |
Aukštas |
Aukštas |
Žalias |
Kai jutiklis nustato RGB komponentų intensyvumą, vertė siunčiama į valdymo sistemą modulio viduje, kaip parodyta žemiau esančiame paveikslėlyje. Matricos matuojamas šviesos intensyvumas siunčiamas į modulio viduje esantį srovės į dažnį keitiklį. Dažnio keitiklis sukuria kvadratinę bangą, kurios dažnis yra tiesiogiai proporcingas masyvo siunčiamai vertei. Esant didesnei vertei nuo ARRAY, srovės į dažnį keitiklis sukuria aukštesnio dažnio kvadratinę bangą.
Spalvų jutiklio modulio išėjimo signalo dažnį galima reguliuoti į keturis lygius. Šie lygiai parenkami naudojant jutiklio modulio S0 ir S1, kaip parodyta žemiau esančiame paveikslėlyje.
S0 |
S1 |
Išėjimo dažnio mastelis (f0) |
L |
L |
Išjungimas |
L |
H |
2% |
H |
L |
20% |
H |
H |
100% |
Ši funkcija yra naudinga, kai mes sujungiame šį modulį su sistema su mažu laikrodžiu. Su Raspberry Pi mes pasirinksime 100%. Prisiminkite, kad po šešėliu spalvų jutiklio modulis sukuria kvadratinės bangos išvestį, kurios didžiausias dažnis yra 2500 Hz (100% mastelis) kiekvienai spalvai.
Nors modulis teikia išėjimo kvadratinę bangą, kurios dažnis yra tiesiogiai proporcingas ant jo paviršiaus krentančiam šviesos intensyvumui, šiuo moduliu nėra lengva apskaičiuoti kiekvienos spalvos šviesos intensyvumą. Tačiau galime pasakyti, ar kiekvienos spalvos šviesos intensyvumas didėja, ar mažėja. Taip pat galime apskaičiuoti ir palyginti raudonas, žalias, mėlynas reikšmes, kad aptiktume šviesos spalvą arba objekto spalvą, iš anksto nustatytą modulio paviršiuje. Taigi tai daugiau spalvų jutiklio modulis, o ne šviesos intensyvumo jutiklio modulis.
Dabar mes tieksime šią kvadratinės bangos išvestį į „Raspberry Pi“, bet negalime jos atiduoti tiesiogiai PI, nes „ Raspberry Pi“ neturi jokių vidinių skaitiklių. Taigi pirmiausia suteiksime šį išėjimą CD4040 dvejetainiui skaitikliui ir užprogramuosime Raspberry Pi, kad periodiškai 100 ms intervalais imtų dažnio vertę iš skaitiklio.
Taigi PI nuskaito kiekvienos RED, GREEN ir BLUE spalvų vertę 2500/10 = 250 max. Mes taip pat užprogramavome „Raspberry Pi“ spausdinti šias reikšmes, atspindinčias šviesos intensyvumą ekrane, kaip parodyta žemiau. Vertės atimamos iš numatytųjų reikšmių, kad būtų pasiekta nulis. Tai praverčia nusprendžiant spalvą.
Čia numatytosios vertės yra RGB reikšmės, kurios buvo paimtos nepadėjus jokio objekto prieš jutiklį. Tai priklauso nuo aplinkinių šviesos sąlygų ir šios vertės gali skirtis priklausomai nuo aplinkos. Iš esmės kalibruojame jutiklį standartiniams rodmenims. Taigi pirmiausia paleiskite programą nedėdami jokio objekto ir atkreipkite dėmesį į rodmenis. Šios vertės nebus arti nulio, nes ant jutiklio visada kris šiek tiek šviesos, kad ir kur jį padėtumėte. Tada atimkite tuos rodmenis su rodmenimis, kuriuos gausime įdėję bandomą objektą. Tokiu būdu galime gauti standartinius rodmenis.
Avietė Pi taip pat užprogramuota palyginti R, G ir B reikšmes, kad būtų galima nustatyti šalia jutiklio esančio objekto spalvą. Šį rezultatą rodo šviečiantis RGB šviesos diodas, prijungtas prie „Raspberry Pi“.
Taigi trumpai tariant
1. Modulis aptinka šalia paviršiaus esančio objekto atspindėtą šviesą.
2. Spalvų jutiklio modulis suteikia R arba G arba B išėjimo bangą, kurią paeiliui pasirinko Raspberry Pi per kaiščius S2 ir S3.
3. CD4040 skaitiklis ima bangą ir išmatuoja dažnio vertę.
4. PI ima dažnio vertę iš skaitiklio kiekvienai spalvai kas 100 ms. Po vertės paėmimo kiekvieną kartą PI iš naujo nustato skaitiklį, kad nustatytų kitą vertę.
5. Raspberry Pi atspausdina šias reikšmes ekrane ir palygina šias vertes, kad aptiktų objekto spalvą ir galiausiai švytėtų RGB šviesos diodas tinkama spalva, priklausomai nuo objekto spalvos.
Mes vykdėme aukščiau pateiktą seką savo „Python“ kode. Visa programa pateikiama žemiau su demonstraciniu vaizdo įrašu.
Čia „Raspberry Pi“ užprogramuota aptikti tik tris spalvas, todėl galite atitinkamai suderinti R, G ir B reikšmes, kad aptiktumėte daugiau savo skonio spalvų.