|
RA MCU&立创EDA的训练营活动已经落下帷幕,其中有不少优秀的开源项目,让我们一起来看看小伙伴们一些优秀的作品吧
基于瑞萨MCU制作的具有刷卡开箱功能的快递盒
开源作者: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[0] = p_args->data;
- RxLine++; //每接收到一个数据,进入回调数据长度加1
- DataBuff[RxLine-1]=RxBuff[0]; //把每次接收到的数据保存到缓存数组
- Rx_flag=1;
- Rx_len++;
- if (Rx_len == 0x09) { //开始读取长度
- Rx_clen = RxBuff[9] + 13;
- }
- if(Rx_len == Rx_clen)
- {
- Rx_flag_finish=1;
- Rx_len--;
- }
- RxBuff[0]=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://oshwhub.com/recommend/LC&RAMCU
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|