Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Ordené una buena placa de relés pero no había instrucciones ArduinoIDE, solo Raspberry Pi e.o. Descubrí cómo usarlo con Arduino y quiero compartirlo para que puedas ahorrar ese tiempo.
Ejemplo original de RaspberryPi:
wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099
Lo bueno es que puedes apilar hasta 4 tablas. Entonces puedes usar max. 4 x 4 = 16 relés en un bus I2C.
También hay algunas desventajas:
- pequeñas terminaciones, no caben cable de 1 mm2
- no puede cambiar el cableado de los conectores inferiores cuando están apilados juntos
Pero sigue siendo útil la tabla.
Paso 1: cableado
En las imágenes se puede ver el cableado.
El 52Pi necesita tanto 5V (para relés) como 3.3V (chip I2C).
Entonces se necesitan 5 cables:
- GND a GND
- 5 V hasta 5 V
- 3.3 V a 3.3 V
- SLA a SLA
- SCL a SCL
Si usa un Arduino UNO u otro 5 V, tenga cuidado con el máximo de 3, 6 V del controlador I2C. ¡Utilice resistencias o para bajar los 5 V de los PIN de Arduino!
Paso 2: Ejemplo de código simple:
/ * Ejemplo de Arduino IDE (ESP) para la placa de relés I2C.
* Por Laurens Korste www.boktorrobotica.nl * uso gratuito. * / #include // para comunicación I2C void setup () {// esta regla no es para UNO o placas con pines I2C dedicados Wire.begin (D1, D2); // une el bus i2c con SDA = D1 y SCL = D2 para NodeMCU} void loop () {Wire.beginTransmission (0x10); / * comienza a transmitir a la dirección I2C 10 (para cambiar también a 11, 12 o 13) * / Wire.escribir (0x01); / * relé de elección 1 (de 4) en la placa 10 (también 0x02, 0x03, 0x04) * / Wire.write (0xFF); / * poner el relé 1 en la placa 10 en ON. todos los números> 0 lo harán * / Wire.endTransmission (); / * dejar de transmitir * / retraso (3000); Wire.beginTransmission (0x10); / * * / Wire.write (0x01); Wire.write (0x00); / * establecer el relé 1 en la placa 10 en APAGADO * / Wire.endTransmission (); / * dejar de transmitir * / retraso (3000); }
Paso 3: Código de prueba de cuatro relés
/ * boceto de Laurens Korste para Arduino (ESP / NodeMCU)
* Pero otras placas también lo harán * www.boktorrobotica.nl * En esta tecla se activarán y desactivarán todos los 4 relés * / #include // para comunicación I2C void setup () {Serial.begin (115200); // comenzar serial para depuración (9600 para UNO) Wire.begin (D1, D2); // une el bus i2c con SDA = D1 y SCL = D2 de NodeMCU sin necesidad de UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // comienza con la dirección del dispositivo Wire.write (i); // elige el relais Wire.write (0xFF); // envía el código "on" FF (cada conteo de 01 a FF servirá) Wire.endTransmission (); // deja de transmitir Serial.write (i); Serial.println ("aan"); retraso (1000); Wire.beginTransmission (0x10); // comienza con la dirección del dispositivo Wire.write (i); Wire.write (0x00); // Envía el código "off" Wire.endTransmission (); // deja de transmitir Serial.write (i); Serial.println ("uit"); retraso (1000); }}
Paso 4: Mi proyecto
He escrito un código para operar mis 3 persianas. Esto se puede hacer con interruptores pero también con la aplicación BLYNK, ver imagen.
- Una pulsación corta empezará a mover un obturador (o lo detendrá cuando esté en movimiento).
- Una pulsación larga y las tres contraventanas se abren (o se cierran o se detienen).
- Doble presión: las contraventanas pasan a la posición "agujeros".
Como se puede ver en la imagen, también integré un sensor de temperatura y luz.
Ahora todo en una buena placa base y perfectamente en una caja.
Paso 5: Llame a un relé con un comando
Es útil si solo necesita un comando para activar o desactivar un relé. A continuación se muestra una función que puede hacer esto (con byte bajo y byte alto).
/ * boceto de Laurens Korste para Arduino (ESP / NodeMCU) con placa de relés I2C * Pero otras placas también lo harán * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com / index.php / DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * En este esquema el relé se activará con una llamada; * // #include // para comunicación I2C // Declaración de relés.4 PCB por PCB 4 relés posibles. En este esquema solo se fusionan dos PCB // PCB y relés para que puedan ser llamados con un comando const byte PutOn = 0xFF; // comando para encender const byte PutOff = 0x00; // comando para apagar const word Relay1bord1 = 0x1001; // puedes cambiar los nombres por ejemplo Relay1 const word Relay2bord1 = 0x1002; // puedes cambiar los nombres por ejemplo Relay2 const word Relay3bord1 = 0x1003; // puedes cambiar los nombres por ejemplo Relay3 const word Relay4bord1 = 0x1004; // puedes cambiar los nombres por ejemplo Relay4 const word Relay1bord2 = 0x1101; // puedes cambiar los nombres por ejemplo Relay5 const w ord Relay2bord2 = 0x1102; // puede cambiar los nombres por ejemplo Relay6 const word Relay3bord2 = 0x1103; // puede cambiar los nombres por ejemplo Relay7 const word Relay4bord2 = 0x1104; // puede cambiar los nombres por ejemplo Relay8 const word Relay1bord3 = 0x1201; // puede cambiar los nombres por ejemplo Relay9 const word Relay2bord4 = 0x1302; // puede cambiar los nombres por ejemplo Relay14 void setup () {Serial.begin (115200); // comenzar serial para depuración (9600 para UNO) Wire.begin (D1, D2); // une el bus i2c con SDA = D1 y SCL = D2 de NodeMCU sin necesidad de UNO} void loop () {// para cambiar el relé 4 en PCB 2 en RelayActie (Relay4bord2, PutOn); retraso (1000); // para conmutar el relé 4 en PCB 2 off RelayActie (Relay4bord2, PutOff); retraso (1000); } void RelayActie (word Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (relé)); Wire.write (OnOrOff); Wire.endTransmission (); }