Mündəricat:

Arduino IDE ilə tanış olan I2C Relay: 5 addım
Arduino IDE ilə tanış olan I2C Relay: 5 addım

Video: Arduino IDE ilə tanış olan I2C Relay: 5 addım

Video: Arduino IDE ilə tanış olan I2C Relay: 5 addım
Video: Как сделать ПЛК LDmicro Arduino с ЖК-дисплеем I2C 2024, Iyul
Anonim
I2C Relay Arduino IDE ilə tanış oldu
I2C Relay Arduino IDE ilə tanış oldu

Gözəl bir relayboard sifariş verirəm, amma ArduinoIDE təlimatı yox idi, sadəcə Raspberry Pi e.o. Arduino ilə necə istifadə edəcəyimi öyrənirəm və o vaxta qənaət etmək üçün paylaşmaq istəyirəm.

Orijinal RaspberryPi nümunəsi:

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

Yaxşı bir şey, 4 lövhəyə qədər yığa bilərsiniz. Beləliklə, max istifadə edə bilərsiniz. 4 x 4 = 16 röle bir I2C avtobusunda.

Bəzi mənfi cəhətləri də var:

  • kiçik terminallar, 1 mm2 telə uyğun gəlmir
  • alt konnektorların tellərini bir yerə yığdıqda dəyişdirə bilməzsiniz

Ancaq yenə də lazımlı lövhələr.

Addım 1: tel bağlama

Simli
Simli
Simli
Simli
Simli
Simli

Şəkillərdə süzgəcləri görə bilərsiniz.

52Pi həm 5V (röle üçün) en 3.3V (I2C çipi) lazımdır.

Buna görə 5 tel lazımdır:

  • GND - GND
  • 5 V -dan 5 V -a qədər
  • 3.3 V -dan 3.3 V -ə qədər
  • SLA -dan SLA -ya
  • SCL -dən SCL -ə

Bir Arduino UNO və ya digər 5 V istifadə edirsinizsə, I2C nəzarətçisindən max 3, 6 V -a sahib olun! Arduino PIN -lərindən 5 V -u aşağı salmaq üçün rezistorlardan istifadə edin!

Addım 2: Sadə Kod Nümunəsi:

/* I2C relaisboard üçün Arduino IDE (ESP) nümunəsi.

* Laurens Korste tərəfindən www.boktorrobotica.nl * istifadə üçün pulsuzdur. */ #include // I2C rabitə boşluğu qurulması üçün () {// bu qayda UNO və ya xüsusi I2C pinləri olan Wire.begin (D1, D2) olan lövhələr üçün deyil; // NodeMCU üçün SDA = D1 və SCL = D2 ilə i2c avtobusuna qoşulun} boşluq döngüsü () {Wire.beginTransmission (0x10);/ * I2C ünvan 10 -a ötürülməyə başlayın (11, 12 və ya 13 olaraq da dəyişmək üçün) */ Tel.write (0x01); / * 10 -cu gəmidə 1 (4 -dən) seçim relayı (həmçinin 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* 10 -cu gəmidə relais 1 -i ON vəziyyətinə qoyun. bütün nömrələr> 0 bunu edəcək */ Wire.endTransmission (); / * ötürməni dayandır */ gecikmə (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * 10 -cu gəmidə relais 1 -i OFF olaraq təyin edin */ Wire.endTransmission (); / * ötürməni dayandır */ gecikmə (3000); }

Addım 3: Dörd Relay Test Kodu

/* Arduino üçün Laurens Korste tərəfindən eskiz (ESP / NodeMCU)

* Ancaq digər lövhələr də edəcək * www.boktorrobotica.nl * Bu skeychdə 4 rölesi deaktiv edilmiş vəziyyətdə aktivləşdiriləcək */ #include // I2C rabitə boşluğu qurulması üçün () {Serial.begin (115200); // debug üçün seriala başlayın (UNO üçün 9600) Wire.begin (D1, D2); // i2c avtobusuna SDA = D1 və SCL = D2 ilə NodeMCU ilə qoşulun UNO} boşluq döngüsü () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // cihaz ünvanı Wire.write ilə başlayın (i); // Wire.write relais seçimi (0xFF); // "on" kodunu FF göndərin (01 -dən FF -ə qədər olan hər say bunu edəcək) Wire.endTransmission (); // Serial.write (i) ötürülməsini dayandırın; Serial.println ("aan"); gecikmə (1000); Wire.beginTransmission (0x10); // cihaz ünvanı Wire.write ilə başlayın (i); Wire.write (0x00); // "off" kodunu göndərin Wire.endTransmission (); // Serial.write (i) ötürülməsini dayandırın; Serial.println ("uit"); gecikmə (1000); }}

Addım 4: Layihəm

Mənim Layihəm
Mənim Layihəm
Mənim Layihəm
Mənim Layihəm

3 kepenkimi idarə etmək üçün bir kod yazdım. Bu açarlarla edilə bilər, həm də BLYNK tətbiqi ilə, Şəkilə baxın.

  • Bir qısa basma bir deklanşörü hərəkət etməyə başlayacaq (və ya hərəkət edərkən dayandırın).
  • Bir uzun basma və hər üç panjur açılır (və ya bağlanır və ya dayanır).
  • İkiqat təzyiq: panjurlar "deşiklər" mövqeyinə keçir.

Şəkildə göründüyü kimi bir temperatur və işıq sensoru da birləşdirmişəm.

İndi hər şey yaxşı bir PCB üzərində və səliqəli bir qutuda.

Addım 5: Bir Komanda ilə Bir Röle çağırın

Bir röleyi aktivləşdirmək və ya söndürmək üçün yalnız bir əmrə ehtiyacınız varsa faydalıdır. Aşağıda bunu edə biləcək bir funksiya var (lowbyte və highbyte ilə).

/ * I2C relayboard ilə Arduino üçün Laurens Korste (ESP/NodeMCU) eskizi * Ancaq digər lövhələr də * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Bu eskizdə röle bir zənglə aktivləşdiriləcək; * // #include // I2C ünsiyyəti üçün // Relays bəyannaməsi.4 PCB başına 4 PCB 4 röle mümkündür. Bu eskizdə yalnız iki PCB // PCB və röle birləşdirilir ki, onları bir əmr ilə çağırsın const bayt PutOn = 0xFF; // const baytını açmaq üçün əmr PutOff = 0x00; // komanda söndürmək üçün const word Relay1bord1 = 0x1001; // adları nümunə ilə təsadüfi edə bilərsiniz Relay1 const sözü Relay2bord1 = 0x1002; // adları nümunə ilə təsadüf edə bilərsiniz Relay2 const sözü Relay3bord1 = 0x1003; // nümunələri Relay3 const sözü ilə təsadüf edə bilərsiniz Relay4bord1 = 0x1004; // nümunələri ilə təsadüf edə bilərsiniz Relay4 const word Relay1bord2 = 0x1101; // nümunələri Relay5 const w ilə təsadüf edə bilərsiniz ord Relay2bord2 = 0x1102; // nümunələri ilə təsadüf edə bilərsiniz Relay6 const word Relay3bord2 = 0x1103; // nümunələri ilə təsadüf edə bilərsiniz Relay7 const word Relay4bord2 = 0x1104; // nümunələri ilə təsadüf edə bilərsiniz Relay8 const word Relay1bord3 = 0x1201; // nümunələri ilə təsadüf edə bilərsiniz Relay9 const word Relay2bord4 = 0x1302; // Relay14 void setup () {Serial.begin (115200) nümunəsi ilə adları təsadüf edə bilərsiniz. // debug üçün seriala başlayın (UNO üçün 9600) Wire.begin (D1, D2); // nodeMCU -nun SDA = D1 və SCL = D2 ilə i2c avtobusuna qoşulun, UNO} boşluq döngəsinə ehtiyac yoxdur () {// RelayActie (Relay4bord2, PutOn) üzərindəki PCB 2 -də 4 röleyi dəyişdirmək üçün; gecikmə (1000); // PCB 2 -də 4 rölesini RelayActie (Relay4bord2, PutOff) söndürmək; gecikmə (1000); } boş RelayActie (söz Relay, bayt OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (Relay)); Wire.write (OnOrOff); Wire.endTransmission (); }

Tövsiyə: