Cuprins:

Releu I2C Met Arduino IDE: 5 pași
Releu I2C Met Arduino IDE: 5 pași

Video: Releu I2C Met Arduino IDE: 5 pași

Video: Releu I2C Met Arduino IDE: 5 pași
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Iulie
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Am comandat un releu frumos, dar nu a existat nicio instrucțiune ArduinoIDE, ci doar Raspberry Pi e.o. Aflu cum să-l folosesc cu Arduino și vreau să-l împărtășesc, astfel încât să puteți economisi timp.

Exemplu original RaspberryPi:

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

Lucru frumos este că puteți stiva până la 4 plăci. Deci, puteți utiliza max. 4 x 4 = 16 relee pe o singură magistrală I2C.

Există, de asemenea, unele contra:

  • termina mici, nu se potrivesc cu sârmă de 1 mm2
  • nu puteți schimba cablarea conectorilor inferiori atunci când sunt stivuite împreună

Dar încă la îndemână tabla.

Pasul 1: conectare

Wirering
Wirering
Wirering
Wirering
Wirering
Wirering

În imagini puteți vedea cablurile.

52Pi are nevoie atât de 5V (pentru releu), cât și de 3.3V (cip I2C).

Așadar, sunt necesare 5 fire:

  • GND la GND
  • 5 V la 5 V
  • 3,3 V - 3,3 V
  • SLA la SLA
  • SCL la SCL

Dacă utilizați un Arduino UNO sau alte 5 V fiți de maxim 3, 6 V de la controlerul I2C! Folosiți rezistențe sau altfel pentru a coborî 5 V din PIN-urile Arduino!

Pasul 2: Exemplu de cod simplu:

/ * Exemplu Arduino IDE (ESP) pentru placa de releu I2C.

* De Laurens Korste www.boktorrobotica.nl * gratuit de utilizat. * / #include // pentru comunicare I2C configurare nulă () {// această regulă nu pentru UNO sau plăci cu pini I2C dedicate Wire.begin (D1, D2); // alăturați magistralei i2c cu SDA = D1 și SCL = D2 pentru NodeMCU} bucla nulă () {Wire.beginTransmission (0x10); / * începeți transmiterea către adresa I2C 10 (pentru a schimba și la 11, 12 sau 13) * / Wire.write (0x01); / * alegerea relais 1 (din 4) de pe placa 10 (de asemenea, 0x02, 0x03, 0x04) * / Wire.write (0xFF); / * setați relee 1 la bordul 10 la ON. toate numerele> 0 vor face acest lucru * / Wire.endTransmission (); / * opriți transmiterea * / întârziere (3000); Wire.beginTransmission (0x10); / * * / Wire.write (0x01); Wire.write (0x00); / * setați relais 1 la bordul 10 la OFF * / Wire.endTransmission (); / * opriți transmiterea * / întârziere (3000); }

Pasul 3: Cod de testare cu patru relee

/ * schiță de Laurens Korste pentru Arduino (ESP / NodeMCU)

* Dar alte plăci vor face, de asemenea, * www.boktorrobotica.nl * În acest skeych toate cele 4 relee vor fi activate en dezactivate * / #include // pentru configurarea I2C a comunicării voide () {Serial.begin (115200); // începe seria pentru depanare (9600 pentru UNO) Wire.begin (D1, D2); // alăturați magistralei i2c cu SDA = D1 și SCL = D2 din NodeMCU nu este nevoie de UNO} buclă nulă () {pentru (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // începeți cu adresa dispozitivului Wire.write (i); // alege relaisul Wire.write (0xFF); // trimite codul „on” FF (fiecare contorizare de la 01 la FF va face) Wire.endTransmission (); // opriți transmiterea Serial.write (i); Serial.println ("aan"); întârziere (1000); Wire.beginTransmission (0x10); // începeți cu adresa dispozitivului Wire.write (i); Wire.write (0x00); // Trimite codul „off” Wire.endTransmission (); // opriți transmiterea Serial.write (i); Serial.println ("uit"); întârziere (1000); }}

Pasul 4: Proiectul meu

Proiectul meu
Proiectul meu
Proiectul meu
Proiectul meu

Am scris un cod pentru a opera cele 3 obloane. Acest lucru se poate face cu comutatoare, dar și cu aplicația BLYNK, vezi imaginea.

  • O apăsare scurtă va începe să deplaseze un declanșator (sau îl va opri când se mișcă).
  • O apăsare lungă și toate cele trei obloane deschise (sau închise sau oprite).
  • Presiune dublă: obloanele merg în poziția „găuri”.

După cum se poate vedea în imagine, am integrat și un senzor de temperatură și lumină.

Acum totul pe un PCB de bază bun și îngrijit într-o cutie.

Pasul 5: Apelați un releu cu o singură comandă

Este util dacă aveți nevoie de o singură comandă pentru a activa sau dezactiva un releu. Mai jos este o funcție care poate face acest lucru (cu lowbyte și highbyte).

/ * schiță de Laurens Korste pentru Arduino (ESP / NodeMCU) cu relee I2C * Dar alte plăci vor face și * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com / index.php / DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * În această schiță, releul va fi activat printr-un singur apel; * // #include // pentru comunicarea I2C // Declarații de relee. 4 relee posibile. În această schiță, doar două PCB // PCB și relee sunt îmbinate, astfel încât să poată fi apelate cu un singur octet const PutOn = 0xFF; // comandă pentru pornire octet const PutOff = 0x00; // comandă pentru oprire cuvântul const Relay1bord1 = 0x1001; // puteți șansa numele cu exemplul Relay1 const cuvântul Relay2bord1 = 0x1002; // puteți șansa numele prin exemplul Relay2 const cuvântul Relay3bord1 = 0x1003; // puteți șansa numele cu exemplul Relay3 const cuvânt Relay4bord1 = 0x1004; // puteți șansa numele după exemplul Relay4 const cuvânt Relay1bord2 = 0x1101; // puteți șansa numele prin exemplul Relay5 const w ord Releu2bord2 = 0x1102; // puteți șansa numele prin exemplu Relay6 const cuvânt Relay3bord2 = 0x1103; // puteți șansa numele cu exemplul Relay7 const cuvânt Relay4bord2 = 0x1104; // puteți șansa numele prin exemplul Relay8 const cuvânt Relay1bord3 = 0x1201; // puteți șansa numele cu exemplul Relay9 const cuvânt Relay2bord4 = 0x1302; // puteți șansa numele prin exemplu Relay14 void setup () {Serial.begin (115200); // începe seria pentru depanare (9600 pentru UNO) Wire.begin (D1, D2); // alăturați magistralei i2c cu SDA = D1 și SCL = D2 din NodeMCU nu este nevoie de UNO} buclă de gol () {// pentru a comuta releu 4 pe PCB 2 pe RelayActie (Relay4bord2, PutOn); întârziere (1000); // pentru a comuta releul 4 pe PCB 2 de pe RelayActie (Relay4bord2, PutOff); întârziere (1000); } void RelayActie (cuvânt Relay, octet OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (releu)); Wire.write (OnOrOff); Wire.endTransmission (); }

Recomandat: