esp8266学习感悟

简介: esp8266学习感悟

声明:本文为学习感悟,野火的esp8266学习感悟与心得,所有引用,均为学习参考,免费提供,如有侵权,联系删除,谢谢。(本人已购买正版板子F429挑战者)
第一次接触esp8266,最初的目的就是为了无线控制,这不比按键操作牛。
根据野火产品资料下载的esp8266教程,如下图(本人是F429挑战者V1板子)
esp8266文档
根据参考资料里面的连接方式连接各个开发板
连接方式
(不是野火开发板子的,可以根据GPIO口的闲置,进行调解,可以在工程中进行修改)
打开配套代码中的工程手机app控制例程(地址为:........\ESP8266模块\配套代码\F429_挑战者开发板_V1\1-手机app控制例程\Project\RVMDK(uv5)),注意只是打开。
注:这里我用的是版本keil 5.13,内核5.05,因为之前有一个WiFi模块emw1062,不用5.05的内核就报错,就很无语。
1 修改IO口
注:用原版源代码,连接方式也没更改,可以不改
esp8266的引脚连接定义在"./ESP8266/bsp_esp8266.h",72行左右esp8266的引脚连接定义
可以对esp8266的各个引脚进行修改,注意时钟与GPIO口的搭配,串口看数据手册进行调换。
2 修改热点
在test.h中,可修改热点参数参数设置

3 官方连接
在官网下载秉火物联app,安装到手机,打开串口(默认 115200 8-N-1注意波特率等配置),编译下载,后会看见串口打印信息,如果没修改源代码里面的热点参数,应该会提示IP192.168.1.1端口 8080,用手机连接WiFi Yehuolink,打开秉火物联app,输入,连接,就可以控制灯和蜂鸣器,还有温度传输。

4 自己改 **
上面是实现了功能,但是,我不一定要控制它的板子,我从新做个板子,难道就不能用咯吗?
当然不是,这里我们来看看如何修改,根据什么改?
改,不是盲目瞎改,这里我是先看代码,现在对代码进行个解析。可以对比其他代码,这个工程主要加了四个文件,"./ESP8266/bsp_esp8266**.h" "./ESP8266/bsp_esp8266.c" "test.h" "test.c"前两个是对8266本身资源配置,而后两个才是数据传输配置。
"./ESP8266/bsp_esp8266.c" 中就一个 ESP8266_StaTcpClient_UnvarnishTest函数,所以所有的修改将在这里进行。

    uint8_t ucId, ucLen;     //定义变量ID 长度
    uint8_t ucLed1Status = 0, ucLed2Status = 0, ucLed3Status = 0, ucBuzzerStatus = 0;
//定义变量 LED1 2 3 指示是否开启
    char cStr [ 100 ] = { 0 }, cCh; //定义字符串cStr用于存放发送数据,定义字符变量 cCh

  char * pCh, * pCh1;//定义字符指针 * pCh, * pCh1

    DHT11_Data_TypeDef DHT11_Data; //DHT11结构体命名
    

  printf ( "\r\n正在配置 ESP8266 ......\r\n" );


    macESP8266_CH_ENABLE(); //8266初始化配置
    
    ESP8266_AT_Test ();
    
    ESP8266_Net_Mode_Choose ( AP );

  while ( ! ESP8266_CIPAP ( macUser_ESP8266_TcpServer_IP ) );

  while ( ! ESP8266_BuildAP ( macUser_ESP8266_BulitApSsid, macUser_ESP8266_BulitApPwd, macUser_ESP8266_BulitApEcn ) );    
    
    ESP8266_Enable_MultipleId ( ENABLE );
    
    while ( !    ESP8266_StartOrShutServer ( ENABLE, macUser_ESP8266_TcpServer_Port, macUser_ESP8266_TcpServer_OverTime ) );

    ESP8266_Inquire_ApIp ( cStr, 20 );//把IP存放
        printf ( "\r\n本模块WIFI为%s,密码开放\r\nAP IP 为:%s,开启的端口为:%s\r\n手机网络助手连接该 IP 和端口,最多可连接5个客户端\r\n",
           macUser_ESP8266_BulitApSsid, cStr, macUser_ESP8266_TcpServer_Port );
    //串口打印提示信息
    
    strEsp8266_Fram_Record .InfBit .FramLength = 0;
    strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;    
    
    while ( 1 )
    {        
        if ( strEsp8266_Fram_Record .InfBit .FramFinishFlag )
        {
            USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, DISABLE ); 
//½ûÓô®¿Ú½ÓÊÕÖжÏ
            strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ]  = '\0';
            
//            printf ( "\r\n%s\r\n", strEsp8266_Fram_Record .Data_RX_BUF );//
            if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_LED_" ) ) != 0 ) 
            {
                cCh = * ( pCh + 8 );
                
                switch ( cCh )
                {
                    case '1':
                        cCh = * ( pCh + 10 );
                      switch ( cCh )
                      {
                            case '0':
                                LED1_OFF;
                              ucLed1Status = 0;
                            break;
                            case '1':
                                LED1_ON;
                              ucLed1Status = 1;
                            break;
                            default :
                                break;
                        }
                        break;
                        
                    case '2':
                        cCh = * ( pCh + 10 );
                      switch ( cCh )
                      {
                            case '0':
                                LED2_OFF;
                              ucLed2Status = 0;
                            break;
                            case '1':
                                LED2_ON;
                              ucLed2Status = 1;
                            break;
                            default :
                                break;
                        }
                        break;

                    case '3':
                        cCh = * ( pCh + 10 );
                      switch ( cCh )
                      {
                            case '0':
                                LED3_OFF;
                              ucLed3Status = 0;
                            break;
                            case '1':
                                LED3_ON;
                              ucLed3Status = 1;
                            break;
                            default :
                                break;
                        }
                        break;
                        
                  default :
            break;                    
                        
                }
                
                sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_END", ucLed1Status, ucLed2Status, ucLed3Status );
                
            }
            
            else if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_BUZZER_" ) ) != 0 ) 
            {
                cCh = * ( pCh + 11 );
                
                switch ( cCh )
                {
                    case '0':
                        BEEP_OFF;
                      ucBuzzerStatus = 0;
                        break;
                    case '1':
                        BEEP_ON;
                      ucBuzzerStatus = 1;
                        break;
                    default:
                        break;
                }
                
                sprintf ( cStr, "CMD_BUZZER_%d_ENDBUZZER_END", ucBuzzerStatus );
                
            }
                
            else if ( ( ( pCh  = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_UART_" ) ) != 0 ) && 
                        ( ( pCh1 = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "_ENDUART_END" ) )  != 0 ) ) 
            {
                if ( pCh < pCh1)
                {
                    ucLen = pCh1 - pCh + 12;
                    memcpy ( cStr, pCh, ucLen );
                    cStr [ ucLen ] = '\0';
                }
            }

            else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_READ_ALL_END" ) != 0 ) 
            {
                Read_DHT11 ( & DHT11_Data );
                sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END", 
                                    ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int, 
                        DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
                  ucBuzzerStatus );
            }
            
                
            if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD," ) ) != 0 ) 
            {
                ucId = * ( pCh + strlen ( "+IPD," ) ) - '0';
                ESP8266_SendString ( DISABLE, cStr, strlen ( cStr ), ( ENUM_ID_NO_TypeDef ) ucId );
            }
            
          strEsp8266_Fram_Record .InfBit .FramLength = 0;
        strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;    
            
            USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE );  //使能串口接收中断
            
        }
        
    }
    
相关文章
|
11月前
王道408计组汇编语言部分学习总结
用于实现分支结构、循环结构的指令: cmp、 test、 jmp、 jxxx 用于实现函数调用的指令: push、pop、call、 ret 用于实现数据转移的指令: mov
399 0
|
算法 程序员 Go
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
|
IDE 物联网 开发工具
【史上最全面esp32教程】点灯大师篇
【史上最全面esp32教程】点灯大师篇
782 0
|
3月前
|
存储 程序员 存储控制器
【读书笔记】汇编语言(第四版)第二章 寄存器
【读书笔记】汇编语言(第四版)第二章 寄存器
|
8天前
|
程序员
从代码中感悟生活的哲理
【9月更文挑战第12天】本文以编程为引子,探讨了技术背后的哲学思考。文章通过深入浅出的方式,结合生活中的小故事和简单的代码示例,引导读者理解在看似冰冷的代码背后所蕴含的热情与智慧。文章旨在启发读者,无论面对何种挑战,都应保持初心,勇于探索,不断学习,最终找到属于自己的人生方向。
|
1月前
|
Shell
esp32入门笔记
这篇文章是关于ESP32 S3入门的笔记,包括了安装编译工具、下载ESP-IDF框架、设置工具和环境变量、以及烧录固件的步骤说明。
28 5
|
8天前
|
设计模式 程序员
技术感悟——从代码行间窥见人生哲理
在技术的海洋中,每一行代码都如同人生道路上的一块基石,它们共同构建了一个个复杂的系统,正如人生中的每一个选择和努力共同铸就我们的生命轨迹。本文将通过探讨编程中的设计模式、问题解决与调试经验,以及持续学习的重要性,揭示技术背后的深刻人生哲理,展现技术与人生的奇妙共鸣。
|
1月前
|
算法 程序员
技术感悟:从代码中寻找智慧
【8月更文挑战第5天】在技术的海洋中,我们常常被各种复杂的代码和算法所困扰。然而,正是这些看似枯燥的代码,却蕴含着无尽的智慧。本文将分享一些关于技术感悟的思考,希望能帮助你在编程的道路上找到自己的方向。
|
2月前
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
|
3月前
|
传感器 监控 机器人
技术经验解读:【雕爷学编程】Arduino动手做(83)
技术经验解读:【雕爷学编程】Arduino动手做(83)
24 0