Sommario:

Relè I2C con Arduino IDE: 5 passaggi
Relè I2C con Arduino IDE: 5 passaggi

Video: Relè I2C con Arduino IDE: 5 passaggi

Video: Relè I2C con Arduino IDE: 5 passaggi
Video: XOD IDE Урок 5 - экран LCD 1602 I2C, делаем метеостанцию 2024, Luglio
Anonim
Relè I2C con Arduino IDE
Relè I2C con Arduino IDE

Ordino una bella relayboard ma non c'erano istruzioni ArduinoIDE, solo Raspberry Pi e.o. Ho scoperto come usarlo con Arduino e voglio condividerlo in modo da poter risparmiare quel tempo.

Esempio originale RaspberryPi:

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

La cosa bella è che puoi impilare fino a 4 tavole. Quindi puoi usare max. 4 x 4 = 16 relè su un bus I2C.

Ci sono anche alcuni contro:

  • piccole terminazioni, non si adattano a un cavo da 1 mm2
  • non è possibile modificare il cablaggio dei connettori inferiori quando sono impilati insieme

Ma ancora a portata di mano di bordo.

Passaggio 1: cablaggio

cablaggio
cablaggio
cablaggio
cablaggio
cablaggio
cablaggio

Nelle foto potete vedere il cablaggio.

Il 52Pi necessita sia di 5V (per i relè) che di 3,3V (chip I2C).

Quindi sono necessari 5 fili:

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

Se usi un Arduino UNO o altri 5 V, fai attenzione ai 3, 6 V max dal controller I2C! Usa resistori o altro per abbassare i 5 V dai PIN di Arduino!

Passaggio 2: esempio di codice semplice:

/* Esempio Arduino IDE (ESP) per relaisboard I2C.

* Di Laurens Korste www.boktorrobotica.nl * uso gratuito. */ #include // per la comunicazione I2C void setup() { // questa regola non per UNO o schede con pin I2C dedicati Wire.begin(D1, D2); // unisce il bus i2c con SDA=D1 e SCL=D2 per NodeMCU } void loop() { Wire.beginTransmission(0x10);/* inizia la trasmissione all'indirizzo I2C 10 (da cambiare anche a 11, 12 o 13) */ Wire.write(0x01); /* scelta relè 1 (su 4) a bordo 10 (anche 0x02, 0x03, 0x04) */ Wire.write(0xFF); /* imposta il relè 1 sulla scheda 10 su ON. tutti i numeri > 0 lo faranno */ Wire.endTransmission(); /* interrompe la trasmissione */ delay(3000); Wire.beginTransmission(0x10); /* */ Wire.write(0x01); Wire.write(0x00); /* imposta il relè 1 sulla scheda 10 su OFF */ Wire.endTransmission(); /* interrompe la trasmissione */ delay(3000); }

Passaggio 3: codice di test a quattro relè

/* schizzo di Laurens Korste per Arduino (ESP / NodeMCU)

* Ma andranno bene anche altre schede * www.boktorrobotica.nl * In questo skeych i 4 relè verranno attivati e disattivati */ #include // per la comunicazione I2C void setup() { Serial.begin(115200); // inizia seriale per il debug (9600 per UNO) Wire.begin(D1, D2); // collega il bus i2c con SDA=D1 e SCL=D2 di NodeMCU senza bisogno di UNO } void loop() { for (int i=1; i<=4; i++){ Wire.beginTransmission(0x10); // inizia con l'indirizzo del dispositivo Wire.write(i); // scegli il relais Wire.write(0xFF); // invia il codice "on" FF (ogni conteggio da 01 a FF va bene) Wire.endTransmission(); // interrompe la trasmissione Serial.write(i); Serial.println(" aan "); ritardo(1000); Wire.beginTransmission(0x10); // inizia con l'indirizzo del dispositivo Wire.write(i); Wire.write(0x00); // Invia il codice "off" Wire.endTransmission(); // interrompe la trasmissione Serial.write(i); Serial.println(" uit "); ritardo(1000); } }

Passaggio 4: il mio progetto

Il mio progetto
Il mio progetto
Il mio progetto
Il mio progetto

Ho scritto un codice per azionare le mie 3 tapparelle. Questo può essere fatto con gli interruttori ma anche con l'app BLYNK, vedi immagine.

  • Una breve pressione comincerà a muovere una tapparella (o la fermerà quando è in movimento).
  • Una pressione lunga e tutte e tre le tapparelle si aprono (o si chiudono o si fermano).
  • Doppia pressione: le ante vanno in posizione "fori".

Come si può vedere in foto, ho integrato anche un sensore di temperatura e luce.

Ora tutto su una buona base PCB e ordinatamente in una scatola.

Passaggio 5: chiamare un relè con un comando

È utile se è necessario un solo comando per attivare o disattivare un relè. Di seguito è riportata una funzione che può farlo (con lowbyte e highbyte).

/* sketch di Laurens Korste per Arduino (ESP / NodeMCU) con relaysboard I2C * Ma anche altre schede lo faranno * href= https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099; www.boktorrobotica.nl * In questo sketch il relè sarà attivato da una chiamata; *// #include // per comunicazione I2C // Dichiarazione relè 4 PCB per PCB 4 relè possibili In questo sketch solo due PCB // PCB e relè sono uniti in modo che possano essere chiamati con un solo comando const byte PutOn=0xFF; //comando per accendere const byte PutOff=0x00; //comando per spegnere const word Relay1bord1=0x1001; //puoi cambiare i nomi per esempio Relay1 const word Relay2bord1=0x1002; //puoi cambiare i nomi per esempio Relay2 const word Relay3bord1=0x1003; //puoi cambiare i nomi per esempio Relay3 const word Relay4bord1=0x1004; //puoi cambiare i nomi con l'esempio Relay4 const word Relay1bord2=0x1101; //puoi cambiare i nomi con l'esempio Relay5 const w ord Relè2bord2=0x1102; //si possono cambiare i nomi per esempio Relay6 const word Relay3bord2=0x1103; //si possono cambiare i nomi con l'esempio Relay7 const word Relay4bord2=0x1104; //si possono cambiare i nomi per esempio Relay8 const word Relay1bord3=0x1201; //si possono cambiare i nomi con l'esempio Relay9 const word Relay2bord4=0x1302; //puoi cambiare i nomi con l'esempio Relay14 void setup() { Serial.begin(115200); // inizia seriale per debug (9600 per UNO) Wire.begin(D1, D2); // collega il bus i2c con SDA=D1 e SCL=D2 di NodeMCU senza bisogno di UNO } void loop() { // per commutare il relè 4 su PCB 2 su RelayActie(Relay4bord2, PutOn); ritardo(1000); // per spegnere il relè 4 sulla PCB 2 RelayActie(Relay4bord2, PutOff); ritardo(1000); } void RelayActie(word Relay, byte OnOrOff){ Wire.beginTransmission (highByte(Relay)); Wire.write (lowByte(Relay)); Wire.write (OnOrOff); Wire.endTransmission(); }

Consigliato: