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)

Mô Tả Dự Án

Để đ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: 

#include <SPI.h>
#include <MFRC522.h>
#include <iNut.h>

iNut sensor;

#define OFF LOW
#define ON HIGH

#define BIP     8
#define DY_03   7
#define SS_PIN  10 // định nghĩa chân cho MFRC522
#define RST_PIN 9 // định nghĩa chân cho MFRC522
MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (DY_03,OUTPUT);
pinMode (BIP,OUTPUT);
digitalWrite(DY_03,OFF);// mặc định là ổ khóa điện được đóng
digitalWrite(BIP,OFF); // còi chíp tắt
sensor.setup(1);
Serial.println("Đặt thẻ của bạn vào để kiểm tra:...");
sensor.addCommand("LOCK",LockFunction);
}

void LockFunction()
{
  char *arg1 = sensor.next();
  Serial.println(arg1);
    if (*arg1 == NULL)
  return;
  if(strcmp(arg1,"1") == 0) // nếu được gửi tín hiệu là "1"
  {
    digitalWrite(DY_03,ON); // khóa mở
    Serial.println(F("Đã Mở"));
    sensor.setValue(0,1);
  }
  else if(strcmp (arg1,"0") == 0) // nếu được gửi tín hiệu là "0"
  {
    digitalWrite(DY_03,OFF); // khóa đóng
    Serial.println(F("Đã Đóng"));
    sensor.setValue(0,0);
  }
  else {
    Serial.println("Khong nam trong tap hop lenh");
  }
}

void loop() {
#define LOCK_INIT     0
#define LOCK_OPEN     1
#define LOCK_WAITING  2
#define LOCK_CLOSE    3
// định nghĩa các trạng thái của ổ khóa
static int lockstate = LOCK_INIT;
static unsigned long lock_timer = 0; // ban đầu thời gian = 0
  // put your main code here, to run repeatedly:
 if ( mfrc522.PICC_IsNewCardPresent()) 
  {
     if ( mfrc522.PICC_ReadCardSerial())
      {
         // Select one of the cards
   
  //Show UID on serial monitor
  Serial.println();
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "09 22 58 29") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
    Serial.println("ID: Oh Yeah!! mời vào.");
    lockstate = LOCK_OPEN;
  }
 
 else   {
    Serial.println(" Access is denied "); 
    digitalWrite(DY_03,OFF);
    digitalWrite(BIP,ON);
    delay(2000);
    digitalWrite(BIP,OFF);
  }
      }
  }
switch (lockstate){
  case LOCK_INIT:{ //không làm gì cả
    break;
  }
  case LOCK_OPEN:{
    digitalWrite(DY_03,ON); // mở khóa
    digitalWrite(BIP,OFF);
    sensor.setValue (0,1);
    lock_timer = millis(); //gán thời gian ban đầu cho thời gian ngay lúc cửa mở
    lockstate = LOCK_WAITING;
    Serial.println(F("[LOCK_OPEN][lockstate]Mở Cửa"));
    Serial.print(F("thời gian tại thời điểm mở cửa :"));
    Serial.println(lock_timer);
    break;
  }
  case LOCK_WAITING: {
    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.
      lockstate = LOCK_CLOSE;
    }
    break;
  }
  case LOCK_CLOSE:{
    digitalWrite(DY_03,OFF); // đóng lại
    sensor.setValue (0,0);
     Serial.println(F("Cửa Đã Đóng"));
     Serial.print(F("Thời gian tại lúc đóng cửa: "));
     Serial.println(millis());
     Serial.print("Thời gian chờ đóng cửa: ");
     Serial.println(millis() - lock_timer);
     Serial.println(getMemoryFree());
   lockstate  = LOCK_INIT;
   break;
  }
}
  sensor.loop();
  getMemoryFree();
}
int getMemoryFree() {
  // 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 đó
  extern int __heap_start;
  extern int *__brkval; 
  
  //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 đứng
  //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 đề
  return (int) SP - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

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.com/ui/#/0

V. Kết Quả Của Hôm Nay: 

bản V2 đã xong,và đây là kết quả của chúng ta. Chúc các bạn thành công.

Youtube: 
lên
7 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Cách dùng Module L298N để điều khiển 4 động cơ DC

Trên cộng đồng đã có nhiều bài viết về động cơ, nhưng chưa có bài viết nào nói về cách để điều khiển cùng 1 lúc 4 động cơ mà chỉ dùng 1 module L298N. Nên hôm nay mình sẽ chia sẻ về cách để điều khiển cùng lúc 4 động cơ trên 1 module L298N.

lên
24 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Tài Liệu Kỹ Thuật Bỏ Túi Để Xây Dựng – Vận Hành – Quản Lý Một Dự Án Internet Of Things Với iNut Platform

Kính chào quý vị và các bạn!

Lập trình Internet of Things được biết đến là một thứ vô cùng khó khăn và phức tạp. Nơi này, trước đây không phải dành cho tất cả mọi người. Nhưng, để đưa Việt Nam trở thành một cường quốc về công nghệ cao và đi tắt đón đầu nhờ cuộc cách mạng công nghệ 4.0 thì bài toán Internet of Things phải được giải quyết bằng chính trí tuệ của tất cả mọi người. Cuối cùng, để giải quyết được đồ thị Đa dụng và Dễ sử dụng, iNut Node-red IDE đã ra đời, giải pháp cung cấp một phương pháp sáng tạo, cho phép người dùng lập trình ứng dụng IoT bằng những khối lệnh kéo thả với những ví dụ ngay trong app. Ngay cả một học sinh tiểu học học STEM cũng có thể làm được. Hãy cùng khám phá nhé!

Mặc dù trên http://arduino.vn/ đã có rất nhiều bài viết về iNut nhưng chưa có một bài viết nào cụ thể dành cho các bạn newbie khi mới mua một bộ iNut cảm biến về thì phải làm như thế nào, bắt đầu từ đâu, các bước thực hiện như thế nào….? Bài viết này sẽ tổng hợp lại và hướng dẫn các bạn thực hiện setup từng bước một và demo 1 ví dụ cụ thể để các bạn có thể biết các iNut cảm biến vận hành thế nào nha. Ở mỗi mục mình sẽ trích dẫn link bài viết liên quan để các bạn tham khảo thêm, từ đó có cái nhìn tổng quát nhất khi mới bắt đầu sử dụng iNut cảm biến.

lên
5 thành viên đã đánh giá bài viết này hữu ích.

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)

Để đ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.

lên
8 thành viên đã đánh giá bài viết này hữu ích.