Tabla de contenido:

I2C Relay Met Arduino IDE: 5 pasos
I2C Relay Met Arduino IDE: 5 pasos

Video: I2C Relay Met Arduino IDE: 5 pasos

Video: I2C Relay Met Arduino IDE: 5 pasos
Video: I2C with Arduino and Raspberry Pi - Two Methods 2024, Mes de julio
Anonim
Relé I2C se encontró con Arduino IDE
Relé I2C se encontró con Arduino IDE

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

Wirering
Wirering
Wirering
Wirering
Wirering
Wirering

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

Mi proyecto
Mi proyecto
Mi proyecto
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 (); }

Recomendado: