RFID鸿蒙电脑,Arduino+RFID来实现一卡通代替钥匙开启电动车

本文主要是介绍RFID鸿蒙电脑,Arduino+RFID来实现一卡通代替钥匙开启电动车,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

想实现一卡通代替钥匙开启电动车。

简单的原理,通过RC522模块读取一卡通的序列号,在程序中进行判断决定(继电器的控制端输出状态),继电器的被控端接电门锁。

对于识别通过的卡号第一次开启继电器,第二次断开继电器……(实现上下车开关)

一、先晒图:

1、开启电源,Arduino,RFID RC522模块运行。

e27611d11fa1528596e6183ba3f1566f.png

2、一卡通靠近RC522 识别成功!信号灯亮,继电器工作导通被控制端。

130b11c0b126d108d98cf7e786f6875e.png

3、一卡通靠近RC522 识别成功!信号灯熄灭,被控端断开。

086ad4100a7f94c5a620c99afcb78c37.png

二、连线部分

Arduino                                               RC522 (工作电压3.3V)

· D5                               RST    (这个脚不接貌似也可以)

· D10                             SDA   (在RC522中即为CS)

· D11                             MOSI

· D12                             MISO

· D13                             SCK

· VCC                             VCC

· GND                             GND

继电器模块控制端

· D7                              In1

· VCC                           VCC

· GND                           GND

//整理时间:2013.05.25

#include

#include

RFID rfid(10,5); //D10--读卡器MOSI引脚、D5--读卡器RST引脚

int led = 9;

int relay=7;

bool state=true;

void setup()

{

Serial.begin(9600);

SPI.begin();

rfid.init();

pinMode(led, OUTPUT);

pinMode(relay,OUTPUT);

digitalWrite(relay,HIGH);

}

void loop()

{

unsigned char type[MAX_LEN];

//找卡

if (rfid.isCard( type)) {

Serial.println("Find the card!");

;

// Show card type

ShowCardType(type);

//读取卡序列号

if (rfid.readCardSerial()) {

Serial.print("The card's number is : ");

Serial.print(rfid.serNum[0],HEX);

Serial.print(rfid.serNum[1],HEX);

Serial.print(rfid.serNum[2],HEX);

Serial.print(rfid.serNum[3],HEX);

Serial.print(rfid.serNum[4],HEX);

Serial.println(" ");

ShowUser(rfid.serNum);

}

//选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡

Serial.println(rfid.selectTag(rfid.serNum));

}

rfid.halt();

}

void ShowCardType( unsigned char* type)

{

Serial.print("Card type: ");

if(type[0]==0x04&&type[1]==0x00)

Serial.println("MFOne-S50");

else if(type[0]==0x02&&type[1]==0x00)

Serial.println("MFOne-S70");

else if(type[0]==0x44&&type[1]==0x00)

Serial.println("MF-UltraLight");

else if(type[0]==0x08&&type[1]==0x00)

Serial.println("MF-Pro");

else if(type[0]==0x44&&type[1]==0x03)

Serial.println("MF Desire");

else

Serial.println("Unknown");

}

void ShowUser( unsigned char* id)

{

//EE 9B 9C 38 D1

if( id[0]==0xEE && id[1]==0x9B && id[2]==0x9C && id[3]==0x38 ) {

Serial.println("Hello Mary!");

state=RelayStatus(state);

}

else if(id[0]==0x24 && id[1]==0x12 && id[2]==0xE0 && id[3]==0x13) {

Serial.println("Hello MicroHao!");

state=RelayStatus(state);

}

else{

Serial.println("Hello unkown guy!");

BlinkLED();

}

}

bool RelayStatus(bool status)

{

if(status)

{

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

digitalWrite(relay,LOW);

return false;

}

digitalWrite(led, LOW); // turn the LED on (HIGH is the voltage level)

digitalWrite(relay,HIGH);

return true;

}

void BlinkLED()

{

digitalWrite(relay,HIGH);

for(int i=0;i<3;i++)

{

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000);

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(1000);

}

}

晚上不错应用实际了,看图。

bbb9602340cbf348e909bf27c1288b4e.png

work!

556c464298166ac3f5356bf3421cdc23.png

这篇关于RFID鸿蒙电脑,Arduino+RFID来实现一卡通代替钥匙开启电动车的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303956

相关文章

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C