我正在ESP32-DevKitC板上开发一个C++应用程序,我可以在其中感应加速度计的加速度。应用程序的目标是存储加速度计数据,直到存储空间已满,然后通过 WiFi 发送所有数据并重新开始。在可能的情况下,micro 也会进入深度睡眠模式。
我目前正在使用 ESP32 NVS 库,它有很好的文档记录并且非常易于使用。该负面的,这是该库使用的闪存,因此很多著作,最终会降低驱动器。
我知道 Espressif 还提供了一些其他存储库(FAT、SPIFFS 等),但据我所知(如果我错了,请纠正我),它们都使用闪存驱动器。
有没有其他可能做我想做的事但不使用闪存?
声明
我正在开发一个 esp 项目,并使用esp32s2工具链编译了我的代码,并创建了一个可以在真实设备上运行的二进制文件。但我没有真正的设备来测试我的二进制文件。有没有模拟器可以模拟ESP32-S2芯片或者ESP32芯片?
我让 ESP32cam 工作了几天,然后在启动时开始收到该消息。重新加载程序,仍然没有相机。失望
错误:
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6364
entry 0x400806b8
Brownout detector was triggered
Run Code Online (Sandbox Code Playgroud)
相机标签: HW-297 OV2640
程序中:
#define CAMERA_MODEL_AI_THINKER
Run Code Online (Sandbox Code Playgroud)
板卡选择:ESP32 Wrover模块
我尝试刷新 ESP32 但没有成功,我尝试使用esptool.py和Arduino IDE。我尝试按启动按钮并重置,但没有成功。这是错误:
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个小型异步 WebServer。我简单描述一下这个场景:
我的 ESP32 也是一个路由器。因此,如果我用手机连接 ESP32 正在传播的 WiFi,并使用浏览器调用 IP 地址和特殊路径,就会发送一个网站。这里显示一个按钮。到目前为止,它运行得很好。现在,如果我单击该按钮,则会将 HTTPS Web 请求(方法:GET)发送到特殊机器。本机应答并返回 JSON。这可能会持续几秒钟。从 JSON 字符串中提取值后,应显示该值。
为了实现这一目标,我使用以下库:
我知道(通过另一个草图)最后三个可以正常工作。
不幸的是,当我单击该按钮时,以下输出出现在我的串行监视器上:
开始连接到服务器...
[HTTPS] 开始... 路径: https: //192.168.4.101/api/unlock/generate_pin
[HTTPS] GET...
E (137906) task_wdt:任务看门狗已触发。以下任务未及时重置看门狗:
E (137906) task_wdt: - async_tcp (CPU 0/1)
E (137906) task_wdt: 当前正在运行的任务:
E (137906) task_wdt: CPU 0: IDLE0
E (137906) task_wdt :CPU 1:loopTask
E(137906)task_wdt:正在中止。
abort() 在核心 0 上的 PC 0x400e08af 回溯上被调用
: 0x4008cc18:0x3ffbe170 0x4008ce49:0x3ffbe190 0x400e08af:0x3ffbe1b0 0x40084f21:0x3ffbe1d0 0x4016581b:0x3ffbc120 0x400e1c66:0x3ffbc140 0x4008ab21:0x3ffbc160 0x4008932d:0x3ffbc180 正在
重新启动...
ets Jun 8 2016 …
目前,我正在使用 ESP-IDF 并尝试进行单元测试。
我已经找到了https://esp-idf.readthedocs.io/en/latest/api-guides/unit-tests.html,但有一点我不明白。
但首先,让我解释一下我的设置:
IDF_PATH指向 ~/esp-idf,我的 esp-idf 套件所在的位置。如果我遵循单元测试指南中的说明,我可以构建系统中内置的测试用例。但它没有找到我的应用程序的单元测试。这很清楚,因为他们完全坐在别的地方。
我现在该怎么办?最好不要过多篡改默认的单元测试应用程序?
我可以看到几种方法,但我不知道添加自己的组件的预期方法是什么。他们的测试用例进入上述应用程序:
我在 ESP32 上使用多线程。我创建了两个任务并将它们固定到核心 1。使用其中一个,我收到以下错误:
E (20426) FreeRTOS: FreeRTOS Task "MeasurementTask" should not return, Aborting now!
abort() was called at PC 0x4008b8f3 on core 1
Backtrace: 0x4008f34c:0x3ffd0a40 0x4008f57d:0x3ffd0a60 0x4008b8f3:0x3ffd0a80
Rebooting...
Run Code Online (Sandbox Code Playgroud)
但是,return我的“MeasurementTask”中没有任何声明(见下面的代码)。这里有什么问题?
tracker.cpp:
E (20426) FreeRTOS: FreeRTOS Task "MeasurementTask" should not return, Aborting now!
abort() was called at PC 0x4008b8f3 on core 1
Backtrace: 0x4008f34c:0x3ffd0a40 0x4008f57d:0x3ffd0a60 0x4008b8f3:0x3ffd0a80
Rebooting...
Run Code Online (Sandbox Code Playgroud)
草图:
#include "tracker.h"
void threadedLoop(void *pvParameters) {
Serial.println("Loop task pinned");
for(;;) {
checkAPTrigger();
mqttLoop();
}
}
void setupTracker() {
Serial.print("Setup start: …Run Code Online (Sandbox Code Playgroud) 我正在使用带有 ESP32 的 Arduino IDE。硬件很简单:ESP32开发板+ LED和簧片开关。我现在想检测簧片开关输入(1Hz 到 40Hz 频率)并闪烁 LED。
代码很简单:
const int button = 27;
const int led = 25;
unsigned long now = millis();
unsigned long lastTrigger = 0;
boolean startTimer = false;
void IRAM_ATTR buttonInput() {
Serial.println("IN");
digitalWrite(led, HIGH);
startTimer = true;
lastTrigger = millis();
}
void setup() {
Serial.begin(115200);
pinMode(button, INPUT);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
attachInterrupt(digitalPinToInterrupt(button), buttonInput, RISING);
}
void loop() {
now = millis();
if(startTimer && (now - lastTrigger > 25)) { // switch of …Run Code Online (Sandbox Code Playgroud) 我已经尝试刷新 esp-wroom-32 很长时间了,但我似乎无法得到它。idf.py 抛出此错误:
Serial port /dev/ttyUSB0
A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist
CMake Error at run_serial_tool.cmake:55 (message):
/home/matvey/.espressif/python_env/idf5.1_py3.9_env/bin/python;;/home/matvey/esp/esp-idf/components/esptool_py/esptool/esptool.py;--chip;esp32
failed
FAILED: CMakeFiles/flash /home/matvey/esp/esp-idf/examples/get-started/hello_world/build/CMakeFiles/flash
cd /home/matvey/esp/esp-idf/components/esptool_py && /usr/bin/cmake -D IDF_PATH=/home/matvey/esp/esp-idf -D "SERIAL_TOOL=/home/matvey/.espressif/python_env /idf5.1_py3.9_env/bin/python;;/home/matvey/esp/esp-idf/components/esptool_py/esptool/esptool.py;--chip;esp32" -D "SERIAL_TOOL_ARGS=--before=default_reset; --after=hard_reset;write_flash;@flash_args" -D WORKING_DIRECTORY=/home/matvey/esp/esp-idf/examples/get-started/hello_world/build -P /home/matvey/esp/esp-idf/components/ esptool_py/run_serial_tool.cmake
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the /home/matvey/esp/esp-idf/examples/get-started/hello_world/build/log/idf_py_stderr_output_27303 and /home/matvey/esp/esp-idf/ examples/get-started/hello_world/build/log/idf_py_stdout_output_27303`
Run Code Online (Sandbox Code Playgroud)
我不知道可能是什么问题,我更改了 udev 设置,但也许它对我不起作用。
我正在尝试开发一个应该使用HTTP/REST API提供某些功能的物联网设备.我决定使用ESP32芯片(在"ESP32开发板"上).
现在我想实现一个易于使用的WLAN配置.我不想像许多其他样本那样在我的源代码中存储凭据; 所以我决定使用WPS.
我尝试使用以下源代码实现基本Web服务器:https: //randomnerdtutorials.com/esp32-web-server-arduino-ide/ - 然后我添加了EPS32扩展附带的Wifi/WPS样本的WPS功能对于Arduino IDE.
现在WPS已经工作,即当开发板上电时,它处于WPS连接模式并等待路由器接受WPS连接.它成功获取SSID并连接到WLAN.
但是当我关闭ESP32并重新上电时,我必须再次进行WPS重新连接程序.我期望重新连接,存储凭据,并且能够在以后随时打开ESP32设备时再次连接到同一WLAN.我想我必须存储一些凭据并使用它们重新建立连接 - 但我在哪里获取凭据,以及如何重新连接?
我在网上搜索"ESP32 WLAN WPS重新连接"和类似的术语,但确实找到了非wps(SSID +密码)连接的重新连接策略.我还检查了WiFi库文档和esp_wps库文档,但没有找到合适的东西.
这是WLAN WPS连接源:
#include <WiFi.h>
#include "esp_wps.h"
#define ESP_WPS_MODE WPS_TYPE_PBC
esp_wps_config_t config = WPS_CONFIG_INIT_DEFAULT(ESP_WPS_MODE);
String wpspin2string(uint8_t a[]){
//...
}
void WiFiEvent(WiFiEvent_t event, system_event_info_t info){
switch(event){
case SYSTEM_EVENT_STA_START:
Serial.println("Station Mode Started");
break;
case SYSTEM_EVENT_STA_GOT_IP:
Serial.println("Connected to :" + String(WiFi.SSID()));
Serial.print("Got IP: ");
Serial.println(WiFi.localIP());
break;
case SYSTEM_EVENT_STA_DISCONNECTED:
Serial.println("Disconnected from station, attempting reconnection");
WiFi.reconnect();
break;
case SYSTEM_EVENT_STA_WPS_ER_SUCCESS:
Serial.println("WPS Successfull, stopping WPS and connecting to: " …Run Code Online (Sandbox Code Playgroud) esp32 ×10
arduino ×3
arduino-c++ ×1
asynchronous ×1
c++ ×1
camera ×1
embedded ×1
flash-memory ×1
freertos ×1
memory ×1
nodemcu ×1
storage ×1
task ×1
unit-testing ×1
watchdog ×1
webserver ×1
wlan ×1