基于瑞萨MCU制作的具有刷卡开箱功能的快递盒
RA MCU&立创EDA的训练营活动已经落下帷幕,其中有不少优秀的开源项目,让我们一起来看看小伙伴们一些优秀的作品吧基于瑞萨MCU制作的具有刷卡开箱功能的快递盒
https://image.lceda.cn/pullimage/T7KBwK7Fl8IV9qbtCDRPAGOte6wbOv8gDeWr1zzs.png
开源作者:Eilgnaw
项目简介:
基于瑞萨RA2E1 MCU制作的具有刷卡开箱功能的立创快递盒子
基本功能:
使用串口与 PN532 进行通信.
快递盒打开时,刷卡以录入开箱NFC卡信息,录入成功后蜂鸣器发出长音.可以用于更换卡片.
快递盒关闭时,刷卡,当NFC卡正确时,盒子自动开箱并发出短音,当 NFC 卡非录入卡片时,蜂鸣器响两声.
原理图:
电路说明:
引脚说明:
配置 P000 为输入模式,作为快递盒开关状态信号.根钛丝锁商家提供的说明得知,当锁在开启时两根信号线开路,关闭时信号线导通,以此来判断盒子开关状态.
配置 P915 为输出模式,控制钛丝锁.钛丝锁电气参数为5V/1.2A,搭配 NMOS 作为钛丝锁开关.
配置 P407 为输出模式,控制蜂鸣器作为工作时成功与失败提示.
配置 P212/P213 为串口与 PN532 通讯.
程序说明:
根据 PN532 通讯协议对数据进行解析,代码如下
void user_uart1_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
{
uart1_send_complete_flag = true;
}
if(p_args->event == UART_EVENT_RX_CHAR)
{
RxBuff = p_args->data;
RxLine++; //每接收到一个数据,进入回调数据长度加1
DataBuff=RxBuff;//把每次接收到的数据保存到缓存数组
Rx_flag=1;
Rx_len++;
if (Rx_len == 0x09) { //开始读取长度
Rx_clen = RxBuff + 13;
}
if(Rx_len == Rx_clen)
{
Rx_flag_finish=1;
Rx_len--;
}
RxBuff=0;
}
}当钛丝锁开启时,读取到卡号进行存储处理
err = R_FLASH_LP_Erase(&g_flash0_ctrl, FLASH_DF_BLOCK_0, 1);
assert(FSP_SUCCESS == err);
printf("R_FLASH_LP_Erase\n");
while (!interrupt_called)
{
;
}
assert(FLASH_EVENT_ERASE_COMPLETE == flash_event);
interrupt_called = false;
flash_status_t status;
err = R_FLASH_LP_Write(&g_flash0_ctrl, (uint32_t) cardId, FLASH_DF_BLOCK_0, cardId_length);
当钛丝锁关闭时,读取到卡号与存储的卡号进行对比并进行处理
if (0 == memcmp(cardId, (uint8_t *) FLASH_DF_BLOCK_0, 4))
{
open_box();
}else
{
err_beep();
}
成品展示:
https://image.lceda.cn/pullimage/T7KBwK7Fl8IV9qbtCDRPAGOte6wbOv8gDeWr1zzs.png
https://image.lceda.cn/pullimage/PcRvFeXmlEKb0xrVHHWvEqMM7Kn8MI9aZQhemtf4.png
https://image.lceda.cn/pullimage/EnOhtX1V36CtDXUOnmRIUSd6fAa7ENqGFEUAs8im.png
代码:
工程详细内容及项目开源地址:https://oshwhub.com/eilgnaw/eilgnaw001
更多优秀开源作品:
https://oshwhub.com/recommend/LC&RAMCU
页:
[1]