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

Objednávám pěkný reléboard, ale žádná instrukce ArduinoIDE nebyla, jen Raspberry Pi e.o. Zjistil jsem, jak jej používat s Arduinem a chci ho sdílet, abyste mohli ušetřit čas.

Originální příklad RaspberryPi:

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

Dobrá věc je, že můžete skládat až 4 desky. Můžete tedy použít max. 4 x 4 = 16 relé na jedné sběrnici I2C.

Existují také některé nevýhody:

  • malé koncovky, nevejdou se na drát 1 mm2
  • nemůžete zapojit spodní konektory, pokud jsou naskládány dohromady

Ale přesto šikovné desky.

Krok 1: Zapojení

Wirering
Wirering
Wirering
Wirering
Wirering
Wirering

Na obrázcích můžete vidět blednutí.

52Pi potřebuje 5V (pro relé) a 3,3V (čip I2C).

Je tedy zapotřebí 5 vodičů:

  • GND až GND
  • 5 V až 5 V.
  • 3,3 V až 3,3 V
  • SLA na SLA
  • SCL na SCL

Používáte -li Arduino UNO nebo jiné 5 V zařízení s maximem 3, 6 V z ovladače I2C! Použijte odpory nebo jinak snižte 5 V z PIN Arduino!

Krok 2: Příklad jednoduchého kódu:

/* Příklad Arduino IDE (ESP) pro relaisboard I2C.

* Od Laurens Korste www.boktorrobotica.nl * zdarma k použití. */ #include // pro I2C komunikaci void setup () {// toto pravidlo neplatí pro UNO nebo desky s vyhrazenými I2C piny Wire.begin (D1, D2); // připojení sběrnice i2c s SDA = D1 a SCL = D2 pro NodeMCU} prázdná smyčka () {Wire.beginTransmission (0x10);/ * zahájení přenosu na adresu I2C 10 (pro změnu také na 11, 12 nebo 13) */ Wire.write (0x01); / * volba relé 1 (ze 4) na desce 10 (také 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* nastavit relé 1 na desce 10 na ON. všechna čísla> 0 tak učiní */ Wire.endTransmission (); / * zastavit vysílání */ zpoždění (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * nastavit relé 1 na desce 10 na VYPNUTO */ Wire.endTransmission (); / * zastavit vysílání */ zpoždění (3000); }

Krok 3: Testovací kód čtyř relé

/* skica Laurense Korste pro Arduino (ESP / NodeMCU)

* Ale ostatní desky budou také fungovat * www.boktorrobotica.nl * V tomto skeychu budou 4 relé aktivována a deaktivována */ #include // pro I2C komunikaci neplatné nastavení () {Serial.begin (115200); // zahájení seriálu pro ladění (9600 pro UNO) Wire.begin (D1, D2); // spojení sběrnice i2c s SDA = D1 a SCL = D2 NodeMCU není potřeba pro UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // začněte adresou zařízení Wire.write (i); // volba relais Wire.write (0xFF); // odešlete kód „on“FF (každý počet od 01 do FF bude stačit) Wire.endTransmission (); // zastavení přenosu Serial.write (i); Serial.println ("aan"); zpoždění (1000); Wire.beginTransmission (0x10); // začněte adresou zařízení Wire.write (i); Wire.write (0x00); // Odeslání „vypnutého“kódu Wire.endTransmission (); // zastavení přenosu Serial.write (i); Serial.println ("uit"); zpoždění (1000); }}

Krok 4: Můj projekt

Můj projekt
Můj projekt
Můj projekt
Můj projekt

Napsal jsem kód pro ovládání mých 3 žaluzií. To lze provést pomocí přepínačů, ale také pomocí aplikace BLYNK, viz obrázek.

  • Jedním krátkým stisknutím spustíte pohyb jedné závěrky (nebo ji zastavíte, když se pohybuje).
  • Jedno dlouhé stisknutí a všechny tři rolety se otevřou (nebo zavřou nebo zastaví).
  • Dvojitý tlak: žaluzie se dostanou do polohy „děr“.

Jak je vidět na obrázku, integroval jsem také teplotní a světelný senzor.

Nyní vše na dobré základní desce plošných spojů a úhledně v krabici.

Krok 5: Zavolejte relé jedním příkazem

Je to užitečné, pokud k aktivaci nebo deaktivaci relé potřebujete pouze jeden příkaz. Níže je funkce, která to dokáže (s lowbyte a highbyte).

/ * skica Laurense Korste pro Arduino (ESP/NodeMCU) s reléovou deskou I2C * Ale ostatní desky to také zvládnou * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * V tomto náčrtu bude relé aktivováno jedním voláním; * // #include // pro komunikaci I2C // Deklarace relé 4 PCB na PCB Jsou možná 4 relé. V tomto náčrtu jsou sloučeny pouze dvě PCB // PCB a relé, takže je lze volat jedním příkazem const byte PutOn = 0xFF; // příkaz k zapnutí const byte PutOff = 0x00; // příkaz k vypnutí konstantní slovo Relay1bord1 = 0x1001; // můžete náhodně hledat jména podle příkladu Relay1 konst slovo Relay2bord1 = 0x1002; // můžete náhodně hledat jména podle příkladu Relay2 konst word Relay3bord1 = 0x1003; // můžete náhodně hledat jména podle Relay3 konst slovo Relay4bord1 = 0x1004; // můžete náhodně pojmenovat příkladem Relay4 const slovo Relay1bord2 = 0x1101; // můžete náhodně pojmenovat příkladem Relay5 const w ord Relay2bord2 = 0x1102; // názvy můžete náhodně zobrazit příkladem Relay6 const word Relay3bord2 = 0x1103; // názvy můžete náhodně zobrazit příkladem Relay7 const word Relay4bord2 = 0x1104; // názvy můžete náhodně zobrazit příkladem Relay8 const word Relay1bord3 = 0x1201; // názvy můžete náhodně zobrazit příkladem Relay9 const word Relay2bord4 = 0x1302; // názvy můžete náhodně zobrazit příkladem Relay14 void setup () {Serial.begin (115200); // zahájení seriálu pro ladění (9600 pro UNO) Wire.begin (D1, D2); // spojení sběrnice i2c s SDA = D1 a SCL = D2 NodeMCU není potřeba pro UNO} void loop () {// pro přepnutí relé 4 na PCB 2 na RelayActie (Relay4bord2, PutOn); zpoždění (1000); // přepnutí relé 4 na DPS 2 vypnuto RelayActie (Relay4bord2, PutOff); zpoždění (1000); } void RelayActie (word Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (relé)); Wire.write (OnOrOff); Wire.endTransmission (); }