Beruflich Dokumente
Kultur Dokumente
Vielen Dank, dass Sie sich für unser TCS3200 Farbsensor-Modul von AZ-
Delivery entschieden haben. In den nachfolgenden Seiten werden wir Ihnen
erklären wie Sie das Gerät einrichten und nutzen können.
Have fun!
Inhaltsverzeichnis
Einführung.....................................................................................................3
Technische Daten..........................................................................................4
Pinbelegung..................................................................................................5
Wie man die Arduino IDE einrichtet...............................................................7
Wie man den Raspberry Pi und Python einrichtet.......................................11
Verbindung des Sensors mit dem Atmega328p..........................................12
Sketch-Beispiel........................................................................................13
Verbindung des Sensors mit dem Raspberry Pi..........................................18
Python-Skript...........................................................................................19
-2-
Einführung
Der Sensor kann eine Vielzahl von Farben auf der Grundlage ihrer
Wellenlänge erkennen. Mit jedem Filter können Sie nur eine bestimmte
Farblichtintensität messen. Wenn Sie zum Beispiel den roten Filter wählen,
wird nur rotes Licht durchgelassen, Blau und Grün werden nicht gemessen.
Wir erhalten nur die rote Lichtintensität. Genauso können wir mit den
anderen Filtern nur blaue oder grüne Farblichtintensität messen.
-3-
Technische Daten
Der Ausgang des Geräts ist so ausgelegt, dass ein Standard-TTL- oder
CMOS-Logikeingang über kurze Entfernungen angesteuert werden kann.
Wenn am Ausgang Leitungen von mehr als 50mm (12in) verwendet
werden, wird ein Puffer oder ein Linedriver empfohlen.
-4-
Pinbelegung
Der TCS3200 Farbsensor besitzt acht Pins. Die Pinbelegung ist wie folgt:
Die Ausgabe des Sensors (am OUT-Pin) ist eine Rechteckwelle mit einem
Tastverhältnis von 50% mit einer Frequenz, die direkt proportional zur
Lichtintensität (Bestrahlungsstärke) ist. Die Ausgabefrequenz kann an den
zwei Steuereingangspins, S0 und S1, um einen der drei vorhandenen
Werte skaliert werden.
-5-
Die Pins S2 und S3 werden für die Auswahl des Farbfilters verwendet:
S2 S3 Color filter
LOW LOW Roter
LOW HIGH Blauer
HIGH LOW No filter (clear)
HIGH HIGH Grüner
-6-
Wie man die Arduino IDE einrichtet
Falls die Arduino-IDE nicht installiert ist, folgen Sie dem link und laden Sie
die Installationsdatei für das Betriebssystem Ihrer Wahl herunter.
-7-
Für Linux Benutzer, laden Sie eine Datei mit der Erweiterung .tar.xz
herunter, die extrahiert werden muss. Wenn sie extrahiert ist, gehen Sie in
das extrahierte Verzeichnis und öffnen Sie das Terminal in diesem
Verzeichnis. Zwei .sh Skripte müssen ausgeführt werden, das erste
namens arduino-linux-setup.sh und das zweite heißt install.sh.
Das zweite Skript mit der Bezeichnung install.sh-Skript muss nach der
Installation des ersten Skripts verwendet werden. Führen Sie den folgenden
Befehl im Terminal (extrahiertes Verzeichnis) aus: sh install.sh
Nach der Installation dieser Skripte gehen Sie zu All Apps, wo die
Arduino-IDE installiert ist.
-8-
Fast alle Betriebssysteme werden mit einem vorinstallierten Texteditor
ausgeliefert (z.B. Windows mit Notepad, Linux Ubuntu mit Gedit,
Linux Raspbian mit Leafpad usw.). Alle diese Texteditoren sind für den
Zweck des eBooks vollkommen in Ordnung.
-9-
Wenn die Arduino-IDE unter Windows verwendet wird, lauten die
Portnamen wie folgt:
Für Linux Benutzer, ist zum Beispiel der Portname /dev/ttyUSBx, wobei x
für eine ganze Zahl zwischen 0 und 9 steht.
- 10 -
Wie man den Raspberry Pi und Python einrichtet
- 11 -
Verbindung des Sensors mit dem Atmega328p
Verbinden Sie den TCS3200 Farbsensor mit dem Atmega328p, wie unten
abgebildet:
- 12 -
Sketch-Beispiel
- 13 -
void loop() {
read_20();
delay(100);
// Setting Roter filters
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
frequency = pulseIn(OUT, LOW);
Serial.print("Roter = ");
Serial.print(frequency);
Serial.print("\t");
delay(200);
// Setting Grüner filters
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
frequency = pulseIn(OUT, LOW);
Serial.print("Grüner = ");
Serial.print(frequency);
Serial.print("\t");
delay(200);
// Setting Blauer filters
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
frequency = pulseIn(OUT, LOW);
Serial.print("Blauer = ");
Serial.println(frequency);
delay(200);
stop_all();
delay(4000);
}
- 14 -
Laden Sie den Sketch in den Serial Monitor (Tools > Serial Monitor).
Die Ausgabe sollte wie folgt aussehen:
Um diese Werte zu erhalten, legen Sie farbiges Papier mit blauer, roter oder
grüner Farbe vor den Sensor. Die Werte, die nicht ausgewählt werden, sind
die Werte, wenn sich kein Hindernis vor dem Sensor befindet. In der Nähe
des Sensors darf sich außer den On-Board-LEDs des Sensors keine
andere Lichtquelle befinden.
- 15 -
Zu Beginn des Sketches werden fünf Makros erstellt, die digitale E/A-Pin-
Nummern des Atmega328p darstellen, an denen Pins des Sensors
angeschlossen sind. Danach wird die ganzzahlige Variable namens
frequency erstellt. Diese Variable stellt die Ausgangsfrequenz am OUT-
Pin des Sensors dar.
- 16 -
macht und am Ende jedes Zyklus die stop_al() Funktion ausgeführt wird,
was den Frequenzskalierer deaktiviert.
- 17 -
Danach werden die Filter für Rot mit folgendem Code ausgewählt:
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
Dann werden die Filter auf Grün gestellt. Die Frequenz wird erneut gelesen
und die Daten werden im Serial Monitor angezeigt. Danach wird dasselbe
für den blauen Filter gemacht.
- 18 -
Verbindung des Sensors mit dem Raspberry Pi
Verbinden Sie den TCS3200 Farbsensor mit dem Raspberry Pi, wie unten
abgebildet:
- 19 -
Python-Skript
Der folgende Code wurde modifiziert und stammt von einem Skript unter
folgendem link.
- 20 -
print('[Press CTRL + C to end the script!]')
try:
set_scalers()
while True:
# setting Roter filters
GPIO.output(S2, GPIO.LOW)
GPIO.output(S3, GPIO.LOW)
time.sleep(0.3)
start = time.time()
for impulse_count in range(NUM_CYCLES):
GPIO.wait_for_edge(OUT, GPIO.FALLING)
duration = time.time() - start # seconds to run for loop
Roter = NUM_CYCLES / duration # in Hz
print('Roter value: {}'.format(Roter))
- 21 -
# two tabs
# setting Grüner filters
GPIO.output(S2, GPIO.HIGH)
GPIO.output(S3, GPIO.HIGH)
time.sleep(0.3)
start = time.time()
for impulse_count in range(NUM_CYCLES):
GPIO.wait_for_edge(OUT, GPIO.FALLING)
duration = time.time() - start
Grüner = NUM_CYCLES / duration
print('Grüner value: {}'.format(Grüner))
time.sleep(2)
except KeyboardInterrupt:
print('\nScript end!')
finally:
turn_off()
GPIO.cleanup()
- 22 -
Speichern Sie das Skript unter dem Namen color.py. Um das Skript
auszuführen, öffnen Sie das Terminal in dem Verzeichnis, in dem das Skript
gespeichert wurde, und führen Sie den folgenden Befehl aus:
python3 color.py
Um das Skript zu beenden, drücken Sie 'Strg + C' auf der Tastatur.
- 23 -
Das Skript beginnt mit dem Import der zwei Libraries, RPi.GPIO und time.
Geben Sie dem GPIO-Pin den Namen "BCM" und alle Warnungen bei der
Verwendung von GPIO-Schnittstellen werden deaktiviert.
Dann werden sechs Variablen erstellt, wobei die Variablen S0, S1, S2, S3
und OUT die Pins des Raspberry Pi darstellen, an denen die Pins des
Sensors verbunden werden. Die sechste Variable heißt NUM_CYCLES und
wird verwendet, um die Frequenz der Impulse am OUT-Pin auszulesen. Je
höher der Wert in der NUM_CYCLES Variable, desto genauer ist das
Ergebnis.
Danach werden die Pinmodi für die S0, S1, S2, S3 und OUT-Pins eingestellt
(S0, S1, S2 und S3 zu OUTPUT, und der OUT-Pin zu INPUT).
Die erste Funktion heißt turn_off() und dient dem Ausschalten der LEDs
auf dem Sensor. In der Funktion werden die Zustände der Pins S0, S1, S2
und S3 auf LOW gestellt.
- 24 -
Als Nächstes wird der try-except-finally Codeblock erstellt. In dem
try Codeblod wird als Erstes die set_scalers() Funktion ausgeführt,
wodurch im Anschluss der Indefinite loop Codeblock erstellt wird (while
True:). In dem Indefinite loop Codeblock geschieht dasselbe wie in der
loop() Funktion des Atmega328p. Die Filter für die Rot werden eingestellt,
dann werden die Impulse ausgelesen und die Daten werden angezeigt.
Dasselbe geschieht bei den blauen und grünen Filtern. Am Ende des
Indefinite Codeblocks wir die turn_off() Funktion ausgeführt, um die
LEDs des Sensors auszuschalten. Danach wird eine Verzögerungszeit von
4 Sekunden eingestellt und die set_scalers() Funktion wird ausgeführt.
Um das Skript zu beenden, drücken Sie STRG + C auf der Tastatur. Das
wird Keyboard Interrupt genannt. Wenn das passiert wird der except
Codeblock ausgeführt und die Nachricht Script end! wird im Terminal
angezeigt.
- 25 -
Jetzt sind Sie dran! Entwickeln Sie Ihre eigenen Projekte und Smart- Home
Installationen. Wie Sie das bewerkstelligen können, zeigen wir Ihnen
unkompliziert und verständlich auf unserem Blog. Dort bieten wir Ihnen
Beispielskripte und Tutorials mit interessanten kleinen Projekten an, um
schnell in die Welt der Mikroelektronik einzusteigen. Zusätzlich bietet Ihnen
auch das Internet unzählige Möglichkeiten, um sich in Sachen
Mikroelektronik weiterzubilden.
https://az-delivery.de
Viel Spaß!
Impressum
https://az-delivery.de/pages/about-us
- 26 -