Interphone : simuler un bouton poussoir

Bonjour,

Je suis novice en électronique (je suis dans l'informatique) et je souhaite pouvoir ouvrir la porte de mon immeuble grâce à un Arduino (en plus du bouton physique).

Sur l'interphone, le bouton poussoir possède 6 PIN et il faut appuyer 2 secondes afin que la porte s'ouvre.

J'avais pour idée de souder 2 fils entre le bouton poussoir et l'Arduino et de coder un petit programme qui va permettre d'effectuer l'action, mais je pense qu'il manque des composants, étapes.

S'il y a des passionnés en électronique qui passent par ici et qui souhaitent me guider, je vous en remercie par avance :slight_smile:

Anthony

Bonsoir luffyyfful

Dans un cas comme celui-ci où on ignore ce qui se pasasae sur ces 2 fils, le plus simple est d'utiliser un relais qui simulera la pression du bouton, relais 5v.
image

commandé par l'Arduino.

Pourquoi 6 pin sur le BP?

Cordialement
jpbbricole

Merci pour ton retour jpbbricole.

Voici une photo des 6 PIN du bouton poussoire :

image

Du coup, le plus simple serait de connecter un relais entre l'Arduino et le bouton poussoir ? Comment savoir sur quels PIN je dois souder le relais ?

Par avance merci :slight_smile:

Bonsoir luffyyfful

Si tu peux débrancher l'installation, c'est de presser le bouton et, au moyen d'un ohmemètre, mesurer entre quelles PIN se pontent.
Après brancher le relais sur ces 2 PIN, aux bornes COM et NO:
image

A+
Cordialement
jpbbricole

Super, merci beaucoup pour votre aide, je vais commander ce qu'il faut et essayer tout ça, je vous tiendrais informé et je mettrai le programme aussi.

C'est ohmmètre :wink:

Bonjour,

J'ai enfin terminé la réalisation et ça fonctionne parfaitement, merci pour votre aide.

** Composants **

  • Arduino Nano 33 IOT
  • Relais x2 5V
  • Interphone : 2 Boutons

** Câblage **

Relais GND -> Arduino GND
Relais VCC -> Arduino 5V

Relais IN_1 -> Arduino 8
Relais NO_1 -> Bouton poussoir 1 PIN 1
Relais COM_1 -> Bouton poussoir 1 PIN 2

Relais IN_1 -> Arduino 7
Relais NO_1 -> Bouton poussoir 2 PIN 1
Relais COM_1 -> Bouton poussoir 2 PIN 2

** Programme Arduino **

#include <WiFiNINA.h>
#include <WiFiServer.h>

char ssid[] = "WIFI_SSID";
char password[] = "WIFI_CLE";

WiFiServer server(80);

const int relaisPinActivation = 7;
const int relaisPinOuvrir = 8;
bool activationInProgress = false;
static unsigned long activationStartTime = 0; // Déclarer la variable comme statique
const unsigned long activationDuration = 2000;  // Durée d'activation du relais en millisecondes (2 secondes)
const unsigned long activationCooldown = 30000; // Temporisation entre les activations en millisecondes (20 secondes)

void setup() {

  Serial.begin(9600);

  while (WiFi.begin(ssid, password) != WL_CONNECTED) {
    Serial.println("Tentative de connexion au Wi-Fi...");
    delay(1000);
  }

  Serial.println("Connecté au réseau WiFi");

  pinMode(relaisPinActivation, OUTPUT);
  //digitalWrite(relaisPinActivation, LOW);

  pinMode(relaisPinOuvrir, OUTPUT);
  //digitalWrite(relaisPinOuvrir, LOW);

  server.begin();
  Serial.println("Serveur web démarré");

}


void loop() {

  WiFiClient client = server.available();

  if (client) {

    Serial.println("Nouvelle connexion client");
    String request = client.readStringUntil('\r');
    client.flush();

    if (request.indexOf("/activate") != -1) {

      // Rejeter la requête si activationInProgress est true
      if (activationInProgress) {

        client.println("veuillez_actualiser_dans_30s");
        client.stop();
        return; // Sortir de la fonction loop

      }

      // Lancer le programme
      activationInProgress = true;
      activationStartTime = millis();
      
      // Interphone activation avant ouverture de la porte
      client.println("la_porte_va_s_ouvrir_dans_5s");

      digitalWrite(relaisPinActivation, HIGH);  // Activer le relais
      delay(2000); // Simuler l'appui sur le bouton-poussoir pendant 2 secondes
      digitalWrite(relaisPinActivation, LOW);

      delay(5000);

      digitalWrite(relaisPinOuvrir, HIGH);
      delay(500);
      digitalWrite(relaisPinOuvrir, LOW);

    }

    // Vérifier si le programme est en cours et a dépassé la durée d'activation
    if (activationInProgress && (millis() - activationStartTime >= activationCooldown)) {

      activationInProgress = false;

    }

    client.stop();
    Serial.println("Client déconnecté");
    
  }
  
}

De cette façon, je déclenche le programme en allant sur l'ip de l'arduino, ex : http://192.168.0.1/activate