【ESP8266 快速入门】示例5:Arduino环境实现OTA无线升级固件功能WebServer网页服务器方式

这篇具有很好参考价值的文章主要介绍了【ESP8266 快速入门】示例5:Arduino环境实现OTA无线升级固件功能WebServer网页服务器方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主题

使用【ESP8266】Arduino环境实现OTA无线升级固件功能,由LED闪烁程序通过OTA升级为PWM呼吸灯程序。

0.引言

OTA听起来挺牛的一个功能,其全称为(Over-The-Air),直译为空中传送。就是通过无线方式实现固件升级。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
对于实际封装好的项目,ESP8266已经包装好了,不方便使用数据线来下载程序。Arduino的OTA库,经常搜索不到网络端口,这里采用web服务端来升级程序,更加便捷。
下文将详细介绍如何轻松优雅的通过web,来无线更新ESP8266设备的固件,而无需物理连接。

1.环境准备

硬件:安信可esp8266开发板。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA

1.安装Arduino 1.8.15软件
2.安装ESP8266的库
这些在我的博文里面有详细说明,这里就不赘述了。博文如下:【ESP8266 快速入门】0.详细步骤-Arduino IDE开发环境搭建(基于安信可NodeMCU、C/C++)
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA

2.OTA步骤

2.1.OTA的基础程序:LED闪烁

OTA应用以led闪烁程序为例。下文的关键代码httpUpdater.setup(&httpServer); // 网页更新固件

/*******************************************************************/
/*
项目名称           : 快速入门ESP8266
程序名称           : WEB_OTA_Example
作者              : nanshou
日期              : 202303
程序目的: 
本示例程序用于演示ESP8266的web-OTA功能。通过web网页更新esp8266的固件,而不需要连接数据线。
*/
/*******************************************************************/
#include <ESP8266WiFi.h> 
#include <ArduinoOTA.h>  // OTA库
#include <Ticker.h>      // 定时任务
#include <WiFiClient.h>   
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>
// 设置wifi接入信息(只能是2.4g频段)
const char *ssid = "yourssid";
const char *password = "yourpassword";
ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

/************************************************************/
Ticker ticker; // 定时任务
// led闪烁时间间隔(秒)
const int blinkInterval = 1;
// 在Tinker对象控制下,此函数将会定时执行。
void tickerCount(){
  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
void setup(void)
{
    pinMode(LED_BUILTIN, OUTPUT);
    ticker.attach(blinkInterval, tickerCount); // 设置Ticker对象
    Serial.begin(115200);
    Serial.println();
    Serial.println("web OAT:blick v1.0"); // 显示版本
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

    Serial.print("Connecting...");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(300);
    }

    Serial.println();

    httpUpdater.setup(&httpServer); // 网页更新固件
    httpServer.begin();

    Serial.print("HTTPUpdateServer ready! Open http://");
    Serial.print(WiFi.localIP());
    Serial.println("/update in your browser");
}

void loop(void)
{
    httpServer.handleClient();
}

注意这里填写你的wifi信息

// 设置wifi接入信息(只能是2.4g频段)
const char *ssid = "yourssid";
const char *password = "yourpassword";

连接数据线,烧录这个程序到开发板。
工具参数如下,注意COM和硬件连接的编号相对应。我的是COM5,如果你的是COM3就选COM3。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
点击程序上传。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
程序上传成功后,led开始1s闪烁一次。
led点亮1s熄灭1s,闪烁效果如下图。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA

2.2.OTA的升级程序:PWM呼吸灯

新建一个项目,实现pwm呼吸灯。代码如下。

/*******************************************************************/
/*
项目名称           : 快速入门ESP8266
程序名称           : WEB_OTA_Example
作者              : nanshou
日期              : 202303
程序目的: 
本示例程序用于使用pwm呼吸灯,演示ESP8266的web-OTA功能。通过web网页更新esp8266的固件,而不需要连接数据线。

*/
/*******************************************************************/
#include <ESP8266WiFi.h> 
#include <ArduinoOTA.h>  // OTA库
#include <Ticker.h>      // 定时任务
#include <WiFiClient.h>   
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>
// 设置wifi接入信息(只能是2.4g频段)
const char *ssid = "yourssid";
const char *password = "yourpassword";
ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

/************************************************************/
Ticker ticker; // 定时任务
// 任务间隔毫秒
const int tick_ms_interval = 10;
int i = 1023;
// 在Tinker对象控制下,执行此函数实现呼吸灯
void ticker_pwm_breathing(){
  // 低电平点亮,i越接近0越亮。led逐渐变亮
  if(i< 0) i = 1023;
  analogWrite(LED_BUILTIN, i);
  i= i-5;
}
void setup(void)
{
    pinMode(LED_BUILTIN, OUTPUT);
    analogWriteRange(1023); // 设置PWM精度为10位(0-1023)
    
    Serial.begin(115200);
    Serial.println();
    Serial.println("web OAT:breathing v2.0"); // 显示版本
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

    Serial.print("Connecting...");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(300);
    }

    Serial.println();

    httpUpdater.setup(&httpServer); // 网页更新固件
    httpServer.begin();

    Serial.print("HTTPUpdateServer ready! Open http://");
    Serial.print(WiFi.localIP());
    Serial.println("/update in your browser");

    ticker.attach_ms(tick_ms_interval, ticker_pwm_breathing); // 设置Ticker对象,输出pwm呼吸灯
}

void loop(void)
{
    httpServer.handleClient();
}

注意这里填写你的wifi信息

// 设置wifi接入信息(只能是2.4g频段)
const char *ssid = "yourssid";
const char *password = "yourpassword";

点击左上角’文件’->‘首选项’后,勾选’编译’,然后点击’好’,保存设置。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
编译代码(不是点上传)
通过无线网络上传ESP8266的这个呼吸灯程序编译的固件。
注意下面显示的固件输出的路径。

8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
将路径复制出来C:\Users\nanshou\AppData\Local\Temp\arduino_build_116550(上图路径的中\改为\),在文件资源管理器中,可以看到后缀为bin的固件。就是通过web服务器,上传这个bin文件。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA

打开串口工具,查看串口输出服务器地址。用arduino自带的串口监视器也可以。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
浏览器输入上述网址http://192.168.110.31/update 。注意电脑要和esp8266在同一局域网环境下(不懂局域网,就让esp8266连接同一wifi),否则网页打不开。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
选择编译生成的呼吸灯的bin文件。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
点击更新。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
等待更新完成。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
系统重启后就是新固件了。

led由闪烁变为了呼吸灯。效果如下图。
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA
求赞求收藏求关注
8266 ota,ESP8266,服务器,单片机,ESP8266,OTA

3.总结

至此实现了web-ota,将esp8266从闪烁升级为呼吸灯。
1.ota程序占的空间较大,注意空间分配
2.电脑和esp8266必须处于同一局域网

这里调用的是默认的网页,非常难看。后续有空了再优化吧。
除了升级程序外,还可以更新文件系统的文件。有兴趣的朋友可以钻研。

此外,如果觉得使用STA模式升级不方便(需要额外的路由器WiFi或者热点),可以把STA换成AP模式,使用手机或者PC连接EPS8266放出来了的热点后,对应的ip地址(默认的是192.168.4.1/update )上传需要升级的固件就可以了。文章来源地址https://www.toymoban.com/news/detail-774141.html

到了这里,关于【ESP8266 快速入门】示例5:Arduino环境实现OTA无线升级固件功能WebServer网页服务器方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Arduino物联网快速开发:基于ESP8266与点灯Blinker制作小白都会的DIY《智能家居》系统

    我们要制作一款能够远程控制家里灯、风扇的开关,并采集温湿度、光照传输到手机APP上。正好看到了点灯Blinker的开源方案, blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输。可用于智能家居、数据监测等领

    2024年02月06日
    浏览(50)
  • ESP8266初次如何实现无线通信(基于电脑与ESP8266)

    本次软件是需要串口调试助手,网络调试助手,KEIL5                             下面图标依次排列 本次硬件是需要一个ESP8266模块,一个stm32f103c8t6芯片,一个USB转TTL模块 ESP8266是一个微小的且集成的国产WIFI模块,它有很多种型号,但是使用

    2023年04月20日
    浏览(33)
  • esp8266+小爱同学实现语音交互控制arduino

    可独立应用 也可搭载其他的MCU运行 在 Arduino IDE 中,打开“文件”“首选项”选项卡。 搭建NODE MCU环境:点击菜单栏文件,首选项,在“附加开发板管理器网址”框中,输入以下网址并单击“确定”按钮:(用于加载esp8266库)http://arduino.esp8266.com/stable/package_esp8266com_index.jso

    2024年02月04日
    浏览(53)
  • 【Arduino 时间函数】ESP32怎么实现微秒级延时,适用于ESP8266等

    如果基于 Arduino 开发 ESP32 ,则延时函数可以直接使用 Arduino 提供的时间函数。 Arduino提供四种不同的时间操作函数。 delay() 函数 delayMicroseconds() 函数 一毫秒内有一千微秒,一秒内有一百万微秒。 millis() 函数 此函数用于返回Arduino板开始运行当前程序时的毫秒数。 micros() 函数

    2024年02月13日
    浏览(47)
  • 【NodeMCU-ESP8266】Arduino环境下建立UDP服务器及WiFiUDP库常用函数详解

    目录 一、UDP协议概述         1、UDP基本概念         2、UDP的主要特点         3、UDP的基本报文格式 ​二、ESP8266官方UDP库相关函数详解 三、建立UDP服务器的一般流程 四、ESP8266官方库 UDP 示例程序演示 五、ESP8266官方库 UDP 程序运行说明         1、将程序编译并

    2024年04月24日
    浏览(44)
  • stm32 esp8266 ota升级-qt bin文件处理工具

    stm32 esp8266 ota系列文章: stm32 esp8266 ota-快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级-tcp模拟http stm32 esp8266 ota升级-hex合并-烧录-bin生成 stm32 esp8266 ota升级-qt bin文件处理工具 stm32 esp8266 ota升级-自建mqtt和文件服务器动态AB面方式 stm32 esp8266 ota升级-自建mqtt和文件服务器全

    2024年02月05日
    浏览(81)
  • Arduino ESP32开发环境搭建入门教程,esp32的arduino开发环境搭建教程,arduino导入eps32开发插件

    从官网下载 Arduino IDE 软件并安装。下载链接:Software | Arduino 网盘链接:链接:https://pan.baidu.com/s/1ZuSbo1BPy8XyyXzfl4KNzg?pwd=f8yd 提取码:f8yd 1、找到Arduino IDE安装目录,打开hardware文件夹。 2、在hardware文件夹中创建一个espressif文件夹。 3、将解压出的文件夹移动到espressif文件夹中,

    2024年02月13日
    浏览(56)
  • 使用arduino IDE开发ESP8266NodeMCU连接DHT11实现温湿度检测并上传onenet官网

            本篇博客记录一下以arduino IDE来开发一下ESP8266NodeMCU,实现用DHT11进行温湿度检测,并且上传新版的onenet官网;我在实现这个小项目的时候,发现网上资料有关onenet的资料都是旧版的,这就有点难受了,本着开源的精神,这篇博客就来弥补一下这方面资料的缺失。  

    2024年02月09日
    浏览(66)
  • 【ESP8266 快速入门】硬件:ESP12S/ESP12F最小系统设计及typeC自动下载电路设计

    0.引言 ESP8266面向 物联网 应用的,高性价比、高度集成的 Wi-Fi MCU 。 芯片ESP8266EX采用的QFN无引脚封装,且需要搭配FLASH使用,以及设计天线;使用起来比较麻烦。 我希望使用起来更加方便,便想到了使用ESP12S/12F这种集成模组(集成FLASH、天线)。 我只需设计一个最小系统及

    2024年02月06日
    浏览(207)
  • Arduino离线安装esp32/esp8266

    使用本教程所示的安装方法,双击安装包的傻瓜式操作,不用进入文件夹修改,不用添加网站地址,免去网络带来的烦恼。安装完成后直接使用。 官网地址:Software | Arduino 打开链接后如图  点击红色框内以后跳转到此界面 再次选择红框后下载 打开安装包一直下一步就好 打

    2023年04月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包