注意:
1 sim900在进行GPRS通信的时候最大电流可以到90MA.瞬间电流SIM900模块可能高达2A@4V,即输入端电流瞬间值可能高达740mA@12V,故给模块选择电源的时候,要能满足瞬间电流峰值。
以上这段话摘录自正点原子的SIM900用户手册,也就是说你在用SIM900这个模块进行GPRS数据传输时,要保证能给这个模块提供2A左右的电流,在实际的测试当中,如果提供的电流过小,会造成GPRS通信偶尔几次通信成功。
2 stm32向SIM900通信的时候,发送的每个AT指令之间是要有时间间隔的,可以先通过电脑串口与SIM900进行通信有一个简单的认识,然后再开始写程序,调试。
3 注意SIM卡安装的方向不要装反
一 模块实物图
二 通过电脑串口调试SIM900
1 SIM900上电后一般会有指示灯,其中一个指示灯常亮,表示电源供电正常,另一个指示灯如果保持亮1秒,熄灭2秒,则表示注册到网络
2 发送指令
2.1 发送指令之前最好先发送一个"AT",用于SIM900进行串口波特率的同步。
注意AT指令不区分大小写,发送时应勾选发送新行。
2.2发送相关的设置指令
[cpp] view plain copy
AT+CGCLASS="B" //设置移动台类别为B,即模块支持包交换和电路交换模式,但不能同时支持
[csharp] view plain copy
AT+CGDCONT=1,"IP","CMNT" //设置PDP上下文标志1,采用互联网协议(IP)接入点为“CMNET”
[cpp] view plain copy
AT+CGATT=1 //用于设置附着和分离GPRS业务
[cpp] view plain copy
AT+CIPCSGP=1,"CMNET" //设置为GPRS连接,接入点为“CMNET”
[cpp] view plain copy
AT+CIPCSGP=1,"CMNET" //设置TCP连接本地端口号为2000
注意:1 在输入AT指令时,所有的符号都是英文的,中文的会导致错误,还有在输入的时候,要看清AT指令,不要输错。
2 在SIM900返回错误的时候先检查指令有没有输入错误,确保指令没有出错的情况下就要检查为什么AT指令会出错了,这里建议看一下SIM900的指令手册,举个例子
在当时我第一次测试的时候,这个总是返回错误,后来才发现原来我的手机卡欠费了,根本不支持GPRS业务。所以说出了错误不要干着急,要学会分析错误的原因。
3 花生壳的使用
3.1打开花生壳和网络调试助手
输入:
[cpp] view plain copy
AT+CIPSTART="tcp","c1594751r4.iok.la","13938"
为什么是"c1594751r4.iok.la","13938",这个是和花生壳有关的。
注意:输入上面的指令后先出现“OK”,要稍等一会后才会出现“CONNECT OK”(连接成功),这也就是我在开头说的为什么一定要在程序里面加延时的原因。
好了,现在就可以向网络端发送数据了。
[cpp] view plain copy
at+cipsend //开始发送数据指令
这次待发送的数据是“hello word",可以看到网络调试助手那里并没有收到数据,那是因为还要发送十六进制的"1A"
注意:要勾选HEX发送
注意事项:1 用花生壳是因为我们学校是内网,关于花生壳的时候我会接着写下来
2 长期使用GPRS要注意心跳包的维持
3 原则上讲现在我们是可以通过stm32来模拟这个过程与SIM900通信了,但是实际中却稍微有一些改动。
关键字:stm32 sim900 GPRS通信
引用地址:
stm32与sim900之GPRS通信(电脑串口与SIM900通信)
推荐阅读最新更新时间:2024-03-16 15:36
ST新STM32软件开发工具套件让电机控制设计更快、更容易
中国,2018年3月21日——通过使最新的STM32 PMSM FOC软件开发套件(SDK)支持STM32Cube开发生态系统(订货代码: X-CUBE-MCSDK ),意法半导体进一步简化在 STM32* 微控制器 上开发先进的高能效电机驱动器的难度。此举为空调、家电、无人机、楼宇自动化、机床、医疗设备、电动车等产品设备工程师研发先进电机驱动带来更多机会,而且无需专门的研发经验。 基于意法半导体上一代永磁同步电机(PMSM)矢量控制(FOC)SDK,5.0 新版固件库结合STM32Cube硬件抽象层(HAL)和底层(LL)架构,简化电机驱动电路的开发、定制和调试过程。此外,免费使用源代码让开发人员能够按照市场需求灵活地
[嵌入式]
stm32 DAC+DMA 输出100K正弦波杠杠的
之前想用stm32的DAC输出正弦波,才用的方案是在死循环里面用for循环输出36点的电压值模拟成一个完整的正弦波。发现最多只能输出个20KHz的波形,在示波器下面能够看到明显的梯度。后来用DMA+ADC的模式发现可以上100K(不过频率有点飘),下面吧代码贴出来 void DAC_DMA_Configuration(void) { DAC_InitTypeDef DAC_InitStructure; DMA_InitTypeDef DMA_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO
[单片机]
STM32自动ISP电路设计
STM32支持仿真器和串口下载程序。将要介绍的内容,属于串口下载,即我们通常说的ISP下载。 手动ISP下载程序,我们已经知道了,控制BOOT0引脚实现。STM32上电,会自动检测BOOT0引脚是什么电平,如果是高电平,等待用户下载程序;如果是低电平,运行用户之前下载到单片机的程序。所以我们需要把BOOT0引脚引出,然后控制其接地或接VCC来下载程序或者运行程序。在调试过程中,我们需要不断的控制BOOT0,非常麻烦。那么,自动ISP就该出场了。 自动ISP,把BOOT0与地直接连接,那么每次上电就会运行程序,而且只要点击电脑上的“下载”按钮,就开始下载程序,下载完程序,就开始执行。实现此目的,需要借助串口握手信号DTR和RTS。
[单片机]
干货 | 用GD32替换STM32,这些细节你一定要知道!
GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。所以GD32和STM32有很多地方都是一样的。 不过GD32毕竟是不同的产品,不可能所有东西都沿用STM32,有些自主开发的东西还是有区别的。 相同的地方我们就不说了,下面列一下不同的地方。 01 内核 GD32采用二代的M3内核,STM32主要采用一代M3内核,下图是ARM公司的M3内核勘误表,GD使用的内核只有752419这一个BUG。 02 主频 使用HSE(高速外部时钟):GD32的主频最大108M,STM32的主频最大72M 使用HSI(高速内部时钟):GD32的主频最大10
[单片机]
STM32学习笔记之使用库函数驱动LED灯
一、熟悉GPIO结构体 以下这个结构体是我从官方手册中获取的: view plain copy print? typedef struct { u16 GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; } GPIO_InitTypeDef; 二、编写程序步骤 1、首先定义一个GPIO_InitTypeDef的结构体,给结构体起一个名字 GPIO_InitStructure; view plain copy print? GPIO_initTypeDef GPIO_initStructure ; 2、初始化RCC时钟 RCC
[单片机]
STM32GPIO的描述和配置
一、GPIO的综合描述 stm32每一个GPIO端口拥有2个32bits的configuration寄存器(GPIOx_CRL,GPIOx_CRH),2个32bits的数据寄存器(GPIOx_IDR,GPIOx_ODR),1个32bits的set/reset寄存器(GPIOx_BSRR),1个16bits的reset寄存器(GPIOx_BRR)和1个32bits的Lock寄存器(GPIOx_LCKR)。 (一)每一个IO引脚都可以使用软件配置为以下几种模式: 1. 浮空输入 2. 带上拉输入 3. 带下拉输入 4. 模拟输入 5. 开漏输出——(此模式可实现hotpower说的真双向IO) 6. 推挽
[单片机]
STM32独立看门狗详解
本文将介绍STM32的看门狗中的独立看门狗,并通过实例来喂狗、体验喂狗与不喂狗的区别。 ①STM32看门狗介绍之独立看门狗 ②使用STM32CUBEMX来配置工程文件 ③代码实现,按键按下喂狗、按键不按下不喂狗程序复位 ①STM32看门狗介绍之独立看门狗 看门狗定时器本质上是一个计数器、给计数器一个数值,在程序 运行后计数器的值开始递减,当计数器的值减到0是会将程序复位,若在减到0之前给计数器更新一下值“喂狗”则从最新的值开始递减; 用途: 1、这样做的好处就是程序跑飞、死机时,通过复位的方式使得程序又正常运行; 2、用于将系统从休眠或者空闲模式唤醒。 看门狗的种类: 独立看门狗IWDG 特点:专用时钟LSI、低功耗模式仍
[单片机]
STM32系统中如何数据掉电保护
在嵌入式设备开发中,往往需要保存一些掉电不易失性的数据,如果系统配置、用户定制信息等等,如果增加额外的ROM IC,比如(基于I2C的24C02等等)往往会造成额外的PCB空间增大,硬件成本增加,降低产品的性价比。如果单从实用性来讲,在stm32的系统中,诸如此类的应用,笔者推荐如下2个方法可以去尝试和借鉴。 基于备份寄存器 原理:对于大容量的MCU系列来说,它有着42个16bit的备份寄存器,而中小容量的微处理器却只有10个16bit的备份寄存器。以STM32F103C8T6为例,42个备份寄存器的地址偏移为:0x04~0x28,0x40~0xBC,共可以存储84个byte数据。备份寄存器是依赖者备份电源的,当外界的VDD掉
[单片机]