请选择 进入手机版 | 继续访问电脑版
论坛
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 2441|回复: 6

在做一个项目单片机通过串口通讯ESP8266,模式AP模式

[复制链接]

1

主题

3

帖子

34

积分

新手上路

Rank: 1

积分
34
发表于 2018-7-26 17:45:43 | 显示全部楼层 |阅读模式
在做一个项目 单片机通过串口通讯ESP8266 ,模式AP 模式, 手机上暂时使用通用的 网络调试助手,接收和发送指令。
       看了好几天论坛上的说明,比较笨楞没看明白几分。
      51单片机把这个大家都知道,这个明白了别的32 ,AVR,非常好移植。
      单片机2个串口,串口1和电脑通讯,发送命令, 串口2接收到命令后,发送给ESP8266,wifi模块。
      测试了几个命令发现不行。
      后来想想估计一些 回车 换行符存在发送错误。
      直接在初始化中把命令都写下,用串口2 发送出去,串口接接收返回的 应答看看是否正确,
     发现有些命令也不正确,
     比如:改变模式命令
     char code at_cwmode[] = "AT+CWMODE=2\r\n";    //用串口发送出去是显示    no change   

    char code at_cipserver[]={"AT+CIPSERVER=\"1\",\"5000\"\r\n"}; //服务器,端口号
   //返回错误。
    望高手或做过这样的乡亲,指出错误,或在单片机中用串口发送命令,有什么要求,
    //是否需要命令之间间隔时间???

回复

使用道具 举报

0

主题

2

帖子

25

积分

新手上路

Rank: 1

积分
25
发表于 2018-7-26 22:51:32 | 显示全部楼层
看别人的#include<reg52.h>
/*此程序是手机连接ESP8266模块以后向模块发送字符K,控制LED的翻转*/
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P2^3;u8 dat;
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(1000);
        Delay_ms(1000);
        Uart_Send_String("AT\r\n");
        Delay_ms(1000);
        Delay_ms(1000);
  Uart_Send_String("AT+CIPMUX=1\r\n");
        Delay_ms(1000);
        Delay_ms(1000);
  Uart_Send_String("AT+CIPSERVER=1,8080\r\n");
}
void InterruptUART() interrupt 4
{
    if (RI)  //接收到字节
    {
        RI = 0;  //手动清零接收中断标志位
        dat = SBUF;  //接收到的数据保存到接收字节变量中
         if(dat=='k')
                                 {
                                         LED = ~LED;
                                 }                                         //接收到的数据又直接发回,叫作-"echo",
                         //用以提示用户输入的信息是否已正确接收
    }
    if (TI)  //字节发送完毕
    {
        TI = 0;  //手动清零发送中断标志位
    }
}
回复

使用道具 举报

1

主题

3

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2018-7-27 19:34:10 | 显示全部楼层
本帖最后由 王晓顺 于 2018-7-28 15:02 编辑

不行, 没有测试 的 ,通不过。
回复

使用道具 举报

1

主题

3

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2018-7-28 15:05:22 | 显示全部楼层
void ESP8266_Init_AP(void)
{
  SendString_Usart_2("AT\r\n");          //Ê×ÏȲâÊÔÏÂÄ£¿éÊÇ·ñºÃ»µ
  Delay_Ms(2000);                        //·µ»ØOK Õý³£
  SendString_Usart_2("AT+CWMODE?\r\n");  //²é¿´Ä£¿éģʽ
  Delay_Ms(2000);
  SendString_Usart_2(at_cwmode);         //ÉèÖÃÄ£¿éģʽΪAP
  Delay_Ms(2000);                                             //·µ»ØERROR »ò  no change
  SendString_Usart_2(at_rst);                      //¸´Î»Ò»ÏÂ
  Delay_Ms(2000);
  SendString_Usart_2("AT+CWMODE?\r\n");  //ÔÚ²âÊÔÒ»ÏÂÄ£¿é¿´¿´ÊÇ·ñÉèÖóɹ¦
  Delay_Ms(2000);
  SendString_Usart_2(at_cwsap);          //ÉèÖÃÁ¬½ÓµÄwifiÃû³Æ        
  Delay_Ms(2000);
//  SendString_Usart_2(at_cwjap);          //·µ»Øµ±Ç°Á¬½ÓµÄwifiÃû³Æ
//  Delay_Ms(1000);
  SendString_Usart_2(at_cipmux); //ÆôÓöà·Á¬½Óģʽ
  Delay_Ms(2000);
  SendString_Usart_2(at_cipserver); //¿ªÆô·þÎñÆ÷¶Ë¿ÚºÅ 8080
  Delay_Ms(2000);
  SendString_Usart_2(at_cipsend);      
  //Delay_Ms(5000);
  //ESP8266_Send("AT+CIPSTART\r\n");         //
}


这个是我初始化发的命令,
现在情况是 模式已经可以选择 2AP 模式,  用于名密码也可以改变,就是连接错误
回复

使用道具 举报

0

主题

2

帖子

25

积分

新手上路

Rank: 1

积分
25
发表于 2018-7-28 22:32:32 | 显示全部楼层
我是小白没有办法,我也是esp8266和单片机手机连接不上,esp8266和电脑手机可以连接,也在恶补知识,
回复

使用道具 举报

1

主题

3

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2018-8-1 23:32:14 | 显示全部楼层
已解决,谢谢
回复

使用道具 举报

0

主题

2

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2018-8-27 19:59:51 | 显示全部楼层
大佬,最近在做一个项目,打算pc通过wifi控制单片机,8266连单片机串口,pc向模块发送消息,8266是将收到的信息直接通过串口发给单片机的吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|安信可论坛    

GMT+8, 2019-9-20 08:57 , Processed in 0.021413 second(s), 12 queries , Redis On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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