I2C Keyboard

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
    - Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
    -> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
    - Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
    - Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

    Danke...

    • I2C Keyboard

      Hallo,

      mit vielen guten Tips von motom001 - DANKE!!!!! - konnte ich ein kleines Projekt verwirklichen.
      Ein keyboard für doorpi, das mittels I2C kommunizieren kann.

      Hintergrund bei mir: Ich habe eine billige Folientastatur (sh Foto, kostet bei ali*** ca 80 cent inkl Porto), die ich gerne zum Öffnen der Tür (zusätzlich zu RFID) verwenden möchte. Außerdem habe ich noch einige Relais herumliegen, die allerdings nur mit Arduinos direkt funktionieren (5V) - und in Software kenne ich mich ein wenig besser aus als in Hardware....

      Anbei das keyboard-file, das ich mit der aktuellen doorpi-Version (frisch laut Anleitung auf Jessie installiert) getestet habe.
      Außerdem anbei der arduino-Sketch (getestet mit einem UNO), der sowohl die Tastatur als auch ein an Pin 10 des Arduino angeschlossenes Relay bedient. Der Sketch ist ein wenig roh und könnte sicherlich noch wesentlich verbessert werden (zum Beispiel ist der Pin 10 hardcoded) - aber das lässt sich sicherlich gut erweitern.

      Ich hoffe, die enthaltene Doku ist halbwegs verständlich.

      WICHTIG: Damit das funktioniert, muß das python smbus-package installiert sein! geht am raspi mit:
      sudo apt-get install python-smbus

      @motom001: Kannst Du das evtl ins repo mit aufnehmen? Würde mich darüber sehr freuen...

      Cheers,

      Pula
      Images
      • arduino.jpg

        121.79 kB, 800×1,066, viewed 220 times
      • keypad.jpg

        96.59 kB, 800×1,066, viewed 203 times
      Files
      • from_i2c.zip

        (2.42 kB, downloaded 188 times, last: )
      • tastatur_doorpi.zip

        (2.02 kB, downloaded 172 times, last: )

      The post was edited 1 time, last by pula ().

    • Für einen Anfänger wie mich:

      • In welchen Pfad muss den die Keyboard Datei "from_i2c.py" kopiert werden?
        -> Lösung: /usr/local/lib/python2.7/dist-packages/doorpi
      • Wie sieht den eine Beispiel doorpi.ini aus um auf eingehende und ausgehende Events zu reagieren?
        -> Ich habe mich mal eingelesen und mir ein Beispiel gebastelt; passt das so?
        [keyboards]
        arduino = i2c

        [arduino_keyboard]
        delete_key = D #key which clears the entered code - default D
        dismisstime = 10 #time in seconds after the entered code is cleared - default 10 ; ich habe zur eingabe eines längeren Codes 10 Sekunden Zeit?
        i2cadress = 0x04 #i2c adress of the arduino, default 4
        port = 1 # local i2c port: 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1) - default 1
        register = I2C register (not used in the sketch, default 1)
        chars = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,*,# #chars accepted by keyboard default 0,1,2,3,4,5,6,7,8,9,A,B,C,D,*,# ; Kann ich das auch noch beliebig mit anderen Buchstaben erweitern?
        maxretries = 10 # how often should we retry sending to I2C before giving up? default 10

        [arduino_InputPins]
        L = call:11 # Wenn vom arduino "L" kommt ruft es Nummer "11" an
        Was müsste ich hier machen, wenn ich weitere Aktionen ausführen will? (also nicht nur einen Anruf starten)

        [arduino_OutputPins]
        SEND = ArduinoTerminal #needed
        Hier habe ich meine Probleme, wann kommt "SEND"?
        Hätte Jemand mal ein Beispiel wie ich z.B. zum Arduino ein "A" schicke, wenn jemand die Telefontastenkombi fürs Türöffnen betätigt hat?

      • Zum Arduino-Code:
        Du nutzt:
        Wire.onReceive
        Wire.onRequest
        Wann fragt den der Master (also doorPi) denn den Slave (also den Arduino) an, das der Arduino Daten senden soll?
        Wäre es nicht sinnvoller gewesen einfach dann Daten an den Pi zu senden, wenn die beim Arduino anliegen?


      • Hast du den Arduino direkt verbunden oder mithilfe eines Pegelwandlers?
        -> wohl direkt verbunden; macht das aber keine Probleme? (5V Arduino vs. 3,3V RPi)


      Hoffe das ich mich mit den Fragen nicht zu stark blamiere :D

      The post was edited 3 times, last by LostWolf ().