问题标签 [esp32]

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 回答
524 浏览

bluetooth-lowenergy - 在 ESP32 上模拟 BLE 配对模式

我一直在研究包含 ESP32 的设备。我设置了一个类似于 Secure Gatt Server Example 的安全 GATT 服务器,并使用基于中间人 (MITM) 的加密的自定义服务。当前的配对设置是 Just Works,当客户端连接到设备时,系统会提示他们配对并因此与密钥交换绑定(尽管当我对这个问题进行更多调查时,看起来 Justworks 禁用了 MITM)。

除了设备上的一个按钮,我们没有任何真正的 IO,但我想将配对限制在按下 Pairing 按钮后的某个时间窗口,或者让设备进入“配对模式”(我有在可能具有更易于使用的经典配对模式的另一台设备上工作)。我知道这不是 IDF API 的明确部分,但我正在寻找一些关于如何处理类似“配对模式”的指导。

将 IO 功能设置ESP_IO_CAP_IO为使用“是/否”按钮工作吗?我在文档中没有看到有关如何配置它的任何相关内容。事实上,枚举并没有出现在 IDF 源代码的其他地方,也没有提到的相关文件stack/btm_api.h帮助。

有没有办法在命令上禁用/启用配对?这会是对广告的某种改变吗?

0 投票
1 回答
238 浏览

c++ - 将 Arduino 草图重构为 C++ 类

我正在尝试将此 Arduino 草图转换为 C++ 类。头文件,"WifiManager.h"定义为

并在 a 中实现WifiManager.cpp,其完整代码实现可在此处访问。简而言之,该.cpp文件实现了.h的 API,还处理了 WIFI 回调函数。至于测试,我假设如果我按如下方式运行程序,回调函数将被自动调用:

但是,这不起作用。似乎所有与 WIFI 相关的回调根本不运行。但是,作为 C++ 初学者,我不知道如何解决这个问题。因此,我想知道解决此问题的最佳方法是什么。

0 投票
1 回答
834 浏览

c - 每次收到新消息之前,如何刷新/清空 UART(RX)?

0 投票
1 回答
444 浏览

node.js - HTTPClient收到错误拒绝节点JS服务器(奇怪的行为)

问题:在运行 ESP32 脚本的第一分钟,post请求会产生HTTPC_ERROR_CONNECTION_REFUSED,因此没有数据到达服务器。在第一分钟之后,一些请求丢失了,但大多数请求每 2 秒到达服务器一次(应该如此)。

向服务器发送数据的函数:

节点 JS 服务器:

例如,如果我使用测试网站接收不是我的服务器的 POST 请求,则不会requestcatcher.com丢失任何请求。反之亦然,如果我使用网站发送 POST 请求,hurl.eu那么我的服务器就没有任何问题。

这是 ESP32 发出的 post 请求:

0 投票
2 回答
177 浏览

python - 加密 IV - C 和 Python 等效

我在为我的消息加密初始化等效“初始化向量”时遇到问题。我有一个 ESP32(微控制器)通过 JSON 向 Django 服务器发送数据。在 ESP32 上我使用 Arduino IDE,所以 ESP32 上的代码是用 C/C++ 编写的。Django 当然是使用 Python。

如果我在双方都像这样初始化 IV,我的加密工作到目前为止:

ESP32:

姜戈:

ESP32 的库有一个加密函数,它需要一个无符号字符数组。我必须注意数组不是以空值结尾的(最后是'\0'),否则我会得到不同的结果。这就是背景信息。你需要。现在到我的具体问题:

我想在我的加密中使用计数器模式。我想将一个整数计数器复制到两侧 IV 的最后 4 个字节:

在 ESP32 上,我这样做:

在 Django 上,我这样做:

如果我打印出变量“iv”,我会在 Django 上得到这个:

解密失败。我没有从服务器上的 ESP32 收到原始消息。

如果我不像上面那样初始化 IV,我总是会得到不同的结果。

我正在使用 PyCryptoDome 对 Django 进行加密/解密。我将 IV 传递给这行代码: obj = AES.new(enckey, AES.MODE_CFB, iv, segment_size = 128) IV 必须以类似 b'0000000000000000' 的格式传递。所以我在服务器端没有任何其他选择。

如果我在 ESP32 上这样做:

在 Django 上,我得到不同的结果。我不知道该怎么做。

有任何想法吗?

0 投票
1 回答
3290 浏览

sockets - ESP32 组播 UDP 高损耗(接收)

我正在开发基于 ESP32 模块的设备,该模块仅打开一个 UDP 套接字以在一个端口(确切地说是 7890)上接收广播数据包。问题是数据丢失率很高 - 大约 90%。我的测试设置是:

  • ESP32 - 通过打开的 UDP 接收任务连接到 WiFi 网络(代码如下)
  • PC 通过 LAN 连接到同一网络,UDP 终端设置为广播到远程:192.168.10.255:7890
  • 手机连接WiFi,UDP终端设为广播到远程:192.168.10.255:7890

当我从 PC 或手机发送内容时,手机和 PC 之间没有数据丢失,但 ESP32 接收到我从两个发送者发送的大约 10% 的数据。如果我在 PC 或手机上从多播更改为单播以将数据发送到 ESP32,它可以正常工作。

我知道 UDP 不保证传输,但是 10% 的效率对我来说似乎是超低的,尤其是当网络繁忙时似乎没有问题,因为 PC 和移动设备一直在接收数据。

您对代码或可以在菜单配置中更改的某些设置有什么建议吗?目前我的应用程序只有两个任务:

  • WiFi 连接后等待事件的任务
  • UDP任务,代码如下

更新 04.07.2018 (13:15)

当我不初始化蓝牙时问题消失。抱歉,我之前没有提到 BT 正在初始化,但我一直在从我的正常程序中初始化函数,该程序有更多任务(包括 BT),我自己完全忘记了这一点。

无论如何-您认为共享资源存在一些问题还是一些物理干扰?我使用的是面包板上的 ESP32-DevKitC,所以没有额外的屏蔽。


0 投票
2 回答
1942 浏览

python - ESP32 MicroPython SSL WebSocket

我成功地将我的 ESP32 连接到 WebSocket 服务器。现在我正试图让它与 SSL 一起工作。我尝试了这个简单的代码来连接到 www.google.com。我用它来生成证书和密钥。

然后使用 adafruit-ampy 复制密钥和证书文件。不要忘记更改您的串行端口。

这是 ESP32 上的代码

我收到此错误:

有没有人在 ESP32 上成功使用过 ssl socket_wrap?

编辑(2018 年 12 月 23 日):

我终于设法让一些东西正常工作,通过 HTTPS 从谷歌获取 HTML,是的。检查上面的代码。希望这可以帮助。我认为 ESP32 的 MicropPython 端口已经变得越来越好,这就是它现在工作的原因。

下一步是让 SSL WebSocket 工作......

编辑(09.06.2019):

它现在正在工作。这个库非常适合我打算做的事情https://github.com/danni/uwebsockets

0 投票
1 回答
2217 浏览

unit-testing - 使用 ESP-IDF 进行单元测试

目前,我正在使用 ESP-IDF 并尝试让单元测试工作。

我已经找到了https://esp-idf.readthedocs.io/en/latest/api-guides/unit-tests.html,但有一点我不明白。

但首先,让我解释一下我的设置:

  • 我在 Windows 下工作并且有一个 MSYS32 shell。
  • IDF_PATH指向 ~/esp-idf,我的 esp-idf 套件所在的位置。
  • 但是,我的项目位于 ~/project_dir/subdir。他们按照他们应该的方式工作。

如果我按照单元测试指南中的说明,我可以构建系统内置的测试用例。但它没有找到我的应用程序的单元测试。这很清楚,因为他们坐在完全不同的地方。

我现在该怎么办?最好不要过多地篡改默认的单元测试应用程序?

我可以看到几种方法,但我不知道添加自己的组件的预期方法是什么。他们的测试用例进入上述应用程序:

  • 我应该将项目路径添加到单元测试应用程序的某处吗?
  • 我应该复制单元测试应用程序并将其添加到我的项目中吗?
  • 我应该在我的项目中创建一个文件夹并添加一个指向单元测试应用程序的链接吗?
0 投票
1 回答
19811 浏览

fatal-error - 致命错误:ESP8266WiFi.h:没有这样的文件或目录

我试图用我的 ESP32 做一个“家庭重量”并使用 IBMCloud 显示值,但是我遇到了 Arduino IDE 和我的代码的一些问题。

我收到此错误:

Arduino:1.8.5(Windows 10),Tarjeta:“ESP32 开发模块,QIO,80MHz,4MB(32Mb),921600,无”

C:\Users\XX\Documents\Arduino\IBM_Watson_Connect\IBM_Watson_Connect.ino:8:25:致命错误:ESP8266WiFi.h:没有这样的文件或目录

编译终止。

退出状态 1 ESP32 开发模块卡的编译错误。

我正在使用 ESP32 开发板。我的代码是这样的:

有些地方提到缺少库,未正确选择板,未更新库..我都检查了.. Arduino已更新,库已安装和更新,选择了正确的板(我实际上有尝试了所有其他与 Esp32 相关的板,结果相同)

0 投票
1 回答
366 浏览

arduino - 在 FreeRTOS 中使用信号量

我正在尝试将arduino 核心的信号量用于 ESP32。我的代码如下:

不幸的是,在编译期间(确切地说是在链接阶段),我收到以下错误消息:

我查看了freeRTOS文档,它表明这两个函数位于queue.h中;因此,应该可用。另外,我freeRTOS configuration通过设置configUSE_MUTEXES and configUSE_COUNTING_SEMAPHORES标志设置了必要的

有什么建议为什么不能编译?