Điều khiển 8 rơ le qua internet

06/04/2021
dieu-khien-8-ro-le-qua-internet

I. Ý tưởng:

    Ý tưởng ở đây là tạo ra một webapp có 8 nút điều khiển trạng thái 8 relay (rơ le) sử dụng kit bSmart. Relay có 2 trạng thái bật/tắt hoặc HIGH/LOW hoặc 1/0 hoặc true/false. Như vậy mỗi khi nhấn nút thay đổi trạng thái relay trên webapp, ta sẽ cho webapp gửi 1 chuỗi JSON có cấu trúc như bên dưới đến mạch bSmart thông qua MQTT:

{“id”:<thứ tự relay>,”state”:<trạng thái relay>}

 

II. Chuẩn bị:

 Như vậy chúng ta sẽ cần những thứ sau:

  • Chắc chắn là 1 chiếc mạch bsmart và 8 con relay
  • Một nền tảng giúp tạo webapp đẹp, nhanh, miễn phí, dễ => Node Red (Đã cài dashboard)
  • Một nền tảng MQTT Broker miễn phí, dễ dùng => Tui chọn shiftr.io
  • Công cụ xử lý chuỗi JSON cho ESP32 => thư viện ArduinoJSON
  • Thư viện dành cho module SIM => TinyGSM
  • Thư viện tạo kết nối MQTT cho ESP32 => PubSubClient

III. Lắp ráp phần cứng:

   Các bạn nối module 8 relay với mạch bSmart theo sơ đồ sau:

Sơ đồ kết nối 8 relay với bSmart, các bạn có thể chọn 8 chân khác nếu thích

IV. Thiết lập phần mềm:

1. Thiết kế webapp:

   Đầu tiên, chúng ta sẽ có 8 nút switch để chuyển đôi trạng thái tắt bật của 8 relay. 

Thiết đặt settting cho 1 switch, các bạn làm tương tự cho 7 cái còn lại

    Node tiếp theo sẽ nhận đối tượng JSON được gửi ra từ các switch và chuyển chúng thành chuỗi JSON, vì dữ liệu cần truyền đi là chuỗi ký tự.

    Và node cuối cùng là mqtt out để publish dữ liệu vào 1 MQTT Broker, chọn biểu tượng cây bút (khoanh cam) để nhập thông tin MQTT cần kết nối tới.

    Nhập host tại server, port, nhập user và pass ở bên tab Security.

Xong rồi thì nhấn Update để quay lại

    Tiêp theo là nhập topic cần publish dữ liệu vào, ở đây mình nhập "bsmart/relays". Bạn có thể nhập bất kỳ thứ gì, không nhất thiết phải theo mình.

Nhớ chọn thiết lập MQTT vừa nhập tại mục Server

   

2. Lập trình cho ESP32:

    Xem code đầy đủ tại đây: https://github.com/loc4atnt/bwbsmart...

    Còn phía dưới là code khung sườn 2 hàm setup và loop để mô tả hoạt động của ESP32 với đoạn code phía trên.

  1. void setup() {
  2. Serial.begin(115200);
  3.  
  4. // pinmode, tắt các rơ le khi mới khởi động
  5. for (int i =0;i<RELAYS_AMOUNT;i++){
  6. pinMode(relays[i], OUTPUT);
  7. digitalWrite(relays[i], LOW);
  8. }
  9.  
  10. // Kết nối tới wifi
  11. connectToWifi();
  12.  
  13. // Khởi động SIM => Thành công thì khởi tạo kết nối GPRS
  14. if (initModemSIM())
  15. connectToGPRS();
  16.  
  17. // Có 2 đối tượng MQTT Client: 1 dành cho kết nối Wifi, 1 dành cho GPRS
  18. // Do đó chạy 2 lần lệnh setup mqtt
  19. setupMQTT(&wifiMqtt);
  20. setupMQTT(&gsmMqtt);
  21. }
  22.  
  23. void loop() {
  24. if (isWifiConnected()) {// Ưu tiên đầu, nếu có wifi thì xử lý kết nối mqtt với wifi
  25. mqttLoopWithWifi();
  26. } else if (modem.isGprsConnected()) {// Còn khi không có wifi thì chuyển qua dùng GPRS
  27. mqttLoopWithGPRS();
  28. } else {
  29. Serial.println("Khong co ket noi ca wifi va GRPS!");
  30. delay(2000);
  31. }
  32. }

 

V. Lời kết:

    Cảm ơn các bạn đã quan tâm đến bài viết! Hi vọng chúng ta sẽ tiếp tục đồng hành cùng nhau trong bài viết tiếp theo của seri "Khám phá thế giới IoT với bSmart".

Nếu có bất kỳ thắc mắc nào, đừng ngần ngại để lại câu hỏi bên dưới hoặc nhắn tin vào https://www.facebook.com/giaiphapchung68, mình sẽ sẵn lòng giúp đỡ ngay khi có thời gian rảnh nhé! Hẹn gặp các bạn ở bài viết tiếp theo !!!

Chúc các bạn thành công!

Bình luận
Nội dung này chưa có bình luận, hãy gửi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN CỦA BẠN