目录

前言

二、步骤

1.代码部分

2.自己制作一个简易的app

3.连线

4.一些小事情

总结



前言

网上简易宿舍开门装置吸引了我,于是我试着做了一个,材料也不多,基于arduino的一个蓝牙,nfc开门装置。


一、材料准备

1、首先肯定要有一块arduino的板子(我用的是UNO)

2、蓝牙模块

3、NFC模块

4、各种杜邦线

5、舵机

6、oled显示屏

备注:电源自备,充电宝就行。现在全球缺芯片,单片机的价格水涨船高,不少的店家十分的贵,推荐一个店家:信泰微电子;买的真心的好,虽然客服回复的慢了一点,但会很耐心的。

二、步骤

1.代码部分

废话不多说,上代码

#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
#include <SoftwareSerial.h>
#include <Servo.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h> //加载NFC,蓝牙模块,舵机的库函数MFRC522 rfid(10, 9);   //定义MFRCC522的数据口
Servo DJ;    //定义一个舵机
byte nuidPICC[4];    //创建一个卡片,这里的4是指4个16位的数据
SoftwareSerial BT(4, 5);  //蓝牙模块数据传输串口
String val = "";    //一个空的字符串,为蓝牙模式准备
Adafruit_SSD1306 display(128, 64, &Wire, 8); //加载SSD1306static const unsigned char PROGMEM mu[] =
{ 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0xFC, 0x03, 0x80, 0x05, 0x40, 0x05, 0x40,0x09, 0x20, 0x11, 0x10, 0x21, 0x08, 0x41, 0x04, 0x81, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
};
static const unsigned char PROGMEM you[] =
{ 0x02, 0x00, 0x02, 0x00, 0xFF, 0xFE, 0x04, 0x00, 0x04, 0x00, 0x0F, 0xF0, 0x08, 0x10, 0x18, 0x10,0x2F, 0xF0, 0x48, 0x10, 0x88, 0x10, 0x0F, 0xF0, 0x08, 0x10, 0x08, 0x10, 0x08, 0x50, 0x08, 0x20
};
static const unsigned char PROGMEM ka[] =
{ 0x02, 0x00, 0x02, 0x00, 0x03, 0xF8, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFF, 0xFE, 0x02, 0x00,0x02, 0x00, 0x02, 0x40, 0x02, 0x20, 0x02, 0x10, 0x02, 0x08, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00
};
static const unsigned char PROGMEM D[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00
};
static const unsigned char PROGMEM qi[] =
{ 0x10, 0x00, 0x10, 0x00, 0x3F, 0xFC, 0x20, 0x00, 0x4F, 0xF0, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x10,0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x02
};
static const unsigned char PROGMEM bu[] =
{ 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x03, 0x40, 0x05, 0x20,0x09, 0x10, 0x11, 0x08, 0x21, 0x04, 0x41, 0x04, 0x81, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
};
static const unsigned char PROGMEM ai[] =
{ 0x01, 0x10, 0x01, 0x10, 0x7B, 0xFC, 0x49, 0x10, 0x49, 0x10, 0x48, 0x00, 0x4A, 0x08, 0x4A, 0x08,0x49, 0x10, 0x49, 0x10, 0x78, 0xA0, 0x48, 0x40, 0x00, 0xA0, 0x01, 0x10, 0x02, 0x08, 0x0C, 0x06
};
static const unsigned char PROGMEM You[] =
{ 0x00, 0x00, 0x3F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x08, 0x20, 0x08, 0x20, 0x04, 0x40,0x04, 0x40, 0x02, 0x80, 0x01, 0x00, 0x02, 0x80, 0x04, 0x40, 0x08, 0x20, 0x30, 0x18, 0xC0, 0x06
};
static const unsigned char PROGMEM le[] =
{ 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x01, 0x80, 0x01, 0x00, 0x01, 0x00,0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00
};
//以上为取模软件所生成的void setup()
{SPI.begin();   //时钟初始化rfid.PCD_Init(); //NFC初始化Serial.begin(9600);//串口波特率定义为9600BT.begin(9600);DJ.attach(6);  //舵机的信息口定义在6号脚,DJ.write(0);  //初始给舵机写入0°display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //SSD1306的地址
}void loop()
{for (int i;; i++)//不断循环,使程序能够不断运行,while(1)也行{if ( ! rfid.PICC_IsNewCardPresent())//找卡{display.setTextColor(WHITE);display.clearDisplay();display.setTextSize(1);display.setCursor(0, 8);display.println("~LALA~");display.drawBitmap(0, 32, mu, 16, 16, 1);display.drawBitmap(16, 32, you, 16, 16, 1);display.drawBitmap(32, 32, ka, 16, 16, 1);display.display();display.startscrollleft(0x00, 0x0F);delay(100);         //oled显示if (BT.available()) {while (BT.available() > 0){val += char(BT.read());delay(2);}Serial.println(val);}if (val == "2"){ DJ.write(170);delay(1000);DJ.write(0);}val = "";}   //蓝牙模块开门,注意一定要将val制空,不然无法进行下一次开锁else{display.setTextColor(WHITE);display.clearDisplay();display.setTextSize(1);display.setCursor(35, 8);display.println("HAHA");display.drawBitmap(16, 32, ai, 16, 16, 1);display.drawBitmap(32, 32, D, 16, 16, 1);display.drawBitmap(48, 32, You, 16, 16, 1);display.drawBitmap(64, 32, you, 16, 16, 1);display.drawBitmap(80, 32, le, 16, 16, 1);display.display();display.startscrollleft(0x00, 0x0F);if ( ! rfid.PICC_ReadCardSerial())MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);//找到卡片,比对卡片类型for (byte i = 0; i < 4; i++) {nuidPICC[i] = rfid.uid.uidByte[i];Serial.println(nuidPICC[i]);}if (nuidPICC[0] == 0X43 && nuidPICC[1] == 0X8F && nuidPICC[2] == 0XD2 && nuidPICC[3] == 0X04 || nuidPICC[0] == 0XFC && nuidPICC[1] == 0XC1 && nuidPICC[2] == 0X20 && nuidPICC[3] == 0X4A)//校验是否为本人卡片{DJ.write(170);delay(1000);DJ.write(0);}//nfc开锁}}}

2.自己制作一个简易的app

我是学长推荐的appinventor,不过我搜到的是App inventor 2 增强版,没用过一,也不知道有什么差别。跳转链接:WxBit 图形化编程 - 汉化并增强的 App Inventor 2 服务器 ,很方便,脱离苦海。

这个就不做过多解释了,因为我也是一知半解,就不误导大家了。

3.连线

大家最关心的连线来了。

这个连线太多,我就打出来吧,也方便大家连线(因为现在大部分都是拍照,看起来费眼睛,费脑子)。本人穷逼一个,买的盗版板子,因为接线太多我直接用扩展口了,而且十分方便,之所以没用板子的RX,TX,是因为蓝牙模块,NFC模块都要数据传输,防止万一,自己定一个串口。

舵机红正褐地黄信号,最好接5V,3.3V也可,信号线接6号口

OLED就是正常接,扩展口是正好一排插入

蓝牙模块电源正常接,RX接D5,TX接D4。上电一定要注意,有的蓝牙模块只能上3.3V,我没遇到,但是网上说了。而且单一蓝牙模块是RX接板子上的TX

MFRCC522最麻烦 SDA接D10,SCK接D13,MOSI接D11,MISOI接D12,RST接D9

一定要注意刷新口的定义,不可以与其他模块冲突,不然功能肯定无法实现

4.一些小事情

    UNO引脚定义图:

MFRCC522的接线定义:

蓝牙模块的调试还须USB转TTL的线,通过串口助手更改密码,名称等

AT指令集:百度网盘 请输入提取码

NFC模块可以通过手机软件NFCTools读取卡号,因为对其了解不深,不知道如何防冲突,因此只要是同批次卡都能解开,大神们自己修改一下。

另,蓝牙模块程序部分转载自:https://blog.csdn.net/


总结

通过对此的制作,掌握一些模块使用方法,学习如何解决代码中的问题

arduino实战 1——利用arduino做一个简易开门装置相关推荐

  1. arduino实战 2——利用arduino做一个人体传感器

    arduino是较为简单的单片机,易上手.所以利用arduino开始探索之旅吧. 目录 一.材料清单 一).模块介绍 1).HC-SR501 2).HC-SR04 二).实物展示 1).工作流程 2) ...

  2. 利用反射做一个简易 Spring IOC 容器,模仿其装配功能

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/wenwenaier/article/ details/115549343 自己用代码模仿一个简易的SpringIOC容器,模仿 ...

  3. arduino智能浇花系统_解放双手!自己动手做一个简易智能浇花系统

    原标题:解放双手!自己动手做一个简易智能浇花系统 面对疫情,宅在家的我们可以以各种方式为战"疫"一线的医护工作者.紧急研究病毒的科研人员.口罩厂日夜工作的人们......加油打气. ...

  4. python之做一个简易的翻译器(一)

    平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字"免费翻译接口& ...

  5. 用python简易英汉互译界面_python之做一个简易的翻译器(一)

    平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字"免费翻译接口& ...

  6. js 月份间隔计算器_15分钟用JS做一个简易计算器

    原标题:15分钟用JS做一个简易计算器 前言 这个小练手旨在帮助刚上手学习Java的同学练习最基本的Js知识,大神勿喷哈,由于这个是非常简易的计算器,可以完成的功能有加减乘除和AC(清屏),DEL(退 ...

  7. python 知乎接口_Python日记——用Django做一个简易的知乎日报API

    为什么我要选择django做生成api的框架 因为其内置的orm简单易用 生成restful的api要配合rest_framework使用 文档地址:https://darkcooking.gitbo ...

  8. 【简易广告机】利用树莓派制作一个简易的广告机(1)

    利用树莓派做一个简单的广告机 废话不多说开始 1. 安装 omxplayer omxplayer 简易介绍:omxplayer是专门针对树莓派的GPU的播放器,支持硬件解码,最高支持分辨率是1080P ...

  9. python发音机器人_只需三步,菜鸟也能用Python做一个简易版Siri

    原标题:只需三步,菜鸟也能用Python做一个简易版Siri 当下,各个手机厂商都陆续的推出了属于自己的智能手机机器人,像是苹果的Siri,小米的小爱,还有等等.这些智能机器人不仅仅方便了我们对于手机 ...

最新文章

  1. 云原生应用的10大关键属性
  2. 独家 | 手把手教你在试验中修正机器学习模型(附学习资源)
  3. 画直线_在鸡的面前画直线,鸡为什么会晕呢,西瓜视频带你揭秘
  4. java web中align命令_java web开发
  5. 使用Runnable配合Thread创建线程
  6. xe6+firedac 连接sybase
  7. 单元测试(UT)、功能测试(FT)(转)
  8. Python字符串怎样实现contains效果
  9. RTOS原理与实现10:互斥信号量实现
  10. python 二维矩阵及转byte知识点
  11. java枚举比较_java枚举enum equal与==
  12. java mac算法_银行业加密算法,MAC算法算法(java-国密)
  13. GNU Makefile
  14. 安卓手机突然很卡_安卓手机为什么很卡 安卓手机卡顿原因分析【详解】
  15. 张大哥笔记-如何利用网络赚钱(20种网络赚钱方法推荐)
  16. 网络统考计算机应用基础ppt视频,计算机应用基础课程网络统考辅导.ppt
  17. 省钱兄外卖CPS小程序源码uniapp源码前端模版
  18. NLP-文本处理:词性标注【使用成熟的第三方工具包:中文(哈工大LTP)、英文()】【对分词后得到的“词语列表”进行词性标注,词性标注的结果用于依存句法分析、语义角色标注】
  19. 云服务器训练神经网络
  20. 使用 Python 将 MP4视频 转换为GIF动画

热门文章

  1. 麦块盒子一直说没安装java_我的世界盒子麦块
  2. 【托福口语】口语素材常用俚语234句合集
  3. 持续受高端人士追捧,上海保时捷车主组团买华为MateRS保时捷版
  4. 360安卓平台apk包加固签名, jarsigner使用详解
  5. 详解Mycat读写分离
  6. 当电子工程师十余年,感慨万千!
  7. 力扣 反转链表(图解)
  8. 自制html5塔防游戏
  9. 【 Ubuntu20.04 下载搜狗输入法 — 附搜狗官方安装操作指南】
  10. 公众号上的高分辨率数据(WorldView、Pleiades等)集中分享