HƯỚNG DẪN SỬ DỤNG INUT CẢM BIẾN VỚI MODULE 1 RELAY, MFRC522 VÀ KHÓA ĐIÊN DY_03 (bản V2)

26/06/2021
huong-dan-su-dung-inut-cam-bien-voi-module-1-relay-mfrc522-va-khoa-dien-dy-03-ba

Để điều khiển và đồng bộ dữ liệu cho các thiết bị qua internet bạn cần làm gì?

INut cảm biến sẽ cùng bạn thực hiện các dự án IOT từ nhỏ đến lớn. Ở bài viết trước,mình đã hướng dẫn bạn cách sử dụng INut cảm biến và module MFRC522 để điều khiển Servo thông qua internet và thẻ từ. Lần này mình sẽ cùng các bạn làm bản V2 với khóa điện DY_03.

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)
  • Testboard + dây kết nối
  • USB Type B (chúng ta hay gọi là dây nạp code)
  • Module MFRC522 (bao gồm cả thẻ trắng nha)
  • Còi Chíp
  • Module 1 Relay (mình xài relay kích 5V nha).
  • khóa điện LY_03 ( mình xài 24V, các bạn có thể xài 12V tùy thích) kèm nguồn.

Cách Nối Dây

B1: Lắp INut Cảm Biến lên board Arduino UNO

B2: Kết nối các thiết bị theo sơ đồ sau:

LY_03

MFRC522

Relay

INut Cảm Biến

Nguồn 24V

GND

 

 

 

GND

 

GND

GND

GND(chân âm còi chíp nối vô đây)

 

 

SDA

 

10

 

 

SCK

 

13

 

 

MOSI

 

11

 

 

MISO

 

12

 

 

RST

 

9

 

 

3.3V

 

3.3V

 

 

 

5V

5V

 

 

 

IN(chân kích)

7

 

VCC

 

NO

 

 

 

 

COM

 

VCC

 

 

 

6 ( chân dương còi chíp)

 

Phần Mềm

  • Trên điện thoại di động:
    • iNut - Công tắc wifi (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:

Nếu bạn chưa biết,tham khảo bài biết này: http://arduino.vn/i...

II Cài Đặt Khác

III Lập Trình

Bạn cần chuẩn bị thư viện sau:

Code Arduino: 

  1. #include <SPI.h>
  2. #include <MFRC522.h>
  3. #include <iNut.h>
  4.  
  5. iNut sensor;
  6.  
  7. #define OFF LOW
  8. #define ON HIGH
  9.  
  10. #define BIP 8
  11. #define DY_03 7
  12. #define SS_PIN 10 // định nghĩa chân cho MFRC522
  13. #define RST_PIN 9 // định nghĩa chân cho MFRC522
  14. MFRC522 mfrc522(SS_PIN, RST_PIN);
  15.  
  16. void setup() {
  17. ​// put your setup code here, to run once
  18. Serial.begin(9600);
  19. SPI.begin();
  20. mfrc522.PCD_Init();
  21. pinMode (DY_03,OUTPUT);
  22. pinMode (BIP,OUTPUT);
  23. digitalWrite(DY_03,OFF);// mặc định là ổ khóa điện được đóng
  24. digitalWrite(BIP,OFF); // còi chíp tắt
  25. sensor.setup(1);
  26. Serial.println("Đặt thẻ của bạn vào để kiểm tra:...");
  27. sensor.addCommand("LOCK",LockFunction);
  28. }
  29.  
  30. void LockFunction()
  31. {
  32. ​char *arg1 = sensor.next()
  33. ​Serial.println(arg1)
  34. ​if (*arg1 == NULL
  35. ​return
  36. ​if(strcmp(arg1,"1") == 0) // nếu được gửi tín hiệu là "1
  37. ​digitalWrite(DY_03,ON); // khóa m
  38. ​Serial.println(F("Đã Mở"))
  39. ​sensor.setValue(0,1)
  40. ​else if(strcmp (arg1,"0") == 0) // nếu được gửi tín hiệu là "0
  41. ​digitalWrite(DY_03,OFF); // khóa đón
  42. ​Serial.println(F("Đã Đóng"))
  43. ​sensor.setValue(0,0)
  44. ​else
  45. ​Serial.println("Khong nam trong tap hop lenh")
  46. }
  47.  
  48. void loop() {
  49. #define LOCK_INIT 0
  50. #define LOCK_OPEN 1
  51. #define LOCK_WAITING 2
  52. #define LOCK_CLOSE 3
  53. // định nghĩa các trạng thái của ổ khóa
  54. static int lockstate = LOCK_INIT;
  55. static unsigned long lock_timer = 0; // ban đầu thời gian = 0
  56. ​// put your main code here, to run repeatedly
  57. ​if ( mfrc522.PICC_IsNewCardPresent())
  58. ​if ( mfrc522.PICC_ReadCardSerial()
  59. ​// Select one of the card
  60.  
  61. ​//Show UID on serial monito
  62. ​Serial.println()
  63. ​Serial.print("UID tag :")
  64. ​String content= ""
  65. ​byte letter
  66. ​for (byte i = 0; i < mfrc522.uid.size; i++)
  67. ​Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")
  68. ​Serial.print(mfrc522.uid.uidByte[i], HEX)
  69. ​content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "))
  70. ​content.concat(String(mfrc522.uid.uidByte[i], HEX))
  71. ​Serial.println()
  72. ​Serial.print("Message : ")
  73. ​content.toUpperCase()
  74. ​if (content.substring(1) == "09 22 58 29") //change here the UID of the card/cards that you want to give acces
  75. ​Serial.println("Authorized access")
  76. ​Serial.println("ID: Oh Yeah!! mời vào.")
  77. ​lockstate = LOCK_OPEN
  78.  
  79. ​else
  80. ​Serial.println(" Access is denied ");
  81. ​digitalWrite(DY_03,OFF)
  82. ​digitalWrite(BIP,ON)
  83. ​delay(2000)
  84. ​digitalWrite(BIP,OFF)
  85. switch (lockstate){
  86. ​case LOCK_INIT:{ //không làm gì c
  87. ​break
  88. ​case LOCK_OPEN:
  89. ​digitalWrite(DY_03,ON); // mở khó
  90. ​digitalWrite(BIP,OFF)
  91. ​sensor.setValue (0,1)
  92. ​lock_timer = millis(); //gán thời gian ban đầu cho thời gian ngay lúc cửa m
  93. ​lockstate = LOCK_WAITING
  94. ​Serial.println(F("[LOCK_OPEN][lockstate]Mở Cửa"))
  95. ​Serial.print(F("thời gian tại thời điểm mở cửa :"))
  96. ​Serial.println(lock_timer)
  97. ​break
  98. ​case LOCK_WAITING:
  99. ​if (millis() - lock_timer > 5000UL){// thời gian sau đó - thời gian ngay lúc cửa mở > 5s thì cửa đóng lại
  100. ​lockstate = LOCK_CLOSE
  101. ​break
  102. ​case LOCK_CLOSE:
  103. ​digitalWrite(DY_03,OFF); // đóng lạ
  104. ​sensor.setValue (0,0)
  105. ​Serial.println(F("Cửa Đã Đóng"))
  106. ​Serial.print(F("Thời gian tại lúc đóng cửa: "))
  107. ​Serial.println(millis())
  108. ​Serial.print("Thời gian chờ đóng cửa: ")
  109. ​Serial.println(millis() - lock_timer)
  110. ​Serial.println(getMemoryFree())
  111. ​lockstate = LOCK_INIT
  112. ​break
  113. }
  114. ​sensor.loop()
  115. ​getMemoryFree()
  116. }
  117. int getMemoryFree() {
  118. ​// Trong trường hợp này, ta có thể hiểu extern sẽ khai báo một biến toàn cục trong chương trình (nếu chưa có) hoặc include một biến toàn cục đã được extern trước đ
  119. ​extern int __heap_start
  120. ​extern int *__brkval;
  121.  
  122. ​//Dấu & phía trước tên biến / tên con trỏ sẽ cho ta biết vị trí ô nhớ mà nó đang đứn
  123. ​//Lưu ý: bài viết này không dành cho beginner và bạn cần tưởng tượng một chút để có thể mườn tượng vấn đ
  124. ​return (int) SP - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
  125. }

Code Node - RED:  mình để code ở trên heroku, nếu bạn nào chưa biết heroku là gì thì tham khảo bài viết ở trên chỗ cài đặt phần mềm nha.

https://damp-stream-15408.herokuapp.com/#flow/891bb18c.71f9b

Giao diện làm việc:  https://damp-stream-15408.herokuapp....

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