目录

  • 一、局域网下游览器更新
  • 二、网络服务器获取固件
    • 1、第三方云平台
      • (1)固件保存及固件地址链接获取
      • (2)ESP32代码设置
    • 2、python下的SimpleHTTPServer方法
      • (1)云服务器设置
      • (2)ESP32代码设置
      • (3)关闭SimpleHTTPServer
    • 3、Apache2搭建HTTP服务器
      • (1)云服务器设置
        • 解决方法一、
        • 解决方法二、
        • 解决方法三、
      • (2)ESP32代码设置
      • (3)关闭Apache2
      • (4)卸载Apache2
  • 三、建议
  • 四、参考资料
    • 1、esp32 http空中升级
    • 2、Ubuntu用Apache2快速搭建一个HTTP文件服务器
    • 3、Ubuntu 完全卸载Apache2

ESP32和ESP8266的OTA升级有两种方式
这里介绍的是ESP32的OTA升级方式,ESP8266同理。

.

一、局域网下游览器更新

这个方法在WebServer示例的WebUpdata.ino例程中可查看详细方法。
大概过程是将示例代码中的第12~13行改为电脑连接的WiFi名称和密码。

const char* ssid = "WiFi名称";
const char* password = "WiFi密码";

烧录代码后在打开串口,如果ESP32成功连接上WiFi,将会打印如下内容

电脑打开游览器网文此地址。

如果成功串口将会打印如下信息

网页内容也会变为

更新成功后ESP32将会复位运行新的固件。
到此,更新结束。

二、网络服务器获取固件

这里提供了三种固件获取方式
第一种是将固件保存在第三方云平台,然后ESP32进行访问下载。
第二种和第三种则是保存在自己的服务器(腾讯云),为ESP32提供下载固件。
第二种和第三种方式相同,只是云服务器上的HTTP文件服务器实现方式不同。可自行选择。

1、第三方云平台

这里介绍的第三方平台是阿里云(https://www.aliyun.com/)
用到阿里云的对象存储服务,
如果使用要求不高的话可以免费使用。

(1)固件保存及固件地址链接获取

需要注册一个阿里云账号。

注册后点击立即开通,开通对象存储服务
然后创建一个Bucket





.

上传固件

.
关闭HTTPS功能

将复制的链接保存,需要填入ESP32的代码中。

.

(2)ESP32代码设置

在 Arduino IDE 中打开ESP32的 HTTPUpdate
选择第一个名为 httpUpdate.ino 的例程
在第34行更改要接入的WiFi名称和密码

然后在第53行更改服务器地址和固件名称


然后烧录代码,打开串口,波特率设置为115200。

如果WiFi连接成功并且更新成功,将会出现上图显示的内容。
如果更新失败将会打印失败原因。
仔细检查以上步骤是否有遗漏的地方。

以上为通过第三方平台来保存固件,并获取固件的方式。

.

2、python下的SimpleHTTPServer方法

说明:此方式仅在腾讯云服务器上经过验证

(1)云服务器设置

在开启http服务器之前需要将编译好的固件提交保存在云服务器。
需要有python环境,系统应该已经自带了,提示没有的话自行安装。

终端用cd命令进入在固件所在目录
然后在此目录下输入如下命令

python -m SimpleHTTPServer 8266

其中8266为访问当前目录的端口,IP地址为服务器的ip地址
注意,需要在安全组里面将TCP的8266端口设置为允许访问。

(2)ESP32代码设置

在 Arduino IDE 中打开ESP32的 HTTPUpdate
选择第一个名为 httpUpdate.ino 的例程
在第34行更改要接入的WiFi名称和密码
然后在第53行更改服务器地址和固件名称
具体设置方式是
http://服务器的ip地址:端口/固件名称
如果此目录下有多个固件,设置为需要下载的固件即可。
如下图

然后烧录代码,打开串口,波特率设置为115200。
如果WiFi连接成功并且更新成功,串口将会打印下图显示的内容。

并且服务器终端上会打印如下内容

如果更新失败将会打印失败原因。
仔细检查以上步骤是否有遗漏的地方。

以上方法适合试验用,当退出终端时,SimpleHTTPServer也会被关闭,
如果需要将其放到后台运行,则更改命令即可
nohup python -m SimpleHTTPServer 8266 > /dev/null 2>&1 &

nohup python -m SimpleHTTPServer 8266 > /dev/null 2>&1 &

命令解释如下:
nohup
任务不挂起( no hang up)

python -m SimpleHTTPServer 8266
在当前文件目录下开启 python下的 SimpleHTTPServer,
IP地址为云服务器的IP,端口为8266。
如果不指定端口则默认为8000
开启端口前需要在服务器的安全组内将此端口打开,否则ESP32将无法访问。

/dev/null 2>&1
将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃

&
用于后台执行程序,但是关闭当前终端也会结束,所以需要结合nohup命令才能放入后台运行。

执行此命令后,将会打印任务的PID

(3)关闭SimpleHTTPServer

如果想关闭 SimpleHTTPServer 的话可直接用kill命令杀死对应PID的进程。
上图中打印的PID是 710,那么可直接用命令杀掉此进程

sudo kill 710

如果不记得打印的PID的话,使用 ps 命令查看当前运行的所有进程。
如下:
输入ps -e 命令查看所有进程

找到之后使用sudo kill 710命令将进程杀死。

不放心的话可以再用ps -e 命令查看所有进程。

以上为python下的SimpleHTTPServer方法下载固件。

.

3、Apache2搭建HTTP服务器

第二种方法比较简单,不需要下载或者配置环境。
这里再介绍第三种方式(相比第二种略微繁琐),提供选择余地。

(1)云服务器设置

需要安装 Apache2,安装方式很简单

第一步、 输入三个命令
sudo apt-get update (更新软件列表)
sudo apt-get install apache2 (安装 Apache2)
sudo /etc/init.d/apache2 start (启动 Apache2)

中途会提示是否继续Y/n ,这里输入Y然后回车就行。

安装完成后
游览器访问:http://服务器ip
可以看到如下内容:
(如果没有,查看后面的方法二解决)

第二步、 输入三个指令

cd /var/www/html (进入/var/www/html目录)
sudo ln -s ~/espserver/download download (创建软连接)
sudo /etc/init.d/apache2 restart (重启 Apache2)

命令意思如下:
cd /var/www/html 进入到/var/www/html目录。

sudo ln -s ~/espserver/download download 在当前目录下在创建一个名为download的软链接,
且软链接指向 /home/ubuntu/espserver/download/目录。
(以后编译的固件直接放入/home/ubuntu/espserver/download/目录即可)

sudo /etc/init.d/apache2 restart 重新启动 Apache2
.

然后游览器访问:http://服务器ip/download/
如果显示如下内容:

证明设置成功,有小部分人可能无法访问。
可能会有无权限访问的问题。
打开的网页显示如下内容,通过下面的方法一解决。

.

解决方法一、

如果是权限问题,那就更改一下权限。
/home/ubuntu/espserver/download/这条路径的目录权限都改为755。
更改权限的命令是 chmod

例如,将espserver目录的权限更改为755,则是在ubuntu目录下
输入命令: chmod 755 espserver/
.

所有的目录权限更改之后就可以在游览器正常访问文件了,
如果还是无法显示如下画面,查看方法三

解决方法二、

使用 vim 更改 Apache2 的配置文件 “apache2.conf

输入命令:vim /etc/apache2/apache2.conf
更改第162行
更改之后还是无法在游览器访问固件所在目录那只能用方法三方法了。

.

解决方法三、

百度(http://www.baidu.com),
CSDN(https://www.csdn.net),
简书(https://www.jianshu.com),
知乎(https://www.zhihu.com)。

.

.

如果经过以上两个步骤(六条命令)后,
游览器访问 http://服务器ip/download/
出现下面画面表示服务器设置成功,可进入下个步骤。

.

(2)ESP32代码设置

在 Arduino IDE 中打开ESP32的 HTTPUpdate
选择第一个名为 httpUpdate.ino 的例程
在第34行更改要接入的WiFi名称和密码
然后在第53行更改服务器地址和固件名称
具体设置方式是
http://服务器的ip地址/download/固件名称
如下图

然后烧录代码,打开串口,波特率设置为115200。
如果WiFi连接成功并且更新成功,串口将会打印下图显示的内容。

(3)关闭Apache2

在终端输入命令
sudo /etc/init.d/apache2 stop
注意:关闭Apache2后将无法提供固件下载服务。

.

(4)卸载Apache2

参考文章:
Ubuntu 完全卸载Apache2(https://www.linuxidc.com/Linux/2013-06/85825.htm)

.

三、建议

本文章主要介绍了三种服务器提供固件下载服务的方式。

第一种方式
使用第三方云平台服务,使用方便且文件便于管理。
可能要收费,不过收费很便宜。
适合给没有服务器的小伙伴使用。

第二种方式
使用python环境下的SimpleHTTPServer服务。
搭建迅速,端口设置灵活,将固件放在同目录下便于管理,只需要安全组开放对应端口即可。
适合给有服务器但是图省事的小伙伴。

第三种方式
使用Apache2的HTTP服务。
相对于第二种搭建方法略微麻烦。将固件放在同目录下便于管理,使用80端口(可以更改为其他端口,具体方法自行查找)。

本人更建议使用方法三,除了管理固件外还可以将 /var/www/html/ 目录下的 index.html替换为自己的网页文件,制作自己的网站,适合会HTML或者PHP语言的小伙伴。

.

ESP32如果需要开机检测更新或者自动更新,可直接运行此示例,获取下一版本的固件,如果ESP32获取不到下一版本的固件将执行其他操作。

WiFiClient client;
t_httpUpdate_return ret = httpUpdate.update(client, "http://server/file.bin");

如果ESP32获取不到指定的固件 则 ret = HTTP_UPDATE_FAILED
报错内容是找不到此文件。
.

.

.

.

四、参考资料

1、esp32 http空中升级

昨天剩下的一杯冷茶 的文章
esp32 http空中升级
https://www.jianshu.com/p/ec8d6e983abc

.

2、Ubuntu用Apache2快速搭建一个HTTP文件服务器

柳鲲鹏 的博客
Ubuntu用Apache2快速搭建一个HTTP文件服务器
https://quantum6.blog.csdn.net/article/details/84789552

.

3、Ubuntu 完全卸载Apache2

Linux公社 Linux 的文章
Ubuntu 完全卸载Apache2
https://www.linuxidc.com/Linux/2013-06/85825.htm

ESP32/ESP8266 OTA服务器搭建相关推荐

  1. android ota服务器搭建,Android OTA 差分包升级

    稍作修改,因为直接用会有些错误 另外附上超详细的recovery模式update.zip升级分析说明的地址: 根目录下两个命令: 1.make --会生成系统的img文件,system.img,boo ...

  2. android ota 服务器搭建,构建 OTA 软件包  |  Android 开源项目  |  Android Open Source Project...

    您可以使用 build/make/tools/releasetools 中提供的 ota_from_target_files 工具,针对使用 A/B 系统更新或非 A/B 系统更新的设备构建完整 OT ...

  3. arduino / VScode+platformIO搭建esp32/esp8266编译环境(一篇足矣)

    arduino/VScode+platformIO 搭建esp32/esp8266开发环境(一篇足矣) 前言:入门开源硬件开发,在搭建编译环境的时候碰了一脸灰,特意写下此博客,以供参考!结尾还有mic ...

  4. micropython做中继_MicroPython网络服务器使用ESP32/ESP8266远程控制家用交流电器

    背景知识视频教程 将继电器与ESP32或ESP8266配合使用是一种远程控制AC家用电器的好方法.本教程介绍了如何使用MicroPython固件通过ESP32或ESP8266控制继电器模块. 我们将研 ...

  5. stm32 esp8266 ota升级-自建mqtt和文件服务器全量升级

    stm32 esp8266 ota系列文章: stm32 esp8266 ota-快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级-tcp模拟http ...

  6. ESP32 Ubuntu开发环境搭建

    在Ubuntu下搭建ESP32开发环境 文章目录 在Ubuntu下搭建ESP32开发环境 说明 开发环境 硬件准备 ESP32(NodeMCU-32S) NodeMCU-32S 引脚图 搭建步骤 安装 ...

  7. 图解Esp32/ESP8266进行组网开发所需了解的那些小概念

    图解Esp32/ESP8266进行组网开发所需了解的那些小概念 图解日程生活中常见网络操作背后的小概念 前情提要 过程中涉及的进行组网开发所需的小概念 漫画展示 预告:一个基于ESP32和ESP826 ...

  8. 视频教程-micropython基础入门(esp32/esp8266单片机开发)-物联网技术

    micropython基础入门(esp32/esp8266单片机开发) 10年以上维修电工.6年以上python/javascript/c/linux经验.编程与单片机与电工知识跨学科结合.掌握lin ...

  9. ESP32,使用gitee搭建 ESP-IDF 开发框架

    ESP32便宜,开发方便,非常适合初学者用来学习,之前我自己写的开发环境可能不再适合,推荐下面这篇文章. ===== 关于如何搭建ESP32的开发环境,乐鑫官方给出了很详细的教程和文档,基本上跟着官方 ...

最新文章

  1. 电信应在短时间内放弃CDMA网络
  2. 安装itunes需要管理员身份_Windows 10 在microsoft store 微软商店里安装的itunes如何更改备份位置...
  3. posix多线程有感--API
  4. Bit-Z推出去中心化多链钱包CoinU 打造资产价值生态体系
  5. Python 经典模块可能都学过,10道题测试你会不会用?
  6. 云计算开发学习笔记:Python3迭代器与生成器
  7. 胶囊网络与计算机视觉教程 @CVPR 2019
  8. View组件之各xml属性
  9. 融云android系统消息,如何解决 嵌入融云SDK后, Android 手机收不到消息推送?
  10. github船舰新文件夹,为什么github显示灰色文件夹,当我创建一个新的存储库?
  11. python turtle画彩虹的源代码_Python基础实例——绘制彩虹(turtle库的应用)
  12. 大师速写作品及理论,有你喜欢的知识
  13. 【愚公系列】2022年11月 uniapp专题-优购电商-商品列表
  14. 【笔记】播放器 - mpv - 使用、配置
  15. ez4w.com的5折优惠码
  16. 如何链接外部JavaScript文件
  17. 色散共焦传感器如何进行同步信号输出?
  18. Snapchat争先恐后地修复失败的重新设计,将故事转移到发现之中
  19. 翻译自凯文凯利的Ted演讲—人工智能如何引发第二次工业革命
  20. 施工员考试科目有哪些?施工员(装修装饰)练习题分享

热门文章

  1. 你还在为购买PowerBI Pro账号而烦恼吗?(PowerBI+钉钉可以为你解决)
  2. python中的pydoc
  3. Window Server 2003 IIS6.0 未授权查看
  4. MQTT服务器的安装
  5. 计算机课程设计SSH高校学生选课系统【代码讲解+安装调试+文档指导】
  6. 上品折扣连续三年初一闭店 人性化管理赢得称赞
  7. 时间片轮转算法(RR算法)c++ 数组
  8. 网商软件荣获360软件安全认证中心认证 实力见证
  9. DNGuard HVM 2007 标准版正式发布
  10. python zeros() 函数