跟着网络和现代通讯技能的不断发展,长途无线通讯技能经过多年的研讨与实践运用,现如今在工业操控范畴有了非常重要的方位,而且发挥着越来越大的作用。文中依据厂家的要求,规划的无线通讯模块,首要完结了短信与数据收发功用,而且做到了模块的安稳,掉线之后可以主动重连。
1 无线通讯模块全体规划方案
模块首要有电源部分、主控部分、通讯部分、数据传输部分4个部分组成。通讯模块选用SIM900A进行无线通讯。主控模块选用STM32作为主控芯片,来操控短信的收发与数据传输的顺利进行。长途终端可所以手机或许上位机的数据中心软件,经过处理之后,贮存下来,便利日后的查询。本模块具有低功耗,便利灵敏,操作简略而且安稳,掉线之后可以主动衔接,运转进程非常安稳,而且本钱较低。
2 无线通讯模块硬件规划
2.1 功用需求
本文规划的无线通讯模块,要求单12V电源输入,模块上电运转后有相应的指示灯来指示模块的运转状况。别的要求模块可以完结短信以及数据透传两大首要功用,在手机发送短信给模块之后,模块可以动作,并给出回应。最终要求在树立TCP链接时,依然可以收发短信。
图1 无线通讯模块结构图
2.2 电源部分
在主电路中,主控芯片STM32的作业电压为2.0~3.6 V,通讯芯片SIM900A的作业电压为3.1~4.6 V,为使模块各个部分正常作业,有必要对两者进行别离供电,电源供电电路如下:
图中V12外接12 V电源,经过%&&&&&%滤波后输入到LM2576,完结12 V到4 V的转化,R1、R2在线路中起到分压作用,D2灯亮起时,表明模块现已正常供电。LM2576是美国国家半导体公司出产的3 A电流输出降压开关型集成稳压电路,具有完善的维护电路,比较安稳。
图2 电源模块
2.3 主控芯片
主控模块选用STM32单片机作为微操控器,该芯片能作业于-40~105℃的温度规模,MAX3232芯片用于串行口的电平改换,完结操控器与通讯接口之间的通讯。串口1与电源电平转化芯片Max3223相连,USART1_TX(输出,所以在装备GPIO时,界说该口的方法为推拉输出,USART1_ RX为输入,界说为悬浮输入方法。串口2与SN65LBC184D通讯,完结数据的收发,USART2_RTS、USART2_RX为输入端口,方法界说为悬浮输入方法,USART2_CTS、USART2_TX为输出端口,方法界说为推拉输出。串口3用来操控SIM900A芯片,USART3_RTS、USART3_RX为输入端口,方法界说为悬浮输入,USART3_CTS、USART3_TX为输出端口,方法界说为推拉输出。
图3 主控芯片STM32
2.4 通讯芯片
通讯芯片选用SIMCom公司的新式紧凑型产品SIM900A,它归于双频GSM/GPRS模块,彻底选用SMT封装方法,功用安稳,外观精巧,性价比高,而且可以满意用户的多种需求。在完结断线主动重连功用时,涉及到DCD、RI两个引脚的运用。DCD引脚用来完结模数转化,当模块掉线时,会给DCD引脚一个高电平,当这个电平被DCD引脚检测到之后,模块便是采纳相应的动作,来从头衔接上线。RI引脚在模块上线之后,就一向坚持高电平,在有电话和短信进来的时分,RI管脚就会有一个低电平呈现,当RI引脚检测到这个低电平的时分,模块就会采纳相应动作,进入到短信或许电话方法。
图4 SIM900A通讯芯片
3 无线通讯模块软件规划
3.1 STM32的底层装备
为了完结STM32单片机与SIM900A模块之间的数据通讯,完结短信收发与数据传输两大功用。首要要树立开发渠道,在工程中参加需求用到的库函数以及装备文件,然后装备体系时钟、中止操控器、输入输出的GPIO以及相应的串口。在装备这些参数的时分,首要需求对照原理图进行编写,然后查看芯片用到哪些端口和这些端口的作用,这样才干确保无误。接下来就要对各个部分进行装备,以确保模块可以正常运转。
3.1.1 串口装备
开发环境树立好之后,就可以装备端口参数了。关于本模块,设置USART传输的比特率为9 600 b/s,字长为8 bit,1bit中止位,无查验方法。在对串口1、2、3初始化之后,翻开串口的中止呼应函数:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE)(以串口1为例),使能相应的串口:USART_Cmd(USART1,ENABLE),这样串口的装备就基本完结了。
3.1.2 中止操控器的装备
首要装备优先级分组,设置先占优先级1位,从优先级3位。本模块界说了5个大局中止,别离为:两个RTC大局中止、USART1大局中止、USART2大局中止、USART3大局中止,别离对每一个中止装备优先级,使能串口再初始化即可。需求留意的是,PC15管脚作为EXTI15的外部中止输入管脚,当该管脚的电平为低电平的时分触发,模块进入短信方法,因而给这个中止一个比较高的优先级,所以界说该中止先占优先级1位,从优先级0位。在设置优先级的时分,有必要依据模块的运转状况,挑选最优的中止分组和优先级,才干确保程序运转时,可以快速的呼应中止。
3.2 无线通讯模块短信功用的完结
1)短信收发详细进程
短信功用的完结首要涉及到两个要害部分,一个是AT指令,另一个是串口的读写。AT指令是主控芯片STM32和SIM900A之间的通讯协议,完结对SIM900A的操控。短信的收发首要有两种方法,一种是文本方法,该方法只支撑英文内容,另一种是PDU方法。本模块在完结初始化之后,首要经过USART向SIM900A发送“AT+回车”指令来查看AT指令是否正常作业,假如回来OK,则表明可以进行接下来的短信功用。
SIM900A的短信功用首要分为两个部分,榜首:读取短消息。读取短消息的设置指令为:AT+CMGR,该指令收效后有两个回来值:index和mode,index便是接纳到的短信的编号,咱们将接纳到的index内容放在一个长度为30的buf中,再将buf写入到串口3中,然后再读取串口3中的内容,这样,短信的编号就获取完毕。获取了短信的编号之后,就能去获取短信的详细内容,而短信的内容则寄存在alpha中,它处于呼应的第三个方位,经过get_fw(at_string,phnum,19,2)可将短信的内容取出来,这样短信的内容就获取到了。第二:发送短消息。发送短消息的设置指令为:AT+CMGS,首要将发送短信的电话号码存入到一个buf中,将这个buf写入到串口3中,以此获取手机号码。而短信在发送的时分,短信内容之前会带一个“>”号,在程序规划时,只需检测到“>”号时,后边的内容也便是短信发送的内容,最终将短信的内容写到串口3即可。
2)相应的AT指令
3.3 短信指令的界说
本模块自界说了许多短消息指令来设置或许查询模块的参数,详细为:SIP:IP地址设置指令、SPT:端口号设置指令、DID:ID号设置指令、ACON:主动衔接指令、PRT:打印指令、LIVE:心跳操作指令、CSQ:信号强度查询指令。这些指令经过短信的方法来完结对模块的操作。
拿SIP来举例,它的完结进程为:首要把短信中的‘=’之前的字符取出来寄存在sms_cmd中,然后将sms_cmd与SIP、SIT、DID、ACON、PRT、LIVE、CSQ来比较,假如等于其间一个,则程序跳转到相应的部分来履行相应的操作。这儿,strcmp(sms_cmd,“SIP”)==0,程序跳转到SIP部分来履行IP部分的操作。然后,将‘=’之后的字符取出来寄存在sms_para中。经过字符串比较函数来判别它是‘?’仍是数字。假如是‘?’,则表明该短信指令是一个查询指令,就只需求用输出显现IP号给用户看。假如是数字,则表明该短信指令是一个设置指令,就需求从头设置某些参数值,来改动模块的运转进程。关于SIP,假如‘=’之后是数字,就表明该短信是用户用来设置模块的IP地址的。此刻,就要把当时的IP值赋给模块的IP值就可以了。最终输出显现IP地址设置成功,则SPT部分的操作就完结了。
4 无线通讯模块数据传输的完结
4.1 数据格局的界说
数据包的详细格局如下:
数据包头现已界说为S_PACKET_HEADER结构类型,link_id为DWORD类型,关于发送,填写方针link_id,关于接纳到的数据包,则为源link_id(由服务器主动转化填写),完毕标志为0x01,数据Data则依据详细的指令而各不相同。
4.2 登陆、退出的协议进程
后台软件依据指定的服务器地址和端口号建议TCP衔接恳求,衔接成功后开端指令交互。作业进程描绘如下:
1)后台软件首要选用CMD_LOGIN指令,登陆到通讯服务器,在登陆成功之前,发送其他任何指令服务器都不处理。发送CMD_LOGIN:FORWARD给服务器,带着数据为S_TERMINAL。该指令的方针link_id设为0,表明发送给服务器,而不是给其他终端。
2)服务器在CMD_LOGIN:RESPONSE_OK中将其他在线模块的信息发送过来,从而在客户端运用程序构成在线模块列表。后台若收到CMD_LO GIN:;RESPONSE_FAILED回应,则失利。收到CMD_LOGIN:RESPONSE_OK回应,则成功,带着数据为S_TERMINAL。
3)后台软件守时发送CMD_KEEP_LIVE指令,以保持链路不被网络和服务器停止。每个在线设备有必要在必定的时刻距离内向服务器发送CMD_ KEEP_LIVE信息。服务器将对此作查看,若某设备在必定的时刻距离内没有发送CMD_KEEP_LIVE信息,则以为该设备现已“逝世”,服务器将
断开其衔接。
4)后台软件可对模块列表中的恣意模块进行操控。
5)后台软件退出时,用户设备应首要发送CMD_LOGOFF指令到服务器,告知服务器“我要退出”,该指令的方针link_id设为0。在发送CMD _LOGOFF:FORWARD给服务器时,不需求带着数据。
图5 登陆,推出的协议进程
4.3 数据传输详细进程
首要要界说树立TCP衔接与封闭TCP衔接的函数,涉及到的AT指令为AT+CIPSTART和AT+CIPCLOSE。树立TCP衔接时,先把AT+CIPSTART指令写到串口3中,然后该指令收效后,会回来一个“CONNECT”,之后只需检测到有回来值“CONNECT”,就表明TCP衔接现已树立成功。封闭TCP
衔接与树立TCP衔接相似,AT+CIPCLOSE指令收效后会回来一个“CLOSE OK”,只需检测到“CLOSE OK”,就表明TCP衔接现已封闭。
TCP衔接树立好今后,透传方法就现已被敞开,此刻就可以完结数据的发送与读取。
当用户要发送数据时,就有必要依据数据包的结构来发送数据,首要把包头写入到串口3中,假如有数据,则把数据内容和接纳目标同时写入到串口3中,这样数据的发送就完结了。
读取数据时,只需有数据过来,就一次一个字节,把数据寄存到user_string中,然后i++,再次接纳数据。
至于数据读取到什么时分完毕,本程序界说了3种完毕的状况:1)假如用户界说了数据的长度,就读取到最终一个字节才完毕。2)假如用户没有界说数据的长度,就在读取到回车符的时分完毕。3)假如遇到既没有已界说的数据包长度,又没有读取到回车符的状况时,就在数据寄存的长度超越user_string总长度的四分之三的时分完毕,或许在超越100毫秒没有数据发过来的时分完毕数据的读取。
4.4 相应的AT指令
5断线重连的处理
5.1 TCP链接的封闭和树立
TCP链接的树立涉及到的AT指令是at+cipstart,该指令有两个回来值,别离是模块的IP地址和端口号。首要将at+cipstart指令回来的当时模块的IP地址和端口号寄存到一个buf中,然后将这个buf写入到串口3中,假如之后可以读取到回来值“CONNECT”,就表明TCP链接现已树立好。
TCP链接的封闭涉及到的AT指令是at+cipclose,该指令没有回来值,可以直接将该指令写到串口3中,假如检测到“CLOSE OK”,就表明TCP链接现已被封闭。
5.2 DCD的检测
当TCP树立起来之后,DCD引脚的电压值便由高电平变为低电平,因而DCD引脚的电平状况可以用过来指示TCP的衔接状况。在程序中,本文设置时钟在检测DCD引脚的状况值,当该引脚的电平值由高电平变为低电平时,就表明模块模块现已掉线,然后模块就从头开端登陆,直到登陆上停止。
5.3 TCP链接下的短信收发
本文界说了一个大局中止,当有短信或许电话抵达模块时,RI引脚的电平便会由高电平变为低电平,此刻便会触发大局中止,模块当即转而处理短信收发或许数据传输。
6 测验作用
本模块在规划完结之后,在实验室安稳运转了2周时刻,没有呈现什么问题。然后又进行了特殊状况的测验,在模块断电后康复供电,数据中心断电后从头上电的状况下,都可以从头衔接上线,而且可以持续安稳运转。随后模块又被送到厂方运用,在被运用了3周之后,厂方反响模块运转状况杰出,没有掉线的状况。
7 定论
本文规划的无线通讯模块,是使用STM32来操控SIM900A芯片,来完结短消息的收发与数据的无线传输。本规划完结了无线通讯的硬件部分和软件部分的规划与完结。在屡次运转实验时,本模块没有呈现掉线以及发热等问题,非常安稳。本次规划本钱较低,运转安稳牢靠,运用规模非常广泛,使用SIM900A,降低了模块的本钱,使其愈加具有商业价值。