Pins / GPIOs mehrfach doppelt belegt, bei LCD+Touch + RFID Scanner

  • Hallo liebes RPi Forum,


    ich versuche mich neu an RPi. Es sei mir verziehen für evtl. Noobie Fragen. Umso mehr wäre ich über detailiertere Erklärungen/Links etc. dankbar.


    Zu meinem Vorhaben:

    Ich habe ein Projekt angedacht, bei dem ich per RFID Karte den PC sperren/ausloggen bzw. freischalten/einloggen möchte und die Nutzungsdauer loggen möchte (über Datenbank). Zudem soll über das Touchscreen Programme auf dem PC gestartet/beendet werden und gewisse Infos auf dem RPi Screen ausgegeben werden können.


    Auf dem Weg dorthin habe ich für meinen Testgerät RPi 4 folgende zusätzliche Teile angeschafft:

    1) 5" HDMI LCD Display mit einem Touch-Panel. Beides kann direkt über die GPIOs mit dem RPi verbunden und auch mit Strom versorgt werden. Das Display lässt sich auch separat über Micro-USB mit Strom vom RPi USB versorgen. Hier der Link zu: http://www.lcdwiki.com/5inch_HDMI_Display

    2) Ein RFID Lese- und Schreibgerät, was ebenfalls über die GPIOs versorgt und angebunden werden soll. Als Beispiel: https://www.instructables.com/id/RFID-RC522-Raspberry-Pi/


    Nun habe ich folgendes erstes Problem. Wie es scheint nutzt sowohl das Touchpanel mit "dtoverlay=ads7846" als auch der RFID Scanner mit SPI teilweise die selben Pins. Korrigiert mich, wenn ich falsch liege. Gibt es eine Methode die Doppeltbelegung zu umgehen? Eine Recherche ergab zudem, dass andere ähnliche Probleme mit haben. Aber aus deren Lösungsvorschlag wurde ich nicht schlau. (https://github.com/goodtft/LCD-show/issues/72)


    Kann man die overlays umschreiben? Die Belegung vom RFID Scanner auf die freien Pins 27-40 verschieben, wenn die anderen für LCD+Touch Screen benutzt werden?


    Ich bin für jeden Tipp sehr dankbar!

    PS: Da das mein Erstbeitrag hier ist, hoffe ich auf die wichtigsten Infos gegeben zu haben. Ansonsten einfach nachfragen bzw auch sagen wie ich euch bestimmte Infos aus RPi auslesen kann. Thx

  • Ich bin für jeden Tipp sehr dankbar!


    Das Display lässt sich auch separat über Micro-USB mit Strom vom RPi USB versorgen.

    Falls der Strom nicht ausreicht, ist es besser ein weiteres Netzteil anzuschliessen


    bei dem ich per RFID Karte den PC sperren/ausloggen bzw. freischalten/einloggen möchte

    Mit PC meinst du Windows? Hast du schon eine Vorstellung, wie der RPi dem PC erzählt was er machen soll?


    GPIO und SPI:


    SPI ist ein Bus-System bei dem die einzelnen Teilnehmer vom Master angesprochen werden. Um mit einem bestimmten Teilnehmer zu kommunizieren, aktiviert der Master einen Pin, der nur mit eben diesem Teilnehmer verbunden ist. Die Kommunikationsleitungen haben alle gleich. Diesen Pin legst du in Hardware mit einem Draht fest oder ist auf der Platine mit einer Brücke vorgegeben. (Lies dir den Link zu SPI durch)


    Wenn du zwei Platinen verwendest wirst du das Problem bekommen, dass beide auf die Stiftleiste gesteckt werden wollen.

    Glaube ersetzt kein Wissen

  • Danke für die Tipps.

    Falls der Strom nicht ausreicht, ist es besser ein weiteres Netzteil anzuschliessen

    Richtig, das stellt kein Problem dar.

    Mit PC meinst du Windows? Hast du schon eine Vorstellung, wie der RPi dem PC erzählt was er machen soll?

    Ja, Windows 10. Ich hatte zunächst gehofft eine USB Verbindung wäre möglich und ich übermittle Tastatureingaben. Aber das geht ja wohl nicht mit meinem RPi4. Was aber gehen sollte, dass man Win10 über RPi4 mit dem samba-common package und dem Befehl: "net rpc shutdown -I IPADDRESS -U USERNAME%PASSWORD" hinbekommen sollte. Ich habe da noch eine Fehlermeldung, kann es noch nicht bestätigen. Ein aufwecken des PCs über WoL sollte dann auch möglich sein, wenn es Hardwareseitig unterstützt wird.


    Zur Not ist zu überlegen auf Raspberry Zero oder notfalls Arduino umzusteigen. Da ist eine direkte Verbindung über USB ja möglich.


    Wenn du zwei Platinen verwendest wirst du das Problem bekommen, dass beide auf die Stiftleiste gesteckt werden wollen.

    Dieses Problem als auch das Problem der doppeltbelegten Pins, habe ich momentan mit eurer Hilfe zu lösen, falls überhaupt möglich. Besonders wenn unterschiedliche transfer protocols verwendet werden. Ich habe gelesen, dass man die Pins für SPI softwareseitig vertauschen kann, sodass es gar nicht zu einer Doppeltbelegung kommt (siehe verlinkten Beitrag aus Post#1). Irnwie kann man SPI0 und SPI1 etc. vorgeben.


    Kann mir jemand was zu "net rpc ..." und SPI Pin Vertauschen bzw weitere SPI was sagen.


    Vielen Dank

  • Auf diesem Bild (aus deinem Link) siehst du die Belegung des Steckers vom Monitor. Beachte dabei, das ist die Sicht von unten und die beiden Stiftreihen sind vertauscht. Wenn du nun diese Belegung mit dem Pinout vergleichst siehst du, dass nur die Pins 1 bis 26 verwendet werden (der erste RPi hatte nur 26 Pins) und du die Pins 27 bis 40 für das RFID-Modul verwenden kannst. Mit den Pins 35, 38 und 40 steht dir ein zweiter SPI-Bus zur Verfügung.


    Die Pins mit CEx im Namen werden zum Auswählen der entsprechenden Chips/Module verwendet. Dies legst du mit der elektrischen Verbindung (also einem Draht) fest. Die meisten sind im Programm einstellbar. Beim Monitor wahrscheinlich eher nicht, da dieses fest auf den RPi gesteckt wird. Was zu deinem zweiten Problem führt.


    Wenn du dir das Bild vom gesteckten Monitor anschaust, dann siehst du rechts vom Stecker noch 2x7 Pins, die unbelegt sind und auf die du Drähte (DuPont-Wire) stecken kannst. Entweder als einzelne Drähte oder als Flachkabel, im Tutorial werden einzelne Drähte verwendet. Die Datenleitungen und Masse/GND/Ground sind damit vorhanden, nur die 3,3V fehlen noch. Denn die Pins die 3.3V (Pin 1 und 17) führen werden vom Monitor verwendet. Wie gut sind deine mechanischen Fähigkeiten? Kannst du löten oder feine Sachen bearbeiten?



    Zu net rpc usw. kann ich dir nicht helfen.

    Glaube ersetzt kein Wissen

  • Ja richtig, der Stecker blockiert alle Pins von 1-26 verwendet sie aber nicht alle. Die Pins für den Reader sind bei SPI0 somit blockiert aber auch in Verwendung.

    1) Wie kann ich dem Reader also den freien SPI1 Bus zuweisen (Pins 35, 38, 40)? Einfach umstecken auf diese Datenleitungen genügt ja sicher nicht :/?

    2) Wie/Wo muss ich das mit CEx anpassen? Bei Pin36 wäre ja CE2 unbelegt.


    3) Die 3.3V kann ich abzweigen. Löten und feine Arbeiten sind kein Problem. Alle Utensilien und auch die Kabel zum Verbinden sind vorhanden.


    Das mit "net rpc" gehe ich später an. Es gibt auch Alternativ Ideen.

  • Problem gelöst:

    1.) in /boot/config.txt folgendes hinzufügen zum aktivieren des AUX SPI (SPI1): dtoverlay=spi1-3cs

    da SPI1_CE0 und CE1 durch den Sockel geblockt war, bin ich auf den dritten also SPI1_CE2 ausgewichen.

    2.) in der library MFRC522 (/usr/local/lib/pyth.../mfrc522/MFRC522.py): bus=1, device=2 gesetzt für SPI1.2

    3.) den reset pin von 22 auf einen beliebigen z.B. 37 gesetzt: auch in der MFRC522 library die 22 mit 37 bei PIN_RST getauscht


    fertig. GND und 3.3V einfach freie Pins gewählt.