我尝试刷新 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) 我正在使用带有 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) 自上次更新 Mac OS Monterey 12.3 以来,我在编译 Arduino 草图时收到以下错误消息:
exec: "python": executable file not found in $PATH
Run Code Online (Sandbox Code Playgroud)
不幸的是,我还没有找到解决这个问题的方法。
我将非常感谢您的想法和建议。
由 Arduino IDE 执行的 ESP32 flash 命令似乎刷新了两个引导加载程序文件:boot_app0.binat offset0xe000和bootloader_dio_80m.binat offset0x1000。我想知道这两个引导加载程序文件实际上是做什么的,以及为什么有两个。下面我提供一些更多信息。
我所在的团队正在为微控制器开发一种新的免费 IDE:Embeetle IDE。我们计划在不久的将来支持 ESP32 微控制器系列。因此,我现在正在研究 ESP32 构建系统 - 两者ESP-IDF ESP32 项目的工具和 Arduino IDE 方法。
构建.elf文件后,Arduino IDE 会启动一个命令将其转换为二进制文件:
python esptool.py --chip esp32 elf2image
--flash_mode dio
--flash_freq 80m
--flash_size 4MB
-o /tmp/arduino_build_852524/WiFiScan.ino.bin
/tmp/arduino_build_852524/WiFiScan.ino.elf
Run Code Online (Sandbox Code Playgroud)
最后,该WiFiScan.ino.bin文件与两个引导加载程序文件和分区表一起闪存到主板上:
python esptool.py --chip esp32
--port /dev/ttyUSB0
--baud 921600
--before default_reset
--after hard_reset write_flash
-z
--flash_mode dio
--flash_freq 80m
--flash_size detect …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 PlatformIO 和 NimBLE-Arduino 库在 ESP32 上创建循环电源服务。
当客户端是nRF Connect Android应用程序时,连接,绑定,订阅通知和接收功率数据都可以工作,但是我的Lezyne GPS Mini Cyclic Computer无法完成配对过程。我正在寻找一种方法来解密日志并了解通信中的问题。
我的代码,减少到最低限度:
#include <Arduino.h>
#include <NimBLEDevice.h>
#define CYCLING_POWER_SERVICE_UUID ((uint16_t) 0x1818)
#define CYCLING_POWER_FEATURE_CHAR_UUID ((uint16_t) 0x2A65)
#define SENSOR_LOCATION_CHAR_UUID ((uint16_t) 0x2A5D)
#define SENSOR_LOCATION_RIGHT_CRANK ((uint8_t) 6)
#define CYCLING_POWER_MEASUREMENT_CHAR_UUID ((uint16_t) 0x2A63)
class BLE : public BLEServerCallbacks {
public:
BLEServer *server;
BLECharacteristic *measurementCharacteristic;
bool connected = false;
bool oldConnected = false;
short power = 0;
unsigned short revolutions = 0;
unsigned short timestamp = 0;
const unsigned short flags = 0x20; // TODO …Run Code Online (Sandbox Code Playgroud) 当我将代码上传到我的 AI thinker esp 32 cam 时,我不断收到错误消息。我使用 microusb 连接它,但总是出现此错误:
发生致命错误:无法连接到 ESP32:未收到串行数据。有关故障排除步骤,请访问:https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html 上传失败:上传错误:退出状态 2
我想流式传输到 Anrdoid 应用程序内的 WebView。
我的代码是:
WebView cam = (WebView) findViewById(R.id.Cam);
cam.getSettings().setLoadWithOverviewMode(true);
cam.getSettings().setUseWideViewPort(true);
cam.getSettings().setBuiltInZoomControls(true);
cam.getSettings().setPluginState(WebSettings.PluginState.ON);
cam.getSettings().setPluginState(WebSettings.PluginState.ON);
cam.loadUrl("http://192.168.0.10");
Run Code Online (Sandbox Code Playgroud)
它可以在模拟器中运行,但如果我在智能手机上安装该应用程序,它就无法运行。我收到一个错误
Header fields are too long for the server to interpret
Run Code Online (Sandbox Code Playgroud)
如何摆脱这个错误?
我在 Arduino 程序中有一个包含文件。MCU 是 ESP32。
包含的文件是:
const char bitmap_1587[] PROGMEM = {248,254,254,230,241,231,247,199};
const char bitmap_1604[] PROGMEM = {249,254,254,254,0,191};
const char bitmap_1575[] PROGMEM = {7};
const char* char_addr[] = {&bitmap_1587,&bitmap_1604,&bitmap_1575};
Run Code Online (Sandbox Code Playgroud)
当我编译代码时,返回此错误:
无法在初始化时将 'const char (*)[6] 转换为 'char*'
无法在初始化时将“const char (*)[6]”转换为“char*”
无法在初始化时将“const char (*)[1]”转换为“char*”
请帮我。我如何将字符数组地址存储在另一个数组中。
这是我的代码
#include <WiFi.h>
const char* ssid = "wifiname";
const char* password = "12345678";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); // SETS TO STATION MODE!
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.print("IP is ");
Serial.println(WiFi.localIP());
}
void loop() {
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 WiFiscan 例程找到 iPhone 的个人热点,但无法连接到它。
我购买了ESP32 -WROOM-32,我意识到与Arduino Nano、Arduino Uno或Arduino Mega 2560相比,有些东西不一样。
我意识到不同的事情之一是如何从控制器存储和读取数据。我想将一些数据保存到 EEPROM 中,即使设备关闭也能保留该值。
我在 Arduino 板的小型项目中一直使用以下代码。该代码包括创建一个OLED菜单,我可以在其中导航真实页面并更改整数值,这些值存储在 EEPROM 中。
我上传到 ESP32 的相同代码没有任何问题,并且菜单工作正常。我可以更改整数值。问题是关闭/打开电路板后,这些值不会保留。
我已经在网上查看了一些关于EEPROM和ESP32的教程并尝试实现它,但不幸的是没有结果。
#include <EEPROM.h>
#include <OneButton.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define DISP_RESET -1
const char*Vartext[] {"Data_0", "Data_1", "Data_2"};
const byte maxAnz = sizeof(Vartext) / sizeof(Vartext[0]);
const int mindata[maxAnz] {0, 0, 0};
const int maxdata[maxAnz] {10000, 200, 300};
uint32_t longstart;
byte Varindex;
byte Page = 0; …Run Code Online (Sandbox Code Playgroud) arduino-esp32 ×10
esp32 ×9
arduino ×5
c++ ×2
arduino-ide ×1
c ×1
firmware ×1
nodemcu ×1
python ×1