藍(lán)牙,ESP-01s,Zigbee, NB-Iot等通信模塊都是基于AT指令的設(shè)計(jì)
那什么是AT指令呢
簡介: AT指令集是從終端設(shè)備(Terminal Equipment,TE)或數(shù)據(jù)終端設(shè)備(Data Terminal Equipment,DTE)向終端適配器(Terminal Adapter,TA)或數(shù)據(jù)電路終端設(shè)備(Data Circuit Terminal Equipment,DCE)發(fā)送的。
其對(duì)所傳輸?shù)臄?shù)據(jù)包大小有定義:即對(duì)于AT指令的發(fā)送,除AT兩個(gè)字符外,最多可以接收1056個(gè) 字符的長度(包括最后的空字符)。 每個(gè)AT命令行中只能包含一條AT指令;對(duì)于由終端設(shè)備主動(dòng)向PC端報(bào)告的URC指示或者response 響應(yīng),也要求一行最多有一個(gè),不允許上報(bào)的一行中有多條指示或者響應(yīng)。AT指令以回車作為結(jié)尾,響應(yīng)或上報(bào)以回車換行為結(jié)尾。
ESP-01s出廠波特率正常是115200, 注意:AT指令,控制類都要加回車,數(shù)據(jù)傳輸時(shí)不加回車
?
然后開關(guān)網(wǎng)絡(luò)助手,設(shè)立TCP服務(wù)器
?
?連接服務(wù)器
AT+CIPSTART="TCP","192.168.0.113",8888 //指令,注意雙引號(hào)逗號(hào)都要半角(英文)輸入 CONNECT //結(jié)果:成功
OK //結(jié)果:成功
發(fā)送數(shù)據(jù)
AT+CIPSEND=4 // 設(shè)置即將發(fā)送數(shù)據(jù)的長度 (這里是4個(gè)字節(jié))
>CLCA // 看到大于號(hào)后,輸入消息,CLCA,不要帶回車
Response :SEND OK //結(jié)果:成功 //注意,這種情況下,每次發(fā)送前都要先發(fā)送AT+CIPSEND=長度 的指令,再發(fā)數(shù)據(jù)!
開啟透傳更方便
AT+CIPMODE=1 //開啟透傳模式
Response :OK
?AT+CIPSEND //帶回車
Response: > //這個(gè)時(shí)候隨意發(fā)送接收數(shù)據(jù)咯
退出透傳模式
//在透傳發(fā)送數(shù)據(jù)過程中,若識(shí)別到單獨(dú)的?包數(shù)據(jù) “+++”,則退出透傳發(fā)送文章來源:http://www.zghlxwxcb.cn/news/detail-469085.html
可以直接用單片機(jī)實(shí)現(xiàn):文章來源地址http://www.zghlxwxcb.cn/news/detail-469085.html
#include "reg52.h"
#include "intrins.h"
#include <string.h>
#define SIZE 12
sfr AUXR = 0x8E;
sbit D5 = P3^7;
char cmd[SIZE];
code char LJWL[] ?= "AT+CWJAP=\"542413\",\"545457\"\r\n";
code char LJFWQ[] = "AT+CIPSTART=\"TCP\",\"192.168.0.113\",8880\r\n";?
char TCMS[] ?= "AT+CIPMODE=1\r\n";
char SJCS[] ?= "AT+CIPSEND\r\n";
?
void UartInit(void)?? ??? ?//9600bps@11.0592MHz
{
?? ?AUXR = 0x01;
?? ?SCON = 0x50; //配置串口工作方式1,REN使能接收
?? ?TMOD &= 0x0F;
?? ?TMOD |= 0x20;//定時(shí)器1工作方式位8位自動(dòng)重裝
?? ?
?? ?TH1 = 0xFD;
?? ?TL1 = 0xFD;//9600波特率的初值
?? ?TR1 = 1;//啟動(dòng)定時(shí)器
?? ?
?? ?EA = 1;//開啟總中斷
?? ?ES = 1;//開啟串口中斷
}
void Delay1000ms()?? ??? ?//@11.0592MHz
{
?? ?unsigned char i, j, k;
?? ?_nop_();
?? ?i = 8;
?? ?j = 1;
?? ?k = 243;
?? ?do
?? ?{
?? ??? ?do
?? ??? ?{
?? ??? ??? ?while (--k);
?? ??? ?} while (--j);
?? ?} while (--i);
}
void sendByte(char data_msg)
{
?? ?SBUF = data_msg;
?? ?while(!TI);
?? ?TI = 0;
}
void sendString(char* str)
{
?? ?while( *str != '\0'){
?? ??? ?sendByte(*str);
?? ??? ?str++;
?? ?}
}
void main()
{
?? ?D5 = 1;
?? ?//配置C51串口的通信方式
?? ?UartInit();
?? ?
?? ?while(1){
?? ??? ?//Delay1000ms();
?? ??? ?//往發(fā)送緩沖區(qū)寫入數(shù)據(jù),就完成數(shù)據(jù)的發(fā)送
? ? ? ?
?? ??? ?sendString(LJWL);
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ?
?? ??? ?sendString(LJFWQ);
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?sendString(TCMS);
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?sendString(SJCS);
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ??? ?Delay1000ms();
?? ?}
}
void Uart_Handler() interrupt 4
{
?? ?static int i = 0;//靜態(tài)變量,被初始化一次
?? ?if(RI)//中斷處理函數(shù)中,對(duì)于接收中斷的響應(yīng)
?? ?{
?? ??? ??? ?RI = 0;//清除接收中斷標(biāo)志位
?? ??? ??? ?cmd[i] = SBUF;
?? ??? ??? ?i++;
?? ??? ??? ?if(i == SIZE){
?? ??? ??? ??? ?i = 0;
?? ??? ??? ?}
?? ??? ??? ?if(strstr(cmd,"en")){
?? ??? ??? ??? ?D5 = 0;//點(diǎn)亮D5
?? ??? ??? ??? ?i = 0;
?? ??? ??? ??? ?memset(cmd,'\0',SIZE);
?? ??? ??? ?}
?? ??? ??? ?if(strstr(cmd,"se")){
?? ??? ??? ??? ?D5 = 1;//熄滅D5
?? ??? ??? ??? ?i = 0;
?? ??? ??? ??? ?memset(cmd,'\0',SIZE);
?? ??? ??? ?}
?? ?}
?? ??? ?
?? ?if(TI);
}
到了這里,關(guān)于Wifi模塊-ESP-01s的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!