3.1 ESP8266- FreeRTOS SDK 入门学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pt_raspi_fresher/article/details/79117559

============================================================================

感谢      开源源码和视频贡献者:                     

                                                                            作者:火柴棍

                                                                            时间:2016.2.28

============================================================================

演示视频:

演示代码:

 

资料下载地址:

链接:https://pan.baidu.com/s/1dGSkbip 密码:i03o

这篇学习笔记介绍这款芯片的基本功能,以及源码分析.

这是ESP8266入门必看视频,在这里面我学习到了很多.

在开始这个ESP8266学习的路上,由衷感谢 这种开源贡献者,我表示深深感谢他对开发者的默默贡献!

=========================================================================

                                            第0节   ESP8266开发环境 之搭建Linux下编译平台

演示搭建Linux下的编译平台,Window下安装虚拟机,然后在Window下安装Source Insight代码编辑软件

smartconfig 是基本例程(环境),以后的代码都是在此基础上开发的

 

                                                                     第一节  smartconfig

0.修改gen_misc.sh 里面的路径

  

1.FLASH TOOL使用手册

  不支持云端升级( Non-FOTA)
  烧录文件及地址说明

1.1 根据自己情况选择即可:

      比如:不支持云端升级--->1024KB Flash  8Mbit

      编译过程如下图

 

1.2  具体选项 介绍 ---> <<2a-esp8266-sdk_getting_started_guide_cn>> ---> 4.1. Non-FOTA

 

1.3 虚拟机上的操作如下图所示

 

 

2.esp8266_rtos_sdk 默认EART0波特率为74880

   代码UART_SetBaudrate(UART0,74880);  //注释
  -->  修改为115200

 

     Makefile增加一行代码:

    uart.c里面修改波特率:

PS:同一个文件 在虚拟机 可以编译成bin文件(本文的编译环境)
    在eclips 报错 No rule to make target 'clean'.  Stop.(安信可编译环境)


3.烧录下面4个文件  esp_init_data_default.bin    0xFC000
                 blank.bin                                          0xFE000
                 eagle.flash.bin                                  0x00000
                 eagle.irom0text.bin                          0x20000

注意:  eagle.irom0text.bin -->  0x20000

         虚拟机上的路径为0x20000,那么以虚拟机上面的路径为准,上面图片的地址要重新改变再下载!!!
 
=========================================================================== 

                                                          第二节  SDK建立LED闪烁任务

1.ESP TOUCH APK(安卓软件)
  手机配置功能:让模块连wifi

2.led_toggle
参考手册:20a-esp8266_rtos_sdk_programming_guide_cn(操作系统)
在user_main.c里面添加有关GPIO的函数(重要)
 
 
添加GPIO方法:
ESP8266_RTOS_SDK_V1.4.0\examples\driver_lib\driver\gpio.c
-----> led_toggle\driver\gpio.c

\ESP8266_RTOS_SDK_V1.4.0\examples\driver_lib\include\gpio.h
-----> \led_toggle\include\driver\gpio.h

user_main.c里面包含头文件
#include "driver/gpio.h"

 

3.修改gen_misc.sh文件
  export BIN_PATH=/home/esp8266/Share/led_toggle/bin

 

4.Gpio.c添加
  #include "driver/gpio.h"

 

5.烧录固件

=======================================================================

                                         第三节   SDK多任务、按键中断触发进入smartconfig
在user_main.c里面添加有关KEY的函数


PS:关于操作系统的函数说明,在相应的头文件会有详细介绍
添加KEY方法:在第二节已经完成(GPIO)

功能:演示多任务运行,建立一个LED灯闪烁任务和按键处理任务.建立按键任务后将任务挂起,
在按键中断处理任务中唤醒按键处理任务,按键处理任务检测到按键按下5S后启动ESP8266进入snartconfig模式

 

==========================================================================
                                         第四节   SDK建立UDP服务器、局域网搜索设备

功能:演示建立UDP服务器,局域网内广播搜索设备(网络通信)

参考手册:LWIP中文手册 -->  Socket编程

1. 主要编写UdpServer.c和UdpServer.h   二个文件


2. 在user_main.c --> user_init(void)
   添加UdpServerInit()

3. 修改bin文件路径
  udp_server-->gen_misc.sh
  export BIN_PATH=/home/esp8266/Share/udp_server/bin

 

===========================================================================
                              第五节  SDK建立TCP服务器、局域网控制LED亮灭(重点)

功能:演示建立TCP服务器,局域网内TCP客户端发送指令控制LED亮灭
     TCP相比UDP稳定可靠(具体百度)
参考手册:
      20a-esp8266_rtos_sdk_programming_guide_cn-->3.3网络协议示例-->TCP Server(21页)
      20b-esp8266_rtos_sdk_api_reference_v1.4.0
1.使用SourceInsight 编辑器
  a.Project-->New Project
    Where do you want to...?(建立一个新的文件夹命名为tcp_server)   
    New project name-->tcp_server

  b.Project Source Directory-->(选择已有的tcp_server基本代码文件路径下的user)

  c.把用到的C文件和H文件添加进来(Add All)
  udp_server的driver文件+include文件+user文件
  ESP8266_RTOS_SDK_V1.4.0的include文件

2.主要编写TcpServer.c和TcpServer.h文件
  TcpServer.c保存在tcp_server-->user下
  TcpServer.h保存在tcp_server-->include下

3.Socket编程
  Udp和TCP用的Socket函数名一样,但是里面参数不一样
  代码里面有一些函数在百度里面都有,不会百度有详细说明


4.编写Led.c和Led.h文件
  Led.c保存在tcp_server-->user下
  Led.h保存在tcp_server-->include下

5.修改bin文件路径
  tcp_server-->gen_misc.sh
  export BIN_PATH=/home/esp8266/Share/tcp_server/bin

6.在虚拟机上编译代码后下载到开发板

===========================================================================


                                     第六节  SDK建立http请求,使用GET访问百度首页
              
        工具:POSTMAN
        URL基本知识 
        <协议>://<主机>:<端口>/<路径>?<参数>&<参数>&....
      
        HTTP基本知识讲解
        HTTP请求过程如下:
        a.域名解析
        b.建立TCP连接
        c.发送数据(发送HTTP头信息)
        d.接收数据
        e.断开连接

        GET:主要用于获取服务器上的内容
        POST:传输内容到服务器
        CR 回车 , LR 换行       

        HTTP GET请求举例
         首先运行cmd.exe,然后 ping www.baidu.com,获取IP地址,使用网络调试助手
       作为TCP客户端,连接IP地址:180.97.33.108,端口:80
         请求消息:
       GET /index.html HTTP/1.1
       Host:www.baidu.com
       (空行) (回车换行-\r\n)
         响应消息:
       HTTP/1.1 200 OK
       ......

1.使用SourceInsight 编辑器

2.编写TcpServer.c和TcpServer.h 文件

3.在TcpServer.c-->void tcp_server_thread( void *pvParameters )增加部分代码

4.在虚拟机修改路径,生成bin文件

===========================================================================

                                                              第七节 SDK实现OTA

  功能:在局域网内运行WebServer,将固件放到WebServer的目录下,使用网络助手触发ESP8266从WebServer
 上下载新固件,然后ESP8266重启,运行新固件

  参考文档:自己编写的文档 --> 第七讲 ESP8266 RTOS SDK实现OTA.pdf

  使用用户自己的服务器,这方式比较简单,将新的固件放到服务器的路径下,ESP8266使用http get 的方式下载
新的固件写到FLASH里面,然后重启运行新的固件.

1.修改相关文件(视频中的PPT)
2.例程实现(视频中的PPT)
3.编写代码
 
  a.修改代码(Upgrade.C文件)
  BOOL 
  system_upgrade_start(struct upgrade_server_info *server)//回调函数
  只需填写参数,然后调用此函数即可实现固件更新
      | |
      | |回调函数如下
      | |
    struct upgrade_server_info {
    struct sockaddr_in sockaddrin;          /**< socket of upgrading */
    upgrade_states_check_callback check_cb; /**< callback of upgrading */
    uint32 check_times;                     /**< time out of upgrading, unit : ms */
    uint8 pre_version[16];                  /**< previous version of firmware */
    uint8 upgrade_version[16];              /**< the new version of firmware */
    uint8 *url;                             /**< the url of upgrading server */
    void *pclient_param;
    uint8 upgrade_flag;                     /**< true, upgrade succeed; false, upgrade fail */
   };

   b.需要填写三个参数
   
4.执行升级代码
  UpgradeFirmware.c-->bool ExcuteUpgrade( char * FirmWareDownLoadPath )

5.具体说明
  OTA\程序说明

展开阅读全文

没有更多推荐了,返回首页