最近参加一次校内电子比赛,有个题目就是让做用单片机与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。
AT+CMGF=1:设置短信格式为TEXT格式。
AT+CSCA=’+86XXXXXXXXXXX’:发送本地中心号码
AT+CMGS=’XXXXXXXXXXX’:发送目标手机号码
AT+CMGR=n:读取某条短信,n表示第几条短信
AT+CMGD=n:删除某条短信,n表示第几条短信
因为只是简单的进行控制,只需传送ASCII码值。所以我们短信格式设置为了TEXT格式,减轻了编程的负担。
下图就是我们GSM控制方面的软件流程图:
ARM7串口通讯方面的,采用了FIFO接收,8字节触发,有字符超时中断。
下图是TC35I的电路图
另外,本来用ARM就是打算用ucosii完成软件设计的,但是临近比赛也还是没用弄出来,想了好久不知道错在哪里,最后果断放弃,跑裸机。看来,对Ucosii还要继续进行学习,熟练运用它进行编程。