用C语言写,如WriteUART0(char*p),其中p是缓冲区指针,那么AT命令程序如下:
WriteUART0(“AT+CSCA=\"+8613010180500\"r”);//设置短信中心号码
WriteUART0(“AT+CMGF=1\"r”);//设置为Text模式
.......
标准AT指令集是字符命令集
通过异步串口通信
对于单片来说就是串口通信,按照接收AT指令的设备的通信电平接好电路,参数设置相同的波特率、校验位,
然后单片机通过串口按照ACSII 字符方式发送 “at命令 参数 回车”
设备返回对应的响应字符串
你好!at指令一般都带有回车符,单片机发送的时候,发送命令要注意带
\r\n
使用AT指令的时候,先使蓝牙模块进入AT模式,然后你就当蓝牙就是命令的接收端,单片机或者PC串口就是命令的发送端(就当蓝牙是独立的模块)。
串口发送的AT数据是直接给蓝牙模块的,这个串口可以是PC串口也可以是单片机串口。
如果你想用单片机实现AT指令设置蓝牙,就用一个IO控制蓝牙模块的KEY管脚,把AT指令写在程序中,通过串口发送给蓝牙模块。
1、首先你要搭建好,51单片机系统,包括串口发送电路。
2、可以将你直接发送的字符串,作为一个变量,待用。
3、利用单片机中断发送字符串。
4、收端设备验证发送的内容是否正确。
对于大多数物联网从业者来说,有两样东西是避免不了的,一个是单片机,一个是移动通信模块。现在主流的通信模块都以4G模组和NB-IOT模组为主(由于运营商正在对2G进行退网,在新产品上继续使用2G模组已经是个不明智的决定了)。无论是曾经的2G模组还是现在主流的4G和NB-IOT模组,都采用了AT指令的方式与外部控制器进行通信,AT指令因此成为物联网从业者必须要掌握的知识。
4G模组举例
AT是Attention的缩写,最早是贺氏公司(Hayes)为了控制调制解调器而发明的协议。后来随着网络带宽的升级,速度很低的拨号调制解调器基本退出一般使用市场,但是 AT 命令保留了下来,并且逐渐被标准化。现在的移动通信模组(2G,4G,NB-IOT)皆采用AT指令作为其控制协议,AT 指令已经成为通信模组产品开发中的实际标准。
某4G模块应用示意图
AT指令只是AT客户端(如MCU)和AT服务器(如移动通信模组)之间的软件接口,硬件上基本都采用串口作为接口。有一点需要注意,很多模块的串口电平采用的是1.8V,而大多数MCU的IO口电平是3.3V或5V,所以在硬件连接上需要依据具体情况考虑进行电平转换。
AT指令工作示意图
AT指令的大部分使用场景是这样:MCU主动发送AT指令给模组,然后等待模组返回数据,MCU再根据返回的数据做对应操作。每个AT指令都有一个超时时间,如果MCU发送出AT指令后在超时时间内没有收到返回的数据则需要重试。AT指令中还有一种数据被成为URC数据,URC的全称是Unsolicited Result Code,翻译成中文就是“不请自来的结果码”。顾名思义,它不是模块对MCU所发送AT指令的返回,而是模块主动上报的数据。比如模块收到TCP数据包,或者模块的网络状态发生改变,都会通过URC数据主动告知MCU。
下面介绍下AT指令的格式。AT指令是基于字符串的通信协议,一般 AT 命令由三个部分组成,分别是:前缀、主体和结束符。其中前缀由字符“AT”构成;主体由命令、参数和可能用到的数据组成,结束符一般为 CRLF (即回车换行,对应于ASCII码中的“\r\n”)。AT指令可以分为以下几种(x代表命令):
上表中省略了结束符,在实际使用中,将x替换为要用的命令,并且整个命令需要以CRLF结尾。如何知道模块都支持哪些AT指令呢?关于具体的AT指令,其实不用刻意去记忆,因为每个模块都会有配套的AT指令集手册,要用的时候再去查询手册就行了。
AT指令应用举例(以下指令皆省略了回车换行):
MCU发送:AT
模组返回:OK
命令说明:可以根据是否有OK返回判断模块是否可用。
MCU发送:AT+CGSN
模组返回:IMEI
OK
命令说明:用于查询模组的IMEI。
MCU发送:AT+CGACT=state,cid
模组返回:OK
命令说明:用于设置模块PDP上下文激活状态。
MCU发送:AT+CGACT?
模组返回:+CGACT: cid,state
OK
命令说明:用于查询模块PDP上下文激活状态。
如何用AT指令给单片机发数据的介绍就聊到这里吧,感谢您花时间阅读,谢谢。
本文标签:如何用AT指令给单片机发数据