esp8266wifi模块怎么编程?国产之光wifi模块ESP8266的AT指令操作
这几天不知道更什么,给大家讲一讲这颗Wifi模块吧。
ESP8266 01
. . . .首先和大家说一下,ESP这颗芯片是国产的,而且远销海外,原名是“乐鑫科技”在国外的热度也非常的高,尤其是在物联网领域,领头羊的存在。(附上官网https://www.espressif.com/)
乐鑫的官网
. . . .大家可以看一下,各种资料相当全,是所有半导体官网我唯一能看的不吃力的官网(还有STC的也不吃了[害羞]),这几年乐鑫一直在推自己的合作IDE,但是感觉不是很顺利,毕竟开发了很多的SDK支持它,像是简单的Arduino、microPython这些也都支持,非常的方便。
. . . .本章节是想和大家说说,我很久以前用的AT指令集,这个AT指令集现在基本在市面不多见了,在遥远的3G时代用的比较多。。。但是我今天查了查资料,发现这个AT操作起来还挺方便,(自我感觉),只需要几个指令就行,也不需要什么配置。
部分AT指令集
教程开始:
1、查看模块的管脚分布:
管脚图
功能说明
. . . .管脚我们看一下,VCC、GND电源(3.3V),TXD、RXD的通讯接口,GPIO2通用上拉接口、这些好说,设置端口有RST复位,CH_PD使能芯片,GPIO0设置工作模式。
. . . .我们接线的时候设置一下,RST、CH_PD、GPIO0设置高电位---“外部禁止复位,芯片使能,Flash Boot工作模式”。
. . . .将我们的模块接到串口芯片上,可以去淘宝买一个16左右一个,像是这样;
是不是很完美。(记得下载驱动 CH340)
. . . .连接上以后,我们打开串口助手,发送“AT”,记得回车后发送;
串口助手
他会返回“OK”,表示呼应上了,这就模块驱动没有问题。
然后你看看你的手机或者笔记本,是不是能搜到这样的一个wifi:
. . . .接下来我们发送一下AT指令:
. . . .到这一步,我们的wifi名字和密码都改了,我们连接上wifi,名称和密码是刚设置的“PPPTALK”,和“0123456789”。
. . . .打开网络助手:
网络助手
. . . .协议类型是TCP客户端,主机地址是我们设置的“192.168.1.88”,端口也是我们设置的“8888”,点“连接”,之后成功的话我们的串口助手会返回一条指令,说明连接成功。
. . . .现在我们在下面打字,发送,我们的wifi模块就会接收到并打印在串口助手里面,是不是很简单,大家有兴趣可以看一下AT指令集和ESP的资料,实在太多。。。。
. . . .具体怎么用单片机开发的,我附上写的代码吧,不详细讲了,很简单,就是把指令集用串口发过去:
#include "config.h"#include "esp8266.h"#include "delay.h"#include "uart.h"/******************************************************************************/// 定义接收数据数组和命令执行是否完成的标志位/******************************************************************************/uint8 rcvTable[50];uint8 flag = 0;/******************************************************************************/// 函数名称:Uart_Cmd_Display // 输入参数:str-发送的命令// 输出参数:无 // 函数功能:串口打印单片机向ESP8266发送的命令,便于观察实现现象/******************************************************************************/void Uart_Cmd_Display(uint8 *str){ displayMode; Uart_Send_String(str); Uart_Send_String("\r\n"); cmdMode;}/******************************************************************************/// 函数名称:Esp8266_Send_String // 输入参数:str-发送的命令// 输出参数:无 // 函数功能:向ESP8266模块发送命令/******************************************************************************/void Esp8266_Send_String(uint8 *str){ cmdMode; Uart_Send_String(str); Uart_Send_String("\r\n");}/******************************************************************************/// 函数名称:Esp8266_Sta_Mode // 输入参数:无// 输出参数:无 // 函数功能:ESP8266模块设置为STA模式// 注意:忙信号检查// 每发送一条命令一定要等待ESP8266完成操作后,再发送下一条命令/******************************************************************************/void Esp8266_Sta_Mode(void){ Uart_Cmd_Display("setting sta mode...\r\n"); flag=0; Uart_Cmd_Display("AT RST"); //重启模块 Esp8266_Send_String("AT RST");//返回ready while(flag!=0x02); flag=0; Uart_Cmd_Display("AT CWMODE_CUR=1"); //设置为sta模式 Esp8266_Send_String("AT CWMODE_CUR=1");//返回OK while(flag!=0x01); flag = 0; Uart_Cmd_Display("AT CWJAP_CUR=\"wifiname\",\"password\""); //连接到网络 Esp8266_Send_String("AT CWJAP_CUR=\"TP-LINK_WQ\",\"85462351\"");//返回OK while(flag!=0x01); flag = 0; Uart_Cmd_Display("AT CIPMUX=1"); //设置多连接 Esp8266_Send_String("AT CIPMUX=1"); //返回OK while(flag!=0x01); flag = 0; Uart_Cmd_Display("AT CIPSERVER=1,8888"); //设置为服务器,端口为8888 Esp8266_Send_String("AT CIPSERVER=1,8888");//返回OK while(flag!=0x01); flag = 0; Uart_Cmd_Display("AT CIFSR"); //查询路由器分配的IP地址 Esp8266_Send_String("AT CIFSR");//返回OK while(flag!=0x01); flag = 0; Uart_Cmd_Display("sta mode is ready...\r\n"); }/******************************************************************************/// 函数名称:Esp8266_Show_IP // 输入参数:无// 输出参数:无 // 函数功能:串口打印路由器分配的IP地址/******************************************************************************/void Esp8266_Show_IP(uint8 *ipData){ uint8 j; for(j=10;j<28;j ){ displayMode; Uart_Send_Char(*(ipData j)); cmdMode; } displayMode; Uart_Send_String("\r\n"); cmdMode;}/******************************************************************************/// 函数名称:arryClear // 输入参数:dataArry// 输出参数:无 // 函数功能:数组元素清零/******************************************************************************/void arryClear(uint8 *dataArry){ uint8 i; for(i=0;i<50;i ){ *(dataArry i)=0; }}/******************************************************************************/// 函数名称:Uart_Int // 输入参数:无// 输出参数:无 // 函数功能:串口中断服务程序// 主要两个功能:// 1. 忙信号判断 - 单片机发送指令后,根据ESP8266反馈的信息判断指令是否完成// 2. 任务判断 - 单片机根据从ESP8266模块收到的信息,执行相应的动作(ledOn/ledOff)/******************************************************************************/void Uart_Int(void) interrupt 4 { static uint8 i = 0; if(TI){ TI = 0; led = ~led; } else{ RI = 0; rcvTable[i]=SBUF; if(i==50)i=0; i ; if(rcvTable[i-1]=='\n'){ i = 0; if((rcvTable[0]=='O')&&(rcvTable[1]=='K')){ Uart_Cmd_Display("OK\r\n"); flag = 0x01; } else if((rcvTable[0]=='r')&&(rcvTable[1]=='e')&&(rcvTable[4]=='y')){ Uart_Cmd_Display("ready\r\n"); flag = 0x02; } else if((rcvTable[0]==' ')&&(rcvTable[10]=='I')&&(rcvTable[11]=='P')){ Esp8266_Show_IP(rcvTable); } else if((rcvTable[1]==',')&&(rcvTable[3]=='O')&&(rcvTable[4]=='N')){ displayMode; Uart_Send_String("Link "); Uart_Send_Char(rcvTable[0]); Uart_Cmd_Display(":Connected"); //显示连接设备 } else if((rcvTable[1]==',')&&(rcvTable[3]=='L')&&(rcvTable[4]=='O')){ displayMode; Uart_Send_String("Link "); Uart_Send_Char(rcvTable[0]); Uart_Cmd_Display(" Closed"); //显示断开设备 } }else{ if((rcvTable[0]==' ')&&(rcvTable[1]=='I')&&(rcvTable[2]=='P')&&(rcvTable[3]=='D')&& (rcvTable[4]==',')&&(rcvTable[9]=='l')&&(rcvTable[10]=='e')&&(rcvTable[11]=='d')&& (rcvTable[12]=='O')&&(rcvTable[13]=='f')&&(rcvTable[14]=='f')){ displayMode; Uart_Send_String("Msg from Link "); Uart_Send_Char(rcvTable[5]); Uart_Cmd_Display(": ledOff"); //led off led = 1; arryClear(rcvTable); i = 0; } if((rcvTable[0]==' ')&&(rcvTable[1]=='I')&&(rcvTable[2]=='P')&&(rcvTable[3]=='D')&& (rcvTable[4]==',')&&(rcvTable[9]=='l')&&(rcvTable[10]=='e')&&(rcvTable[11]=='d')&& (rcvTable[12]=='O')&&(rcvTable[13]=='n')){ displayMode; Uart_Send_String("Msg from Link "); Uart_Send_Char(rcvTable[5]); Uart_Cmd_Display(": ledOn"); //led on led = 0; arryClear(rcvTable); i = 0; } } }}
/******************************************************************************/// 包含头文件/******************************************************************************/#include "config.h"#include "esp8266.h"#include "delay.h"#include "uart.h"/******************************************************************************/// main函数/******************************************************************************/int main(void){ Delay500ms(); Delay500ms(); power = 0; UartInit(); Esp8266_Sta_Mode(); while(1);}
. . . .这是以前51单片机开发的,说实话,现在我自己都看不明白了,还是要做Arduino,这个实在是太难。
希望大家能给我个点赞和关注!!谢谢了!!更新不易!!支持原创!![谢谢][谢谢]
- 01-28预产期前一个月的注意事项:预产期临近前一月三件小事要谨防
- 03-01上海孙中山故居纪念馆旅游攻略:中山市孙中山故居纪念馆一日游
- 02-08高考的真正含义:高考意味着什么
- 03-21邓紫棋半年不出歌一出歌就火 邓紫棋首次征战金曲奖舞台
- 04-161956年春节联欢晚会台下完整阵容:1956年春节大联欢这是春节联欢晚会的鼻祖
- 04-22叶酸的基本知识 叶酸这么多你选对了吗
- 03-05福建第三次质检考作文题目:福建多地5月质检作文题目出炉
- 02-20急诊室故事25岁女子心梗 关晓彤大学同窗刘峰心梗骤逝
- 05-05万万没想到泰坦十个人又升级了 超能泰坦萨姆沃辛顿成功进化
- 02-25哈尔滨群力三环外规划:在哈尔滨最羡慕的就是住在群力新区的
- 11-24查看ensp的所有配置 eNSP模拟器之配置基于全局地址池的DHCP
- 12-02我眼中的宽容主题班会 宽容主题班会PPT班会
- 02-06官厅水库烈士陵园简介:新乡延津陈玉成墓太平天国忠骨存
- 03-28这就是你不想看秋裤的理由 却打开了新世界的大门
- 05-27儿童吃什么样的盐最健康?孩子饮食控盐成功一大半
- 02-21马海毛连衣裙毛衣编织教程:两款马海毛针织衫全下针编织
热门
推荐
- 1华为手机如何删除图库中的照片324
- 2教师节小学优秀教师发言稿195
- 3比较适合练习口才的文章219
- 4嘉定幼儿园中班教研总结四篇394
- 5小班化教学工作报告187
- 6超市烟酒购货的合同模板452
- 7赠花礼仪讲解453
- 8最动听的声音阅读题答案245