基于物联网的公交车收费系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于物联网的公交车收费系统
一.系统设计
整体设计
公交车收费系统使用Android数据网关,连接无线AP点,通过串口跟控制芯片连接,控制芯片将RFID读卡器的数据通过无线AP发送,对公交卡用户执行开户、充值、余额查询、销户、消费等操作。
系统框图如下:
公交车收费系统的硬件设备主要包括:
(1) Android后台:程序的运行环境,处理获取的卡号,执行相关操作,并显示金
额。
(2) RFID读卡:读卡设备,用于读取IC卡数据。
(3) Wi-Fi模块:通过串口线与高频RFID读卡器相连,将读卡数据通过Socket连接
发送给安卓后台管理程序。
(4) 高频IC卡:用户公交卡。
公交系统数据库的设计
本系统数据库非常简单,在实验室阶段,我们可以只用一个用户表即可完成,简单期间,下表只注册用户姓名,联系电话,如果需要可以添加更多的用户信息,比如年龄,工作单位之
类的。
软件部分:
软件部分功能基本开发完成了
信息查询:
WiFi模块通过tcp/ip跟安卓后台通讯(软硬件交互部分):
Wifi模块跟单片机的连接:通过USART
ESP8266模块引脚图
通过串口通信的话。模块连线就比较简单了,只需要:
ESP8266 <----->STM32
GND <----->GND
3.3V <----->3.3V
TXD <----->PA3//IO口功能复用,串口收发数据RXD <----->PA2
Wifi模块使用:
ESP8266支持AT指令:
在AT模式下可以通过串口的AT指令对系统参数做配置。指令格式如下:
AT+
例如:“AT+CWMODE”查询当前模块的WIFI模式。
例如:“A T+CWMODE=3”设置模块WIFI模式为AP+STA模式。
这里是所有支持的AT指令:
ESP8266模块支持三种模式:AP模式,STA和AP+STA模式
我们考虑采用AP模式:即模块作为无线WIFI热点,允许其他WIFI设备连接到本模块,实现串口与其他设备之间的无线(WIFI)数据转换互传。AP模式下包括三个子模式:TCP 服务器、TCP 客户端,UDP
将本模块设置成TCP服务器端的过程:使用AT指令AT+CWMODE=2 设置模块WIFI模式为AP模式AT+RST 重启生效
AT+CWSAP=”myWIfi”,”123456 78”,1,4设置模块的AP参数:SSID为myWifi,密码为12345678,通道号为1,加密方式为:
WPA_WPA2_PSK
AT+CIPMUX=1 开启多连接
AT+CIPSERVER=1,8888 开启SERVER模式,设置端口为
8888
安卓端的TCP/IP
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议
什么是Socket?
Socket是应用层与TCP/IP协议簇通讯的中间抽象层,Socket是一组接口,它把复杂的TCP/IP协议簇的内容隐藏在套接字接口后面,我们无需关心协议的实现,只需使用Socket提供的接口即可。
安卓端创建服务器端的步骤:
1.创建ServerSocket对象,绑定监听端口
2.通过accept()方法监听客户端请求
3.连接建立之后,通过获取输入流,取得客户端请求信息
4.创建输出流,返回给客户端信息
5.关闭资源
安卓端创建客户端的步骤:
1.创建socket对象,指定需要链接的服务器地址和端口号
2.建立连接后,获取输出流,向客户端发起请求信息
3.获取输入流,读取服务器端反馈的信息
4.关闭相应资源
读卡器部分:
主要内容包括:STM32芯片与RC522模块的通信,RC522模块与IC卡之间的识别过程
RC522引脚图:
1.rc522与单片机的引脚设置:
RC522引脚图
在使用不同类型接口的时候,RC522的引脚作用会不同,在与单片机通信的时候是采用SPI 通信
串行外设接口
因此跟STM32板的接线方式如下:(参看STM32引脚图)
RC522---------stm32
1--SDA <----->PA4 //选通
*2--SCK <----->PB13 //SCK时钟
*3--MOSI<----->PB15 //OI
*4--MISO<----->PB14 //IO
*5—悬空
*6--GND <----->GND
*7--RST <----->PB1
*8--3.3V<----->3.3V
RC522的工作过程:
一.RC522跟单片机的通信:
MFRC522发送与接收卡数据暂存于FIFO缓冲区中
二.对卡的操作
分成四步:寻卡→防冲突→选卡→读/写卡;
使用二次编程的函数接口
(1)寻卡
向FIFO中写入PICC_REQIDL命令,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,此时若有卡在天线作用范围内,将识别命令,并返回卡类型,和卡片序列号;
卡类型(TagType):
0x4400 = Mifare_UltraLight
0x0400 = Mifare_One(S50)
0x0200 = Mifare_One(S70)
0x0800 = Mifare_Pro(X)
0x4403 = Mifare_DESFire