USB TTL Adapter

  • ich beschäftige mich nun seit 6 Wochen mit dem Raspi, habe Fhem am laufen und nun soll noch eine Türsprechanlage kommen. Vor zwei Wochen habe ich mir die nötige Hardware wie Picam, Piface Digital und USB Sound besorgt und soweit habe ich auch das am laufen. Klingeln, gegensprechen und Nachricht auf der Fritzbox hinterlassen und Mail per Snapsgot läuft alles super.


    Damit es nicht langweilig wird möchte ich nun die Türsprechstelle um ein Nextion Display als aktives Namensschild mit Klingelfunktion und einen RFID Leser erweitern und nun muss ich doch mal um Hilfe bitten. Beide Bauteile möchte ich mit einem USB TTL Adapter am Raspi anschließen und da fangen dann meine Probleme an. Ich habe entsprechende Adapter in der Bucht gekauft und entsprechend angeschlossen. Wenn ich nun eines der Geräte an meinen Windows PC anschließe und mit Putty den Comport abfrage bekomme ich den entsprechenden Wert vom Display oder RFID angezeigt. Der Raspi erkennt auch die USB Adapter wie es scheint, wie kann ich es entsprechend überprüfen und vor allem wie bekomme ich es in Doorpi rein und löse entsprechende Events aus?


    Schon jetzt sage ich Danke für eure Hilfe!

    • Offizieller Beitrag

    Nextion Display als aktives Namensschild mit Klingelfunktion

    https://wiki.fhem.de/wiki/DoorPi_und_FHEM#Nextion-Subsystem



    und einen RFID Leser

    https://wiki.fhem.de/wiki/DoorPi_und_FHEM#iButton-Subsystem


    @pahenning hat das sehr gut beschrieben und könnte Dir viel Zeit ersparen, wenn Du die Anleitung nutzt.


  • @pahenning hat das sehr gut beschrieben und könnte Dir viel Zeit ersparen, wenn Du die Anleitung nutzt.


    Vielen Dank motom001 für deine Antwort.


    Beides hatte ich vorher schon beim Suchen für eine Lösung gefunden, nur reicht mein bisheriges Wissen nicht aus um es zu verstehen. Außerdem möchte ich zumindest das Meiste verstehen was ich mache um evt. Fehler auch zu finden und dann zu beseitigen. Nur kopieren und einfügen nicht so das was ich wollte, auch wenn es viel einfacher und schneller ist.


    Gibt es evt. irgend wo Beispiele wie man TX bzw RX Werte in Doorpi einliest oder wieder ausgibt? Kann ich zum Beispiel mit mehr als nur einen Arduino am Raspberry arbeiten und wenn ja wie spreche ich die Geräte an um an dem einem zum Beispiel das Nextion Display zu betreiben und mit dem anderen Arduino den RFID-Leser der dann die Paketbox für den DPD Fahrer öffnet. Auch wenn das alles 6 Monate länger dauert als fertige Skripte zu verwenden ist mir das lieber, weil ich dann verstanden habe.



    Vielen Dank! Peter

    • Offizieller Beitrag

    Nur kopieren und einfügen nicht so das was ich wollte, auch wenn es viel einfacher und schneller ist.

    Vorbildliche Einstellung...


    Dann geht es hier los:

    • [lexicon]DoorPi Aufbau und Funktionsweise[/lexicon]
    • [lexicon]Installation DoorPi mittels PyPi auf einem Raspberry Pi + Raspbian[/lexicon]
    • [lexicon]Start von DoorPi im Trace-Modus[/lexicon]

    Danach empfehle ich grob die Dateien:
    https://github.com/motom001/Do…/keyboard/from_rdm6300.py
    https://github.com/motom001/Do…eyboard/from_usb_plain.py


    Nicht 100% verstehen, sondern den Sinn und Zweck davon begreifen - das hilft sehr viel bei der Fehlersuche und Konfiguration.


    Dann kannst Du Dir ein DoorPi mit beliebig vielen USB-keyboards anlegen und betreiben...

  • Vielen Dank motom001,

    damit bin ich erst mal eine Weile beschäftigt und bis ich meine Arduino Nano mit FT232RL aus China hier ankommen hoffe ich die Materie entsprechend besser zu verstehen.


    Die Dateien wie zB. from_rdm6300.py werden die im folgenden Verzeichnis angelegt? /usr/local/etc/DoorPi/doorpi/keyboard/


    Cu netpit

    • Offizieller Beitrag

    folgenden Verzeichnis angelegt? /usr/local/etc/DoorPi/doorpi/keyboard/

    Etwas von hinten in die Brust, aber grundsätzlich ja.
    Besser wäre [lexicon]Installation DoorPi mittels GitHub auf einem Raspberry Pi + Raspbian[/lexicon]
    Die Git Arbeitskopie muss dabei ja nicht unter '/tmp/DoorPi' abgelegt werden, sondern persistent im Filesystem an passender Stelle.


    Der Vorteil dabei ist, dass Du die Änderungen an Deiner Arbeitskopie mir später auf GitHub pushen kannst um Deine Entwicklung in Gesamt-DooPi einfließen zu lassen.


    Noch besser wäre es vom master Branche einen "USB-Development" Branche zu erzeugen und darin zu arbeiten um schlussendlich alle Änderungen gesammelt an den master Branch zurückgeben zu können.

  • Vielen Dank für deine Antwort,
    ich warte immer noch auf meine Lieferung ausChina und dann werde ich starten um Rest auch noch ans laufen zu bekommen.


    ----------------------------------------


    Der Vorteil dabei ist, dass Du die Änderungen an Deiner Arbeitskopie mir später auf GitHub pushen kannst um Deine Entwicklung in Gesamt-DooPi einfließen zu lassen.


    Noch besser wäre es vom master Branche einen "USB-Development" Branche zu erzeugen und darin zu arbeiten um schlussendlich alle Änderungen gesammelt an den master Branch zurückgeben zu können.


    ------------------------------------------


    Sorry, aber für mich als Anfänger hätte das auch eine Begleitschreiben aus China sein können! Ich verstehe nur Bahnhof


    Cu Peter

  • Hallo netpit,
    ich bastle so ziemlich gerade am gleichen rum wie du es geplant hast. Folgendes ist überigens bei den China arduinos mit ftdi zu beachten, bei manchen ist am ftdi der Test pin nicht dem Ground verbunden (Pin 25 und 26). Dann kommt es zu Problemen beim Neustart des arduinos, wenn dieser per USB verbunden ist. Als Lösung hilft nur die zwei Pins mit dem Lötzinn verbinden.
    Da ich auch neu in C++ und Phyton unterwegs bin, wusste ich nicht genau was und wie genau seriell übertragen wird. Das Nextion Keyboard von Wal ist ziemlich identisch mit dem USB Plain Keyboard. Übertragen werden immer nur die Definitionen der Output Pins also beim Nextion z.B. page 0 page 1 usw. und dass immer nur zeichenweise. Du musst die Befehle zusammen setzten und dann auswerten (ein Protokoll schreiben) In- und Output Stop Flags sind ganz hilfreich, ich habe dafür ein Semikolon verwendet.
    Bei mir läuft jetzt alles soweit, falls Du möchtest kann ich mein Arduino Sketch hier mal einstellen.


    Viele Grüße
    Armin

  • Hallo Armin,


    vielen Dank für deine Antwort. Auf jeden Fall scheinst du viel mehr von der Materie zu verstehen wie ich!

    zeichenweise. Du musst die Befehle zusammen setzten und dann auswerten (ein Protokoll schreiben) In- und Output Stop Flags sind ganz hilfreich, ich habe dafür ein Semikolon verwendet.


    Bei mir läuft jetzt alles soweit, falls Du möchtest kann ich mein Arduino Sketch hier mal einstellen.

    Das wäre super wenn du mir den Sketch zur Verfügung stellen kannst. Ich habe zwar immer noch nicht die Arduino´s, aber das sollte nun nicht mehr so lange dauern! Vielen Dank für den Löttip!


    Gruß Peter

  • Hallo Netpit,


    ich habe mal mein Sketch angehängt. Ist nicht besonders schön, ich habe auch keine Kommentare drin da es ja für mich gedacht war.


    Im Variablen Teil werden die Ein und Ausgänge definiert und die Standartwerte angelegt, dann kommt die Funktion für das lesen der Eingänge (readbutton) sobald ein Eingang auf Low gezogen wird, wird die Nummer des Inputpins ausgegeben gefolgt von einem Semikolon.


    Dann kommt das Protokoll für die Ausgänge (parseCommand) hier wird der seriel übertragene Befehl solange zusammengesetzt bis ein Semikolon kommt. Sind es die Befehle Pinon X, Pinoff X oder Pintogle X wird der entspechende Outputpin (X) angeschaltet (Pinon), ausgeschaltet (Pinoff) oder in den jeweiligen anderen Status geändert (Pintogle).


    Zum Schluss folgt das Hauptprogramm, hier sind die Inputputpins leider noch hardcoded, wollte ich aber mal noch ändern.


    In der doorpiconf ist es egal ob wie du die Befehle schreibst (Großbuchstaben oder Kleinbuchtaben), beim USB_Plain_Keyboard musst du beim Input_flag und beim Outputflag das Semikolon eintragen damit das ganze funktioniert.


    Also wie du siehst noch ausbaufähig ;)


    Viele Grüße


    Armin

  • Hallo Armin,


    entschuldige, dass ich dieses alte Thema nochmal aufwärme. Eine Frage habe ich aber noch zur Definition in der doorpi.ini.
    So siehts bis jetzt aus:



    welche Daten sendet Doorpi und wie wird das definiert?


    Der Arduino erwartet ja z.B. den String "pinon 13;" kann das dann so funktionieren?



    Code
    21.[arduinopins_OutputPins]
    22.13 = pinon 13;
    23.[EVENT_OnKeyPressed_XXX]
    24.10 = out:13;1


    Vielen Dank für eure Arbeit und Hilfe!


    Gruß
    Florian

  • Hallo,


    ich glaube, Du bist hier etwas in der falschen Spur. Erläutere doch mal kurz was Du bezwecken möchtest.
    In Deiner Konfiguration ist einiges im Argen...Das wird so leider nix.


    Evtl. gibt es ja einen ganz anderen Lösungsansatz....


    Joachim

  • Hallo,


    Ich möchte gern die Türstation mit Nextion(als Türschild, Pinpad etc), Arduino(soll Klingeltaster abfragen und einen Ibutton prüfen) abgesetzt vom RPI(im Keller) betrieben. Um nicht einzelne Pins per Kabel zum Raspberry zu übertragen möchte ich gern die serielle Verbindung zum Arduino dafür nutzen.
    Bisher klappt die Steuerung des Arduino zumindest schonmal in der Konsole. Probleme habe ich beim Senden der Daten aus Doorpi heraus.
    Im Grunde ist mir nicht klar wie die Definition der Ausgangspins im USB_plain Keyboard aussehen muss. I2C möchte ich nicht verwenden.
    Der von Armin angehängte Sketch (s.o.) diente mir als Vorlage für meinen Arduinosketch, daher auch die [output_stop_flag = ;]. Kurzum mein Arduino erwartet den String [pinon 13;] und schaltet dann testweise die onboard Led an.
    Wie bringe ich Doorpi dazu diesen String zu senden.


    Danke vorab!


    Florian

  • ich würde das anders machen. Die Klingeltaster am Arduino anbringen und dann einen entsprechenden String an Doorpi schicken, der dann als Aktion einen Call auslöst- nicht umgekehrt. Dann ist das recht einfach. So mache ich das zumindest...auch mit ibutton und MQTT. Und wenn dann der gdrückte Klingeltaster am Arduino auch noch eine Aktion auslösen soll, ist das ja dann kein Thema...

  • Mit dem Nexion habe ich keine Erfahrung. Ich nutze ein ein blaues 4x20 LCD, das ich über die GPIO Pins bediene. Damit bin ich recht flexibel. Messages werden dann mit einem Pythonscript geschrieben. Geht auch mit LCD4Linux...


    Mit DTMF schiebe ich dann, egal wo ich bin, definierte Texte auf das Display....

  • Ich habe die Lösung hier im Forun finden können. Es gibt eine release note in der die Konfiguration des Usb_plain Keyboards beschrieben wird, also für alle die wie ich auf der Suche sind:



    Beste Grüße
    Florian