GPIOs steuern mit Raspberry Pi und 2.8″ Touch-Display

Raspberry Pi und TFT Display

Der Raspberry Pi ist schon seit einigen Jahren auf dem Markt, doch leider konnte ich bis jetzt kein Projekt damit anfangen, was mir auch Spaß machen würde. In letzter Zeit habe ich immer mehr von der Programmierung kleiner GUIs mit Python/Pygame gelesen und da war mein Interesse geweckt. Für den Anfang sollte das eine einfache Schaltfläche sein, mit der man fünf Ausgänge setzen und fünf Eingänge einlesen kann. Ich bin kein bzw. kein guter Programmierer und mit Python bin ich zum ersten mal in Berührung gekommen. Zum Glück gibt es im Netz eine Unmenge an Anleitungen, Tutorials, Open Source Codes usw. Dazu kommt noch, dass der Code ziemlich gut lesbar ist.

Das war quasi ein kleines Projekt für den Anfang. Später will ich mit ein kleines Webradio bauen.

Um das Ganze noch interessanter zu machen, wird die GUI auf dem RPi-Display von Watterott angezeigt und darüber (Touchscreen) bedient.

Hier ist eine kleine Demonstration

 

Folgende GPIOs sind als Ausgänge definiert: 4, 5, 6, 12, 13

Folgende GPIOs sind als Eingänge definiert: 16, 19, 20, 21, 26

Beim Start sind alle Ausgänge auf „LOW“ (Indikator rot). Wenn man auf einen Button drückt, ändert sich der Pegel auf „HIGH“ und der Indikator wechselt von rot auf grün.

Die Eingänge zeigen bei unbelegtem Zustand den Status „HIGH“. Das liegt daran, dass die Pull-Up-Widerstände aktiviert sind. Wird ein LOW-Pegel angelegt, wechselt der Indikator die Farbe von grün auf rot.

Falls jemand Lust hat, das Projekt nachzubauen, hier ist eine Kurze Bauteilliste und eine grobe Anleitung. Ich bin beim Schreiben der Anleitung nicht auf jede Kleinigkeiten eingegangen (wie z.B. Sprache ändern etc.). Anleitungen dafür gibt es echt mehrfach im Netz, sodass man nur kurz eine Suchmaschine anwerfen muss.

Materialliste

  • Raspberry Pi B+
  • RPi-Display
  • GPIO-Adapter
  • Internetverbindung
  • Tastatur
  • USB-Stick
  • Steckbrett + Spielzeug, wie LEDs, Jumper Wires, Taster, was auch immer 🙂

 

Anleitung

  • Skript gpiocontrol.py herunterladen
  • Raspbian Image herunterladen https://github.com/watterott/RPi-Display
  • mit Win32DiskImager oder dd auf eine SD-Karte flashen
  • beim ersten Start:
    • einlogen
      • Benutzer: pi
      • Passwort:  raspberry  (Die Tasten Y und Z sind vertauscht)
    • sudo raspi-config  (Bindestrich befindet sich bei Tastaturen mit deutschem Layout bei „?“)
    • expand Filesystem
    • Wenn nötig, bei Internationalisation, Timezone, Spracheinstellungen und Tastaturlayout anpassen
  • sudo reboot
  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo rpi-update
  • sudo reboot
  • sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_calibrate
    • die fünf Kreuze nacheinander möglichst genau berühren.
  • sudo mkdir /mnt/usb
  • sudo mount /dev/sda1 /mnt/usb/
  • sudo cp /mnt/usb/gpiocontrol.py ~
  • sudo python gpiocontrol.py

Skrpit beim Booten ausführen

  • sudo nano /etc/rc.local
  • und folgende Zeile über dem „exit 0“ einfügen
  • (python /home/pi/gpiocontrol.py)&
  • mit Strg + X schließen, mit Y bestätigen und neu starten.

Python Skript

Die Software ist evtl. nicht ganz sauber geschrieben, aber für mich funktioniert es so, wie es ist 😉

Die Software ist eine Beta und diente für mich als ein einfacher Einstieg in Python/Pygame und GUI Programmierung. Ich rate davon ab, die GUI 24/7 zu verwenden, sonst brennt man evtl. das Muster der GUI in das Display ein (siehe http://de.wikipedia.org/wiki/Einbrennen_(Bildschirm)).

Weitere Informationen

RPi-Display:

https://github.com/watterott/RPi-Displayhttps://github.com/watterott/RPi-Display

Pygame:

http://pygame.org

FBTFT von Notro:

https://github.com/notro/fbtft/wiki

 

15 Gedanken zu „GPIOs steuern mit Raspberry Pi und 2.8″ Touch-Display

  1. Ah, endlich mal einer, der auch wieder was zurückspeist ins Internetz! (hab mir vorgenommen, die CAN-Bus Geschichte aus dem Space sauber dokumentiert zu posten!)… man profitiert so viel von Foren und Blogs!

    • Wow! So schnell wurde noch kein meiner Einträge kommentiert. Danke! 🙂
      Ja, die Informationen in Blogs und Foren, machten es möglich, das Projekt so schnell umzusetzen 🙂

  2. Hi 5-Volt Junkie
    Habe dein Script für das C-Berry Touch Display umgeschrieben und bin im Moment dabei, eine Python-Anbindung für die Touch Funktionen zu schreiben.
    Sieht vielversprechend aus, habe aber noch Klippen zu umschiffen und weiß nicht ob das ganze taugt um es zu veröffentlichen. Aber wenn, wollte ich dich fragen, ob ich das Script dann in veränderter Form weitergeben kann?

    • Hi PiLlhipp,

      vielen Dank für deine Rückmeldung. Ich höre/lese natürlich immer wieder gern, wenn jemand mit meiner Arbeit was anfangen kann.
      Selbstverständlich darfst du den Code verändern und unter gleichen Bedingungen wieder veröffentlichen. Über kleine Erwähnung des Blogs, würde ich mich natürlich auch sehr freuen 🙂

  3. Hi,

    Sorry I don’t speak your language. Do you think a similar set-up could be use to activate a motor/pump instead of controlling a LED light ?

    Thanks

    • That should be not difficult at all. You need a relay for every motor / pump you like to control. Those relays cannot be driven by the RasPi directly, instead you will need an relay driver which is an transistor.

      See this example: https://www.pololu.com/product/2480
      This Board can be controlled with your Pi, and will switch on your motor. It contains the relay as well as the driver transistor.

      If you have havy loads like a swamp cooler or some fat compressor, you will like to have much bigger relays due to the havy inrush current when switching on those loads.

  4. Hallo 5Vollt Junkie

    Erst einmal super Anleitung für dieses Projekt.

    Hast du eventuell auch ein Beispiel für eine grafische Anzeige für Druckluftgeber oder Temperaturfühler.
    Die anpassung der Spannung von den Fühlern ist nicht das Problem wird mit nem A/D Wandler eingespeisst. aber ich hätte gern eine Analoge Anzeige wie die echten Anzeigen meist Halbkreis, auf dem Bildschirm.

    Mit freundlichem Gruss Arno

    • Hallo Arno,

      ich habe leider kein Beispiel dafür. Ich weiß aber, dass es sowas Ähnliches mit einer Weboberfläche realisiert wurde. Frag mal am Besten die Jungs/Mädels im Raspberry-Forum.

  5. Hallo zusammen,

    ich versuche gerade das Script „gpiocontrol.py“ auszuführen. Bin genau nach obiger Anleitung vorgegangen.
    Leider bekomme ich eine Fehlermeldung, die wie folgt ausschaut:
    File „gpiocontrol.py“, line 60, in Screen= pygame.display.set_mode(size)
    Pygame.error: Unable to open mouse
    Kann mir hier jemand weiterhelfen?

    Danke im Voraus

  6. Pingback: Rückblick 2015 – 5Volt-Junkie

    • Hi,
      das Projekt ist schon etwas älter, aber wenn ich mich richtig erinnere, musste man nur die ganzen os.environs rausnehmen. Zeile 11-13.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Bitte löse folgende Rechenaufgabe * Time limit is exhausted. Please reload CAPTCHA.