INHOUDSOPGAWE:

I2C Relay Met Arduino IDE: 5 stappe
I2C Relay Met Arduino IDE: 5 stappe

Video: I2C Relay Met Arduino IDE: 5 stappe

Video: I2C Relay Met Arduino IDE: 5 stappe
Video: I2C with Arduino and Raspberry Pi - Two Methods 2024, Julie
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Ek bestel 'n lekker relayboard, maar daar was geen ArduinoIDE -instruksie nie, net Raspberry Pi e.o. Ek vind uit hoe ek dit met Arduino kan gebruik en wil dit deel, sodat u die tyd kan bespaar.

Oorspronklike RaspberryPi -voorbeeld:

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

Die goeie ding is dat u tot 4 planke kan stapel. U kan dus maks. 4 x 4 = 16 aflosse op een I2C -bus.

Daar is ook 'n paar nadele:

  • klein terminale, pas nie 1 mm2 draad nie
  • U kan nie die bedrading van die onderste verbindings verander as hulle aanmekaar gestapel is nie

Maar steeds handige bordjies.

Stap 1: Bedrading

Bedraad
Bedraad
Bedraad
Bedraad
Bedraad
Bedraad

Op die foto's kan u die draad sien.

Die 52Pi benodig beide 5V (vir relais) en 3.3V (I2C -chip).

Dus is 5 drade nodig:

  • GND tot GND
  • 5 V tot 5 V
  • 3.3 V tot 3.3 V
  • SLA tot SLA
  • SCL tot SCL

As u 'n Arduino UNO of ander 5 V gebruik, moet u op die maksimum 3, 6 V van die I2C -kontroleerder let! Gebruik weerstande of verlaag die 5 V uit die Arduino PIN's!

Stap 2: Voorbeeld van eenvoudige kode:

/* Arduino IDE (ESP) voorbeeld vir I2C relaisboard.

* Deur Laurens Korste www.boktorrobotica.nl * gratis om te gebruik. */ #include // vir I2C kommunikasie leegte opstel () {// hierdie reël nie vir UNO of borde met toegewyde I2C penne Wire.begin (D1, D2); // sluit aan by i2c -bus met SDA = D1 en SCL = D2 vir NodeMCU} leemte lus () {Wire.beginTransmission (0x10);/ * begin stuur na I2C adres 10 (om ook te verander na 11, 12 of 13) */ Wire.skryf (0x01); / * choice relais 1 (uit 4) aan boord 10 (ook 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* stel relais 1 aan boord 10 op AAN. alle getalle> 0 sal dit doen */ Wire.endTransmission (); / * stop stuur */ vertraging (3000); Wire.begin Transmissie (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * stel relais 1 aan boord 10 op OFF */ Wire.endTransmission (); / * stop stuur */ vertraging (3000); }

Stap 3: vier aflos -toetskode

/* skets deur Laurens Korste vir Arduino (ESP / NodeMCU)

* Maar ander borde sal dit ook doen * www.boktorrobotica.nl * In hierdie sleutel sal die 4 aflosse geaktiveer en gedeaktiveer word */ #include // vir die opstel van I2C -kommunikasie () {Serial.begin (115200); // begin reeks vir ontfouting (9600 vir UNO) Wire.begin (D1, D2); // sluit aan by i2c -bus met SDA = D1 en SCL = D2 van NodeMCU nie nodig vir UNO} leemte -lus () {vir (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // begin met toesteladres Wire.write (i); // kies die relais Wire.write (0xFF); // stuur die "aan" -kode FF (elke telling van 01 tot FF sal doen) Wire.endTransmission (); // stop met die oordrag van Serial.write (i); Serial.println ("aan"); vertraging (1000); Wire.begin Transmissie (0x10); // begin met toesteladres Wire.write (i); Wire.write (0x00); // Stuur die "af" -kode Wire.endTransmission (); // stop met die oordrag van Serial.write (i); Serial.println ("uit"); vertraging (1000); }}

Stap 4: My projek

My Projek
My Projek
My Projek
My Projek

Ek het 'n kode geskryf om my 3 luike te gebruik, dit kan gedoen word met skakelaars, maar ook met die BLYNK -app, sien prent.

  • Een kort druk sal een sluiter begin beweeg (of stop as dit beweeg).
  • Een lang druk en al drie luike gaan oop (of sluit of stop).
  • Dubbele druk: die luike gaan na die "gate" -posisie.

Soos op die foto gesien kan word, het ek ook 'n temperatuur- en ligsensor geïntegreer.

Nou alles op 'n goeie basis -PCB en netjies in 'n boks.

Stap 5: Bel 'n aflos met een opdrag

Dit is handig as u slegs een opdrag nodig het om 'n aflos te aktiveer of te deaktiveer. Hieronder is 'n funksie wat dit kan doen (met lowbyte en highbyte).

/ * skets deur Laurens Korste vir Arduino (ESP/NodeMCU) met I2C -relaisbord * Maar ander borde sal ook * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi doen.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * In hierdie skets word die relais met een oproep geaktiveer; * // #include // vir I2C-kommunikasie // Relays declaratie. 4 PCB's per PCB 4 relais moontlik In hierdie skets word slegs twee PCB // PCB en relais saamgevoeg, sodat hulle met een opdrag const byte PutOn = 0xFF; // command om const byte PutOff = 0x00 aan te skakel; // comand om af te skakel const woord Relay1bord1 = 0x1001; // jy kan die name deur voorbeeld Relay1 const word Relay2bord1 = 0x1002; // jy kan die name deur voorbeeld Relay2 const word Relay3bord1 = 0x1003; // jy kan die name met voorbeeld Relay3 const word Relay4bord1 = 0x1004; // u kan die name deur voorbeeld toelaat Relay4 const -woord Relay1bord2 = 0x1101; // u kan die name deur voorbeeld Relay5 const w ord Relay2bord2 = 0x1102; // jy kan die name deur voorbeeld Relay6 const word Relay3bord2 = 0x1103; // jy kan die name deur voorbeeld Relay7 const word Relay4bord2 = 0x1104; // jy kan die name deur voorbeeld Relay8 const word Relay1bord3 = 0x1201; // jy kan die name deur voorbeeld Relay9 const word Relay2bord4 = 0x1302; // jy kan die name deur voorbeeld Relay14 leemte opstel () {Serial.begin (115200); // begin reeks vir ontfouting (9600 vir UNO) Wire.begin (D1, D2); // sluit aan by i2c -bus met SDA = D1 en SCL = D2 van NodeMCU nie nodig vir UNO} leemte -lus () {// om relais 4 op PCB 2 op RelayActie (Relay4bord2, PutOn) oor te skakel; vertraging (1000); // om relais 4 op PCB 2 af te skakel RelayActie (Relay4bord2, PutOff); vertraging (1000); } void RelayActie (woord Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (Relay)); Wire.write (OnOrOff); Wire.endTransmission (); }

Aanbeveel: