单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 286|回复: 10
打印 上一主题 下一主题
收起左侧

ESP8266收发测试成功

[复制链接]
跳转到指定楼层
楼主
ESP8266模块测试

ESP8266-01s封装图:
ESP8266和 单片机连线:
ESP:                              单片机                 
UTXD                                                                         RXD                                                         
GND                                                                          GND
CH_PD(EN)                                                                                       (给高电平模块才工作)                                                                                
GPIO2                                                                      必须接高电平(内部已经拉高,不用管)           
RST                                                                        低电平复位,高电平工作)                                                   
GPIO0                                                                      一般情况下不用管,烧录固件时接低电平
VCC                                                                          3.3V                                                      
URXD                                                                       TXD
说明:拿到模块后,测试模块,只需连接5根线,VCCGNDUTXDURXDCH_PDEN
接好后,可进行AT指令测试。
注意:(PC测试模块)如果是直接接USBTTL,那么就RXTX交叉接,如果是接单片机就TXTXRXRX,(单片机测试)下载好程序后,TXRX交叉接,可正常通信。
PC测试:
模块和电脑连接好后可按以下顺序执行AT指令(1-6):
AT指令:
1.AT+CWMODE=X
功能:设置工作模式指令:
-------Station模式(让模块去连接路由器或热点,模块作为客户端)
-------AP模式(模块本身是一个热点,手机和电脑可以连接,模块作为服务器)
-------Station+AP模式
示例:AT+CWMODE=2
2.AT+RST
   功能:重启指令设置新的工作模式后需要重启才能生效)
示例:AT+RST
3.AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn>
功能:配置AP参数(指令只有在AP模式开启后有效)
     ssid:接入点名称
   pwd:密码      字符串型,最长64lbj02.com_【官方首页】-乐百家字节。
   chl:通道号      0,1,2,3,4
     ecn:加密方式:0-OPEN1-WEP2-WPA_PSK3-WPA2_PSK4-WPA_WPA2_PSK
示例:AT+CWSAP="luatao","1234567890",1,3
4.AT+CIFSR
功能:查看本模块的IP地址
示例:AT+CIFSR
5.AT+CIPMUX=1
功能:设置多连接模式
示例:AT+CIPMUX=1
6.AT+CIPSERVER=<mode>,<port>
功能:创建服务器
mode
0-----关闭SERVER模式
1-----开启SERVER模式
Port:端口号(缺省为333
示例:AT+CIPSERVER=1,6666
说明:AT+CIPMUX=1时才能开启服务器,关闭SERVER模式需要重启AT+RST
     开启SERVER后自动建立监听,当有Client接入时会自动按顺序建立一个连接。
7.AT+CIPMUX
功能:查看本模块是否建立多连接
0-------单路连接
1-------多路连接
示例:AT+CIPMUX
执行完以上程序后,模块设置完成,可用手机客户端发消息测试通信。
第一步:打开手机,连接模块的WIFI
第二步:打开网络调试APP
按图上配置好后,点击打开,如果连接成功
PC串口上打印0,CONNECT
单片机测试:
第一步:下载程序。
要想让单片机发送数据到手机,需要发送一条指令
数据双向传输
多连接模式:
AT+CIPSEND=0,10
单连接模式:
AT+CIPSEND=10
发送的代码:
Send_String("AT+CIPSEND=0,10\r\n");//发送10个数据
                Delay1000ms();
            Send_String("hello world");//向手机发送数据
                Delay1000ms();
剩下的操作就是连接模块,打开网络调试,然后发送数据测试。

代码:
ESP8266.h
  1. #ifndef ESP8266
  2. #define ESP8266
  3. sbit LED=P6^0;
  4. extern uchar Receive;//接收值
  5. extern void Delay1000ms()        ;        //@24.000MHz
  6. extern void Uart1_Init(void);        //9600bps@24.000MHz
  7. extern void ESP8266_Init();//ESP8266串口发送两条指令
  8. extern void Send_String(uchar *p);//发送字符串
  9. #endif
复制代码
ESP8266.c
  1. #include<All.h>
  2. uchar Receive;//接收值
  3. /*********************************
  4. * @函数名:Delay1000ms
  5. * @描  述:延迟1s
  6. * @参  数:无
  7. * @返回值:无
  8. *********************************/
  9. void Delay1000ms()                //@24.000MHz
  10. {
  11.         unsigned char i, j, k;
  12.         _nop_();
  13.         _nop_();
  14.         i = 92;
  15.         j = 50;
  16.         k = 238;
  17.         do
  18.         {
  19.                 do
  20.                 {
  21.                         while (--k);
  22.                 } while (--j);
  23.         } while (--i);
  24. }
  25. /*********************************
  26. * @函数名:Uart1_Init
  27. * @描  述:串口1初始化函数 定时器1产生波特率,配置寄存器的值
  28. * @参  数:无
  29. * @返回值:无
  30. *********************************/
  31. void Uart1_Init(void)                //9600bps@24.000MHz
  32. {
  33.         SCON = 0x50;                //8位数据,可变波特率
  34.         AUXR |= 0x04;                //定时器2,时钟为1T
  35.         T2L = 0x8F;                //设置定时器初值
  36.         T2H = 0xFD;                //设置定时器初值
  37.         //IE2|=0x40;   //打开定时器2中断
  38.         IE2&=0xfb;//禁止定时器2中断
  39.         AUXR |= 0x10;                //启动定时器2
  40. //        PS=0;//串行口1中断优先级控制位  PS=0;优先级0
  41. //                                                        //PS=1;优先级1
  42.         EA=1;    //打开中断总开关
  43.         ES=0;       //串行口中断允许位
  44. }
  45. /*********************************
  46. * @函数名:Send_Value
  47. * @描  述:串口发送一个字符
  48. * @参  数:value   发送的字符
  49. * @返回值:无
  50. *********************************/
  51. void Send_Value(uchar value)
  52. {
  53.        ES=0; //关闭串口1中断
  54.        SBUF=value; //发送一个字符
  55.        while(!TI); //等待发送完成
  56.        TI=0; //发送完成中断标志位清零
  57.        ES=1; //打开串口1中断
  58. }
  59. /*********************************
  60. * @函数名:Send_String
  61. * @描  述:串口发送一个字符串
  62. * @参  数:*p   发送的字符串的首地址
  63. * @返回值:无
  64. *********************************/
  65. void Send_String(uchar *p)
  66. {
  67.    while(*p)
  68.    {
  69.      Send_Value(*p);//发送一个数据
  70.            p++;//地址往后移
  71.    }
  72. }
  73. /*********************************
  74. * @函数名:ESP8266_Init
  75. * @描  述:ESP8266发送两条指令,初始化
  76. * @参  数:无
  77. * @返回值:无
  78. *********************************/
  79. void ESP8266_Init()
  80. {
  81.    uchar a[]="AT+CIPMUX=1\r\n";     //设置多连接模式
  82.    uchar b[]="AT+CIPSERVER=1,6666\r\n";//创建服务器
  83.         
  84.     Send_String(a);//发送第一个AT指令
  85.     Delay1000ms();//等待模块应答
  86.         Send_String(b);//发送第二个AT指令
  87.     Delay1000ms();
  88. }
  89. /*********************************
  90. * @函数名:Uart1
  91. * @描  述:中断程序,+IPD,x,x:后有用的数据存进receive数组里
  92. * @参  数:无
  93. * @返回值:无
  94. *********************************/
  95. void Uart1() interrupt 4
  96. {
  97.         static uchar Flag=0;//状态标志位
  98.        if(RI)  //进入接收中断标志位
  99.        {
  100.                 RI=0;  //接收中断标志位清零
  101.                 if(Flag==1)  //这里面接收的是实际发送的值
  102.                 {
  103.                         Receive=SBUF;//存接收的字符
  104.                         Flag=0;                  
  105.                 }
  106.                 if(SBUF==':')      //这个必须在下面
  107.                                    Flag=1;  
  108.        }
  109. }
复制代码
All.h
  1. #include<STC8.h>
  2. #include<intrins.h>

  3. typedef unsigned char uchar;
  4. typedef unsigned int uint;

  5. #include<ESP8266.h>  //ESP8266wifi模块
复制代码
main.c
  1. #include<All.h>
  2. void main()
  3. {
  4. Uart1_Init();
  5. ESP8266_Init();
  6.    while(1)
  7.    {
  8.   if(Receive=='A')  
  9.    LED=0;    //灯亮
  10.   else if (Receive=='B')   
  11.    LED=1;    //灯灭
  12.   else if(Receive=='a')
  13.   {        
  14.   Send_String("AT+CIPSEND=0,10\r\n");//发送10个数据
  15.   Delay1000ms();
  16.   Send_String("hello world");
  17.   Delay1000ms();
  18.   }
复制代码
esp8266测试.pdf (243.98 KB, 下载次数: 7)
ESP8266串口1点亮小灯.zip (44.16 KB, 下载次数: 9)
esp8266系列使用手册.pdf (980.08 KB, 下载次数: 4)
SSCOM.zip (331.63 KB, 下载次数: 4)
固件烧录.zip (11.01 MB, 下载次数: 6)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
34岁老学生 发表于 2020-2-12 00:08 来自手机 | 只看该作者
感觉很神秘
回复

使用道具 举报

板凳
270497470 发表于 2020-2-12 08:52 | 只看该作者
感谢分享,有人按这个资料成功了吗
回复

使用道具 举报

地板
 楼主| 冷月枫 发表于 2020-2-12 09:11 | 只看该作者

用的是AT指令,算是一种短距离通信方式,有兴趣的话,可以玩玩
回复

使用道具 举报

5#
 楼主| 冷月枫 发表于 2020-2-13 09:17 | 只看该作者
270497470 发表于 2020-2-12 08:52
感谢分享,有人按这个资料成功了吗

能用,我这两天才测试过的
回复

使用道具 举报

6#
270497470 发表于 2020-2-14 19:58 | 只看该作者
冷月枫 发表于 2020-2-13 09:17
能用,我这两天才测试过的

谢谢!我下载了固件烧录,里面没有单片机源码?
回复

使用道具 举报

7#
 楼主| 冷月枫 发表于 2020-2-15 15:21 | 只看该作者
270497470 发表于 2020-2-14 19:58
谢谢!我下载了固件烧录,里面没有单片机源码?

点亮小灯那个是源码,固件是出厂固件,给个联系方式我给你发一份
回复

使用道具 举报

8#
 楼主| 冷月枫 发表于 2020-2-15 15:22 | 只看该作者
270497470 发表于 2020-2-14 19:58
谢谢!我下载了固件烧录,里面没有单片机源码?

我忘了,程序在文档的下面,都有,你直接复制就行,全部的
回复

使用道具 举报

9#
 楼主| 冷月枫 发表于 2020-2-15 15:23 | 只看该作者
270497470 发表于 2020-2-12 08:52
感谢分享,有人按这个资料成功了吗

我的成功了,嘿嘿
回复

使用道具 举报

10#
szzxl10 发表于 2020-2-15 15:43 | 只看该作者
最近也在摸索,跟楼主好好学习
回复

使用道具 举报

11#
270497470 发表于 2020-2-16 11:59 | 只看该作者
冷月枫 发表于 2020-2-15 15:22
我忘了,程序在文档的下面,都有,你直接复制就行,全部的

谢谢!先保存 ,等买了esp8266后试试
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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