ESP32+UART+TCP_Client+OTA

2023-05-16

     在上一篇博客的基础上添加了OTA空中升级功能。

     实现的功能是一个WiFi-DTU模块,ESP32板子通过串口与下位机连接,我目前使用的下位机为51,ESP32第一次启动时,通过微信小程序连接wifi,连接上后ESP32作为tcp_client客户端与服务器进行通信,在服务器与51单片机之间传输数据,考虑到可能会有程序升级的需求,给ESP32添加了一个OTA功能。

参考文档:

乐鑫OTA官方文档:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/ota.html

乐鑫ESP-SDK:https://www.espressif.com/zh-hans/support/download/sdks-demos?keys=&field_type_tid%5B%5D=624&field_type_tid%5B%5D=13

关于OTA的例子的路径:example/system/ota/simple_ota_example/main

      参考的乐鑫关于OTA升级例子里面的README文件,在后面启动https的时候,关于OpenSll那部分看不懂,升级总出现出错,后面给服务器安装了nginx服务器才成功实现升级。

      在乐鑫提供的ota例程里面编译不会出现问题,但是将其中的代码移植到其他工程就会出现问题,我对CMake编译不熟悉,我看网上对这个编译的问题说的比较少,不知道是不是我用法不正确,在其他工程中编译需要修改main文件夹下的CMakeLists.txt文件,让编译器包含组件,在编译时能够找到需要的头文件。

开启OTA功能

由于我编译出来的bin文件超过了1M,所有我在上图中选择了第三项,使用了自定义的分区表,分布表信息如下。

自定义分区表信息

指定更新固件的网址

最里层CMakeLists.txt

       然后将simple_ota_example.c里面的ota任务函数拷贝到自己的工程中即可,然后在需要升级的地方启动这个任务就可以了。在浏览器里面输入固件更新的网址,只要能下载固件文件就表示https服务器没问题。

获取需要更新的固件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP32+UART+TCP_Client+OTA 的相关文章

  • Android Things 5​​.1 - 9 位 UART

    我正在尝试使用 Android Things 支持 9 位 UART 当我尝试将数据大小设置为 9 时 我收到 IO 异常 唯一有效的配置是 7 位和 8 位 我知道可以使用奇偶校验错误中断进行 9 位模拟 但在 Android 上 我没有
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • 如何抑制Windows防火墙的Windows安全警报?

    当我从这里找到的 ZeroMQ 指南中用 C 创建 Hello World 示例时 http zguide zeromq org page all Ask and Ye Shall Receive http zguide zeromq or
  • Go客户端程序生成大量TIME_WAIT状态的socket

    我有一个 Go 程序 它从多个 goroutine 生成大量 HTTP 请求 运行一段时间后 程序报错 connect cannot allocaterequestedaddress 当检查时netstat 我得到大量 28229 个连接T
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • 如何将 Perforce 仓库位置转换为客户端视图位置

    我想知道如何将 Perforce 仓库位置转换为客户端视图位置以用于脚本编写 我有一个脚本 它首先检查文件以进行编辑 然后与该文件进行交互 我需要将仓库位置 即 Projects Project6 转换为客户端视图位置 即 d Projec
  • 如何知道哪个本地应用程序连接到我的套接字(Windows)

    我有一个绑定到某个 TCP 端口的 Windows 服务 该端口用于我的应用程序之间的 IPC 有没有一种编程 WinAPI WinSocket 等 方法可以知道哪个应用程序连接到我的端口 即在我的 Windows 服务中 我想获取连接到我
  • 通过 TCP/.NET SSLStream 发送文件很慢/无法正常工作

    我正在编写一个与 SSL 配合使用的服务器 客户端应用程序 通过SSLStream 它必须做很多事情 不仅仅是文件接收 发送 目前 它的工作原理是 只有一个连接 我总是使用从客户端 服务器发送数据SSLStream WriteLine 并使
  • WCF、REST、SSL、客户端、自定义证书验证

    我有一个无法解决的具体问题 让我详细解释一下 我是这项技术的新手 所以我可能使用了一些错误的术语 如有不明白之处 请指正并解释或要求解释 我正在创建一个自托管的 WCF REST 服务器 托管在 WPF 应用程序中 它使用 https SL
  • 网络服务发现不是发现服务类型

    我想通过 Android 设备在本地网络中找到服务器 我可以通过使用找到它NSDManager具有服务器服务类型的服务 例如 workstation tcp是服务类型 在我的本地网络中我有一个 无线路由器和无线中继器 两者都有不同的SSID
  • TCP 连接寿命

    客户端 服务器 TCP 连接在野外可以持续多长时间 我希望它保持永久连接 但事情发生了 所以客户端将不得不重新连接 我什么时候可以说代码有问题而不是某些外部设备有问题 我同意赞 林克斯的观点 虽然无法保证 但假设不存在连接或带宽问题 您可以
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • Clojure实现多线程的最佳方法?

    我正在开发一个用 Clojure 编写的 MUD 客户端 现在 我需要两个不同的线程 一种接收用户的输入并将其发送到 MUD 通过简单的套接字 另一种读取 MUD 的输出并将其显示给用户 我应该只使用 Java 线程 还是应该使用一些特定于
  • 使用 NestJS 的 TCP 服务器

    是否可以使用 NestJS 创建 TCP 服务器 我有一个仅通过 TCP 进行通信的 GPS 跟踪器 由于 NestJS 可以通过 TCP 在微服务之间进行通信 我认为也许 NestJS 可以用作低级网络应用程序 例如 java netty
  • NodeJS:TCP套接字服务器仅在第一次返回数据

    我正在尝试在 node js 中编写一个小型中继脚本 用于侦听本地套接字上传入的 TCP 连接 当它收到连接时 将流量转发给第三方 它还必须从该第三方获取任何返回的数据并将其发送回原始本地套接字 我试过类似的代码http delog wor
  • 具有非阻塞或多线程功能的 Ruby Tcp Server 类

    找不到任何可以帮助创建非阻塞 多线程服务器的 gem 或类 哪里可以找到 The Ruby 文档 http ruby doc org core classes Socket html M002091关于套接字有一些很好的例子 使用该页面中的
  • TCL类C10K事件服务器开发进展如何?

    TCL 是一种很好的简单编程语言 但似乎没有得到认可和 或尊重它deserves http antirez com articoli tclmisunderstood html 我 1995 年在大学时就学过它 但很快就忘记了 直到最近才再
  • PHP 通过 TCP/IP 发送消息

    我尝试通过 TCP IP 从 PHP 网站向 Arduino 发送消息 使用以下代码我可以从 php 网站发送消息 问题是 当第一次调用该网站时 消息不会立即发送 网站刷新几次后 消息就会到达 但逻辑上很多次 就像网站刷新量一样 已经尝试将
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由

随机推荐

  • MissionPlanner找不到全部参数表(Full Parameter List)的解决方法

    MissionPlanner 找不到全部参数表 xff08 Full Parameter List xff09 的解决方法 ArduPilot是一款强大的开源飞控软件 xff0c 在使用MissionPlanner的高级功能的时候 xff0
  • Pixhawk室内自动控制:参数设置

    Pixhawk室内自动控制 xff1a 参数设置 本文针对使用光流传感器和超声波传感器 xff08 或激光雷达 xff09 的Pixhawk用户 ArduCopter目前 xff08 3 52 xff09 已经能够使用光流传感器提供的位置信
  • Pixhawk室内自动控制:参数设置(SITL)

    Pixhawk室内自动控制 xff1a 参数设置 xff08 SITL xff09 本文针对使用光流传感器和超声波传感器 xff08 或激光雷达 xff09 进行开发 xff0c 期望实现室内自动控制的Pixhawk用户 这篇文章讲解了如何
  • DroneKit教程(一):安装DroneKit和测试工具

    DroneKit教程 xff08 一 xff09 xff1a 安装DroneKit和测试工具 DroneKit Python是一个用于控制无人机的Python库 DroneKit提供了用于控制无人机的API xff0c 其代码独立于飞控 x
  • DroneKit教程(二):控制Pixhawk示例

    DroneKit教程 xff08 二 xff09 xff1a 控制Pixhawk示例 本篇提供了一个简单的示例 xff0c 配以详细的注释说明不同语句的功能 xff0c 希望能给各位一个总体的框架和印象 该示例文件改写自DroneKit的官
  • DroneKit教程(三):连接Pixhawk飞控

    DroneKit教程 xff08 三 xff09 xff1a 连接Pixhawk飞控 DroneKit提供了非常简便的代码 xff0c 可通过多种方式与飞控连接 连接飞控 使用DroneKit中的connect函数 xff0c 可以方便地连
  • DroneKit教程(四):属性和参数的读取与设置

    DroneKit教程 xff08 四 xff09 xff1a 属性和参数的读取与设置 DroneKit内置了无人机的属性和参数 xff0c 使用简单的Python代码即可进行读取和修改 此教程的例子均使用在本地编译完成的SITL进行测试 如
  • DroneKit教程(五):使用自定义MAVLink指令

    DroneKit教程 xff08 五 xff09 xff1a 使用自定义MAVLink指令 DroneKit的实质是通过发送和接受MAVLink消息 xff0c 向飞控发送控制指令 从飞控获取各种状态信息 DroneKit的所有内置功能都是
  • DroneKit教程(六):继承和自定义Vehicle类

    DroneKit教程 xff08 六 xff09 xff1a 继承和自定义Vehicle类 DroneKit的Vehicle类内置了许多基于MAVLink消息的属性数据 xff0c 但同时也有许多属性数据没有被支持 有时 xff0c 为了支
  • DroneKit教程(七):遥控信道覆盖

    DroneKit教程 xff08 七 xff09 xff1a 遥控信道覆盖 MAVLink支持一项有用却又非常危险的功能 xff1a 遥控信道覆盖 xff08 Channel Override xff09 遥控信道覆盖可以将任一至全部通道的
  • STM32Cube的PWM控制基础篇(三)定时器的PWM设置详解

    STM32Cube的PWM控制基础篇 xff08 一 xff09 一路PWM设置 STM32Cube的PWM控制基础篇 xff08 二 xff09 多路占空比不同的PWM 今天是挤牙膏的第三天 xff0c 感觉如果每天都放很多干货的话可能会
  • 教程:使用DroneKit在室内控制无人机

    教程 xff1a 使用DroneKit在室内控制无人机 DroneKit Python是一个用于控制无人机的Python库 DroneKit提供了用于控制无人机的API xff0c 其代码独立于飞控 xff0c 单独运行在机载电脑 xff0
  • OpenCV 3.3+VS2017+Win10环境配置指南

    OpenCV 3 3 43 VS2017 43 Win10环境配置指南 最近开始接触OpenCV xff0c 没想到安装和环境配置又踩了不少坑 一开始本着对官网的信任 xff0c 按着官方tutorial里的步骤走 xff0c 但是怎么样都
  • 朴素贝叶斯算法原理

    朴素贝叶斯算法原理 朴素贝叶斯分类器 xff08 Naive Bayes Classifier xff09 的优点是运算时间短 数学原理清晰 xff0c 我在MNIST和CIFAR 10数据集上测试 xff0c 错误率分别为15 74 和5
  • ubuntu18.04更新源方法

    前言 Ubuntu自带默认的软件源指向的服务器是部署在国外的 xff0c 在国内进行软件下载更新时会非常慢 xff0c 可以通过更改源地址指向国内的镜像数据源 xff0c 比如阿里 网易 清华 中科等等 PS xff1a 因为今天群里有人在
  • 数据结构算法学习总结-慕课网(五)冒泡排序,与选择,插入排序的异同(从小到大)

    数据结构算法学习总结 慕课网 xff08 五 xff09 冒泡排序 xff0c 与选择 xff0c 插入排序的异同 xff08 从小到大 xff09 1 回顾 上一节讲到了插入排序的优化 xff0c 了解了插入排序的优势 xff0c 这一节
  • 拒绝采样(reject sampling)原理详解

    文章转自 xff1a https blog csdn net jteng article details 54344766 版权归原作者 xff01 蒙特 卡罗方法 Monte Carlo method 也称统计模拟方法 xff0c 通过重
  • Ubuntu sudo 命令行直接输入密码

    在 sh 文件中输入命令时碰上输入密码的最让人头疼 xff0c 就要想一个办法密码自动填充 xff1b 例子 xff1a echo 123 sudo S su 假之密码为123 原命令为 sudo su
  • ESP32+Blufi+Tcp+UART

    ESP32 43 Blufi 43 TCP 43 UART 在上上一篇文章的基础上添加了蓝牙配网的功能 xff0c 第一次连接WiFi时 xff0c 通过手机微信小程序蓝牙配网 xff0c 第二次通过记录的WiFi内容就能够直接连接 参考的
  • ESP32+UART+TCP_Client+OTA

    在上一篇博客的基础上添加了OTA空中升级功能 实现的功能是一个WiFi DTU模块 xff0c ESP32板子通过串口与下位机连接 xff0c 我目前使用的下位机为51 xff0c ESP32第一次启动时 xff0c 通过微信小程序连接wi