Inhoudsopgave:

I2C Relay Met Arduino IDE - Ajarnpa
I2C Relay Met Arduino IDE - Ajarnpa

Video: I2C Relay Met Arduino IDE - Ajarnpa

Video: I2C Relay Met Arduino IDE - Ajarnpa
Video: I2C with Arduino and Raspberry Pi - Two Methods 2024, November
Anonim
I2C Relais Met Arduino IDE
I2C Relais Met Arduino IDE

Ik bestel een mooi relaisbord, maar er was geen ArduinoIDE-instructie, alleen Raspberry Pi e.o. Ik ontdek hoe ik het met Arduino kan gebruiken en wil het delen zodat u die tijd kunt besparen.

Origineel RaspberryPi-voorbeeld:

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

Leuk is dat je tot 4 planken kunt stapelen. U kunt dus max. 4 x 4 = 16 relais op één I2C bus.

Er zijn ook enkele nadelen:

  • kleine eindjes, passen niet op 1 mm2 draad
  • u kunt de bedrading van de onderste connectoren niet wijzigen wanneer ze op elkaar zijn gestapeld

Maar nog steeds handige borden.

Stap 1: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Op de foto's zie je de bedrading.

De 52Pi heeft zowel 5V (voor relais) als 3.3V (I2C chip) nodig.

Dus 5 draden nodig:

  • GND naar GND
  • 5 V tot 5 V
  • 3,3 V tot 3,3 V
  • SLA naar SLA
  • SCL naar SCL

Als u een Arduino UNO of een andere 5 V gebruikt, let dan op de max 3, 6 V van de I2C-controller! Gebruik weerstanden of anders om de 5 V uit de Arduino PIN's te verlagen!

Stap 2: Eenvoudig codevoorbeeld:

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

* Door Laurens Korste www.boktorrobotica.nl * gratis te gebruiken. */ #include // for I2C communication void setup() { // deze regel niet voor UNO of boards met speciale I2C-pinnen Wire.begin (D1, D2); // sluit je aan bij de i2c-bus met SDA=D1 en SCL=D2 voor NodeMCU } void loop() { Wire.beginTransmission (0x10);/* begin met verzenden naar I2C-adres 10 (om ook te veranderen in 11, 12 of 13) */ Wire.schrijf (0x01); /* keuze relais 1 (van de 4) aan boord 10 (ook 0x02, 0x03, 0x04) */ Wire.write(0xFF); /* zet relais 1 op board 10 op ON. alle getallen > 0 doen dit */ Wire.endTransmission(); /* stop met zenden */ vertraging (3000); Wire.beginTransmission (0x10); /* */ Draad.schrijven (0x01); Draad.schrijven (0x00); /* zet relais 1 op board 10 op OFF */ Wire.endTransmission(); /* stop met zenden */ vertraging (3000); }

Stap 3: Testcode met vier relais

/* schets door Laurens Korste voor Arduino (ESP / NodeMCU)

* Maar andere boards doen het ook * www.boktorrobotica.nl * In deze skeych worden alle 4 relais geactiveerd en gedeactiveerd */ #include // for I2C communication void setup() { Serial.begin(115200); // begin serieel voor debug (9600 voor UNO) Wire.begin (D1, D2); // join i2c bus met SDA=D1 en SCL=D2 van NodeMCU geen noodzaak voor UNO} void loop() { for (int i=1; i<=4; i++){ Wire.beginTransmission (0x10); // begin met apparaatadres Wire.write(i); // kies het relais Wire.write (0xFF); // stuur de "aan" code FF (elke telling van 01 tot FF is voldoende) Wire.endTransmission(); // stop met het verzenden van Serial.write (i); Serial.println(" aan "); vertraging (1000); Wire.beginTransmission (0x10); // begin met apparaatadres Wire.write(i); Draad.schrijven (0x00); // Stuur de "off" code Wire.endTransmission(); // stop met het verzenden van Serial.write (i); Serieel.println(" uit "); vertraging (1000); } }

Stap 4: Mijn project

Mijn project
Mijn project
Mijn project
Mijn project

Ik heb een code geschreven om mijn 3 rolluiken te bedienen. Dit kan met schakelaars maar ook met de BLYNK app, zie afbeelding.

  • Een korte druk op de knop zal een rolluik beginnen te bewegen (of stoppen wanneer het beweegt).
  • Eén keer lang indrukken en alle drie de luiken openen (of sluiten of stoppen).
  • Dubbele druk: de luiken gaan naar de stand "gaten".

Zoals op de foto te zien is, heb ik ook een temperatuur- en lichtsensor geïntegreerd.

Nu alles op een goede basisprint en netjes in een doos.

Stap 5: Bel een relais met één commando

Het is handig als u slechts één commando nodig heeft om een relais te activeren of deactiveren. Hieronder staat een functie die dit kan (met lowbyte en highbyte).

/* schets door Laurens Korste voor Arduino (ESP / NodeMCU) met I2C relaisbord * Maar andere borden zullen ook doen * 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 deze schets wordt het relais geactiveerd door één aanroep; *// #include // voor I2C communicatie // Relais declaratie. 4 PCB's Per PCB 4 relais mogelijk In deze schets zijn slechts twee PCB's // PCB's en relais samengevoegd zodat ze met één commando kunnen worden aangeroepen const byte PutOn=0xFF; //commando om const byte PutOff=0x00; //commando om uit te schakelen const woord Relay1bord1=0x1001; //u kunt de namen bijvoorbeeld wijzigen Relay1 const woord Relay2bord1=0x1002; //u kunt de namen bijvoorbeeld wijzigen Relay2 const woord Relay3bord1=0x1003; //u kunt de namen bijvoorbeeld wijzigen Relay3 const woord Relay4bord1=0x1004; //u kunt de namen bijvoorbeeld veranderen Relay4 const woord Relay1bord2=0x1101; //u kunt de namen bijvoorbeeld veranderen Relay5 const w ord Relay2bord2=0x1102; // je kunt de namen bijvoorbeeld veranderen Relay6 const word Relay3bord2=0x1103; // je kunt de namen bijvoorbeeld veranderen Relay7 const word Relay4bord2=0x1104; // je kunt de namen bijvoorbeeld veranderen Relay8 const word Relay1bord3=0x1201; // je kunt de namen bijvoorbeeld veranderen Relay9 const word Relay2bord4=0x1302; // je kunt de namen bijvoorbeeld veranderen Relay14 void setup () { Serial.begin (115200); // begin serieel voor debug (9600 voor UNO) Wire.begin (D1, D2); // sluit je aan bij de i2c-bus met SDA = D1 en SCL = D2 van NodeMCU, geen UNO nodig } void loop () {// om relais 4 op PCB 2 te schakelen op RelayActie (Relay4bord2, PutOn); vertraging (1000); // om relais 4 op PCB 2 uit te schakelen RelayActie (Relay4bord2, PutOff); vertraging (1000); } void RelayActie(word Relay, byte OnOrOff){ Wire.beginTransmission (highByte(Relay)); Wire.write (lowByte (Relay)); Wire.write (AanOfUit); Wire.endTransmission(); }

Aanbevolen: