Arduino UNO Q - TCS3200D/TCS230 Farbsensor
Der TCS3200D/TCS230-Farberkennungssensor erkennt Farben durch Messung der roten, grünen und blauen Lichtintensität. Er gibt ein frequenzbasiertes Signal aus, das Sie mit pulseIn() auslesen und nach der Kalibrierung auf Standard-0-255-RGB-Werte zuordnen.
In diesem Tutorial lernen Sie:
- Wie der TCS3200D/TCS230-Farbsensor funktioniert
- Wie man ihn an die Arduino UNO Q MCU anschließt
- Wie man das Kalibrierungs-Sketch ausführt, um genaue Messwerte zu erhalten
- Wie man RGB-Werte liest und dominante Farben erkennt
- Wie man Bridge verwendet, um Farbdaten auf die Linux-Seite (Python) freizugeben
- Wie man Telegram verwendet, um RGB-Werte und Farbnamen auf Arduino UNO Q abzufragen
- Wie man OpenClaw auf Arduino UNO Q mit dem Farbsensor verwendet

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den TCS3200D/TCS230 Farbsensor
Der TCS3200D/TCS230 verwendet ein 8×8-Array von Photodioden: 16 rotgefiltert, 16 grüngefiltert, 16 blaugefiltert und 16 transparent. Er wandelt Lichtintensität in eine Rechteckwelle-Frequenz am OUT-Pin um. Durch Schalten von Filtern und Messen von Impulsbreiten erhalten Sie RGB-Werte.
Die meisten Module enthalten weiße LEDs zur Ausleuchtung des Zielobjekts, was konsistente Messwerte bei unterschiedlichem Umgebungslicht ermöglicht.

Pinbelegung
- VCC: 5V Stromversorgung
- GND: Masse
- S0, S1: Ausgangfrequenzskalierung — HIGH/LOW = 20% Skalierung (empfohlen)
- S2, S3: Farbfilterwahl
- OUT: Rechteckwelle-Frequenzausgang — mit pulseIn() messen
- OE: Ausgangaktivierung (aktiv LOW) — die meisten Module haben dies intern auf GND verdrahtet
Filterauswahl (S2, S3)
| S2 | S3 | Filter |
|-----|-----|---------|
| LOW | LOW | Rot |
| LOW | HIGH| Blau |
| HIGH| LOW | Transparent|
| HIGH| HIGH| Grün |
Impulsbreite → RGB
Niedrigere Impulsbreite = mehr Licht = höherer RGB-Wert. Nach der Kalibrierung:
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| TCS3200 Pin | Arduino UNO Q MCU |
|---|---|
| VCC | 5V |
| GND | GND |
| S0 | D4 |
| S1 | D3 |
| S2 | D6 |
| S3 | D5 |
| OUT | D7 |
Programmierung für TCS3200 Farbsensor
- Konfigurieren Sie alle Steuerpins als Ausgänge, OUT als Eingang, stellen Sie die Frequenzskalierung ein:
- Wählen Sie einen Filter und messen Sie die Impulsbreite:
- Nach der Kalibrierung auf 0-255 abbilden (niedrigere PW = heller = höherer Wert):
Arduino UNO Q Code — Kalibrierung
Die TCS3200-Messwerte werden durch Entfernung, LED-Helligkeit und Umgebungslicht beeinflusst. Führen Sie zunächst dieses Kalibrierungs-Sketch aus, um die minimalen und maximalen Impulsbreiten für Ihr spezifisches Setup zu ermitteln.
Schnellschritte
Zum ersten Mal mit Arduino UNO Q? Folgen Sie zunächst dem Tutorial Getting Started with Arduino UNO Q.
- Anschließen: Verdrahten Sie den Farbsensor mit der Arduino UNO Q MCU wie im Schaltplan gezeigt.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihre Arduino UNO Q erkennt.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App.

- Geben Sie der App einen Namen, z.B.: ColorSensorCalibration
- Klicken Sie auf Create, um zu bestätigen.

- Fügen Sie das Sketch ein: Kopieren Sie den Kalibrierungscode oben und fügen Sie ihn in sketch/sketch.ino ein.
- Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Run.

- Bewegen Sie den Sensor über verschiedene Objekte: ein weißes Objekt, ein schwarzes Objekt und einige farbige Objekte.
- Beobachten Sie, wie die Min- und Max-Werte nach 10–20 Sekunden stabilisieren — notieren Sie sie sich.
App Lab Konsolenausgabe
Aus der obigen Ausgabe sind Ihre Kalibrierungswerte:
- redMin = 42, redMax = 210
- greenMin = 55, greenMax = 185
- blueMin = 60, blueMax = 172
Arduino UNO Q Code — RGB-Werte auslesen
Aktualisieren Sie nun die sechs Kalibrierungsvariablen oben mit Ihren tatsächlichen Werten und laden Sie dieses Haupt-Sketch hoch, um genaue RGB-Werte auszulesen.
Schnellschritte
- Suchen Sie im obigen Code diese Zeilen:
- Ersetzen Sie alle sechs 0-Werte durch Ihre Kalibrierungsnummern. Zum Beispiel:
- Erstellen Sie eine neue App (oder aktualisieren Sie die vorherige), fügen Sie den Code ein und klicken Sie auf Run.
- Richten Sie den Sensor auf verschiedene farbige Objekte und beobachten Sie den Serial Monitor.
App Lab Konsolenausgabe
Bridge: Linux + MCU
Dieser Abschnitt zeigt, wie beide Prozessoren der Arduino UNO Q zusammenarbeiten, damit die Linux-Seite kontinuierlich Farbdaten über Bridge auslesen kann:
- Der Farbsensor ist mit der MCU verbunden — die MCU liest alle 600 ms RGB-Werte aus und speichert sie zwischen
- Die MPU kann den Sensor nicht direkt auslesen — sie ruft Bridge-Funktionen auf, um RGB oder Farbnamen zu erhalten
- Die MPU hat Wi-Fi — bei vollständiger Debian Linux-Ausführung kann sie auf Telegram-Befehle mit Live-Farbmessungen reagieren
- Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
- ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie diese niemals in Benutzercode
Die MCU-Schleife liest die R-, G-, B-Kanäle alle 600 ms aus und speichert die Werte. Bridge-Callbacks stellen die zwischengespeicherten Werte sofort zur Verfügung, ohne zu blockieren.
MCU Code (Bridge)
Python Code (Bridge)
Schnellschritte
- Anschließen: Verdrahten Sie den Farbsensor mit der Arduino UNO Q wie im Schaltplan gezeigt.
- Öffnen Sie Arduino App Lab und erstellen Sie eine neue App namens ColorSensorBridge.
- Aktualisieren Sie Kalibrierungswerte im MCU Bridge-Code (redMin, redMax, usw.) mit Ihren Werten aus dem Kalibrierungs-Sketch.
- Fügen Sie das MCU-Sketch in sketch/sketch.ino ein.
- Fügen Sie den Python-Code in die Python-Datei ein.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Hochladen: Klicken Sie auf die Schaltfläche Run.

- Richten Sie den Sensor auf verschiedene farbige Objekte — beobachten Sie, wie sich die Python-Konsole jede Sekunde aktualisiert.
App Lab Konsolenausgabe
Telegram
Fragen Sie den Farbsensor über Telegram-Befehle aus der Ferne auf Arduino UNO Q ab.
MCU-Sketch: Behalten Sie das gleiche MCU-Sketch aus dem vorherigen Bridge-Abschnitt bei.
Python Code (Telegram)
Schnellschritte
- Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren tatsächlichen Telegram-Bot-Token von BotFather.
- Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
- Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie das gleiche MCU-Sketch bei).
- Klicken Sie auf die Schaltfläche Run und testen Sie mit den Befehlen /rgb und /color.
App Lab Konsolenausgabe
ArduinoBot
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial
Projektideen
Sie können viele nützliche Projekte mit dem TCS3200-Farbsensor und Arduino UNO Q erstellen:
- Farbsortiermaschine: Erkennen Sie die Farbe von Objekten auf einem Förderband über Bridge — lassen Sie die MCU ein Servo auslösen, um jedes Objekt auf der Grundlage seiner erkannten Farbe zum richtigen Behälter umzuleiten
- Remote-Farbprotokollierung: Protokollieren Sie erkannte Farben und RGB-Werte alle 5 Sekunden in eine CSV-Datei unter Linux — verwenden Sie einen Telegram-Befehl /report, um die letzten 10 Messwerte mit Zeitstempel zu erhalten
- Farbaktivierte Warnung: Verwenden Sie Telegram, um eine Zielfarbe zu definieren — wenn der Sensor diese genaue Farbe erkennt, senden Sie sofort eine Telegram-Benachrichtigung (z.B. zur Qualitätskontrolle in einer Produktionslinie)
- Überwachung der Pflanzengesundheit: Richten Sie den Sensor auf Pflanzenblätter — verfolgen Sie täglich den Grünkanal-Wert, um frühes Vergilben oder Verfärbungen zu erkennen, und senden Sie eine Telegram-Warnung, wenn der Grünwert unter einen Schwellenwert fällt
- Interaktives Farbspiel: Senden Sie eine Telegram-Nachricht wie „Zeige mir BLAU in 10 Sekunden" — die MCU liest die Farbe und Python antwortet, ob der Spieler die richtige Farbe vor Ablauf der Zeit gezeigt hat
Fordern Sie sich selbst heraus
Bereit, mit dem TCS3200-Farbsensor auf Arduino UNO Q weiterzugehen? Probieren Sie diese Herausforderungen:
- Leicht: Fügen Sie einen /history-Telegram-Befehl hinzu, der die letzten 5 erkannten Farben mit Zeitstempeln in einer Python-Liste speichert — nützlich zum Überprüfen der letzten Messwerte ohne die Konsole zu überprüfen.
- Mittel: Implementieren Sie Mittelwertbildung: Anstatt einen einzelnen Messwert zwischenzuspeichern, lesen Sie jede R/G/B-Kanal 3-mal durch und geben Sie den Durchschnitt zurück — dies glättet Rauschen und verbessert die Farberkennung.
- Fortgeschritten: Erstellen Sie ein Farblernsystem: Fügen Sie /learn red, /learn green, /learn blue-Telegram-Befehle hinzu, die die aktuelle RGB-Messung erfassen und als Referenz für diese Farbe speichern — verwenden Sie dann diese gespeicherten Referenzen zum Farbabgleich anstelle von hartcodierten Schwellenwerten.