Talaan ng mga Nilalaman:

I2C Relay Met Arduino IDE: 5 Hakbang
I2C Relay Met Arduino IDE: 5 Hakbang

Video: I2C Relay Met Arduino IDE: 5 Hakbang

Video: I2C Relay Met Arduino IDE: 5 Hakbang
Video: #20 Tutorial: Multiple Devices on One Arduino I2C Bus 2024, Nobyembre
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Nag-order ako ng magandang relayboard ngunit walang tagubilin sa ArduinoIDE, lamang ang Raspberry Pi e.o. Nalaman ko kung paano ito gamitin sa Arduino at nais kong ibahagi ito upang mai-save mo ang oras na iyon.

Orihinal na halimbawa ng RaspberryPi:

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

Magandang bagay ay maaari kang mag-stack ng hanggang sa 4 na board. Kaya maaari mong gamitin ang max. 4 x 4 = 16 na relay sa isang bus na I2C.

Mayroon ding ilang mga kahinaan:

  • maliit na terminas, hindi magkasya sa 1 mm2 wire
  • hindi mo mababago ang mga kable ng mga konektor sa ibaba kapag na-stack ang mga ito

Ngunit madaling gamitin ang board.

Hakbang 1: Wirering

Wirering
Wirering
Wirering
Wirering
Wirering
Wirering

Sa mga larawan maaari mong makita ang pag-ikot.

Ang 52Pi ay nangangailangan ng parehong 5V (para sa relay's) en 3.3V (I2C chip).

Kaya kailangan ng 5 wires:

  • GND sa GND
  • 5 V hanggang 5 V
  • 3.3 V hanggang 3.3 V
  • SLA hanggang SLA
  • SCL to SCL

Kung gumagamit ka ng isang Arduino UNO o iba pang 5 V maging ware ng max 3, 6 V mula sa I2C controller! Gumamit ng resistors o iba pa upang ibaba ang 5 V mula sa Arduino PIN's!

Hakbang 2: Halimbawa ng Simpleng Code:

/ * Halimbawa ng Arduino IDE (ESP) para sa relaisboard ng I2C.

* Ni Laurens Korste www.boktorrobotica.nl * malayang magamit. * / #include // para sa I2C na walang bisa ang pag-setup () {// ang panuntunang ito hindi para sa UNO o mga board na may dedikadong I2C pin na Wire.begin (D1, D2); // sumali sa i2c bus na may SDA = D1 at SCL = D2 para sa NodeMCU} void loop () {Wire.beginTransmission (0x10); / * simulan ang paglilipat sa I2C adress 10 (upang baguhin din sa 11, 12 o 13) * / Wire.sulat (0x01); / * pagpipilian relais 1 (sa labas ng 4) sa board 10 (din 0x02, 0x03, 0x04) * / Wire.write (0xFF); / * itakda ang relais 1 sa board 10 hanggang ON. lahat ng mga numero> 0 ay gagawin ito * / Wire.endTransmission (); / * ihinto ang paglilipat * / pagkaantala (3000); Wire.beginTransmission (0x10); / * * / Wire.write (0x01); Wire.write (0x00); / * itakda ang relais 1 sa board 10 upang OFF * / Wire.endTransmission (); / * ihinto ang paglilipat * / pagkaantala (3000); }

Hakbang 3: Apat na Code ng Pag-test ng Relay

/ * sketch ni Laurens Korste para sa Arduino (ESP / NodeMCU)

* Ngunit ang iba pang mga board ay gagawin din * www.boktorrobotica.nl * Sa skeych al na ito ang 4 na relay ay maaaktibo enactivated * / #include // para sa I2C na walang bisa na pag-setup ng komunikasyon () {Serial.begin (115200); // simulan ang serial para sa debug (9600 para sa UNO) Wire.begin (D1, D2); // sumali sa i2c bus na may SDA = D1 at SCL = D2 ng NodeMCU hindi na kailangan para sa UNO} void loop () {para (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // magsimula sa address ng aparato na Wire.write (i); // pagpili ng relais Wire.write (0xFF); // send the "on" code FF (bawat bilang mula 01 hanggang FF ay gagawin) Wire.endTransmission (); // ihinto ang paglilipat ng Serial.write (i); Serial.println ("aan"); pagkaantala (1000); Wire.beginTransmission (0x10); // magsimula sa address ng aparato na Wire.write (i); Wire.write (0x00); // Ipadala ang code na "off" na Wire.endTransmission (); // ihinto ang paglilipat ng Serial.write (i); Serial.println ("uit"); pagkaantala (1000); }}

Hakbang 4: Ang Aking Proyekto

Aking proyekto
Aking proyekto
Aking proyekto
Aking proyekto

Nagsulat ako ng isang code upang mapatakbo ang aking 3 shutter. Maaari itong magawa sa mga switch ngunit sa BLYNK app din, Tingnan ang imahe.

  • Ang isang maikling pindutin ay magsisimulang ilipat ang isang shutter (o ihinto ito kapag gumagalaw ito).
  • Isang mahabang pindutin at bukas ang lahat ng tatlong mga shutter (o isara o ihinto).
  • Dobleng presyon: ang mga shutter ay pupunta sa posisyon na "butas".

Tulad ng makikita sa larawan, nagsama din ako ng temperatura at light sensor.

Ngayon ang lahat sa isang mahusay na base PCB at maayos sa isang kahon.

Hakbang 5: Tumawag sa isang Relay Na May Isang Command

Ito ay kapaki-pakinabang kung kailangan mo lamang ng isang utos upang buhayin o i-deactivate ang isang relay. Nasa ibaba ang isang pagpapaandar na magagawa ito (na may lowbyte at highbyte).

/ * sketch ni Laurens Korste para sa Arduino (ESP / NodeMCU) kasama ang I2C relaysboard * Ngunit gagawin din ng iba pang mga board * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com / index.php / DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Sa sketch na ito ang relay ay maaaktibo ng isang tawag; * // #include // para sa komunikasyon ng I2C // Relay na pagdedeklara. 4 PCB's Per PCB Posible ang 4 na relay. Sa sketch na ito dalawa lamang ang PCB // PCB at relay ang pinagsama upang maaari silang tawagan ng isang utos na ayon sa byte PutOn = 0xFF; // utos na lumipat sa byte byte PutOff = 0x00; // comand upang patayin Const salitang Relay1bord1 = 0x1001; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay1 const salitang Relay2bord1 = 0x1002; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay2 const salitang Relay3bord1 = 0x1003; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawang Relay3 Const na salita Relay4bord1 = 0x1004; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay4 const salitang Relay1bord2 = 0x1101; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay5 const w ord Relay2bord2 = 0x1102; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay6 const salitang Relay3bord2 = 0x1103; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay7 const salitang Relay4bord2 = 0x1104; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay8 const salitang Relay1bord3 = 0x1201; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawa Relay9 const salitang Relay2bord4 = 0x1302; // maaari mong pagkakataon ang mga pangalan sa pamamagitan ng halimbawang Relay14 void setup () {Serial.begin (115200); // simulan ang serial para sa debug (9600 para sa UNO) Wire.begin (D1, D2); // sumali sa i2c bus na may SDA = D1 at SCL = D2 ng NodeMCU hindi na kailangan para sa UNO} void loop () {// upang ilipat ang relay 4 sa PCB 2 sa RelayActie (Relay4bord2, PutOn); pagkaantala (1000); // upang ilipat ang relay 4 sa PCB 2 off RelayActie (Relay4bord2, PutOff); pagkaantala (1000); } void RelayActie (salitang Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (Relay)); Wire.write (OnOrOff); Wire.endTransmission (); }

Inirerekumendang: