找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于STC89C51单片机的esp8266-01wifi模块(程序加模块引脚图)

  [复制链接]
跳转到指定楼层
楼主
引脚图及连接方式
红色字体的引脚需要连接,其余不用连,只需了解
VCC:接3.3V的高电平(必须是3.3v 否则会烧坏模块)
GND:接地
RX:模块串口通信的接收引脚,接到单片机的TX引脚。
TX:模块的发射端,接单片机的RX接口。
CH_PD:接高电平(和vcc引脚焊接起来)
GPIO0:默认情况下不接线,在刷固件时要接低电平。
GPIO2:悬空
RST:低电平复位,默认悬空。
用下载器连接WiFi模块,然后用串口助手发送一下AT指令
串口助手附件 SSCOM.rar (267.9 KB, 下载次数: 205)
串口助手中波特率初始为115200,更改以后波特率将永久保存,除非再次更改
1、设置模块为ST模式:发送:AT+CWMODE=1;返回:OK
2、  查看当前WiFi列表:AT+CWLAP返回: OK
3、  加入当前无线网络:发送命令:AT+CWJAP=”MERSAIN”,”XXXXXXXX”
第一个填你想要连接的WiFi名称,第二个填WiFi的密码
4、查看当前模块IP地址:发送: AT+CIFSR返回:当前IP地址
5、开启多连接模式 :发送命令:AT+CIPMUX=1返回:OK
6、建服务器 发送命令:AT+CIPSERVER=1,8080(设置指令)
   指令:AT+CIPSERVER=<mode>[,<port>]

说明:<mode>:0-关闭server模式,1-开启server模式       <port>:端口号,缺省值(默认值)为333 响应:OK
7、更改波特率为9600   AT+UART=9600,8,1,0,0(视单片机波特率而定)
更改波特率
wifi模块ESP8266的默认波特率是115200,但是单片机不能达到那么快的传输速率,只能使用9600bps,那么设置的时候,必不可少的要先用转串口调试下载器(速度比较快,而且wifi模块默认115200bps,用单片机不能正确更改波特率,转串口工具可以),设置指令,AT+UART=9600,8,1,0,0   在下载器连接模块时更改波特率
程序
向单片机下载程序时先不接模块,下载完成之后断电之后再连接模块
//此程序是手机连接ESP8266模块以后向模块发送字符a,控制单片机蜂鸣器的鸣与灭
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
u8 dat;
sbit beep=P2^3;
void ConfigUART(u16 buad);//串口通信初始化函数,buad为单片机设置的波特率。
void Delay_ms(u16 n);
void Uart_Send_String(u8 *string);//串口发送多个字节。
void Delay_Us(u8 us);
void Sent_UART(u8 dat);//串口发送一个字节
void ESP8266_Init();//ESP8266初始化
void main()
{
         EA = 1;
   ConfigUART(9600);
         ESP8266_Init();
        while(1);
}
void ConfigUART(u16 buad)
{
        SCON = 0x50;
        TMOD &= 0X0F;
        TMOD |= 0x20;
        TH1 = 256 - (11059200/12/32)/buad;
        TL1 = TH1;
        ET1 = 0;
        TR1 = 1;
}
void Sent_UART(u8 dat)
{
        ES = 0;
        TI=0;
        SBUF = dat;
        while(!TI);
TI = 0;
ES = 1;
}
void Delay_Us(u8 us)
{
while(us--);
}
void Delay_ms(u16 n)
{
        unsigned int  i,j;
        for(i=0;i<n;i++)
                for(j=0;j<123;j++);
}

void Uart_Send_String(u8 *string)
{
while(*string)
{
Sent_UART(*string++);
Delay_Us(5);
}

}
void ESP8266_Init()
{
        Uart_Send_String("AT\r\n");
        Delay_ms(2000);
        Delay_ms(1000);
        Uart_Send_String("AT\r\n");
        Delay_ms(2000);
        Delay_ms(1000);
  Uart_Send_String("AT+CIPMUX=1\r\n");
        Delay_ms(2000);
        Delay_ms(1000);
  Uart_Send_String("AT+CIPSERVER=1,8080\r\n");
}
void InterruptUART() interrupt 4
{
    if (RI)  //接收到字节
    {
        RI = 0;  //手动清零接收中断标志位
        dat = SBUF;  //接收到的数据保存到接收字节变量中
                if(dat=='a')
                        {
                                beep=~beep;
                        }                                         //接收到的数据又直接发回,叫作-"echo",
                         //用以提示用户输入的信息是否已正确接收
    }
    if (TI)  //字节发送完毕
    {
        TI = 0;  //手动清零发送中断标志位
    }

}
手机软件

这两个软件均可使用
以netassist为例
打开后点击tcp client
设置ip地址和端口号             ip地址看发送AT+CIFSR返回的IP值;
端口号看你发送的端口     AT+CIPSERVER=1,8080   这里是8080
然后连接  在发送框发送a即可控制蜂鸣器

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:99548 发表于 2018-4-29 06:36 来自手机 | 只看该作者
要学习,谢谢!
回复

使用道具 举报

板凳
ID:116686 发表于 2018-5-4 17:51 | 只看该作者
发送AT指令没有返回值,界面是空白的
回复

使用道具 举报

地板
ID:294531 发表于 2018-5-5 23:08 | 只看该作者
单片机晶振是12M  波特率也是9600吗还是更低?
回复

使用道具 举报

5#
ID:313571 发表于 2018-5-6 20:34 | 只看该作者
sanshisui 发表于 2018-5-5 23:08
单片机晶振是12M  波特率也是9600吗还是更低?

晶振11.0592  波特率9600
回复

使用道具 举报

6#
ID:294531 发表于 2018-5-6 21:26 | 只看该作者
为什么全部弄好在手机发送a没有反应呢?楼主能回答一下吗
回复

使用道具 举报

7#
ID:313571 发表于 2018-5-7 18:51 | 只看该作者
sanshisui 发表于 2018-5-6 21:26
为什么全部弄好在手机发送a没有反应呢?楼主能回答一下吗

模块波特率改了吗,模块初始波特率为115200,需要改为和单片机一样的波特率9600,我用的51单片机
回复

使用道具 举报

8#
ID:313571 发表于 2018-5-7 18:52 | 只看该作者
aptx48694517 发表于 2018-5-4 17:51
发送AT指令没有返回值,界面是空白的

看看波特率改了没,按照上面方法应该可以连上,亲测可以
回复

使用道具 举报

9#
ID:348800 发表于 2018-6-10 16:06 | 只看该作者
sanshisui 发表于 2018-5-6 21:26
为什么全部弄好在手机发送a没有反应呢?楼主能回答一下吗

你解决了吗?我也没有反应呢
回复

使用道具 举报

10#
ID:280860 发表于 2018-6-11 15:35 来自手机 | 只看该作者
单片机与8266之间需要电平转换吗?
回复

使用道具 举报

11#
ID:303383 发表于 2018-6-11 15:50 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

12#
ID:303383 发表于 2018-6-11 15:52 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

13#
ID:470508 发表于 2019-4-22 19:49 | 只看该作者
aptx48694517 发表于 2018-5-4 17:51
发送AT指令没有返回值,界面是空白的

我也是这个情况
回复

使用道具 举报

14#
ID:516576 发表于 2019-4-23 11:47 | 只看该作者

兄弟,我也是这个情况。通过串口助手直接给esp8266发送AT指令就可以,但中间连接个单片机,也下载了通信程序,然后再通过串口助手发送AT指令,esp8266就不响应了。
方便的话加个联系方式,一起讨论一下,我的qq1499414490
回复

使用道具 举报

15#
ID:329997 发表于 2019-4-26 19:53 | 只看该作者
输入IP和端口号,连接不上是什么原因,
回复

使用道具 举报

16#
ID:83626 发表于 2021-9-20 10:32 | 只看该作者
这个好,必须学习一下。
回复

使用道具 举报

17#
ID:964308 发表于 2021-10-13 15:56 来自手机 | 只看该作者
esp8266可以用socket发送指令吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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