HƯỚNG DẪN SỬ DỤNG INUT CẢM BIẾN ĐỂ ĐIỀU KHIỂN 8 RELAY QUA INTERNET (KHÔNG CẦN INUT NODE - RED IDE)

25/06/2019
huong-dan-su-dung-inut-cam-bien-de-dieu-khien-8-relay-qua-internet-khong-can-inu

Để điều khiển 8 relay qua internet với iNut cảm biến, trước giờ muốn thực hiện được việc này các bạn cần phải sử dụng iNut Node - RED IDE để điều khiển nó, đôi khi cũng bất tiện cho một số bạn newbie vì phải thực hiện qua quá nhiều bước vừa trên máy tính vừa trên điện thoại. Hoặc nhưng bạn master thì sẽ sử dụng bộ API có sẵn của iNut Platform để tự làm app riêng cho mình. Hôm nay, mình sẽ hướng dẫn bạn cách sử dụng APP INUT để điều khiển 8 relay từ xa qua internet mà không cần iNut Node - RED IDE.

Giờ chúng ta sẽ bắt đầu làm nó luôn nha.

I. Bạn Cần Chuẩn Bị Những Gì?

Phần Cứng

  • iNut Cảm Biến
  • Arduino (mình xài uno)
  • USB Type B
  • Module 8 relay (ở đây mình không có module 8 relay nên mình xài 2 module 4 relay nha)
  • Một ít dây bus cái - cái để cắm, rào đựng hàn lên iNut Cảm Biến

Sơ đồ Kết Nối

Module 4 Relay 1

Module 4 Relay 2

iNut Cảm Biến

VCC

VCC

5V

GND

GND

GND

IN1

 

2

IN2

 

3

IN3

 

4

IN4

 

5

 

IN1

6

 

IN2

7

 

IN3

8

 

IN4

9

 

 

Phần Mềm

  • Trên điện thoại di động:
    • iNut - Platform (các bạn search trong apple store hoặc google play từ khóa inut là ra). Tải về trên Apple Store, tải về ở Google Play.
  • Trên máy tính:
    • Git
    • NodeJS (mirror)

Các bạn đọc bài viết này để biết cần chuẩn bị những phần mềm 

II. Lập Trình:

Bạn Cần Chuẩn Bị Thư Viện Cho iNut Cảm Biến Cho Arduino tại đây

Code Arduino

 
  1. #include <iNut.h>
  2. iNut sensor;
  3.  
  4. #define BAT LOW
  5. #define TAT HIGH
  6. #define RELAY_COUNT 8
  7. #define WRITE_COMMAND 200
  8. int relay[] = {2,3,4,5,6,7,8,9};
  9. void setup() {
  10. Serial.begin(9600); //bật baudrate ở mức 9600
  11.  
  12. Serial.println("San sang nhan lenh");
  13.  
  14. for (int i = 0; i < RELAY_COUNT; i++) {
  15. pinMode(relay[i], OUTPUT);
  16. digitalWrite(relay[i], TAT);
  17. }
  18.  
  19. //Khai báo số lượng luồn cảm biến
  20. sensor.setup(8); //Sẽ có 08 luồn cảm biến
  21.  
  22. sensor.addCommand("ON", onFunction);
  23. sensor.addCommand("OFF", offFunction);
  24. sensor.addCommand("ONLINE", onlineFunction);
  25. sensor.addCommand("OFFLINE", offlineFunction);
  26. sensor.addCommand("TIME", timeFunction);
  27. sensor.setDefaultHandler(defaultHandler);
  28. }
  29. void timeFunction() {
  30. int year = atoi(sensor.next());
  31. int month = atoi(sensor.next());
  32. int day = atoi(sensor.next());
  33. int hour = atoi(sensor.next());
  34. int minute = atoi(sensor.next());
  35. int second = atoi(sensor.next());
  36. Serial.print("Bay gio la: ");
  37. Serial.print(year);
  38. Serial.print('/');
  39. Serial.print(month);
  40. Serial.print('/');
  41. Serial.print(day);
  42. Serial.print(' ');
  43. Serial.print(hour);
  44. Serial.print(':');
  45. Serial.print(minute);
  46. Serial.print(':');
  47. Serial.print(second);
  48. Serial.println('!');
  49. }
  50.  
  51. void onlineFunction() {
  52. Serial.println("Thiet bi dang ket noi Internet rat ok");
  53. }
  54.  
  55. void offlineFunction() {
  56. Serial.println("Thiet bi dang mat ket noi");
  57. }
  58.  
  59. void onFunction() {
  60.  
  61. int bit_index = atoi(sensor.next()) - WRITE_COMMAND;
  62.  
  63. Serial.print("Bat relay thu ");
  64. Serial.println(bit_index);
  65.  
  66. digitalWrite(relay[bit_index],BAT);
  67. }
  68.  
  69. void offFunction() {
  70. int bit_index = atoi(sensor.next()) - WRITE_COMMAND;
  71. Serial.print("Tat relay thu ");
  72. Serial.println(bit_index);
  73. digitalWrite(relay[bit_index], TAT);
  74. }
  75.  
  76. void loop() {
  77.  
  78. //sensor.setValue(0, digitalRead(LED)); //đọc giá trị của đèn LED
  79.  
  80. for (int i = 0; i < RELAY_COUNT; i++) {
  81. int value = digitalRead(relay[i]);
  82. //đồng bộ trạng thái iNut
  83. if (value == BAT) {
  84. sensor.turnOn(0, i);
  85. } else {
  86. sensor.turnOff(0, i);
  87. }
  88. }
  89.  
  90. //giá trị cho các luồn từ 1-7 là giá trị random
  91. ///Tại sao lại sử dụng random? Vì đây là thử nghiệm, bạn có thể thay thế giá trị random bằng một giá trị cảm biến hoặc trị số mà bạn mong muốn đồng bộ lên Internet!
  92. for (byte i = 1; i <= 7; i++) {
  93. unsigned long value = random() % 10000; //trả về giá trị random - "hên xui" - tự do
  94. sensor.setValue(i, value); //gán giá trị trên vào luồn
  95. }
  96. sensor.loop();
  97. }
  98.  
  99. //Nếu nhận được lệnh không phải từ những lệnh được đăng ký trước thì sẽ ghi ra ở đây
  100. void defaultHandler(const char *command) {
  101. Serial.print(F("---Not found handler: "));
  102. Serial.println(command);
  103.  
  104.  
  105. //Đoạn chương trình dưới chỉ dùng để debug, để các bạn biết chương trình của mình ở lỗi ở đâu để khắc phục, cũng không cần hiểu nha.
  106. int idx = 0;
  107. char *arg;
  108. while ((arg = sensor.next()) != NULL) { //còn tham số nào thì in ra
  109. Serial.print("-----> Gia tri thu #");
  110. Serial.print(idx);
  111. Serial.print(": ");
  112. Serial.println(arg);
  113.  
  114. idx++;
  115. }
  116. }

Trên App iNut

Bạn theo dõi link này để cài đặt app, tạo tài khoản và đăng nhập vào, chọn thiết bị tại đây

Bước 1: Mở app iNut, chọn vào phần cài đặt -> chọn iNut Cảm Biến

 

Bước 2: Chọn Thuật Sĩ Cài Đặt Nhanh

Bước 3: Setup thông số như hình phía dưới, chọn Chạy Trình Thuật Sĩ

Bước 4: Sẽ hiện ra thông báo như hình dưới, chọn OK

Bước 5: qua phần bảng điều khiển, kéo xuống dưới phần iNut cảm biến và điều khiển

Như vậy là xong, chiêm ngưỡng thành quả và điều khiển liền đi nào. Có thể mở rộng ra 16,32 relay v,v tùy vào nhu cầu sử dụng của bạn.

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