SIM300V1.5开发板 使用说明书
User's Manual
Preliminary
前言
大家好,欢迎使用本公司开发的SIM300系列开发板,本开发板上的SIM300模块是一个通讯模块,由SIMCOM公司生产并销售,我们为其设计了可靠的外围电路以及扩展了端口。SIM300的主要功能有:语音通话、短信收发、GPRS网络数据收发、彩信收发。SIM300模块主要应用在通讯领域,如移动电话、远程数据监控、短信提醒发送、GPRS MODEN。打个比方,如果您要设计移动电话,那么内部主要组件应该包括通讯模块SIM300、中心处理器MCU、显示屏、键盘、话筒听筒。
SIM300使用串口通讯的方式和外部连接,通过串口数据的交换我们就可以使得SIM300模块去执行命令了。开始接触的时候请大家使用电脑串口和SIM300相连,尝试去控制SIM300,并熟悉这个过程,当我们熟悉了这个控制的过程后再去接入单片机写程序去控制,这样有条不紊的学习过程可以节省我们开发的时间,切忌不要盲目的求快而忽略了一些基础的东西,到最后浪费了自己的时间。祝大家学有所成。
酷学之家
2011.7
第一章 产品简介
第二章 GSM 模块串口测试
第三章 SIM300 简单的电话接听/拨打
第四章 简单英文短信的发送/读取的实现
第五章 简单中文短信发送/读取的实现
第六章 SIM300 开发板GPRS 功能
第七章 SIM300彩信模块实现彩信发送
第八章 SIM300发送返回的数据格式(重要)
试验前准备工作:
1. 连接好电源、串口线、放入手机卡
2. 打开电源,按复位键3秒,直到信号灯闪烁才放开
3. 开始您的学习实验
4. 以下介绍使用到的软件可以在资料光盘中找到
第一章 产品简介
欢迎您选购本公司的SIM300 开发板,为了让您对这款开发板有最详尽的了解,下面我们对开发板的每个部分都进行逐一的介绍。
开发板个组件如上图所示,电源芯片和手机卡插槽在后面,电源接口可以接入5V‐26V的直流电源,但是最大电流应该大于2A以保持sim300模块可以正常工作,建议使用5V2A的直流电源,以提高电源的效率。开发板的芯片几乎全部采用进口的高质量元件,以保证通讯的稳定性且有一定的耐压值,但在不了解电路图的情况下请不要擅自修改电路,以防止损坏元件。
拿到我们的开发板后请大家先进行主要功能的测试:
1.将电话卡装入底面的电话卡插槽。
2.用我们配送的开关电源接入电源接口,按下电源开关,此时电源指示灯
亮,证明电源正常了。
3.确认右上角的串口跳线方式如图所示,GT,GR分别与S2R,S2T相连,PCR,
PCT分别与S1T,S1R相连,也就是让sim300的串口与单片机串口2相连,
电脑的串口与单片机的串口1相连。我们的配套程序是根据这个方式的连接来写的。
4.将电脑的串口线接入到开发板上方的串口接口。
5.将我们配送的天线拧上到板子左上方的电线接口,不能用力过猛,否则
会损坏天线的插针的哦。
6.打开电源,在控制sim300的单片机内已经烧写了初始的程序来测试
sim300的功能,程序会自动启动sim300模块,不一会信号灯开始闪烁,证明sim300模块正常启动,sim300模块会寻找信号此时信号灯闪烁的频率大概是2次/秒,如果您的手机卡可正常通讯的话,sim300找到信号后闪烁的频率大概是1次/2秒,这时候您就可以进行其他的实验了。这个过程所需要的时间根据各位位置的信号而不同,信号好的话大概3秒左右,信号不好的要20秒左右。
7.在光盘的头目录中找到:GSM串口调试助手.exe 打开。
根据自己不通的情况选择对应的串口号,其他选项如图,打开串口。
8.按下开发板的按键4
此时单片机给sim300模块发送
AT+CGMI 生产厂商
AT+CGMM 设备类型
AT+CGSN 设备序列号
ATI 设备初始化
因为我们出厂的时候在单片机内烧写了测试程序,所以不用用户在进行程序烧写,我们烧写的程序是:发几条简单的AT指令
此时串口助手有如下显示,这些都是sim300模块的回复,证明sim300已经成功的启动,并给出了一些模块的信息
9.此时开发板的信号闪烁如果是1次/2秒,就说明模块找到服务商的信号
了,此时按下按键5,单片机向模块发送
AT+CPIN? SIM卡状态
AT+CSQ 信号质量
AT+COPS? 网络信息
串口助手会显示
说明sim300模块正确识别出你的手机卡,信号正常,并且也搜索到了网络服务商的信号了(我使用的是移动的手机卡,所以此时显示移动的标示),此时可以进行正常的通讯。
10. 到此,简单的程序就完成了。关于单片机内部的程序我们在以后的章节会介
绍,这里只是给出个测试的现象。下面我们来使用这个GSM串口调试专用工具,通过电脑的串口来调试一下我们的开发板。
方便的SIM 卡座,使用更简单,请看清SIM卡的插入方向。
第二章 GSM 模块串口测试
上一章我们介绍了如何使用GSM专用工具实现了SIM300模块的一些功能,其实是软件向SIM300发送了特定的AT指令实现的,这一章我们介绍使用串口工具来通过自己输入AT指令来控制模块,使我们更加熟悉SIM300模块的操作,从而可以通过接入单片机自己写程序控制。
我们看到,在跳线的旁边是注释:G(GSM模块)、P(PC机电脑)、S1(单片机串口1)、S2(单片机串口2)。接下的T(串口TX发送端口)、R(串口RX 接收端口),比如,GT(GSM模块的串口发射端口)、S1R(单片机串口1的接收端口)。
在刚拿到开发板的时候,我们的跳线帽是这样的
此时的GSM模块的串口和单片机串口2相连,电脑与单片机串口以相连,具体的示意图如下:
上图是我们使用单片机来控制sim300的实验中使用的接法,现在我们不需要单片机而是直接使用电脑的串口来控制sim300,所以我们要改变一下右上角跳线帽的接法,如图
这样,电脑的串口直接接入了sim300(中间经过了电平的转换),通过使用串口助手发送的数据就是发送给了sim300。
现在我们进入下一个小节,看看如何先使用电脑的串口工具来操作改开发板,当我们熟悉了这样的操作,再进入使用单片机来控制。
一、 使用GSM调试工具调试
使用上一章的软件其他设置不用改变,点击下面的GSM调试专用里的按键
通过下面的GSM调试专用按键可以测试sim300的一些功能了,其实就是向串口发送一些特定的指令(at指令)。
sim300可以自动适应波特率,所以刚开始发送给sim300指令后sim300不会有反应,直到它计算出了您的波特率后就一切正常了,大概要4到5个指令这样才可以正常哦。我这里只是测试了简单的几个,其他的你们可以尝试下,同样有效的。
接上3.5mm的耳机,就可以测试通话了,输入电话号码,按拨号测试就可以打出电话,如果有电话打进回复框会有Ring显示,此时按下接听电话就可以接通打进的电话了。
到此,简单的测试就完成了,下面的内容我们使用串口助手这个软件教大家直接输入命令来调试sim300,这样我们可以更好的理解sim300的整个通讯过程。
二、 借助串口调试助手V2.2 软件
这个软件在SIM300资料V1.4\调试工具\串口调试助手 2.2 中可以找到
1、正常方式发送(ASCII 码方式)在发送框中输入ATI 后,再按ENTER 键,
最后点击手动发送选项框。测试结果如下图2-1 所示。
图2-1
2、16 进制方式
ATI 的16 进制是41 54 49 0D ,注意0D 的0 是数字0 而非字母O(记住选择十六进制发送复选框,输完后点手动发送)。测试结果如图2‐2 所示。
图2-2
如果测试返回成功了,就可以继续下面的指令测试。
三、指令AT+CPIN? AT+CSQ AT+COPS?
1、 AT+CPIN?
用于查询SIM 卡的状态,主要是PIN 码。输入指令:AT+CPIN? 返回: +CPIN:READY表明状态正常,返回的是其它值可能是没放SIM 卡
现在选择用16 进制显示(选择十六进制显示后,再手动发送一次),结果如下:41 54 2B 43 50 49 4E 3F 0D 0D 0A 2B 43 50 49 4E 3A 20 52 45 41 44
A T + C P I N ? + C P I N : R E A D Y
59 0D 0A 0D 0A 4F 4B 0D 0A
; O K
(在数值下面是对应的英文字符,0D 0A 是回车换行,每次模块都返回) 2、 AT+CSQ
用于查询信号,如果没有信号,要查看天线是否连接。输入指令:AT+CSQ 返回: +CSQ:26,0 // 表明信号强度是10
选择用16 进制显示,结果如下:41 54 2B 43 53 51 0D 0D 0A 2B 43 53 51
A T + C S Q + C S Q
3A 20 32 36 2C 30 0D 0A 0D 0A 4F 4B 0D 0A
: 2 6 , 0 O K
(在数值下面是对应的英文字符,0D 0A 是回车换行,每次模块都返回)
3、 AT+COPS?
用于查询SIM 卡移动提供商,只有连上网络后才有,其它状态时都为空。输入指令:AT+COPS? 返回: +COPS: 0,0,"CHINA MOBILE" // 提供使用商为:中国移动
选择用16 进制显示,结果如下:41 54 2B 43 4F 50 53 3F 0D 0D 0A 2B 43
A T + C O P S ? + C
4F 50 53 3A 20 30 2C 30 2C 22 43 48 49 4E 41 20 4D 4F 42 49 4C 45 O P S : 0 , 0 , " C H I N A M O B I L E
22 0D 0A 0D 0A 4F 4B 0D 0A
"
(在数值下面是对应的英文字符,0D 0A 是回车换行,每次模块都返回)
以上状态正常就可以进行短信、语音测试了。
第三章 SIM300 简单的电话接听/拨打
注意:只有在上一章输入的AT+COPS?出现使用商的标示后才有可以做一下实验,否则在模块没有获取到网络的时候是无法进行通讯的。
在指令区输入ATE1, 按回车键点“手动发送”,显示如下:
ATE1 指令功能:开回显。
在指令区输入ATV1 ,回车键,点“手动发送”,指令的功能是:以OK 方式显示。
以上输入完后有OK 字样返回才能使用,如果没有返回,请检查串口号、波特率、模块是否开机。
一、拨打任意号码:ATD
不同的模块返回的代码是有区别的,如果是SIM300 或EM310 想与TC35 或TC35I 模块返回代码差不多,就需要先发一条AT+COLP=1 联络线确认陈述。这个指令需要被叫接听后才返回。
例:拨打10086(SIM300/EM310/GTM900 模块)在指令区输入AT+COLP=1 再按ENTER 键后点击“手动发送”;指令功能:拨号成功后直接提示。
在指令区输入ATD10086 ;后再按ENTER 键点“手动发送”,指令功能:拨打电话,收到+COLP:”10086”,129 表示拨号成功,返回其它值表示失败,返回了NO CARRIER 则表示拨号失败或对方挂断。
二、接听电话
接听电话也一样像本章前述的注意中所说明的,设置安装好模块,并测试。
1、设置来电显示功能在指令区输入AT+CLIP=1 后按ENTER 键点击“手动发送”,指令功能:设置来电显示功能。然后向板子的SIM 卡打电话,如下图: RING 就是呼入提示,如果你的SIM有来电来号码显示服务,号码将输出显示。
2、接听收到上面的电话号码呼入后,在指令区输入ATA 然后回车,点击“手
动发送”,指令功能:接听电话,如果回显OK,表示接听成功,此时你可以接入你的耳机进行通话了(请按照板子上的标示接对接口)。
第四章 简单英文短信的发送/读取的实现
一、读一条英文短信一定要保证开发板测试成功,即保证模块正常读取SIM 卡后,连接上网络。
1、设置短信提示功能输入指令:AT+CNMI=2,1 再按ENTER 键后点“手动发送”;指令功能:短信提示,状态有OK 回复。再输入:AT+CMGF=1, 按ENTER 键,“手动发送”;功能是:英文方式发送,状态有OK 回复。然后向SIM 卡发送一条英文短信,收到+CMTI: ”SM”,1,表示有短信到达,存在SIM 卡的第一个位置。(本文中由于测试时已经向SIM 发过四条短信,所以显示+CMTI: "SM",5)
2、读取短信输入AT+CMGR=5 再按ENTER 键,选择“手动发送”,其功能是:读取指定“5”里的内容,回复短信报文。
其中“REC UNREAD ”短信没有读过,+86136******** 为发信方号码,10/06/07,15:02:08+32 为日期,内容是:abc
如果再读一次就会稍微不同于上面显示,REC READ 表示已读。
二、 英文短信的发送1、向136******** 发送英文短信:abc
先输入AT+CMGF=1 再按ENTER 后选择“手动发送”,功能:英文方式发送,回复OK。再输入AT+CMGS=”136********” 按ENTER 键后点“手动发送”,功能:向输入的号码发送短信,回复>,收到>后才可输入内容abc,再点“手动发送”。
最后的关键步骤是短信内容的结束:点“十六进制发送”,然后在指令区输入1A(1 是数字,不是字母l),点击手动发送之后等待返回,收到:+CMGS:11 表示发送成功。
第五章 简单中文短信发送/读取的实现
一、中文短信的发送
下面的内容是:向手机136******** 发送中文短信:“星海科技”
步骤一 变换号码
中文短信要比英文复杂点,先把号码进行16 进制编码,编码的方法如下:首先,对方手机号码8613632389015 ,进行转换(两位一反):
3136329810F5 ,号码的最后一位为单数则高位加补F。
步骤二 短信内容编码
短信内容“星海科技”,通过Chinese_Unicode.exe (该软件在SIM300资料V1.4\调试工具\汉字Unicode互换小工具中找到)软件转换,进行16 进制编码后:“661F 6D77 79D1 6280”。
如果你要发送的也有中文英文,那么也要将他们全部放入进行转换
步骤三 PDU 格式编码
PDU 格式编码:手机号码(11 位)+国际接入码86(2 位)=13 位,
16 进制表示0D,接入码中国地区用91 表示,短信在服务器存放时间,
A0。
那么总的一起要发送的PDU 内容说明如下(下面的文字对应pdu的解析): 001100 0D 91 68 3136329810F5 0008 A0 661F 6D77 79D1 6280
前序| 目的号码长度|国际|目的手机号码(两位一反) | 8bit 方式|允许时间|短信长度|短信内容 (Unicode) 发送中文短信步骤:
001100:前序是一定要的,一般不更改
0D9168:13位号码0D,91国际接入码,68中国的电话区号86。3136329810F5:刚才进过变换的号码
0008:发送方式8bit
A0:发送保存时间
661F 6D77 79D1 6280:要发送的内容
步骤四:发送
1.先输入 AT+CMGF=0 再按ENTER 键后,点“手动发送”,状态恢复: OK
2. 计算PDU 总长度,总长度 = 你要发送的中文字数*4/2 + 15。
比如我们这次发送4个字,那么总长度=4*4/2+15=23.
你要发送的中文字数*4(中文对应的ascii码个数)
3. 再输入 AT+CMGS=23 再按ENTER键后,点“手动发送”;收到> 后才可输入内容 0011000D91683136329810F50008A008661F6D7779D16280 再点“手动发送”。
这次的输入是不需要加回车的,请注意,因为一会要加入0x1a结束符号了
4. 结束短信内容:点“十六进制发送”,在指令区输入1A 后,点“手动发送”,
等待发送成功,收到如图所示:+CMGS:19 表示发送成功。
注:1. at+cscs="GSM" 采用GSM 方式
2. at+cmgf=0 设置PDU 模式,发送中文短信需要这个
3. at+cmgs=<长度> 发送PDU 短信
二.中文短信的读取
一定要保证开发板测试成功,即保证模块正常读取SIM 卡后,连接上网络。
1.设置短信提示功能输入指令:AT+CNMI=2,1 再按ENTER 键后点“手动发送”;指令功能:短信提示,状态有OK 回复。再输入:AT+CMGF=0, 按ENTER 键,“手动发送”;状态有OK 回复。然后向SIM 卡发送一条中文短信,收到+CMTI: ”SM”,11 ,表示有短信到达,存在SIM 卡的第11 个位置。
2. 读取短信输入AT+CMGR=11 再按ENTER 键,选择“手动发送”,其功能是:读取指定“11” 里的内容。+CMGR:0,,28 其中0 表示短信没有被读过,如果是1 表示已读;28 是长度;
91683108200005F0 为短信中心号码:+86138******** 0D 为短信号码长度91683136329810F5 对方号码 +86136******** 01607221122323 日期 10/06/27, 12:21:32+32 08 为短信内容长度661F6D7779D16280 中文短信内容如果再读一次就会有区别。