找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11316|回复: 19
收起左侧

stm32驱动SIM808模块发短信GPS TCP HTTP研究全套资料下载 含源码 原理图 工具及教程

  [复制链接]
ID:248039 发表于 2017-11-10 13:33 | 显示全部楼层 |阅读模式
[stm32] SIM808模块之发短信GPS TCP HTTP研究,附带源码和原理图
0.png

SIM卡电路,不懂看硬件设计手册
两个LED用来判断模块的状态,很有用!!!
蓝牙天线接口,需特殊软件版本

J2为复位接口,不用悬空。低电平持续2秒有效
V_MCU用来控制模块TTL串口输出高电压
默认输出高电压为5V,与5V单片机通信
可通过修改模块上的0R电阻,输出高电压为2.85V

TTL电平接口,不能接232
电平匹配电路,不懂百度查IIC电平匹配

默认接有源GPS天线。当接无源GPS天线时,请将R12去掉。
J13  PPS接口,PPS是用来授时,不懂的话百度
模块设计供电电压范围为5.2--4.8V,电流需1A或以上

0.png
1 原理图\
2 AT指令\
SIM808_GPS_Application Note_V1.00.pdf
SIM808_GPS_应用文档_V1.00.pdf
SIM900系列模块AT应用了解.ppt
SIM908 AT可参照SIM900 AT COMMAND.pdf


3 硬件设计手册\
SIM808_Hardware Design_V1.00.pdf

4 工具\
NMEA+GPS+Demo+V2.10\
网络调试助手 GPRS调试助手\
Chiness_Unicode.exe
NMEA+GPS+Demo+V2.10.rar
sscom.ini
串口调试软件sscom32_e666.cn.exe
网络调试助手 GPRS调试助手.zip


5 使用手册\
AN0004 SIM 模块系列调试.docx
AN0008 GPS数据解析及调试方法.zip
AN0011 SSCOM问题汇总.docx
SIM808 V2.2.5 用户手册 V1.2.docx


6 尺寸-protel99se\
7 程序\
make a call.zip
send a chinese message.zip
send a english message.zip


GPS.PNG
GPS和电量.PNG
发短信.PNG
新建文本文档.txt
连接百度.PNG

下面是gps和电量执行效果:
GPS.PNG GPS和电量.PNG

连接百度:
连接百度.PNG

AT+CSTT="cmnet"
AT+CIICR
AT+CIFSR
AT+CSCS="GSM"
AT+CIPSTART="TCP","www.baidu.com",80
AT+CIPSEND=5
HELLO
AT+CIPSEND

AT+CGPSPWR=1
AT+CGPSRST=1
AT+CGPSINF=32


AT+CBC

AT+CGATT?
AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","CMNET"
AT+SAPBR=1,1  
AT+HTTPINIT
AT+HTTPPARA="URL","www.baidu.com/img/baidu_logo.gif"
AT+HTTPACTION=0
AT+HTTPREAD
AT+HTTPTERM

发送短信:
发短信.PNG
单片机源程序如下:
  1. /**********************************************************
  2.         程序说明:
  3.         功能:TEST(UCS2)模式下发送中英文短息,短消息储存至SIM卡中
  4.         首先要确定模块已经注册到网络
  5.         然后正确的硬件连接   P3.0-----STXD或者5VT   P3.1-----SRXD或者5VR   GND---GND(只要保证公地即可,没必要单独接一次)
  6.         然后确认你单片机上的晶振,根据晶振修改自己的程序。
  7.         推荐先将单片机与电脑相连,确定单片机发送的数据是正确的。如果发送的是乱码,请检查晶振与单片机的串口波特率。
  8.         如果通过以上几条还解决不了问题,请看群共享文件 AN0004 。

  9. *************************************************************/
  10. #include <REG51.H>
  11. #include <string.H>
  12. #include <intrins.h>
  13. #define uchar unsigned char
  14. #define uint unsigned int
  15. //以下是板子上LED的配置,把Px_x改成自己对应的脚。
  16. //以下是你的51单片机的晶振大小
  17. #define FOSC_110592M
  18. //#define FOSC_12M
  19. sbit P10=P1^0;
  20. sbit P11=P1^1;
  21. sbit P12=P1^2;
  22. sbit P13=P1^3;
  23. sbit P14=P1^4;
  24. sbit P15=P1^5;
  25. //以下是开机后发送到手机的内容,发送的号码在程序中修改。        
  26. unsigned int  rec_data_len_uart=0;    //标记Buffer_Uart0接收数组
  27. unsigned char idata Buffer_Uart0_Rec[25]={0};                 //Uart0中断接收数组
  28.    
  29. //注意,无论接收到信号还是发送完信号,都会进中断服务程序的
  30. /*初始化程序(必须使用,否则无法收发),次程序将会使用定时器1*/
  31. void SerialInti()//初始化程序(必须使用,否则无法收发)
  32. {
  33.         TMOD=0x20;//定时器1操作模式2:8位自动重载定时器

  34. #ifdef FOSC_12M                   //在这里根据晶振大小设置不同的数值初始化串口
  35.         TH1=0xf3;//装入初值,波特率2400
  36.         TL1=0xf3;        
  37. #else         
  38.         TH1=0xfd;//装入初值,波特率9600
  39.         TL1=0xfd;
  40. #endif //end of SOC_12M
  41.         
  42.         TR1=1;//打开定时器
  43.         SM0=0;//设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制)
  44.         SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据
  45.         REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许)
  46.         EA=1;//开总中断
  47.         ES=1;//开串行口中断        
  48. }
  49. unsigned char hand(unsigned char *data_source,unsigned char *ptr)
  50. {
  51.         if(strstr(data_source,ptr)!=NULL)
  52.                 return 1;
  53.         else
  54.                 return 0;
  55. }
  56. void clear_rec_data()
  57. {
  58.         uchar i,temp_len;
  59.         temp_len=strlen(Buffer_Uart0_Rec);
  60.         if(temp_len>25)
  61.         {
  62.                 temp_len=25;
  63.         }
  64.         for(i=0;i<temp_len;i++)
  65.         {
  66.                 Buffer_Uart0_Rec[i]='\0';        
  67.         }
  68.         rec_data_len_uart=0;
  69. }

  70. /*串行通讯中断,收发完成将进入该中断*/
  71. void Serial_interrupt() interrupt 4
  72. {
  73.         unsigned char temp_rec_data_uart0;        
  74.         temp_rec_data_uart0 = SBUF;//读取接收数据               
  75.         RI=0;//接收中断信号清零,表示将继续接收                        
  76.         Buffer_Uart0_Rec[rec_data_len_uart]=temp_rec_data_uart0;        //接收数据
  77.         rec_data_len_uart++;
  78.         if(rec_data_len_uart>24)
  79.         {
  80.                 rec_data_len_uart=0;         //从头开始接收数据
  81.         }        
  82. }
  83. void Uart1Send(uchar c)
  84. {
  85.         SBUF=c;
  86.         while(!TI);//等待发送完成信号(TI=1)出现
  87.         TI=0;        
  88. }
  89. //串行口连续发送char型数组,遇到终止号/0将停止
  90. void Uart1Sends(uchar *str)
  91. {
  92.         while(*str!='\0')
  93.         {
  94.                 SBUF=*str;
  95.                 while(!TI);//等待发送完成信号(TI=1)出现
  96.                 TI=0;
  97.                 str++;
  98.         }
  99. }
  100. //延时函数大概是1s钟,不过延时大的话不准...
  101. void DelaySec(int sec)
  102. {
  103.         uint i , j= 0;
  104.         for(i=0; i<sec; i++)
  105.         {
  106.                 for(j=0; j<65535; j++)
  107.                 {        
  108.                 }
  109.         }
  110. }
  111. void main()
  112. {
  113.         uchar i = 0;
  114.         SerialInti();
  115.     DelaySec(10);//延时约15秒,此处延时,是为了让模块有足够的时间注册到网络,
  116.     P14=1;                 //提示开始发送指令,开始发送指令时,务必确认模块上的LED 已经慢闪,即模块已经注册到网络
  117. //----------------为什么是下面这些AT指令呢,请看群共享文件SIM900A重要的短信指令文件------------
  118.     Uart1Sends("AT+CSCS=\"UCS2\"\r\n");
  119.     DelaySec(1);//延时大约3秒
  120.     Uart1Sends("AT+CMGF=1\r\n");
  121.     DelaySec(1);//延时3秒
  122.         Uart1Sends("AT+CSCA?\r\n");
  123.     DelaySec(1);//延时3秒
  124.         Uart1Sends("AT+CSMP=17,167,0,25\r\n");
  125.     DelaySec(1);//延时3秒
  126.     Uart1Sends("AT+CMGS=\"00310038003800340036003900320030003000380039\"\r\n");//此处修改为对方的电话号,电话话的UNICON编码,可使用我们配套的
  127.                                                                                                                                                                 //资料包中的 中文转UNICON编码工具来获取。特别注意:那个软件
  128.                                                                                                                                                                 //获得的unicon 编码待有空格,实际中要去掉,否则模块会报错
  129.     DelaySec(1);//延时3秒
  130.     Uart1Sends("4F60597D00680065006C006C006F");//修改短信内容,短信内容可为中文、英文和数字,但都是对应的unicon 编码。
  131.     Uart1Send(0x1a);
  132.     DelaySec(15);//延时20秒
  133. …………
  134. …………
  135. …………限于本文篇幅 余下代码请从51黑下载附件…………
  136. }
复制代码

所有资料51hei提供下载:
[stm32] SIM808模块之发短信GPSTCPHTTP研究.rar (10.2 MB, 下载次数: 305)

评分

参与人数 1黑币 +10 收起 理由
JK_L + 10 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:374576 发表于 2018-7-19 10:12 | 显示全部楼层
不错的资料
回复

使用道具 举报

ID:279270 发表于 2018-7-24 10:39 | 显示全部楼层
感谢楼主的分享
回复

使用道具 举报

ID:364328 发表于 2018-7-30 10:27 | 显示全部楼层
可以发送带GPS定位的短信吗???
另外一定要控制电脑才能发送吗  不能单片机控制GSM自主发送吗
回复

使用道具 举报

ID:391536 发表于 2018-10-11 17:49 | 显示全部楼层
想看看
回复

使用道具 举报

ID:391536 发表于 2018-10-11 19:26 | 显示全部楼层
感谢楼主的分享
回复

使用道具 举报

ID:391536 发表于 2018-10-12 08:25 | 显示全部楼层
不错的资料
回复

使用道具 举报

ID:391536 发表于 2018-10-12 08:30 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:391644 发表于 2018-11-10 09:20 | 显示全部楼层
好东西!!
回复

使用道具 举报

ID:238084 发表于 2018-11-29 08:31 | 显示全部楼层
不错的资料,感谢分享
回复

使用道具 举报

ID:470164 发表于 2019-3-13 09:59 | 显示全部楼层
qwthh 发表于 2018-7-30 10:27
可以发送带GPS定位的短信吗???
另外一定要控制电脑才能发送吗  不能单片机控制GSM自主发送吗

我也想知道呀?有解决方法吗
回复

使用道具 举报

ID:520638 发表于 2019-5-3 13:13 | 显示全部楼层
qwthh 发表于 2018-7-30 10:27
可以发送带GPS定位的短信吗???
另外一定要控制电脑才能发送吗  不能单片机控制GSM自主发送吗

兄弟 我现在和你的方向一样 ,不知道 你可搞懂了没有,能否传授我一些经验
回复

使用道具 举报

ID:520638 发表于 2019-5-3 13:14 | 显示全部楼层
JIANGKX 发表于 2019-3-13 09:59
我也想知道呀?有解决方法吗

我也想知道 ,大佬 搞懂了没 ,给小白分享下
回复

使用道具 举报

ID:213209 发表于 2019-9-9 09:43 | 显示全部楼层
不错的资料,好好研究研究
回复

使用道具 举报

ID:507649 发表于 2019-9-9 10:46 | 显示全部楼层
谢谢分享,学习一下
回复

使用道具 举报

ID:651532 发表于 2020-1-20 12:40 | 显示全部楼层
下载了,看了程序,只有发短信,打电话程序,基本没有什么用
回复

使用道具 举报

ID:733645 发表于 2020-4-24 22:25 | 显示全部楼层
感谢分享,很想知道tcp连接
回复

使用道具 举报

ID:223752 发表于 2020-6-24 14:14 | 显示全部楼层
感谢分享,正找这资料呢
回复

使用道具 举报

ID:20672 发表于 2021-3-11 10:14 | 显示全部楼层
谢谢作者,正在找相关资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表