============================================================================
感谢 开源源码和视频贡献者:
作者:火柴棍
时间: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\程序说明