I2C Relay Met Arduino IDE: 5 passos
I2C Relay Met Arduino IDE: 5 passos
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Demano un bon relé, però no hi havia instruccions ArduinoIDE, només Raspberry Pi e.o. Esbrino com fer-lo servir amb Arduino i vull compartir-lo perquè pugueu estalviar temps.

Exemple original de RaspberryPi:

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

Una cosa interessant és que podeu apilar fins a 4 taules. Per tant, podeu utilitzar el màxim 4 x 4 = 16 relés en un bus I2C.

També hi ha alguns inconvenients:

  • petites termines, no caben filferro d'1 mm2
  • no podeu canviar el cablejat dels connectors inferiors quan estan apilats

Però encara és útil la junta.

Pas 1: cablejat

Cablatge
Cablatge
Cablatge
Cablatge
Cablatge
Cablatge

A les imatges es pot veure el cablejat.

El 52Pi necessita 5V (per a relés) i 3,3V (xip I2C).

Per tant, es necessiten 5 cables:

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

Si utilitzeu un Arduino UNO o un altre de 5 V, consulteu el màxim de 3, 6 V del controlador I2C. Utilitzeu resistències o bé per baixar els 5 V dels PIN d'Arduino.

Pas 2: Exemple de codi simple:

/ * Exemple Arduino IDE (ESP) per a placa de relé I2C.

* Per Laurens Korste www.boktorrobotica.nl * d'ús gratuït. * / #include // for I2C communication void setup () {// aquesta regla no és per a UNO ni per a plaques amb pins I2C dedicats Wire.begin (D1, D2); // uniu el bus i2c amb SDA = D1 i SCL = D2 per a NodeMCU} bucle buit () {Wire.beginTransmission (0x10); / * comenceu a transmetre a l’adreça I2C 10 (per canviar també a 11, 12 o 13) * / Wire.write (0x01); / * choice relais 1 (de 4) al tauler 10 (també 0x02, 0x03, 0x04) * / Wire.write (0xFF); / * Estableix els relais 1 del tauler 10 a ON. tots els números> 0 ho faran * / Wire.endTransmission (); / * deixar de transmetre * / delay (3000); Wire.beginTransmission (0x10); / * * / Wire.write (0x01); Wire.write (0x00); / * estableix els relais 1 al tauler 10 com a OFF * / Wire.endTransmission (); / * deixar de transmetre * / delay (3000); }

Pas 3: Codi de prova de quatre relleus

/ * esbós de Laurens Korste per Arduino (ESP / NodeMCU)

* Però altres taulers també ho faran * www.boktorrobotica.nl * En aquest manual tots els 4 relés s’activaran desactivats * / #include // per a la configuració del buit de comunicació I2C () {Serial.begin (115200); // comença la sèrie per a la depuració (9600 per a UNO) Wire.begin (D1, D2); // uniu el bus i2c amb SDA = D1 i SCL = D2 de NodeMCU sense necessitat de UNO} bucle buit () {per (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // Comenceu amb l'adreça del dispositiu Wire.write (i); // tria el relé Wire.write (0xFF); // envieu el codi "on" FF (cada recompte de 01 a FF farà) Wire.endTransmission (); // deixar de transmetre Serial.write (i); Serial.println ("aan"); retard (1000); Wire.beginTransmission (0x10); // Comenceu amb l'adreça del dispositiu Wire.write (i); Wire.write (0x00); // Envieu el codi "off" Wire.endTransmission (); // deixar de transmetre Serial.write (i); Serial.println ("uit"); retard (1000); }}

Pas 4: El meu projecte

El meu projecte
El meu projecte
El meu projecte
El meu projecte

He escrit un codi per fer funcionar les 3 persianes. Això es pot fer amb interruptors, però també amb l’aplicació BLYNK, Veure imatge.

  • Si premeu breument, es començarà a moure un obturador (o s’aturarà quan es mogui).
  • Una pulsació llarga i les tres persianes obertes (o tancades o aturades).
  • Doble pressió: les persianes van a la posició de "forats".

Com es pot veure a la imatge, també he integrat un sensor de temperatura i llum.

Ara tot en una bona placa base i perfectament en una caixa.

Pas 5: Truqueu a un relé amb una sola ordre

És útil si només necessiteu una ordre per activar o desactivar un relé. A continuació es mostra una funció que pot fer-ho (amb lowbyte i highbyte).

/ * esbós de Laurens Korste per Arduino (ESP / NodeMCU) amb placa de relés I2C * Però altres taules també ho faran * 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 aquest esbós, el relé s’activarà mitjançant una trucada; * // #include // per a comunicació I2C // Declaració de relés. 4 relés possibles. En aquest esbós només es combinen dos PCB // PCB i relés de manera que es poden cridar amb un ordre const byte PutOn = 0xFF; // ordre per activar const byte PutOff = 0x00; // comand per apagar paraula const Relay1bord1 = 0x1001; // podeu provar els noms per exemple Relay1 const paraula Relay2bord1 = 0x1002; // podeu provar els noms per exemple Relay2 paraula const Relay3bord1 = 0x1003; // podeu provar els noms per exemple Relay3 const paraula Relay4bord1 = 0x1004; // podeu provar els noms per exemple Relay4 const word Relay1bord2 = 0x1101; // podeu provar els noms per exemple Relay5 const w ord Relay2bord2 = 0x1102; // podeu provar els noms amb l'exemple Relay6 const paraula Relay3bord2 = 0x1103; // podeu provar els noms amb l'exemple Relay7 const paraula Relay4bord2 = 0x1104; // podeu provar els noms amb l'exemple Relay8 const paraula Relay1bord3 = 0x1201; // podeu provar els noms amb l'exemple Relay9 const paraula Relay2bord4 = 0x1302; // podeu accedir als noms amb l'exemple Relay14 void setup () {Serial.begin (115200); // comença la sèrie per a la depuració (9600 per a UNO) Wire.begin (D1, D2); // uniu el bus i2c amb SDA = D1 i SCL = D2 de NodeMCU sense necessitat de UNO} bucle buit () {// per canviar el relé 4 del PCB 2 a RelayActie (Relay4bord2, PutOn); retard (1000); // per canviar el relé 4 del PCB 2 desactivat de RelayActie (Relay4bord2, PutOff); retard (1000); } void RelayActie (paraula Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (relé)); Wire.write (OnOrOff); Wire.endTransmission (); }