最近参加一次校内电子比赛,有个题目就是让作用单片机与GSM的结合实现远程控制,这里的控制是控制两盏220V的灯泡,要求实现单片机的短信的收发。比赛已经完了,此次比赛有学习到很多新东西,写写总结体会(软件方面,由于负责软件部分)。编程
GSM模块选择的是西门子TC35I,网上它的资料比较多。之前有同窗买过这个模块,可是直接用GSM模块的话对比赛成绩有影响,因此咱们只是买了TC35I和SIM卡插槽,本身来从新画板子,把ARM与TC25I画在一块板子上。网上关于GSM控制的资料不少,但不少都是用51控制的,因此咱们起初的工做就是学习TC35I和将51与GSM的程序移植到ARM上。幸亏单从控制GSM上来讲,并非太难,它是基于串口通讯的,并且全是基于AT指令的控制,提及来,就只是熟悉下指令,并且此次比赛用到的指令也比较少,主要是关于短消息方面的指令。咱们用到的指令以下:网络
AT&F:设置目前参数为厂商默认值,成功则返回OK。学习
AT+CREG?:网络注册。成功则返回+CREG:0,1或 +CREG:0,5。错误则返回ERROR。spa
AT+CMGF=1:设置短信格式为TEXT格式。设计
AT+CSCA=’+86XXXXXXXXXXX’:发送本地中心号码it
AT+CMGS=’XXXXXXXXXXX’:发送目标手机号码软件
AT+CMGR=n:读取某条短信,n表示第几条短信程序
AT+CMGD=n:删除某条短信,n表示第几条短信im
由于只是简单的进行控制,只需传送ASCII码值。因此咱们短信格式设置为了TEXT格式,减轻了编程的负担。总结
下图就是咱们GSM控制方面的软件流程图:
ARM7串口通信方面的,采用了FIFO接收,8字节触发,有字符超时中断。
下图是TC35I的电路图
另外,原本用ARM就是打算用ucosii完成软件设计的,可是临近比赛也仍是没用弄出来,想了很久不知道错在哪里,最后果断放弃,跑裸机。看来,对Ucosii还要继续进行学习,熟练运用它进行编程。