Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
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
Şə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
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 (); }