Mundarija:

I2C o'rni Arduino IDE bilan uchrashdi: 5 qadam
I2C o'rni Arduino IDE bilan uchrashdi: 5 qadam

Video: I2C o'rni Arduino IDE bilan uchrashdi: 5 qadam

Video: I2C o'rni Arduino IDE bilan uchrashdi: 5 qadam
Video: Как запрограммировать модуль реле Wi-Fi ESP8266 ESP-01 2024, Iyul
Anonim
I2C o'rni Arduino IDE bilan uchrashdi
I2C o'rni Arduino IDE bilan uchrashdi

Men yaxshi releyboardga buyurtma beraman, lekin ArduinoIDE ko'rsatmasi yo'q edi, faqat Raspberry Pi e.o. Men uni Arduino bilan qanday ishlatishni bilaman va shu vaqtni tejash uchun uni baham ko'rmoqchiman.

Asl RaspberryPi misoli:

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

Yaxshi narsa shundaki, siz 4 tagacha taxtalarni yig'ishingiz mumkin. Shunday qilib, siz maxdan foydalanishingiz mumkin. 4 x 4 = 16 o'rni bitta I2C avtobusida.

Kamchiliklari ham bor:

  • kichik terminallar, 1 mm2 simga mos kelmaydi
  • pastki konnektorlarning simlarini bir -biriga yopishtirganda o'zgartira olmaysiz

Lekin hali ham qulay taxtalar.

1 -qadam: simlarni ulash

Verging
Verging
Verging
Verging
Verging
Verging

Rasmlarda siz simlarning ulanishini ko'rishingiz mumkin.

52Pi -ga 5V (o'rni uchun) en 3.3V (I2C chip) kerak.

Shunday qilib, 5 ta sim kerak:

  • GND dan GNDgacha
  • 5 V dan 5 V gacha
  • 3,3 V dan 3,3 V gacha
  • SLA - SLA
  • SCL - SCL

Agar siz Arduino UNO yoki boshqa 5 V dan foydalansangiz, I2C kontrolleridan maksimal 3, 6 V bo'lishi kerak! Arduino PIN -kodining 5 V kuchlanishini pasaytirish uchun rezistorlardan foydalaning.

2 -qadam: Oddiy kod misoli:

/* Arduino IDE (ESP) misoli I2C qayta taxtasi uchun.

* Laurens Korste tomonidan www.boktorrobotica.nl * foydalanish bepul. */ #include // I2C aloqa bo'shligini o'rnatish uchun () {// bu qoida UNO yoki maxsus I2C pinli Wire.begin (D1, D2) bo'lgan taxtalar uchun emas; // i2c avtobusiga SDA = D1 va SCL = D2 bilan NodeMCU uchun qo'shiling} void loop () {Wire.beginTransmission (0x10);/ * I2C manzil 10 ga uzatishni boshlang (11, 12 yoki 13 ga o'zgartirish uchun) */ Wire.yozish (0x01); / * 10 -bortdagi tanlov relaysi 1 (4tadan) (shuningdek, 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* 10 -bortdagi 1 -relayni ON holatiga qo'ying. barcha raqamlar> 0 shunday qiladi */ Wire.endTransmission (); / * uzatishni to'xtatish */ kechiktirish (3000); Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * 10 -bortdagi 1 -releisni OFF holatiga qo'ying */ Wire.endTransmission (); / * uzatishni to'xtatish */ kechiktirish (3000); }

3 -qadam: To'rt o'rni sinov kodi

/* Arduino uchun Laurens Korste eskizi (ESP / NodeMCU)

* Ammo boshqa taxtalar ham shunday qiladi * www.boktorrobotica.nl * Bu skeychda 4 -o'rni o'chirilgan holda faollashtiriladi */ #include // I2C aloqasi bo'shligini o'rnatish uchun () {Serial.begin (115200); // disk raskadrovka uchun ketma -ketlikni boshlash (UNO uchun 9600) Wire.begin (D1, D2); // i2c avtobusiga SDA = D1 va SCL = D2 bilan NodeMCU bilan qo'shiling UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // Wire.write (i) qurilma manzili bilan boshlang; // Wire.write relayini tanlang (0xFF); // FF "on" kodini yuboring (01dan FFgacha bo'lgan har bir hisob bajariladi) Wire.endTransmission (); // uzatishni to'xtating Serial.write (i); Serial.println ("aan"); kechikish (1000); Wire.beginTransmission (0x10); // Wire.write (i) qurilma manzilidan boshlang; Wire.write (0x00); // Wire.endTransmission "off" kodini yuboring (); // uzatishni to'xtating Serial.write (i); Serial.println ("uit"); kechikish (1000); }}

4 -qadam: Mening loyiham

Mening loyiham
Mening loyiham
Mening loyiham
Mening loyiham

Men 3 ta panjurni ishlatish uchun kod yozdim, buni kalitlar yordamida, shuningdek, BLYNK ilovasi yordamida ham ko'rish mumkin.

  • Qisqa bosish bitta deklanşöre harakat qila boshlaydi (yoki harakatlanayotganda uni to'xtatadi).
  • Bir marta bosish va uchta panjur ochiladi (yoki yopiladi yoki to'xtaydi).
  • Ikki marta bosim: panjurlar "teshiklar" holatiga o'tadi.

Rasmda ko'rinib turibdiki, men harorat va yorug'lik sensorini ham birlashtirdim.

Endi hamma narsa yaxshi PCB va yaxshi qutida.

5 -qadam: Bir buyruq bilan estafeta chaqiring

Agar o'rni yoqish yoki o'chirish uchun sizga faqat bitta buyruq kerak bo'lsa, bu foydali bo'ladi. Quyida buni bajaradigan funksiya (past bayt va yuqori bayt bilan).

/ * Laurens Korste tomonidan Arduino uchun eskiz (ESP/NodeMCU) I2C o'rni taxtasi bilan * Ammo boshqa taxtalar ham shunday qiladi * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Ushbu eskizda o'rni bitta qo'ng'iroq orqali faollashtiriladi; 4 ta o'rni bo'lishi mumkin. Ushbu eskizda faqat ikkita PCB // PCB va o'rni birlashtiriladi, shunda ularni bitta buyruq bilan chaqirish mumkin: const bayt PutOn = 0xFF; // const baytini yoqish buyrug'i PutOff = 0x00; const word Relay1bord1 = 0x1001; // siz ismlarni misol orqali tasodif qilishingiz mumkin. Relay1 const so'z Relay2bord1 = 0x1002; Relay4bord1 = 0x1004; // misollar orqali ismlarni tasodif qilishingiz mumkin ord Relay2bord2 = 0x1102; // siz misollar orqali ismlarni tasodif qilishingiz mumkin Relay6 const word Relay3bord2 = 0x1103; // misollar orqali ismlarni tasodif qilishingiz mumkin Relay7 const word Relay4bord2 = 0x1104; // misollar orqali ismlarni tasodif qilishingiz mumkin. Relay8 const word Relay1bord3 = 0x1201; // misollar orqali ismlarni tasodif qilishingiz mumkin Relay9 const word Relay2bord4 = 0x1302; // siz Relay14 void setup () {Serial.begin (115200) misolida nomlarni tasodif qilishingiz mumkin; // disk raskadrovka uchun ketma -ketlikni boshlash (UNO uchun 9600) Wire.begin (D1, D2); // i2c avtobusiga SDA = D1 va SCL = D2 bilan NodeMCU bilan qo'shiling, UNO} void loop () {// RelayActie (Relay4bord2, PutOn) PCB 2da 4 -o'rni almashtirishga hojat yo'q; kechikish (1000); // 4 -PCB 2 -o'rni RelayActie -ni o'chirish uchun (Relay4bord2, PutOff); kechikish (1000); } void RelayActie (Relay so'z, bayt OnOrOff) {Wire.beginTransmission (highByte (Relay))); Wire.write (lowByte (o'rni)); Wire.write (OnOrOff); Wire.endTransmission (); }

Tavsiya: