Съдържание:

I2C Relay Met Arduino IDE: 5 стъпки
I2C Relay Met Arduino IDE: 5 стъпки

Видео: I2C Relay Met Arduino IDE: 5 стъпки

Видео: I2C Relay Met Arduino IDE: 5 стъпки
Видео: How to use 4 channel Relay to control AC load with Arduino code 2024, Ноември
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Поръчвам хубава релейна дъска, но нямаше инструкция за ArduinoIDE, само Raspberry Pi e.o. Разбирам как да го използвам с Arduino и искам да го споделя, за да спестите това време.

Оригинален пример за RaspberryPi:

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

Хубавото е, че можете да подреждате до 4 дъски. Така че можете да използвате макс. 4 x 4 = 16 релета на една I2C шина.

Има и някои недостатъци:

  • малки терминали, не подхождат на 1 mm2 проводник
  • не можете да промените окабеляването на долните конектори, когато са подредени заедно

Но все пак удобни дъски.

Стъпка 1: Окачване

Свързване
Свързване
Свързване
Свързване
Свързване
Свързване

На снимките можете да видите окабеляването.

52Pi се нуждае от 5V (за релета) и 3.3V (I2C чип).

Така че са необходими 5 проводника:

  • GND към GND
  • 5 V до 5 V
  • 3.3 V до 3.3 V
  • SLA към SLA
  • SCL към SCL

Ако използвате Arduino UNO или друго 5 V устройство от максимум 3, 6 V от контролера I2C! Използвайте резистори или намалете 5 V от ПИН кода на Arduino!

Стъпка 2: Пример за прост код:

/* Пример за Arduino IDE (ESP) за I2C relaisboard.

* От Laurens Korste www.boktorrobotica.nl * безплатно за използване. */ #include // за I2C комуникация void setup () {// това правило не е за UNO или платки със специални I2C пинове Wire.begin (D1, D2); // присъединявам се към i2c шина със SDA = D1 и SCL = D2 за NodeMCU} void loop () {Wire.beginTransmission (0x10);/ * започнете предаване към I2C адрес 10 (за промяна също на 11, 12 или 13) */ Wire.write (0x01); / * реле за избор 1 (от 4) на борда 10 (също 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* задайте реле 1 на борда 10 в положение ON. всички номера> 0 ще го направят */ Wire.endTransmission (); / * спиране на предаването */ забавяне (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * задайте реле 1 на борда 10 на OFF */ Wire.endTransmission (); / * спиране на предаването */ забавяне (3000); }

Стъпка 3: Тестов код с четири релета

/* скица от Laurens Korste за Arduino (ESP / NodeMCU)

* Но други платки също ще го направят * www.boktorrobotica.nl * В този ключ 4 релета ще бъдат активирани и деактивирани */ #include // за I2C комуникация void setup () {Serial.begin (115200); // започва сериен за отстраняване на грешки (9600 за UNO) Wire.begin (D1, D2); // присъединяване към i2c шина със SDA = D1 и SCL = D2 на NodeMCU няма нужда от UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // започваме с адреса на устройството Wire.write (i); // избор на relais Wire.write (0xFF); // изпращаме кода "on" FF (всеки брой от 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: Извикайте реле с една команда

Полезно е, ако имате нужда само от една команда, за да активирате или деактивирате реле. По -долу е функция, която може да направи това (с нискобайт и високобайт).

/ * скица от 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 печатни платки на печатна платка Възможни са 4 релета. В тази скица само две печатни платки // печатни платки и релета са обединени, така че да могат да бъдат извикани с една команда const байт PutOn = 0xFF; // команда за включване на const байт PutOff = 0x00; // команда за изключване const дума Relay1bord1 = 0x1001; // можете да правите шансове за имената чрез пример Relay1 const word Relay2bord1 = 0x1002; // можете да поставяте шансове за имената чрез пример Relay2 const word Relay3bord1 = 0x1003; // можете да поставяте шанса за имената чрез пример Relay3 const word 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); // започва сериен за отстраняване на грешки (9600 за UNO) Wire.begin (D1, D2); // присъединяване към i2c шина със SDA = D1 и SCL = D2 на NodeMCU няма нужда от UNO} void loop () {// за превключване на реле 4 на печатна платка 2 на RelayActie (Relay4bord2, PutOn); забавяне (1000); // за изключване на реле 4 на печатна платка 2 RelayActie (Relay4bord2, PutOff); забавяне (1000); } void RelayActie (Word Relay, байт OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (реле)); Wire.write (OnOrOff); Wire.endTransmission (); }

Препоръчано: