In diesem Projekt werden wir die Farben mithilfe des TCS3200-Farbsensormoduls mit Raspberry Pi erkennen. Hier haben wir Python-Code für Raspberry Pi verwendet, um die Farben mithilfe des TCS3200-Sensors zu erkennen. Um die Farberkennung zu demonstrieren, haben wir eine RGB-LED verwendet. Diese RGB-LED leuchtet in derselben Farbe, von der das Objekt in der Nähe des Sensors dargestellt wird. Derzeit haben wir Raspberry Pi so programmiert, dass nur rote, grüne und blaue Farben erkannt werden. Sie können es jedoch so programmieren, dass nach dem Abrufen der RGB-Werte jede Farbe erkannt wird, da jede Farbe aus diesen RGB-Komponenten besteht. Überprüfen Sie das Demo-Video am Ende.
Wir haben zuvor die RGB-Werte der Farben mit demselben TCS3200 mit Arduino gelesen und angezeigt. Bevor Sie fortfahren, informieren Sie sich über den TCS3200-Farbsensor.
TCS3200 Farbsensor:
TCS3200 ist ein Farbsensor, der mit der richtigen Programmierung eine beliebige Anzahl von Farben erkennen kann. TCS3200 enthält RGB-Arrays (Red Green Blue). Wie in der Abbildung auf mikroskopischer Ebene gezeigt, kann man die quadratischen Kästchen im Auge des Sensors sehen. Diese quadratischen Kästchen sind Arrays der RGB-Matrix. Jede dieser Boxen enthält drei Sensoren zur Erfassung der Lichtintensität von Rot, Grün und Blau.
Wir haben also rote, blaue und grüne Arrays auf derselben Ebene. Während wir also Farbe erkennen, können wir nicht alle drei Elemente gleichzeitig erkennen. Jedes dieser Sensorarrays muss einzeln nacheinander ausgewählt werden, um die Farbe zu erfassen. Das Modul kann so programmiert werden, dass es die jeweilige Farbe erkennt und die anderen verlässt. Es enthält Stifte für diesen Auswahlzweck, der später erläutert wurde. Es gibt einen vierten Modus, der kein Filtermodus ist. Ohne Filtermodus erkennt der Sensor weißes Licht.
Wir werden diesen Sensor an Raspberry Pi anschließen und den Raspberry Pi so programmieren, dass er je nach Farbe eine angemessene Reaktion liefert.
Erforderliche Komponenten:
Hier verwenden wir Raspberry Pi 2 Model B mit Raspbian Jessie OS. Alle grundlegenden Hardware- und Softwareanforderungen wurden bereits erläutert. Sie können sie in der Einführung zu Raspberry Pi und zum Blinken der Raspberry PI-LED nachschlagen, um loszulegen.
- Raspberry Pi mit vorinstalliertem Betriebssystem
- TCS3200 Farbsensor
- CD4040 Zählerchip
- RGB LED
- 1KΩ Widerstand (3 Stück)
- 1000uF Kondensator
Schaltplan und Anschlüsse:
Die Verbindungen, die zum Verbinden des Farbsensors mit Raspberry Pi hergestellt werden, sind in der folgenden Tabelle aufgeführt:
Sensorstifte |
Himbeer-Pi-Stifte |
Vcc |
+ 3.3v |
GND |
Boden |
S0 |
+ 3.3v |
S1 |
+ 3.3v |
S2 |
GPIO6 von PI |
S3 |
GPIO5 von PI |
OE |
GPIO22 von PI |
AUS |
CLK von CD4040 |
Die Anschlüsse für den CD4040-Zähler mit Raspberry Pi sind in der folgenden Tabelle aufgeführt:
CD4040 Pins |
Himbeer-Pi-Stifte |
Vcc16 |
+ 3.3v |
Gnd8 |
gnd |
Clk10 |
Sensor nicht mehr vorhanden |
Reset11 |
GPIO26 von PI |
Q0 |
GPIO21 von PI |
Q1 |
GPIO20 von PI |
Q2 |
GPIO16 von PI |
Q3 |
GPIO12 von PI |
Q4 |
GPIO25 von PI |
Q5 |
GPIO24 von PI |
Q6 |
GPIO23 von PI |
Q7 |
GPIO18 von PI |
Q8 |
Keine Verbindung |
Q9 |
Keine Verbindung |
Q10 |
Keine Verbindung |
Q11 |
Keine Verbindung |
Unten finden Sie den vollständigen Schaltplan der Schnittstelle zwischen Farbsensor und Himbeer-Pi:
Arbeitserklärung:
Jede Farbe besteht aus drei Farben: Rot, Grün und Blau (RGB). Und wenn wir die Intensität von RGB in einer Farbe kennen, können wir diese Farbe erkennen. Wir haben diese RGB-Werte zuvor mit Arduino gelesen.
Mit dem TCS3200-Farbsensor können wir nicht gleichzeitig rotes, grünes und blaues Licht erkennen, daher müssen wir sie einzeln überprüfen. Die Farbe, die vom Farbsensor erfasst werden muss, wird über zwei Pins S2 und S3 ausgewählt. Mit diesen beiden Stiften können wir dem Sensor mitteilen, welche Farblichtintensität gemessen werden soll.
Sagen wir, wenn wir die Intensität der roten Farbe erfassen müssen, müssen wir beide Pins auf LOW setzen. Nachdem das ROTE Licht gemessen wurde, setzen wir S2 LOW und S3 HIGH, um das blaue Licht zu messen. Durch sequentielles Ändern der Logik von S2 und S3 können wir die Intensität des roten, blauen und grünen Lichts gemäß der folgenden Tabelle messen:
S2 |
S3 |
Fotodiodentyp |
Niedrig |
Niedrig |
rot |
Niedrig |
Hoch |
Blau |
Hoch |
Niedrig |
Kein Filter (weiß) |
Hoch |
Hoch |
Grün |
Sobald der Sensor die Intensitäten der RGB-Komponenten erkennt, wird der Wert an das Steuerungssystem im Modul gesendet, wie in der folgenden Abbildung dargestellt. Die vom Array gemessene Lichtintensität wird an den Strom-Frequenz-Wandler im Modul gesendet. Der Frequenzumrichter erzeugt eine Rechteckwelle, deren Frequenz direkt proportional zum vom Array gesendeten Wert ist. Mit einem höheren Wert vom ARRAY erzeugt der Strom-Frequenz-Wandler die Rechteckwelle mit höherer Frequenz.
Die Ausgangssignalfrequenz des Farbsensormoduls kann auf vier Stufen eingestellt werden. Diese Stufen werden unter Verwendung von S0 und S1 des Sensormoduls ausgewählt, wie in der folgenden Abbildung gezeigt.
S0 |
S1 |
Ausgangsfrequenzskalierung (f0) |
L. |
L. |
Stromausfall |
L. |
H. |
2% |
H. |
L. |
20% |
H. |
H. |
100% |
Diese Funktion ist praktisch, wenn wir dieses Modul mit niedrigem Takt an das System anschließen. Mit Raspberry Pi wählen wir 100%. Denken Sie daran, dass das Farbsensormodul hier im Schatten einen Rechteckwellenausgang erzeugt, dessen maximale Frequenz für jede Farbe 2500 Hz (100% Skalierung) beträgt.
Obwohl das Modul eine rechteckige Ausgangswelle liefert, deren Frequenz direkt proportional zur auf seine Oberfläche fallenden Lichtintensität ist, gibt es mit diesem Modul keine einfache Möglichkeit, die Lichtintensität jeder Farbe zu berechnen. Wir können jedoch feststellen, ob die Lichtintensität für jede Farbe zunimmt oder abnimmt. Außerdem können wir die Rot-, Grün- und Blauwerte berechnen und vergleichen, um die Lichtfarbe oder die Farbe des an der Oberfläche des Moduls voreingestellten Objekts zu ermitteln. Dies ist also eher ein Farbsensormodul als ein Lichtintensitätssensormodul.
Jetzt werden wir diesen Rechteckwellenausgang dem Raspberry Pi zuführen, aber wir können ihn nicht direkt an PI weitergeben, da der Raspberry Pi keine internen Zähler hat. Also geben wir diesen Ausgang zuerst an den binären Zähler CD4040 und programmieren Raspberry Pi so, dass der Frequenzwert in periodischen Intervallen von 100 ms vom Zähler genommen wird.
Der PI liest also für jede ROTE, GRÜNE und BLAUE Farbe einen Wert von 2500/10 = 250 max. Wir haben Raspberry Pi auch so programmiert, dass diese Werte gedruckt werden, die die Lichtintensitäten auf dem Bildschirm darstellen, wie unten gezeigt. Die Werte werden von den Standardwerten abgezogen, um Null zu erreichen. Dies ist praktisch, wenn Sie die Farbe auswählen.
Hier sind die Standardwerte die Werte von RGB, die aufgenommen wurden, ohne dass ein Objekt vor dem Sensor platziert wurde. Dies hängt von den Umgebungslichtbedingungen ab und diese Werte können je nach Umgebung unterschiedlich sein. Grundsätzlich kalibrieren wir den Sensor für Standardwerte. Führen Sie das Programm also zuerst aus, ohne ein Objekt zu platzieren, und notieren Sie sich die Messwerte. Diese Werte liegen nicht nahe Null, da immer etwas Licht auf den Sensor fällt, unabhängig davon, wo Sie ihn platzieren. Subtrahieren Sie dann diese Messwerte von den Messwerten, die wir erhalten, nachdem Sie ein zu testendes Objekt platziert haben. Auf diese Weise können wir Standardwerte erhalten.
Raspberry Pi ist auch so programmiert, dass die R-, G- und B-Werte verglichen werden, um die Farbe des Objekts in der Nähe des Sensors zu bestimmen. Dieses Ergebnis wird durch eine leuchtende RGB-LED angezeigt, die an Raspberry Pi angeschlossen ist.
Also auf den Punkt gebracht,
1. Das Modul erkennt das Licht, das von dem nahe der Oberfläche platzierten Objekt reflektiert wird.
2. Das Farbsensormodul liefert eine Ausgangswelle für R oder G oder B, die von Raspberry Pi nacheinander über die Pins S2 und S3 ausgewählt wird.
3. Der CD4040-Zähler nimmt die Welle auf und misst den Frequenzwert.
4. PI nimmt den Frequenzwert für jede Farbe alle 100 ms vom Zähler. Nachdem PI den Wert jedes Mal genommen hat, setzt es den Zähler zurück, um den nächsten Wert zu ermitteln.
5. Raspberry Pi druckt diese Werte auf dem Bildschirm und vergleicht diese Werte, um die Objektfarbe zu erkennen und die RGB-LED je nach Objektfarbe in der entsprechenden Farbe zu leuchten.
Wir haben die obige Sequenz in unserem Python-Code befolgt. Das vollständige Programm finden Sie unten mit einem Demonstrationsvideo.
Hier ist Raspberry Pi so programmiert, dass nur drei Farben erkannt werden. Sie können die R-, G- und B-Werte entsprechend anpassen, um mehr Farben nach Ihren Wünschen zu erkennen.