Мазмуну:

I2C релеси Arduino IDE менен жолугушту: 5 кадам
I2C релеси Arduino IDE менен жолугушту: 5 кадам

Video: I2C релеси Arduino IDE менен жолугушту: 5 кадам

Video: I2C релеси Arduino IDE менен жолугушту: 5 кадам
Video: Arduino IDE 2.0 зачем нужна новая среда разработки? 2024, Июль
Anonim
I2C релеси Arduino IDE менен жолугушту
I2C релеси Arduino IDE менен жолугушту

Мен жакшы релейбордго заказ берем, бирок ArduinoIDE көрсөтмөсү жок болчу, жөн гана Raspberry Pi e.o. Мен аны Arduino менен кантип колдонууну билем жана аны бөлүшкүм келет, ошондо убакытты үнөмдөй аласың.

Оригиналдуу RaspberryPi мисалы:

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

Жакшы жери, сиз 4 тактаны жыйнай аласыз. Ошентип, сиз max колдоно аласыз. 4 x 4 = 16 реле бир I2C автобусунда.

Ошондой эле кээ бир терс жактары бар:

  • кичинекей терминалдар, 1 мм2 зымга туура келбейт
  • алар бириктирилгенде астындагы бириктиргичтердин зымдарын өзгөртө албайсыз

Бирок дагы эле колдо болгон такта.

1 -кадам: Виринг

Wirering
Wirering
Wirering
Wirering
Wirering
Wirering

Сүрөттөрдө жипти көрө аласыз.

52Pi 5V (реле үчүн) жана 3.3V (I2C чипи) экөөнө тең керек.

Ошентип, 5 зым керек:

  • GNDден GNDге
  • 5 В - 5 В
  • 3,3 В - 3,3 В чейин
  • SLA to SLA
  • SCLден SCLге чейин

Эгерде сиз Arduino UNO же башка 5 V колдонсоңуз, I2C контроллеринен max 3, 6 V керек! 5 V Arduino PIN'лерин түшүрүү үчүн резисторлорду колдонуңуз!

2 -кадам: Жөнөкөй коддун мисалы:

/* I2C relaisboard үчүн Arduino IDE (ESP) мисалы.

* Лоренс Корсте тарабынан www.boktorrobotica.nl * колдонуу бекер. */ #include // I2C байланышынын жараксыздыгын орнотуу үчүн () {// бул эреже БУУ же атайын I2C казыктары бар Wire.begin (D1, D2) менен такталар үчүн эмес; // i2c автобусуна SDA = D1 жана SCL = D2 менен NodeMCU үчүн кошулуңуз} жараксыз цикл () {Wire.beginTransmission (0x10);/ * I2C дарегине 10 өткөрүп баштаңыз (11, 12 же 13кө өзгөртүү үчүн) */ Зым.write (0x01); / * тандоо релеси 1 (4төн) 10 бортунда (ошондой эле 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* 10 -борттогу 1 -релизди КҮЙГҮЗҮЛГӨНгө коюңуз. бардык сандар> 0 ушундай кылат */ Wire.endTransmission (); / * берүүнү токтотуу */ кечиктирүү (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * 10 -борттогу 1 -релизди ӨЧҮКкө коюңуз */ Wire.endTransmission (); / * берүүнү токтотуу */ кечиктирүү (3000); }

3 -кадам: Төрт реле сыноо коду

/* эскизи Laurens Korste Arduino үчүн (ESP / NodeMCU)

* Бирок башка тактайлар да ошондой кылат * www.boktorrobotica.nl * Бул скейчте 4 релеси өчүрүлгөндө иштетилет */ #include // I2C байланышынын боштугун орнотуу үчүн () {Serial.begin (115200); // мүчүлүштүктөрдү оңдоо үчүн серияны баштоо (UNO үчүн 9600) Wire.begin (D1, D2); // i2c автобусуна SDA = D1 жана SCL = D2 менен NodeMCU менен кошулуңуз UNO} боштук цикл () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // Wire.write (i) түзмөгүнүн дареги менен башталат; // Wire.write релесин тандоо (0xFF); // FF "on" кодун жөнөтүү (01ден FFге чейинки ар бир эсеп кылат) Wire.endTransmission (); // Serial.write (i) берүүнү токтотуу; Serial.println ("aan"); кечигүү (1000); Wire.beginTransmission (0x10); // Wire.write (i) түзмөгүнүн дареги менен башталат; Wire.write (0x00); // "өчүрүү" кодун жөнөтүңүз Wire.endTransmission (); // Serial.write (i) берүүнү токтотуу; Serial.println ("uit"); кечигүү (1000); }}

4 -кадам: Менин долбоорум

Менин долбоорум
Менин долбоорум
Менин долбоорум
Менин долбоорум

Мен 3 жапкычымды иштетүү үчүн код жаздым. Муну өчүргүчтөр менен, ошондой эле BLYNK колдонмосу менен жасаса болот, сүрөттү караңыз.

  • Бир кыска басуу бир жапкычты жылдыра баштайт (же ал жылып баратканда токтотот).
  • Бир узак басуу жана үч жапкычтын баары ачылат (же жабылат же токтойт).
  • Кош басым: жапкычтар "тешиктер" абалына барат.

Сүрөттөн көрүнүп тургандай, мен температура жана жарык сенсорун да коштум.

Азыр баары жакшы ПКБда жана тыкан бир кутуда.

5 -кадам: Бир буйрук менен эстафетаны чакырыңыз

Релени иштетүү же өчүрүү үчүн сизге бир гана буйрук керек болсо пайдалуу. Төмөндө муну кыла турган функция бар (lowbyte жана highbyte менен).

/ * Laurens Korste Arduino үчүн эскизи (ESP/NodeMCU) I2C рельсборд менен * Бирок башка тактайлар дагы аткарат * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Бул эскизде реле бир чалуу менен кошулат; * // #include // I2C байланышы үчүн // Релелик декларация. 4 реле мүмкүн. Бул эскизде эки гана ПХБ // ПХБ жана реле бириктирилет, ошондуктан аларды бир команда const byOutOn = 0xFF деп атоого болот; // const byte күйгүзүү үчүн команда PutOff = 0x00; // команды өчүрүү үчүн. const сөзү Relay1bord1 = 0x1001; // сиз аттарды мисал аркылуу кокустукка келтире аласыз Relay1 const сөзү Relay2bord1 = 0x1002; Relay4bord1 = 0x1004; // сиз мисал аркылуу аттарды кокустукка келтире аласыз Relay4 const word Relay1bord2 = 0x1101; // сиз мисал Relay5 const w ord Relay2bord2 = 0x1102; // сиз мисал аркылуу аттарды кокустукка келтире аласыз Relay6 const word Relay3bord2 = 0x1103; // сиз мисал аркылуу аттарды кокустукка келтире аласыз Relay7 const word Relay4bord2 = 0x1104; // сиз мисал аркылуу аттарды кокустукка келтире аласыз Relay8 const word Relay1bord3 = 0x1201; // сиз мисал аркылуу аттарды кокустукка келтире аласыз Relay9 const word Relay2bord4 = 0x1302; // мисал Relay14 void setup () {Serial.begin (115200) аркылуу аттарды кокустукка учурата аласыз. // мүчүлүштүктөрдү оңдоо үчүн серияны баштоо (UNO үчүн 9600) Wire.begin (D1, D2); // i2c автобусуна SDA = D1 жана SCL = D2 менен NodeMCU менен кошулуңуз, UNO} боштуктун цикли () {// RelayActie (Relay4bord2, PutOn) боюнча PCB 2деги 4 -релени алмаштыруу үчүн; кечигүү (1000); // PCB 2деги 4 -релени RelayActie өчүрүү үчүн (Relay4bord2, PutOff); кечигүү (1000); } void RelayActie (Relay сөзү, OnOrOff байт) {Wire.beginTransmission (highByte (Relay))); Wire.write (lowByte (Relay)); Wire.write (OnOrOff); Wire.endTransmission (); }

Сунушталууда: