之所以会做这样一套系统,就是因为我想显摆一下我对W5500的灵活运用,哈哈,不要说我只会得瑟,你也可以随时随地来一套与我切磋切磋,接下来就看看我到底是如何实现的吧!
概述
工具:W5500EVB、RC-522射频模块、蜂鸣器模块
编译环境:keil5
目的:通过W5500EVB讲读取到的IC卡信息上传到后台数据库,后台处理后实现浏览器端登录浏览用户打卡信息。
后台接收到相应的数据后开始处理数据并实现在浏览器端显示IC卡的ID以及绑定客户的用户名、打卡时间、签到状态等信息。该系统还添加有用户注册、登录、密码找回等功能。
过程
整个系统的实现主要分为以下两部分:
1、模块驱动及数据上传;
2、后台数据处理及前端显示;
整个系统的前端显示可通过浏览器注册、登录、添加和查询用户信息、密码找回、生产用户Excel表格等。下面分别介绍两个部分的实现过程。
模块驱动及数据上传
该部分的实现相对简单,网上有很多关于RC-522的驱动代码,我就不在赘述了。这里主要说一下读取到卡的ID以后的操作。在这之前还要先讲一下单片机的网络连接方案。
网络连接方案有很多,例如传统的软件TCP/IP协议栈方案;较新的硬件TCP/IP协议栈方案;软件协议栈代码量较大,对工程师来说工作量也相对较大。硬件协议栈较为简单,只需要将要发送的数据交给网络芯片处理就行了。数据的发送和接收都有该芯片来实现。我们只需在应用层传输/读取数据就行了。
硬件协议栈的方案是由WIZnet首次提出,并成功推出以太网芯片系列。W5500EVB就是采用以STM32RCT6为主控芯片加W5500以太网芯片的方案来实现网络接入的功能。
设备在读取到卡的ID以后将ID数据封装打包以后交给W5500,W5500将数据通过HTTP协议将数据发送给后台服务器并接收服务器返回的响应报文。成功发送和响应后蜂鸣器会发出50ms的响声来提示数据上传成功。如不成功则会发出100ms的响声来提示数据上传错误。数据上传的代码如下:
其中post_data_to_server()函数是将ID数据打包成HTTP报文的格式。Send函数是W5500的官方库函数用来执行数据的发送。getSn_RX_RSR()函数是读取SOCKET的接收缓存来判断是否有数据需要接收,这里是来接收HTTP服务器的响应报文。
以上就实现了IC卡数据读取和上传的功能。
第二部分
【后台服务器和前端实现】
我们将在下次一次的文章中再与大家继续分享。
想知后事如何
锁定
每周一、三、五
我们不见不散!
领取专属 10元无门槛券
私享最新 技术干货