Mục lục:

I2C Relay Met Arduino IDE: 5 bước
I2C Relay Met Arduino IDE: 5 bước

Video: I2C Relay Met Arduino IDE: 5 bước

Video: I2C Relay Met Arduino IDE: 5 bước
Video: Giao Tiếp I2C Với LCD 16x2 Bằng Arduino Uno R3 | Điện tử DAT 2024, Tháng bảy
Anonim
I2C Relay Met Arduino IDE
I2C Relay Met Arduino IDE

Tôi đặt hàng một bảng chuyển tiếp đẹp nhưng không có hướng dẫn ArduinoIDE, chỉ có Raspberry Pi e.o. Tôi tìm hiểu cách sử dụng nó với Arduino và muốn chia sẻ nó để bạn có thể tiết kiệm thời gian.

Ví dụ về RaspberryPi gốc:

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

Điều tuyệt vời là bạn có thể xếp chồng lên đến 4 bảng. Vì vậy, bạn có thể sử dụng tối đa. 4 x 4 = 16 rơ le trên một bus I2C.

Ngoài ra còn có một số khuyết điểm:

  • đầu mối nhỏ, không phù hợp với dây 1 mm2
  • bạn không thể thay đổi hệ thống dây của các đầu nối dưới cùng khi chúng được xếp chồng lên nhau

Nhưng vẫn còn tiện dụng của hội đồng quản trị.

Bước 1: Nối dây

Dây điện
Dây điện
Dây điện
Dây điện
Dây điện
Dây điện

Trong hình ảnh, bạn có thể thấy dây.

52Pi cần cả 5V (cho relay) en 3.3V (chip I2C).

Vì vậy, 5 dây cần thiết:

  • GND sang GND
  • 5 V đến 5 V
  • 3,3 V đến 3,3 V
  • SLA đến SLA
  • SCL sang SCL

Nếu bạn sử dụng Arduino UNO hoặc 5 V khác, hãy nhập tối đa 3, 6 V từ bộ điều khiển I2C! Sử dụng điện trở hoặc cách khác để giảm 5 V ra khỏi mã PIN Arduino!

Bước 2: Ví dụ về mã đơn giản:

/ * Ví dụ về Arduino IDE (ESP) cho bảng chuyển tiếp I2C.

* Của Laurens Korste www.boktorrobotica.nl * miễn phí để sử dụng. * / #include // cho giao tiếp I2C void setup () {// quy tắc này không dành cho UNO hoặc bo mạch có chân I2C chuyên dụng Wire.begin (D1, D2); // tham gia bus i2c với SDA = D1 và SCL = D2 cho NodeMCU} void loop () {Wire.beginTransmission (0x10); / * bắt đầu truyền đến địa chỉ I2C 10 (cũng có thể thay đổi thành 11, 12 hoặc 13) * / Wire.write (0x01); / * lựa chọn relais 1 (trong số 4) trên bảng 10 (cũng 0x02, 0x03, 0x04) * / Wire.write (0xFF); / * đặt relais 1 trên bo mạch 10 thành BẬT. tất cả các số> 0 sẽ làm như vậy * / Wire.endTransmission (); / * ngừng truyền * / delay (3000); Wire.beginTransmission (0x10); / * * / Wire.write (0x01); Wire.write (0x00); / * đặt relais 1 trên bo mạch 10 thành OFF * / Wire.endTransmission (); / * dừng truyền * / delay (3000); }

Bước 3: Bốn mã kiểm tra tiếp sức

/ * bản phác thảo của Laurens Korste cho Arduino (ESP / NodeMCU)

* Nhưng các bo mạch khác cũng sẽ làm được * www.boktorrobotica.nl * Trong nút này, 4 rơ le sẽ được kích hoạt vì đã tắt * / #include // cho giao tiếp I2C void setup () {Serial.begin (115200); // bắt đầu nối tiếp để gỡ lỗi (9600 cho UNO) Wire.begin (D1, D2); // tham gia bus i2c với SDA = D1 và SCL = D2 của NodeMCU không cần UNO} void loop () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // bắt đầu bằng địa chỉ thiết bị Wire.write (i); // lựa chọn relais Wire.write (0xFF); // gửi mã "on" FF (mọi số đếm từ 01 đến FF sẽ được thực hiện) Wire.endTransmission (); // ngừng truyền Serial.write (i); Serial.println ("aan"); chậm trễ (1000); Wire.beginTransmission (0x10); // bắt đầu bằng địa chỉ thiết bị Wire.write (i); Wire.write (0x00); // Gửi mã "tắt" Wire.endTransmission (); // ngừng truyền Serial.write (i); Serial.println ("uit"); chậm trễ (1000); }}

Bước 4: Dự án của tôi

Dự án của tôi
Dự án của tôi
Dự án của tôi
Dự án của tôi

Tôi đã viết mã để vận hành 3 cửa chớp của mình. Điều này có thể được thực hiện bằng công tắc nhưng cũng có thể bằng ứng dụng BLYNK, Xem hình ảnh.

  • Một lần nhấn ngắn sẽ bắt đầu di chuyển một cửa trập (hoặc dừng nó khi nó đang di chuyển).
  • Một lần nhấn và cả ba cửa chớp sẽ mở (hoặc đóng hoặc dừng).
  • Áp suất kép: cửa chớp đi đến vị trí "lỗ".

Có thể thấy trong hình, em cũng được tích hợp cảm biến nhiệt độ và ánh sáng.

Bây giờ mọi thứ trên một PCB cơ bản tốt và gọn gàng trong một chiếc hộp.

Bước 5: Gọi chuyển tiếp bằng một lệnh

Sẽ rất hữu ích nếu bạn chỉ cần một lệnh để kích hoạt hoặc hủy kích hoạt rơle. Dưới đây là một chức năng có thể thực hiện điều này (với lowbyte và highbyte).

/ * bản phác thảo của Laurens Korste cho Arduino (ESP / NodeMCU) với bảng chuyển tiếp I2C * Nhưng các bảng khác cũng sẽ làm được * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com / index.php / DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * Trong bản phác thảo này, rơle sẽ được kích hoạt bằng một lệnh gọi; * // #include // cho giao tiếp I2C // Tiếp theo khai báo. 4 PCB trên mỗi PCB Có thể có 4 rơ le. Trong bản phác thảo này chỉ có hai PCB // PCB và rơ le được hợp nhất để chúng có thể được gọi bằng một lệnh const byte PutOn = 0xFF; // lệnh để bật const byte PutOff = 0x00; // comand để tắt const word Relay1bord1 = 0x1001; // bạn có thể đặt tên bằng ví dụ Relay1 const word Relay2bord1 = 0x1002; // bạn có thể đặt tên bằng ví dụ Relay2 const word Relay3bord1 = 0x1003; // bạn có thể đặt tên bằng ví dụ Relay3 const word Relay4bord1 = 0x1004; // bạn có thể đặt tên bằng ví dụ Relay4 const word Relay1bord2 = 0x1101; // bạn có thể đặt tên bằng ví dụ Relay5 const w ord Relay2bord2 = 0x1102; // bạn có thể đặt tên theo ví dụ Relay6 const word Relay3bord2 = 0x1103; // bạn có thể đặt tên theo ví dụ Relay7 const word Relay4bord2 = 0x1104; // bạn có thể đặt tên theo ví dụ Relay8 const word Relay1bord3 = 0x1201; // bạn có thể đặt tên theo ví dụ Relay9 const word Relay2bord4 = 0x1302; // bạn có thể đặt tên bằng ví dụ Relay14 void setup () {Serial.begin (115200); // bắt đầu nối tiếp để gỡ lỗi (9600 cho UNO) Wire.begin (D1, D2); // tham gia bus i2c với SDA = D1 và SCL = D2 của NodeMCU không cần UNO} void loop () {// để chuyển relay 4 trên PCB 2 trên RelayActie (Relay4bord2, PutOn); chậm trễ (1000); // để chuyển relay 4 trên PCB 2 tắt RelayActie (Relay4bord2, PutOff); chậm trễ (1000); } void RelayActie (word Relay, byte OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (Rơ le)); Wire.write (OnOrOff); Wire.endTransmission (); }

Đề xuất: