问题标签 [esp-idf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
175 浏览

websocket - 使用 websocket 的 ngrok 不起作用,找不到 Sec-WebSocket-Accept

我有一个位于.ngrok.io 后面的网络服务器,当我通过 ws:// .ngrok.io/ws/ 和 websocket.org连接到它时它可以工作

我还有一个可以连接到我的网络服务器或 echo.websocket.org 服务器的设备。

为什么当我将设备连接到 ws://****.ngrok.io/ws/ 时出现“TRANSPORT_WS: Sec-WebSocket-Accept not found”,但是当我使用 echo 时不会发生这种情况。 websocket.org。除了地址,我没有对我的设备(使用 ESP-IDF 的嵌入式板)进行任何更改。

我的 ngrok 中是否缺少设置?我的命令行是 ./ngrok http http://0.0.0.0:8000 在 ngrok 终端中,它看起来甚至没有检测到 GET /ws/ 连接,它仍然是空白的。

有趣的是,如果我删除设备中的 /ws/ 路径,ngrok 能够看​​到连接,但路由错误(因为我的服务器使用 /ws/ 路径作为 websocket)

0 投票
1 回答
134 浏览

c - ESP-IDF 和 FreeRTOS 数据表代码兼容性

我试图用 FreeRTOS 学习 ESP-IDF,当我使用数据表中的代码时,更改非常小(参考代码:文档页面:53 和 54。董事会正在重新启动。


现在,当我删除了vTaskStartScheduler()和无穷大的 while 循环时。程序没有重新启动,但输出不如预期。 使用的代码

得到的输出是

在此处输入图像描述



  1. 我想了解为什么数据表中显示的第一个代码不起作用。
  2. 为什么第二个代码的行为不像 Task1->Task2 - Task1->Task2 ...
0 投票
1 回答
69 浏览

c++ - 类基和派生中的属性 shared_ptr 问题

给定这样的功能:

作为基类 BLECommand 是这样的:

由于双重删除 BLEReceiver 对象(ble),我有一个错误,我不知道因为发生了这种情况。shared_ptr 类应该避免这种情况。

为了调试这个问题,我在 BLEReceiver 类的析构函数中放了一个打印,这是设备控制台上的输出:

有什么想法可以解决这个问题吗?提前致谢。

编辑:

基类的声明是这样的:

定义是这样的:

0 投票
0 回答
421 浏览

fatfs - 带有 esp-idf 的 ESP32 上的 FatFs 无法创建带有 *.json 扩展名的文件

由于加密,我想在我的 Esp32 项目上从 SPIFFS 切换到 FAT。在我的示例项目中,我有这个。

它工作正常并按预期创建两个文件,但是:

json文件失败。

到目前为止,谷歌没有给我任何关于 FatFS 文件扩展名问题的信息。有人可以帮我理解这一点吗?

0 投票
1 回答
102 浏览

embedded - ESP-IDF || 核心转储

我正在为 LED 闪烁编写一个简单的程序,该程序运行良好,GPIO_NUM_2但是当 LED 引脚编号更改为GPIO_NUM_2程序开始时表现异常,我不知道为什么会这样。请解释我犯了什么错误。

0 投票
1 回答
576 浏览

c - esp-idf:有条件地包含具有相同功能的组件

我正在做一个需要为几个 esp32 开发固件的项目。所有微控制器共享一个处理 wifi 和 mqtt 的公共代码,但是它们都有不同的行为,这是在特定组件中定义的。我的项目结构是这样的:

每个实体都定义了一些具有标准名称的函数,这些函数实现了实体本身的特定逻辑,并在共享代码(main、wifi_fsm、mqtt_fsm)中调用。

我的想法是有一个条件语句来随意包含特定行为,以便根据包含的实体,编译器将对上述函数的调用链接到特定包含库中的函数。因此,在开始时,main.c我只是添加了以下几行,目的是必须更改唯一定义的预处理器符号以针对不同的实体行为进行编译。

一方面,编译器显然工作正常,可以成功编译而没有错误或警告,这意味着包含链可以正确工作,否则会引发标准函数的重复名称错误。另一方面,它总是按字母顺序链接到第一个实体,例如执行组件 entity_1 的 init_entity() 中包含的代码。如果我重命名 entity_1 中的标准函数,那么它会链接到 entity_2。

如果上述方法错误,我可能会使用指向标准调用的指针链接到每个实体中的特定函数,但我想首先了解我的方法有什么问题。

响应 Bodo 的请求进行编辑(CMakeFile.txt 的内容)

项目:

主要的:

零件:

0 投票
1 回答
511 浏览

c - 通过 UART 在 ESP32 中校正传感器值

我正在使用 ESP-IDF SDK 开发一个小项目来通过 UART 获取传感器数据。我按照制造商提供的数据表来解析和计算不同参数的值。但是串行的输出不正确,每次我得到不同的输出都是错误的。代码:-

串行监视器上程序的输出是:- 在此处输入图像描述

制造商提供的数据表是:- https://drive.google.com/file/d/1lPATxeXXreVZkg9Ufg9BnyCrl4EsbJAj/view?usp=sharing

如果我未对齐任何数据格式来计算值,请纠正我。

0 投票
2 回答
282 浏览

mqtt - 适用于来自 AWS 的深度睡眠设备的 FreeRTOS OTA

背景

我有一个在 freeRTOS 上运行的小型电池供电系统。根据任何适当的互联网连接设备,我需要定期运行 OTA 更新。问题在于,在电池供电的情况下,该设备 99.9% 的寿命都处于深度睡眠状态。

当设备唤醒时,可以通过发布到设备的 OTA/更新主题从 AWS 发布 OTA 更新。从控制台,您只能使用 QOS = 0。但从内部,比如 lambda,我相信可以使用 QOS = 1。

问题

  1. 如何修改此方法以成功更新一次睡眠 15 分钟并唤醒可能 10 秒的设备。在唤醒期间,它会发送一条消息。是否有某种方法可以将所需的 OTA/更新隐藏在 AWS 的响应中以某种方式包含在内。我还没有弄清楚阴影是如何真正起作用的。或者你可以指定一个重试周期和时间来继续尝试吗?
  2. 从安全角度来看,这种方法是否与最新的最佳实践基本一致:签名二进制、加密闪存和安全启动等。

非常感谢。

0 投票
0 回答
433 浏览

https - 通过 esp-idf 使用 https 请求与电报机器人通信

编辑:我意识到问题出在证书上,我无法将其添加到此示例中。我切换到具有证书(不适用于电报)的 esp_http_client,并在其中使用 https 示例。我必须更改证书才能工作,我使用的是用于 Arduino 的 Universal Telegram Bot 中的证书,然后我能够通过 GET 与页面通信,我现在正在尝试使用 POST。

编辑 2:我能够发送 POST 请求。在这里,我让示例与电报机器人进行通信。

我正在尝试使用ESP-IDF 中的https_request示例与我的电报机器人通信。在漫长的道路上,我希望 ESP32 向机器人发送数据,但现在我只是想与它通信。我相信我了解该示例的工作原理,因此我进行了以下更改:

该示例的请求是:

它应该响应如下:

错误发生在第 68 行,带有 esp_tls_conn_http_new:

注意:我只是发现这个使用普通 mbedTLS 套接字执行 HTTPS GET 的示例,但不知道它是否与我使用的示例有很大不同。

注意 2:要了解我使用这些定义的示例,并且一切正常:

注 3:我看到有些人使用证书(如thisthis),但我不确定它们是什么或如何/何时使用它,我相信它适用于 https,但我不确定。

谢谢。

0 投票
1 回答
667 浏览

visual-studio-code - ESP-IDF VScode Monitor KeyError: 'IDF_PATH'

我已经在我的 Windows 10 机器上的 Visual Studio 代码上安装了 ESP-IDF 扩展。当我试图打开监视器时,它会抛出以下错误

尝试时命令idf.py -p COM16 monitor正在工作