Table des matières:

Relais I2C avec IDE Arduino : 5 étapes
Relais I2C avec IDE Arduino : 5 étapes

Vidéo: Relais I2C avec IDE Arduino : 5 étapes

Vidéo: Relais I2C avec IDE Arduino : 5 étapes
Vidéo: Как сделать ПЛК LDmicro Arduino с ЖК-дисплеем I2C 2024, Novembre
Anonim
Relais I2C avec IDE Arduino
Relais I2C avec IDE Arduino

Je commande une belle carte relais mais il n'y avait pas d'instruction ArduinoIDE, juste Raspberry Pi e.o. Je découvre comment l'utiliser avec Arduino et je veux le partager afin que vous puissiez gagner du temps.

Exemple original de RaspberryPi:

wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099

La bonne chose est que vous pouvez empiler jusqu'à 4 planches. Vous pouvez donc utiliser max. 4 x 4 = 16 relais sur un bus I2C.

Il y a aussi quelques inconvénients:

  • petites terminaisons, ne conviennent pas à un fil de 1 mm2
  • vous ne pouvez pas changer le câblage des connecteurs inférieurs lorsqu'ils sont empilés ensemble

Mais la planche reste pratique.

Étape 1: câblage

Câblage
Câblage
Câblage
Câblage
Câblage
Câblage

Sur les photos, vous pouvez voir le câblage.

Le 52Pi a besoin à la fois de 5V (pour les relais) et de 3,3V (puce I2C).

Donc 5 fils nécessaires:

  • GND à GND
  • 5 V à 5 V
  • 3,3 V à 3,3 V
  • SLA à SLA
  • SCL à SCL

Si vous utilisez un Arduino UNO ou autre 5 V attention aux max 3, 6 V du contrôleur I2C ! Utilisez des résistances ou bien pour abaisser le 5 V des PIN's Arduino !

Étape 2: Exemple de code simple:

/* Exemple Arduino IDE (ESP) pour la carte relais I2C.

* Par Laurens Korste www.boktorrobotica.nl * libre d'utilisation. */ #include // pour la configuration de l'annulation de la communication I2C () { // cette règle n'est pas destinée à UNO ou aux cartes avec des broches I2C dédiées Wire.begin (D1, D2); // rejoindre le bus i2c avec SDA=D1 et SCL=D2 pour NodeMCU } void loop() { Wire.beginTransmission(0x10);/* commencer à transmettre à l'adresse I2C 10 (pour changer également en 11, 12 ou 13) */ Wire.write(0x01); /* choix relais 1 (sur 4) sur la carte 10 (aussi 0x02, 0x03, 0x04) */ Wire.write(0xFF); /* positionne le relais 1 de la carte 10 sur ON. tous les nombres > 0 le feront */ Wire.endTransmission(); /* arrêter la transmission */ délai(3000); Wire.beginTransmission (0x10); /* */ Wire.write(0x01); Wire.write(0x00); /* met le relais 1 de la carte 10 sur OFF */ Wire.endTransmission(); /* arrêter la transmission */ délai(3000); }

Étape 3: Code de test à quatre relais

/* sketch par Laurens Korste pour Arduino (ESP / NodeMCU)

* Mais d'autres cartes feront aussi * www.boktorrobotica.nl * Dans ce schéma, les 4 relais seront activés et désactivés */ #include // pour la communication I2C void setup() { Serial.begin(115200); // commence la série pour le débogage (9600 pour UNO) Wire.begin(D1, D2); // rejoindre le bus i2c avec SDA=D1 et SCL=D2 de NodeMCU pas besoin de UNO } void loop() { for (int i=1; i<=4; i++){ Wire.beginTransmission(0x10); // commence par l'adresse du périphérique Wire.write(i); // choix du relais Wire.write(0xFF); // envoyer le code "on" FF (chaque compte de 01 à FF fera l'affaire) Wire.endTransmission(); // arrête de transmettre Serial.write(i); Serial.println(" aan "); retard(1000); Wire.beginTransmission (0x10); // commence par l'adresse du périphérique Wire.write(i); Wire.write(0x00); // Envoie le code "off" Wire.endTransmission(); // arrête de transmettre Serial.write(i); Serial.println(" uit "); retard(1000); } }

Étape 4: Mon projet

Mon projet
Mon projet
Mon projet
Mon projet

J'ai écrit un code pour faire fonctionner mes 3 volets. Cela peut se faire avec des interrupteurs mais aussi avec l'application BLYNK, Voir image.

  • Un appui court commencera à déplacer un obturateur (ou l'arrêtera lorsqu'il bouge).
  • Un appui long et les trois volets s'ouvrent (ou se ferment ou s'arrêtent).
  • Double pression: les volets passent en position "trous".

Comme on peut le voir sur la photo, j'ai également intégré un capteur de température et de luminosité.

Maintenant, tout sur un bon PCB de base et soigneusement dans une boîte.

Étape 5: Appeler un relais avec une seule commande

Elle est utile si vous n'avez besoin que d'une seule commande pour activer ou désactiver un relais. Vous trouverez ci-dessous une fonction qui peut le faire (avec lowbyte et highbyte).

/* sketch par Laurens Korste pour Arduino (ESP / NodeMCU) avec I2C relaysboard * Mais d'autres cartes feront aussi * href= https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099; www.boktorrobotica.nl * Dans ce croquis, le relais sera activé par un appel; *// #include // pour la communication I2C // Déclaration des relais. 4 PCB par PCB 4 relais possibles. Dans ce schéma, seuls deux PCB // PCB et relais sont fusionnés afin qu'ils puissent être appelés avec une commande const byte PutOn=0xFF; //commande pour allumer const byte PutOff=0x00; //commande pour éteindre mot const Relay1bord1=0x1001; //vous pouvez hasarder les noms par exemple Relay1 mot const Relay2bord1=0x1002; //vous pouvez hasarder les noms par exemple Relay2 mot const Relay3bord1=0x1003; //vous pouvez hasarder les noms par exemple Relay3 mot const Relay4bord1=0x1004; //vous pouvez hasarder les noms par exemple Relay4 const word Relay1bord2=0x1101; //vous pouvez hasarder les noms par exemple Relay5 const w ord Relay2bord2=0x1102; //vous pouvez hasarder les noms par exemple Relay6 mot const Relay3bord2=0x1103; //vous pouvez hasarder les noms par exemple Relay7 mot const Relay4bord2=0x1104; //vous pouvez hasarder les noms par exemple Relay8 mot const Relay1bord3=0x1201; //vous pouvez hasarder les noms par exemple Relay9 mot const Relay2bord4=0x1302; //vous pouvez hasarder les noms par exemple Relay14 void setup() { Serial.begin(115200); // commence la série pour le débogage (9600 pour UNO) Wire.begin(D1, D2); // rejoindre le bus i2c avec SDA=D1 et SCL=D2 de NodeMCU pas besoin de UNO } void loop() { // pour basculer le relais 4 sur PCB 2 sur RelayActie(Relay4bord2, PutOn); retard(1000); // pour désactiver le relais 4 sur PCB 2 RelayActie(Relay4bord2, PutOff); retard(1000); } void RelayActie(mot Relay, byte OnOrOff){ Wire.beginTransmission (highByte(Relay)); Wire.write (lowByte(Relay)); Wire.write (OnOrOff); Wire.endTransmission(); }

Conseillé: