TTP223B digitaler, kapazitiver Touch Sensor über den GPIO-Port des Raspberry Pi mit Python verwenden
In diesem Beitrag zeige ich dir, wie du einen TTP223B Touch Sensor über den GPIO-Port des Raspberry Pi mit Python verwenden kannst. Um nicht nur eine Aktion bei Berührung des Sensors mittels Textausgabe zu erzeugen, steuere ich in diesem Testaufbau noch zwei LEDs zur besseren visuellen Darstellung.
Was ist ein digitaler, kapazitiver Sensor?
Ein digitaler kapazitiver Sensor ist ein elektronisches Bauteil, das merkt, wie nah oder wie fest du etwas berührst. Der Sensor macht aus dieser Information ein digitales Signal, das er über die Signalleitung ausgibt.
Wie funktioniert ein digitaler, kapazitiver Sensor?
Ein digitaler, kapazitiver Sensor speichert die elektrische Ladung, die sich zwischen zwei leitenden Platten bildet. Diese Ladung verändert sich, wenn du etwas berührst oder dich etwas näherst. Diese Veränderung misst der Sensor und macht daraus ein digitales Signal.
Vorteil des digitalen, kapazitiven Sensors gegenüber eines Tasters?
Ein Taster ist ein mechanischer Schalter, der durch Druck oder Berührung ausgelöst wird. Ein digitaler, kapazitiver Sensor ist ein elektronisches Bauteil, das die Kapazität eines elektrischen Feldes misst. Ein Vorteil des Sensors gegenüber eines Tasters ist, dass er berührungslos arbeiten kann.
Funktionsweise des Projektaufbaus
Mit dem Projektaufbau zeige ich dir wie du einen TTP223B Touch Sensor über den GPIO-Port des Raspberry Pi mit Python zur Steuerung einer grünen und einer roten LED.
Das Python-Programm schaltet zu Beginn die rote LED ein und wartet auf den Signaleingang vom TTP223B Touch Sensor.
Wenn der digitale kapazitive TTP223B Touch Sensor eine Berührung über den GPIO-Port des Raspberry Pi meldet, schaltet das Programm die rote LED ab und die grüne LED an.
Voraussetzung und Vorbereitung
Für den hier beschriebenen Aufbau benutzte ich folgende Hardware/Bauteile
- Raspberry Pi, in meinem Fall ein Raspberry Pi 4
- Netzteil mit einen USB-C Stecker
- wenn du keinen Raspberry Pi 400 oder den Raspberry Pi nicht im Headless-Betrieb nutzen willst, benötigst du neben einen Monitor natürlich auch noch eine Tastatur und Maus
- einen TTP223B Touch Sensor
- ein Breadboard und entsprechende Kabel zum Testen, wenn du noch keines hast, empfiehlt sich gleich ein entsprechendes Set
- optional eine GPIO Kabel Erweiterungsplatine, da diese die Arbeit etwas erleichtert
- optional, wenn du die LED’s auch ansteuern möchtest: 2x LED, 2x BC547 Transistoren und 2x 150 Ohm Widerstände
Wenn du noch keinen Raspberry Pi eingerichtet hast, dann schaue dir doch einmal meinen Beitrag “Ersteinrichtung eines Raspberry Pi mit Raspberry Pi OS” an. Solltest du mit dem Begriff Headless-Betrieb nichts anfangen können oder mehr darüber wissen wollen, dann schau dir einmal meinen Beitrag “Raspberry Pi für den Headless-Betrieb ohne Monitor, Tastatur und Maus installieren” an.
Wenn du die empfohlene Version des Raspberry Pi OS verwendest, sollte bereits das RPI.GPIO-Paket enthalten sein. Ansonsten kannst du es über den Befehl „sudo apt install python3-rpi.gpio“ installieren.
Wie immer solltest du dein System auf den neusten Stand halten. Dies machst du, indem du über das Terminal folgenden Befehl ausführst:
1 |
sudo apt update && sudo apt upgrade |
Eine Übersicht über wichtige und häufig verwendete Befehle stelle ich dir auf einem kleinen Spickzettel für Raspberry Pi OS Befehle zur Verfügung.
Anschluss des TTP223B Touch Sensors
Der TTP223 Touch Sensor ist mit verlöteten Board (B-Modell) und ohne dieses erhältlich. Ich habe mich für den Testaufbau für die B-Variante entschieden.
Wie du siehst, der Anschluss des TTP223B Touch Sensors ist einfach und mit keinen Problemen verbunden. Drei Kabel, davon zwei die Spannungsversorgung (Vcc und GND) und eines als Signalleitung zum Rechner, in meinem Fall ein Raspberry Pi.
Projektaufbau mit einem TTP223B Touch Sensor und 2 LEDs
Der Anschluss des TTP223B Touch Sensors ist, wie oben schon gezeigt, mit drei Kabeln erledigt. Für den Projektaufbau auf dem Breadboard, benötigst du ein je ein Kabel zur Verbindung für die 5V Betriebsspannung (Pin2), den Ground (Pin6) und die Signalleitung (Pin36) des Raspberry Pi’s mit dem Breadboard.
Die rote LED verbindest du auf dem Breadboard mit der Anode (Plus-Pol / längeres Beinchen) mit dem 150 Ohm Widerstand und diesen einmal mit den 5V. Die Kathode der LED (Minus-Pol / kürzeres Beinchen) verbindest du mit dem Emitter (drittes Beinchen) des BC547 Transistors. Den Kollektor (erstes Beinchen) des BC547 Transistors verbindest du mit GND (Ground) und das mittlere Beinchen (Basis) verbindest du mit dem Pin37 (GPIO26) des Raspberry Pis.
Das Python-Programm für den TTP223B Touch Sensor
Um die Funktion nicht nur am Code zu zeigen, habe ich noch zwei LEDs in den Aufbau eingebaut. Solltest du nur den Touch Sensor nutzen oder testen wollen, lässt du im Code einfach die entsprechenden Zeilen weg.
Um den TP223B-Sensor am Raspberry Pi unter Python zu verwenden, werden keine speziellen Pakete benötigt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#!/usr/bin/python # coding=utf-8 # Python Version 3.9 # ttp223.py #------------------------- # Einbindung der notwendigen Grundbibliotheken import os, sys, time # Einbindung der GPIO - Bibliothek import RPi.GPIO as GPIO #Konfiguration der PIN's sensor_pin = 16 led_rot_pin = 26 led_gruen_pin = 19 GPIO.setmode(GPIO.BCM) # BCM Nummern verwenden GPIO.setup(sensor_pin, GPIO.IN) # PIN36 - BCM Nummer 16 - GPIO16 wird Eingang GPIO.setup(sensor_pin, GPIO.IN,pull_up_down=GPIO.PUD_UP) GPIO.setup(led_rot_pin, GPIO.OUT) #PIN 37 - BCM Nummer 26 - GPIO26 wird Ausgang GPIO.setup(led_gruen_pin, GPIO.OUT) #PIN 35 - BCM Nummer 19 - GPIO19 wird Ausgang print ("Starte Dauerschleife zur Abfrage des Sensors:") try: while True: if (GPIO.input(sensor_pin) == False): #der Sensor liefert den Wert 0 = keine Berührung print ("noch keine Berührung :-(") GPIO.output(led_rot_pin, GPIO.HIGH) #rote LED leuchtet GPIO.output(led_gruen_pin, GPIO.LOW) #grüne LED leuchtet nicht else: #der Sensor liefert den Wert 1 = eine Berührung print ("du hast mich berührt :-)") GPIO.output(led_rot_pin, GPIO.LOW) #rote LED leutet nicht GPIO.output(led_gruen_pin, GPIO.HIGH) #grüne LED leuchtet #Pause time.sleep(0.2) except KeyboardInterrupt: print('Programm wurde mittels STRG+C abgebrochen') GPIO.cleanup() |
Die einzelnen Programmschritte habe ich versucht, mit entsprechenden Kommentierungen im Programmcode zu erklären.
Der Ablauf lässt sich wie folgt zusammen fassen:
- Laden der notwendigen Python-Bibliotheken
- Konfiguration der verwendeten Pin’s – wenn du andere Pins verwendest, kannst du diese hier angeben (die Kommentierung müsste ggf. angepasst werden)
- Konfiguration der GPIO Ports
- Start des Programms in einer Dauerschleife in einem try – Block
- except – Block für die Bereinigung des GPIO-Status nach Drücken der STRG-C auf der Tastatur
Bereitgestellte Dateien
Die Fritzing Projektdatei steht auch auf meiner Fritzing Projektseite auf diesem Blog zum Download zur Verfügung.
Wenn du dir das Abtippen oder Kopieren des Codes sparen möchtest, steht dir der Code als Textdatei zum Download bereit.
Gib im Terminal folgenden Befehl ein, dieser lädt die Textdatei herunter und speichert diese als Python-Datei ab.
1 |
wget -O ttp223.py https://webnist.de/downloads/ttp223b.txt |
Diesen Beitrag habe ich auch in einem Video zusammengefasst und auf YouTube hochgeladen.
Kleiner Hinweis, alle Kommentare werden moderiert.
Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.