【宿舍指纹锁---Arduino UNO (保姆级教程)】

宿舍指纹锁—Arduino UNO

1.准备材料

  • Arduino UNO
  • AS608指纹模块+TTL转接口
  • MG996R舵机
  • 1602液晶
  • 胶枪
  • 杜邦线
  • 面包板
  • 细线
  • 5v电源

2.库文件

https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/archive/master.zip

1.首先下载Adafruit指纹库(https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/archive/master.zip)。下载完成后,您将得到一个.zip文件;

若网络问题也可以选择网盘下载(百度网盘链接:https://pan.baidu.com/s/1CtmazaWGRVbuUJDGhkte7A
提取码:kdnb)

2.解压缩.zip文件,你会看到一个***Adafruit-Fingerprint-Sensor-Library-master***文件夹;

3.将**Adafruit-Fingerprint-Sensor-Library-master*文件夹重命名为Adafruit_Fingerprint_Sensor_Library***文件夹;

4.将文件夹移动到您的Arduino IDE安装库文件夹;

5.最后,重新打开Arduino IDE。

3.指纹录入

  • DNC – 白线
  • VCC – 红线
  • TX – 蓝线
  • RX – 绿线
  • GND – 黑线
指纹传感器Arduino
VCC5V(它也适用于3.3V)
TXRX(数字引脚2,串行)
RXTX(数字引脚3,串行)
GNDGND

注册指纹

将指纹传感器模块连接到Arduino,请按照下面的步骤注册新的指纹。确保您之前安装了Adafruit指纹传感器库。

1.在Arduino IDE中,转到*File > Examples > Adafruit Fingerprint Sensor Library > Enroll*

2.上传代码到Arduino开发板,并以9600的波特率打开串行监视器(在工具–>串口监视器中)。

3.显示读取到指纹模块后就可以输入指纹的编号,在提示move后拿起手指再次按压然后单击***Send***按钮。

4.液晶屏连接

  • LCD RS 引脚到数字引脚 12
  • LCD 使能引脚到数字引脚 11
  • LCD D4 引脚到数字引脚 5
  • LCD D5 引脚到数字引脚 4
  • LCD D6 引脚到数字引脚 3
  • LCD D7 引脚到数字引脚 2
  • LCD R/W 引脚到 GND
  • LCD VSS 引脚至 GND
  • LCD VCC 引脚至 5V
  • LCD LED+ 通过 220 欧姆电阻器至 5V
  • LCD LED- 到 GND

示意图

image-20220430110145764

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oODlUT33-1651288803731)(https://cdn.jsdelivr.net/gh/kdmvp-lin/MarkdownImg/image-20220430105712491.png)]

5.舵机连接

Arduino————舵机
5V————正极
GND————负极
9————信号线

舵机Arduino
正极5V(它也适用于3.3V)
信号线10(也可以是9,改为9代码也需修改)
负极GND

舵机说明:

​ 因为采用的是MG996r 360度舵机所以该舵机控制不像180度舵机一样可以设置角度,该舵机设置的是转速和时间

控制舵机代码如下:

 	//0-90 为顺时针转 90-180为逆时针 越接近0 和180 速度越快 90时停止
	pos=0;
    myservo.write(pos);
    delay(3800);
	//过了3800毫秒后停止(因为供电设备以及拉动门锁不同可能需要修改delay(3800)里面的参数)
    pos=90;
    myservo.write(pos);

6.代码部分

完整代码:

#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <Servo.h> 
Servo myservo;
SoftwareSerial mySerial(2, 3);
//初始化引脚
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int pos=0;
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int fingerprintID = 0;
String IDname;
void setup() {
    //舵机信号口
  myservo.attach(10);
  // 设置LCD的行列数据: 
  lcd.begin(16,2);
    //Fingerprint sensor module setup
    Serial.begin(9600);
   // set the data rate for the sensor serial port
    finger.begin(57600);
  
   if (finger.verifyPassword()) {
     Serial.println("Found fingerprint sensor!");
   } 
   else {
     Serial.println("Did not find fingerprint sensor :(");
     while (1) { delay(1); }
   }
}

void loop() {
  fingerprintID = getFingerprintIDez();
  delay(50);
   //如果找到下列指纹序号
  if(fingerprintID == 1 || fingerprintID == 2 || fingerprintID == 3 || fingerprintID == 4|| fingerprintID == 5){
   
      // 将光标移动到(0,0):
    lcd.setCursor(0, 0);                                        
    lcd.print("Welcome !");
  //  Servo_Control();
    pos=0;
    myservo.write(pos);
    delay(3800);
    pos=90;
    myservo.write(pos);
    delay(3000); 
 }
  delay(1500); 
  lcd.clear(); 

}

//指纹匹配函数
int getFingerprintIDez() {
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.image2Tz();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK)  return -1;


  
  return finger.fingerID; 
}

8.总结

到这里就已经实现指纹驱动舵机拉动门把手了,舵机的粘贴根据实际门把手位置自行安装,将指纹模块和显示屏装在门外面,再用杜邦线通过门缝连到里面来,固定可以使用热熔胶固定(用酒精擦拭可以取下并且不留痕迹)。

  • 22
    点赞
  • 158
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
以下是将ESP8266 NodeMCU开发板连接到Arduino Uno板并传输数据的示例代码: 在NodeMCU上运行的代码: ``` #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; // 你的WiFi名称 const char* password = "your_PASSWORD"; // 你的WiFi密码 WiFiServer server(80); // 设置一个本地服务器 void setup() { Serial.begin(9600); // 与串口通信 delay(10); // 连接到WiFi网络 Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // 开启服务器 server.begin(); Serial.println("Server started"); } void loop() { // 等待客户端连接 WiFiClient client = server.available(); if (!client) { return; } // 读取客户端发送的数据 Serial.println("new client"); while(!client.available()){ delay(1); } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // 发送数据到Arduino Uno Serial.println("Sending data to Arduino..."); Serial1.println(request); delay(100); // 发送响应到客户端 client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // 空行必须添加 client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<body>"); client.println("<h1>ESP8266 NodeMCU</h1>"); client.println("<p>Data sent to Arduino Uno: " + request + "</p>"); client.println("</body>"); client.println("</html>"); delay(1); Serial.println("Client disconnected"); Serial.println(""); } ``` 在Arduino Uno上运行的代码: ``` void setup() { Serial.begin(9600); // 与串口通信 Serial1.begin(9600); // 与NodeMCU通信 } void loop() { // 读取NodeMCU发送的数据 if (Serial1.available()) { String data = Serial1.readStringUntil('\r'); Serial.println("Data received: " + data); } } ``` 这个例子中,NodeMCU运行一个本地服务器,等待客户端连接并发送数据。当有客户端连接时,NodeMCU会读取客户端发送的数据并将其发送到Arduino Uno。然后,NodeMCU会向客户端发送一个HTML响应,其中包含已发送到Arduino Uno的数据。Arduino Uno只是读取NodeMCU发送的数据并将其打印到串口监视器中。 注意:确保将NodeMCU与Arduino Uno正确连接。将NodeMCU的TX引脚连接到Arduino Uno的RX引脚,将NodeMCU的RX引脚连接到Arduino Uno的TX引脚。如果您使用的是NodeMCU V1.0板,您需要将板上的开关设置为“UART”模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值