#include <DS1302.h>
#include <EEPROM.h>
#include <SPI.h>
#include <MFRC522.h>
void printHex(byte *buffer, byte bufferSize);
#define SS_PIN 10
#define RST_PIN 9
byte nuidPICC[4];
int address = 0;
///
DS1302 rtc(2, 3, 4); //对应DS1302的RST,DAT,CLK
void initRTCTime(void)//初始化RTC时钟
{
rtc.writeProtect(false); //关闭写保护
rtc.halt(false); //清除时钟停止标志
Time t(2020, 4, 25, 21, 50, 50, 7); //新建时间对象 最后参数位星期数据,周日为1,周一为2以此类推
rtc.time(t);//向DS1302设置时间数据
}
void saveTime()//打印时间数据
{
Time tim = rtc.time(); //从DS1302获取时间数据
char buf[12];
snprintf(buf, sizeof(buf), "%02d-%02d %02d:%02d",
tim.mon, tim.date, tim.hr, tim.min);
Serial.println(buf);
// for(int i = 0;i <= 11; i++)
// {
EEPROM.write(address,tim.mon);
EEPROM.write(address+2,tim.date);
EEPROM.write(address+4,tim.hr);
EEPROM.write(address+6,tim.min);
// }
address+=7;
}
///
MFRC522 rfid(SS_PIN, RST_PIN); //创建MFRC522实例
MFRC522::MIFARE_Key key;
//byte t[3]={6,0,0};
void setup() {
Serial.begin(9600);
SPI.begin(); //初始化 SPI 总线
rfid.PCD_Init(); //初始化 MFRC522 卡
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
}
//initRTCTime(void);
void loop() {
//
// delay(1000);
// t[2]++;
// if(t[2]==60){
// t[1]++;
// t[2]=0;
// }
// if(t[1]==60){
// t[0]++;
// t[1]=0;
// }
// if(t[0]==24){
// t[0]=0;
// }
//
///
if(!rfid.PICC_IsNewCardPresent())
return;
if(!rfid.PICC_ReadCardSerial())
return;
saveTime();//打印时间
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print(F("Hex1:"));
printHex(rfid.uid.uidByte, rfid.uid.size);//函数调用(buffer[i],bufferSize)
Serial.println();
//暂停PICC
rfid.PICC_HaltA();
//暂停PCD上的加密
rfid.PCD_StopCrypto1();
///
for (byte i = 0; i < 4; i++)
{
EEPROM.write(address, rfid.uid.uidByte[i]);
address = address + 1;
if (address == EEPROM.length())
{
while(Serial){}//等待
}
}
// int asdfghjkl = printTime();
// for(byte j = 0; j <= 2; j++)
// {
// EEPROM.write(address,asdfghjkl);
//
//
// address = address + 1;
// if (address == EEPROM.length())
// {
// while(Serial){}//等待
// }
// }
///
}
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? "0" : "");
Serial.print(buffer[i], HEX);
}
Serial.print("#");
}
相关推荐
基于Arduino与AI视觉传感器的交互式导览系统设计与实现
嵌入式物联网系统通过整合多种传感器与本地处理单元,实现物理世界与数字信息的实时交互。其核心原理在于利用微控制器协调传感器数据采集、逻辑判断与执行器控制,构建稳定可靠的本地智能节点。这种技术方案在响应速度、隐私保护和离线可用性方面具有显著优势,尤其适用于对实时性要求高或网络环境受限的固定场景。例如,在智慧导览、互动展陈等应用场景中,系统可通过AI视觉传感器识别特定物体,结合离线语音模块接收指令,并通过NFC模块绑定用户身份,从而完成一套完整的“感知-决策-反馈”交互闭环。本项目以澳门建筑导览为具体案例,详细阐
基于 Arduino Uno 和 RFID-RC522 的 RFID 卡号读取技术详解
Arduino Uno 是一款基于 ATmega328P 微控制器的开源开发板,具备 14 个数字 I/O 引脚和 6 个模拟输入引脚,是快速原型开发的理想选择。其兼容性强,支持 SPI、I2C 等多种通信协议。
【ESP 保姆级教程】疯狂传感器篇 —— 案例:ESP8266 + RFID-RC522射频 + 刷入用户名字 + 打卡应用
- 给空白卡刷入中文用户信息 - 模拟打卡,并且获取到打卡用户信息,上传到巴法云平台
Arduino常用指令汇总+详解
基本数字IO pinMode(pin,Mode); //pin为数字引脚编号,Mode是输出状态 //一般有OUTPUT和INPUT和INPUT_PULLUP三种状态 //注意,INPUT_PULLUP相当于直接给这个叫接了一个上拉电阻(连VCC),所以此脚默认输出高电平 ...
【ESP 保姆级教程】疯狂Node.js服务器篇 ——教室WiFi自动打卡考勤(飞书群信息+NodeJs)
- 支持在群(`飞书群`)里面有打卡记录提醒 - 支持NodeJs后台记录打卡信息
电子书阅读器自动打卡神器:DIY基于ESP32实现蓝牙键盘
最近,我通过某活动白嫖了一台口袋阅2电子书。在此之前,我已经在用软件实现打卡功能,手上有两台咪咕Kindle和一台掌阅F1,但口袋阅2安装软件不是那么方便。于是,我决定另辟蹊径,用硬件来实现自动打卡功能。这个方案其实早已被一些动手能力强的大佬实现,我只是站在巨人的肩膀上,将整个过程重新梳理一遍,方便更多像我一样喜欢折腾的玩家。
Arduino 门禁系统制作
本文将会一步一步实现一个门禁系统,使用 RFID 通信(NFC可以和它是相互兼容的)。也就是说用手机(支持 NFC)或者REID标签就可以实现开锁。
基于单片机的指纹打卡系统
基于单片机的指纹打卡系统具有高效、安全、便捷的特点,广泛应用于各类考勤和门禁系统中。通过指纹识别技术,可以有效避免代打卡现象,提高管理效率。
RFID 控制灯
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 int led=2; MFRC522 rfid(SS_PIN, RST_PIN); //创建MFRC522实例 MFRC522::MIFARE_Key key; byte nuidPICC[4]; void setup() { Serial.begin(9600); SPI.begin(); //初始化 SPI
✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub
构建一个带 GPU 支持的深度学习开发镜像;使用 PyTorch 2.5.1(CUDA 12.4)环境;发布并托管 Docker 镜像至 Docker Hub;验证 GPU 环境正常运行!🎉 这将极大提升你的项目部署效率,尤其是在多人协作或跨平台部署场景中。
AArch64 ARM64 寄存器介绍
除了上述通用寄存器,还有FPSR(浮点状态寄存器)和 FPCR(浮点控制寄存器)等。X29寄存器和X30寄存器在函数调用和堆栈帧的管理中扮演着关键角色。AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。EL0、EL1、EL2和EL3是AArch64架构中定义的四个特权级别(Exception Levels),用于支持不同的执行环境和特权级别。
c语言 字符数组 0xff,编一个C语言程序实现从一个字符型数组变量中找出一个标志字符0xff并将该标志字符后的二个字符对应的数字相...
匿名用户1级2011-06-27 回答下面是C语言的一些题及题形(附答案):一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)下列各题A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1) 计算机的存储器完整的应包括A) 软盘、硬盘 B) 磁盘、磁带、光盘C) 内存储器、外存储器 D) RAM、ROM(...
(二)MS-MPI多机通信
1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...
4*4矩阵键盘+DS3231时钟模块+LCD1602显示模块+SD卡模块=arduino uno打卡机
x(YY年,MM月,DD日,5,HH时,MM分,SS秒。
论文分享|ECCV2022,PATnet,Cross-Domain Few-Shot Semantic Segmentation,CDFSS新基准,文末有复现教程
这篇论文提出的跨域小样本语义分割(CD-FSS)任务,旨在将源域学习的分割能力迁移到目标域,仅需少量标注样本。针对传统小样本分割方法在跨域场景性能下降的问题,作者提出了基于金字塔锚点变换的网络(PATNet),通过将域相关特征转换为域无关特征,并引入任务自适应微调推理(TFI)提升目标域适应能力。实验表明,PATNet在1-shot和5-shot设置下分别比现有方法提升8.49%和10.61%的准确率。同时,作者构建了CD-FSS基准并设计了任务难度评估指标。代码和数据集已开源,复现难度中等。
DeepSeek的训练与优化流程
DeepSeek的训练体系不仅追求极致的计算效率,更注重将物理规律、人类知识、安全伦理深度融入训练过程,其"效率-安全-可解释性"三角平衡的设计理念,为行业提供了重要参考范式。
Arduino学习打卡第一天
setup()函数:开发板通电或复位后会执行setup函数,只会执行一次,通常写入一些初始化的设置。loop()函数:死循环,在setup函数执行完成之后,执行loop函数。
八大核心深度学习算法详解:从CNN到Transformer的完整指南
深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统
模拟蓝牙打卡机
只需要一个ESP32模块模拟蓝牙打卡机,即可通过蓝牙打卡 亲测有效arduino代码如下。打卡机的MAC和RAW数据可使用安卓app mRFconnect 扫描获取。模拟蓝牙打卡,源码来自github项目dingBLE。
【WRF后处理】基于wrf-python处理wrf运行结果wrfout_d01
基于wrf-python处理wrf运行结果wrfout_d01
AutoSAR MemMap模块详解及使用注意事项
在本文中,我们将深入探讨MemMap模块的实例解析,并介绍在使用该模块时需要注意的一些事项。在上述代码中,我们使用了MEMMAP_START_SEC_VAR_32BIT和MEMMAP_START_SEC_CODE来定义MemMap区域的起始位置,使用MEMMAP_STOP_SEC_VAR_32BIT和MEMMAP_STOP_SEC_CODE来定义MemMap区域的结束位置。1.合理划分MemMap区域:根据实际需求,合理划分MemMap区域,将不同类型的变量放置在不同的区域中,以便于管理和访问。
ARDUINO.
十二月八日。 使用了arduinoIDE。 一个关于打卡器的尝试。 使用到了arduino开发板、ds1302时间模块、MFRC522模块。 贴上代码: #include <DS1302.h> #include <EEPROM.h> #include <SPI.h> #include <MFRC522.h> void printHex(byte *buffer, byte bufferSize); #define SS_PIN 10 #defin
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
Arduino学习打卡第二天--数码管
共阳即将公共点接在vcc上(发光则需将另一端改为低电平),共阴接在gnd上(发光则需将另一端改为高电平),本章学习为共阴极二极管。在写数码管具体代码的时候,可以将八根段选线的数字显示编辑成二维数据,通过循环遍历获取。在四位数码管中,想共同显示数字,需记得使用刷屏函数(初始化设置)也为动态扫描。// 定义共阴极数码管不同数字对应逻辑电平的二维数组。有四根位选线,以及八根段选线,也分为共阴型和共阳型。
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
PN532 NFC近场通信实现智能打卡签到
本文介绍如何利用PN532 NFC模块实现高效、安全的智能打卡系统,涵盖硬件选型、UID识别、防重复签到策略及系统集成方案,适用于课堂、办公场景的快速部署与扩展。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
从零玩转RFID:基于RC522与Arduino的DIY物联网应用实战
射频识别(RFID)技术通过无线电波实现非接触式数据通信,其核心原理是读写器与电子标签之间的电磁耦合与信息交换。这项技术因其非接触、可批量读取和成本低廉的特点,在物联网、自动识别与数据采集领域具有重要价值,广泛应用于门禁、物流、资产管理等场景。本文聚焦于高频RFID技术,特别是基于13.56MHz的MIFARE协议,深入探讨如何利用**RC522读写模块**与**Arduino开发板**构建DIY应用。通过SPI通信接口,开发者可以轻松读取或写入标签的UID及用户数据区,实现从基础身份识别到复杂数据管理的功
NFC Shield V2.0硬件拆解与Arduino项目实战指南
近场通信(NFC)技术作为一种短距离无线通信技术,其核心原理基于13.56MHz频率的电磁感应耦合,实现设备间的非接触式数据交换。这项技术的工程价值在于其低功耗、高安全性与快速连接特性,使其成为物联网设备身份识别、移动支付和数据传输的关键技术。在嵌入式开发领域,Arduino平台因其开源生态和丰富的扩展模块而广受欢迎,其中NFC扩展板(Shield)作为功能集成模块,显著降低了射频电路设计的门槛。本文聚焦于NFC Shield V2.0这一典型硬件模块,深入解析其围绕PN532芯片的硬件设计升级,包括可调天
268



被折叠的 条评论
为什么被折叠?



