Bonjour,
Je suis débutant avec Arduino et je souhaiterais utiliser l'arduino pour activer 2 boutons poussoirs sans pousser dessus c'est à dire le codage enverrai une impulsion au bouton 1 ou au second pour l'activer voila pour l'explication courte.
Pour plus de détail j'ai une télécommande additionnelle pour mes 3 volets électriques (ils sont tous appairés sur celle-ci) et je voudrais pouvoir ouvrir et fermer mes volets a distance avec Home Assistant, je cherche donc une solution qui pourrait simuler 1° ouverture des volets 2° fermeture des volets. J'ai soudé 4 cables sur ma télécommande pour l'étendre vers Arduino : bonton up, bouton down, terre et 3v. J'avais essayé avec un ESP32 mais c'est trop complexe pour moi.
Merci d'avance pour votre aide.
Benjamin
Dans l'absolu, c'est indispensable de savoir combien il y a de contact par BP.
Admettons qu'il y ait qu'un seul contact par BP, le cas devient relativement simple:
Pour simuler l'appui sur un BP sans se mélanger les pinceaux et les potentiels, rien de tel que 1 petit relais par BP.
Vous branchez les 2 fils des BP sur les contacts des relais (en parralléle).
Et vous pilotez vos relais par le code.
Il existe des modules relais 100% compatibles sorties Arduino, vous pouvez brancher directement l'entrée commande du relais sur une sortie 5V ou 3.3V Arduino.
Non, je plaisante , la "Terre" d'ici n'est pas celle de là bas dirait un vieil électronicien.
Aprés, comme le dit @J-M-L , il faut d'abord savoir électriquement qui va où avant de brancher ce que @benadmin appelle "la terre" et qui est je présume le 0V (ce n'est pas toujours le cas d'ailleurs).
j'ai hacké une télécommande de garage / portail à code tournant en enlevant les boutons et rajoutant des fils allant à des optocouplers ainsi je peux simuler l'appui sur un bouton de cette télécommande depuis mon arduino. J'utilise HomeSpan depuis un ESP32 pour mettre cela dans mon réseau HomeKit (Apple).
J'en avais parlé dans ce post en anglais
Il faut vérifier si l'appui du bouton met le contact à GND ou à 3V
Bonjour à tous et merci pour vos retours.
J'ai annexé la photo de la télécommande au post les 3 câbles utiles sont le vert (0v ou gnd) le jaune activation vers le haut, le bleu activation vers le bas. Si je connecte le bleu ou le jaune au vert l'activation des volet s'exécute. Le fil rouge n'est pas utile ici.
Donc, avec l'ESP32 (Pour te permettre l'intégration à Home Assistant), en mettant son GND avec le fil vert (terre = GND), les fils bleu et jaunes chacun sur un GPIO de l'ESP, en mettant LOW sur un GPIO, cela doit activer la fonction.
Merci jpbbricole les 2 problèmes que je rencontre avec le ESP32, malgré les recherches que j'ai déjà faites sur le net pour trouver une solution avant d'abandonner et de chercher une alternative ici avec l'arduino, je ne sais pas sur quelle pin connecter mes cables sur le ESP32 mais surtout je suis débutant de débutant en codage donc voilà. En annexe l'ESP32 où j'ai fais les tests sur les pin 25 et 26 au hasard mais je suis dans le brouillard pour le code.
Votre aide est la bienvenue.
Merci a Jef59 pour l'alternative avec relais, schéma très précis merci.
Là encore il me faudra coder mais pour l'activation de 2 relais, je devrais pouvoir trouver ça.
Je préfèrerais passer par le ESP32 , sinon je prendrai cette solution.
Bon dimanche
Essaies ça, il suffit de taper, dans la ligne de commande de l'IDE Arduino, à 115200, HAUT ou BAS pour activer les commandes.
Le programme:
const int cmdVoletsHautPin = 25; // Commande haut fil Jaune
const int cmdVoletsBasPin = 26; // Commande bas fil Bleu
const int cmdVoletsNiveauActif = LOW; // Niveau actif de la commande
void setup()
{
Serial.begin(115200);
pinMode(cmdVoletsHautPin, OUTPUT);
pinMode(cmdVoletsBasPin, OUTPUT);
digitalWrite(cmdVoletsHautPin, !cmdVoletsNiveauActif); // Commande à OFF
digitalWrite(cmdVoletsBasPin, !cmdVoletsNiveauActif); // Commande à OFF
}
void loop()
{
//--------------------------------- Commandes moniteur
if (Serial.available())
{
String cmdRx = Serial.readStringUntil('\n'); // Réception de la commande terminée par Nouvelle ligne
cmdRx.trim(); // Nettoyage de la chaîne reçue
cmdRx.toUpperCase(); // Tout en majuscules
if (cmdRx == F("HAUT"))
{
telecomEnvoiCmd(cmdVoletsHautPin);
}
else if (cmdRx == F("BAS"))
{
telecomEnvoiCmd(cmdVoletsBasPin);
}
else
{
Serial.print(F("Commande inconnue : "));
Serial.println(cmdRx);
}
}
}
void telecomEnvoiCmd(int cmdPin)
{
digitalWrite(cmdPin, cmdVoletsNiveauActif);
delay(200); // Delais de "pression" de la touche
digitalWrite(cmdPin, !cmdVoletsNiveauActif); // Fin de la "pression"
}
Je ne cherche pas à vendre ma solution à relais, ni celle de @J-M-L à optocoupleurs.
Si celle suggérait par @jpbbricole marche, parfait.
Mais celles à opto ou relais permettent (gros avantage quand on ne connait pas le schéma de la "boîte à BP") de séparer, ou isoler électriquement l'ESP et votre télécommande, et ainsi éviter de "drainer" au GND, via des sorties GPIO del'ESP, des courants de valeurs inconnues.
Forcément, ça ne change pas trop le code que @jpbbricole pourrait vous proposer, mais ça rajoute du matériel (opto ou module relais).
Comme le code ne contient pas de serveur WEB et que cela n'est pas nécessaire pour connecter en MQTT un ESP32 à home assistant, ne pas perdre trop de temps sur ESPAsyncWebServer.