IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Arduino 指纹锁踩坑记 -> 正文阅读

[嵌入式]Arduino 指纹锁踩坑记

前言

相信很多电子爱好者刚开始都想搞一些电子开发板之类的东西。开发板平台有很多:STM32系列,ESP系列,FPGA系列,当然还有今天的主角儿——Arduino系列。可能很多人当初是为了实现某些自动化设备开始捣鼓这些的,而我是在抖音上看到有人做指纹锁才开始做的。虽说这玩意是那些电子相关专业的,但听介绍也感觉不难,于是非专业的我也想做一个,谁让我对这玩意非常感兴趣呢。话不多说,上才艺!(其实是翻车记录) 呜呜~

踩到的坑

  • 硬件方面

  1. 舵机尽量买全金属机芯的。 MG996R这个型号的舵机有便宜的(十多块)和贵一点的(二十多块),买之前一定要问好店家老板舵机机芯是不是纯金属的。因为有些舵机外面的齿轮是金属的,但拆开的齿轮组全是塑料的。这样一来,负载重的东西可能会滑丝(当时我手欠,以为舵机和普通电机一样机芯和外部齿轮是直通的。就直接没有通电强行转动舵机,只听咔一声,滑丝了),滑丝后相当于直接报废。
  2. 舵机不要买360°的版本。 360°版本是通过PWM改变舵机转速来控制的,这样控制开锁会很麻烦。而180°以下的版本则是用PWM改变舵机的旋转角度,这样一步到位,很是方便。
  3. 开发板负载电机尽量加上继电器模块或者电机驱动模块,不要直接把舵机连在开发板上。 在板子负载这种纯电能转换的元器件的时候,电流一般很大,如果不加上中间的继电器的话,最直观的现象就是舵机只要一启动,板载LED会变暗。这时会很明显的感受到带动舵机很吃力,等程序运行几次后就会莫名奇妙的卡住。更严重的是在其他工程中,有可能直接烧坏开发板。
  4. 继电器有高电平触发、低电平触发和复合型触发
    低电平触发的继电器
    复合触发继电器
    这几种继电器是用开发板连接继电器的IN端通过改变其高低电平来对应控制继电器的打开和关闭(我刚开始买了一个低电平触发的,刚买回来偶然把继电器的VCC、GND、IN全部接触,继电器啪响了一下,后来再怎么搞都不响了。以为是坏了,就干脆忽略( 拆掉 )外围电路,直接连接到蓝色的部分把它当成高电平触发的用了。后来才知道有两种触发模式——都是不仔细看说明惹的祸)
  5. 如果要连接IIC的屏幕,SCL和SDA的两个个引脚可以直接连在板子上对应的引脚上面,有些买的元件的例程中让连接在A0、A1上或者A4、A5上,这样有时候可能会导致屏幕不亮,应该是库中没有正确定义引脚导致的。
  • 软件方面

  1. Arduino库的使用。Arduino IDE刚下载安装好的时候是自带几个库的,比如<Servo.h><Keyboard.h>。这几个库都在\软件安装目录下\libraries这个文件夹里,不用再费心的找了,直接引用就可以了。
  2. 串口监视器不能同时在两个软件打开。 比如你要上传程序,发现上传错误,这时可以看看上传的端口是不是被占用了。如果同时打开两个串口程序,很可能某个串口程序会崩溃,带来不必要的麻烦。
  3. 上传程序时要拔掉板子的0端口和1端口的连线。 因为上传程序占用的这两个端口。可以把需要串口通讯的部分代码改成软串口,这样下载的时候就不用管这两个端口啦。
  4. 程序中出现一组硬串口和一组软串口的时候,要辨别清楚对应的串口波特率。 例如<Adafruit_Fingerprint>库中的实例代码Fingerprint
#include <Adafruit_Fingerprint.h>
SoftwareSerial mySerial(2, 3);
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial
#endif

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()
{
  Serial.begin(9600);
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  delay(100);
  Serial.println("\n\nAdafruit finger detect test");

  // set the data rate for the sensor serial port
  finger.begin(57600);
  delay(5);
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }

  • 代码中出现了两个串口初始化。
    • 硬串口——第13行的Serial.begin(9600);对应的是第6行mySerial定义出的Serial这个名字,而mySerial又是第2行SoftwareSerial 这个关键字定义的——这对应的是单片机与电脑通讯的串口。
    • 软产口——第19行的finger.begin(57600);对应的是<Adafruit_Fingerprint.h>这个库中定义出的,用来让指纹模块和单片机通讯的串口。
  • 由于软串口的波特率设置不正确常常导致板子与指纹模块无法通讯的情况。就如上面代码中第19行的波特率设置为57600,而一般的指纹模块默认的是9600。如此导致无法识别指纹模块。

后续还可以给指纹锁加上显示屏,语音提示,声光报警之类的,以后再写啦!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:43:22  更:2021-08-24 15:45:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 23:36:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码