Wie bekomme ich den Arduino dazu, dass der Klingelknopf ein Event auslöst

  • Hallo und danke für das tolle Projekt.


    Ich habe die DoorPi Platine von Erik in Version 29 hier liegen und habe noch arge Verständnisprobleme.
    Als erstes möchte ich den an der Platine über den Arduino angeschlossenen Klingelknopf nutzen um ein Event auszulösen.
    Allerdings scheitert es an meinem Anfängerwissen.


    Was habe ich bisher gemacht:
    Auf dem RPI laufen DoorPi und der MpegStreamer
    Am V29-Board habe ich Nextion Display, Klingeltaster, Lautsprecher, Bewegungsmelder, Micro, PiCam (vorübergehend, bis eine USB-Cam da ist) angeschlossen
    Auf der Fritzbox habe ich einen Sip-Zugriff eingerichtet (Nr. 622)


    Nun stehe ich auf dem Schlauch und suche vergeblich einer anfängertauglichen Anleitung, wie ich den Arduino so konfiguriere, dass ich den Klingeltaster nutzen kann.
    Könnt Ihr mir weiterhelfen? Ich weiß schon nicht, wie ich über den Pi auf den Arduino zugreife. Brauche ich da Treiber für?


    Freue mich über Hilfe und Links. :rolleyes:

  • Hallo,


    ich bin auch Einsteiger, habe aber den Arduino dazu verwendet um iButton oder Tastereingänge (10) an Doorpi weiter zu reichen. Das Board kenne ich nicht. Ich denke aber es ist mit USB verbunden. Stichwort: usb_plain


    Vorher auf dem Raspberry mit "sudo raspi-config" --> Interfacing Options --> Serial --> Shellzugriff auf "Nein", den Serial Port aber "enabled" lassen.


    Auf dem Doorpi in der doorpi.ini


    [keyboards]
    onboardpins = gpio
    arduino = usb_plain


    [onboardpins_OutputPins]
    37 = LED #Led an Pin 37 angeschlossen


    [arduino_InputPins]
    schalter1 = out:LED,1,0,1 #wenn vom Arduino über USB der String "schalter1" kommt, dann led an und nach 1sek wieder aus


    [onboardpins_keyboard]
    bouncetime = 200
    mode = BOARD
    polarity = 1
    pressed_on_keydown = True
    pull_up_down = PUD_OFF


    [arduino_keyboard]
    bouncetime = 2000
    input_stop_flaginput_stop_flag = \n
    port = /dev/ttyACM0 #Hier musst du in /dev nachsehen welche Schnittstelle beim stecken des Arduino aktiv wird und das dann evtl. ersetzen...
    baudrate = 9600


    Testsketch für Arduino:


    const int tasterpin = 2;


    void setup()
    {
    Serial.begin(9600);
    pinMode(tasterpin,INPUT_PULLUP);
    }


    void loop()
    {
    if(tasterpin == HIGH)
    {
    Serial.println("schalter1");
    delay(300);
    }


    }



    Wenn Du jetzt einen Taster am Arduino drückst, der an Port 2 angeschlossen ist, wird der String "schalter1" an die serielle Schnittstelle ausgegeben. Das Serial.Println sorgt dafür, das nach dem String ein carriage return gesendet wrid. Das braucht Doorpi um zu erkennen, das jetzt das Stringende erreicht ist. Doorpi nimmt den String entgegen und löst anhand des Eintrages in der doorpi.ini eine Aktion aus. In dem Fall die LED.


    Gruß
    Joachim

  • Klasse! Vielen Dank für Deine ausführliche Erklärung. Das werde ich testen.


    Zwei Fragen noch:
    1.) Der Arduino ist per FTDI angebunden. Funktioniert Deine Vorghensweise dann auch (also Erkennung der Buttons auf dem Arduino)?
    2.) Wie bekomme ich den Sketch auf den Arduino? Welche Software brauche ich dazu auf dem RPI (vgl. 1.) )?

  • Danke auch Dir.


    Da der Arduino auf dem Board anscheinend "intern" über USB (FTDI) verbunden ist, muss das anscheinend über den RPI laufen (kann mich nicht über einen USB-Port anschließen).
    Hintergrund ist, dass der Arduino im eingebauten Zustand per RPI geflasht werden kann.
    Link -- DoorPi Board V29


    Bedeutet für mich, dass ich das über den RPI bewerkstelligen muss (wenn ich das richtig verstehe).