hqhoooo.bsky.social
@hqhoooo.bsky.social
#include
#include
#include

void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_Mesh_Test");
}

void loop() {
delay(2000);
}

然后构建上传:

cd ~/myenv
pio run -t upload

如果上传阶段还没有连接 ESP32 开发板,可以先运行:

pio run

来测试是否能成功编译。
May 23, 2025 at 11:05 AM
这样 PlatformIO 就会自动扫描 lib/ESP32_BLE_Arduino/ 这个本地库。



第 2 步:写入代码并上传

编辑你的主代码文件:

nano ~/myenv/src/main.cpp

输入测试用 BLE 初始化代码:
May 23, 2025 at 11:05 AM
步骤 4:构建并上传

cd ~/myenv
pio run -t upload

第 1 步:确认 platformio.ini 设置

请打开 ~/myenv/platformio.ini 文件,内容应当包括:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
build_flags =
-DBOARD_HAS_PSRAM
-DCORE_DEBUG_LEVEL=4
lib_deps =
ESP32_BLE_Arduino
May 23, 2025 at 11:05 AM
步骤 3:准备 main.cpp

在 ~/myenv/src/main.cpp 中粘贴示例代码,比如一个简单的 BLE 广播:

#include
#include
#include

void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_Mesh_Test");
}

void loop() {
delay(2000);
}
May 23, 2025 at 11:05 AM
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
ESP32_BLE_Arduino
build_flags =
-DBOARD_HAS_PSRAM
-DCORE_DEBUG_LEVEL=4
May 23, 2025 at 11:05 AM
mv ~/myenv/lib/arduino-esp32-master/libraries/BLE ~/myenv/lib/ESP32_BLE_Arduino

步骤 2:确认 platformio.ini

编辑你的 platformio.ini,像这样配置:
May 23, 2025 at 11:05 AM
deb [trusted=yes] archive.debian.org/debian/ jessie main contrib non-free
deb [trusted=yes] archive.debian.org/debian-secur... jessie/updates main contrib non-free

[trusted=yes] 会绕过 GPG 认证错误。



尝试完上述方法后,请再次执行:

sudo apt-get update
Index of /debian
archive.debian.org
May 23, 2025 at 10:59 AM
sudo apt-get update -o Acquire::Check-Valid-Until=false --allow-unauthenticated

然后尝试安装所需软件包:

sudo apt-get install -y build-essential git python3-pip

方法 4:更新 sources.list

你也可以尝试将 /etc/apt/sources.list 修改为:
May 23, 2025 at 10:59 AM
# 下载密钥文件
wget ftp-master.debian.org/keys/archive...
wget ftp-master.debian.org/keys/archive...

# 添加密钥
sudo apt-key add archive-key-8.asc
sudo apt-key add archive-key-8-security.asc

方法 3:绕过 GPG 认证

如果只是为了安装 ESP32 开发环境,可以临时绕过 GPG 认证:
ftp-master.debian.org
May 23, 2025 at 10:59 AM
方法 1:手动下载 GPG 密钥并添加

尝试直接下载密钥文件并添加:

sudo apt-get install wget -y # 确保有 wget
wget archive.debian.org/debian-archi...
sudo dpkg -i debian-archive-keyring_2017.7_all.deb

方法 2:使用 apt-key add 直接导入

如果上面的方法无效,可以尝试下载密钥文件后手动导入:
archive.debian.org
May 23, 2025 at 10:59 AM
python3 ~/下载/esptool-master/esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash

你可以先运行:

killall screen

然后重新插上开发板,再试一次刷写
May 22, 2025 at 2:56 PM
如果你没安装 killall 命令,也可以用:

ps aux | grep ttyUSB0

然后用 kill PID(把 PID 换成进程号)来杀死它。



2. 拔掉 ESP32,再重新插上
• 拔掉 USB 线,等几秒。
• 再重新插上。
• 然后运行:

ls /dev/ttyUSB*

确认设备是否正常出现 /dev/ttyUSB0。



3. 再次运行刷写命令

等串口释放后,再执行你刚才的命令,比如:
May 22, 2025 at 2:56 PM
python3 ~/下载/esptool-master/esptool.py --chip esp32 \
--port /dev/ttyUSB0 write_flash -z \
0x1000 bootloader.bin \
0x8000 partitions.bin \
0x10000 firmware_gpio15_blink.bin

退出 screen 命令的方法

如果你是用 screen /dev/ttyUSB0 115200 打开的串口监视:

按下以下组合键退出:

Ctrl + A 然后再按 K,再按 Y(确认退出)
May 22, 2025 at 2:51 PM
解决方法

1. 退出 bootloader 模式

按一次板子上的 EN(或 RST)重启按钮,看看能否正常启动。



2. 如果重启后依旧失败

继续执行以下步骤刷入固件三件套:

python3 ~/下载/esptool-master/esptool.py --chip esp32 \
--port /dev/ttyUSB0 erase_flash

然后再运行:
May 22, 2025 at 2:51 PM
你现在看到的这个状态:

rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
waiting for download

说明 ESP32 正处于 bootloader 模式(等待下载固件),常见原因如下:



问题原因
1. 你按住了 BOOT 键或连接了 GPIO0 到 GND,让 ESP32 进入了下载模式。
2. 或者上一次刷写失败,导致 ESP32 启动时自动跳入下载模式。
May 22, 2025 at 2:51 PM
然后再重新完整刷写三件套。



四、使用的是错误的固件

确认你烧录的是我刚刚发给你的 firmware_gpio15_blink_package.zip 中的 .bin 文件。如果你使用的是旧的、不能正常工作的固件,也会出现这样的问题。



下一步建议:
1. 把 flash 擦除:erase_flash
2. 再次从 0x1000 开始完整刷写 bootloader、partitions 和 firmware
3. 然后连接 LED 到 GPIO15, GND,观察是否开始闪烁。
May 22, 2025 at 2:51 PM
并确认 3 个 .bin 文件 都来自同一个压缩包解压后路径。



二、烧录顺序错误或跳过某一项

请确认你没有遗漏 bootloader 或 partitions。如果你只刷了 firmware_gpio15_blink.bin 而没有一起刷另外两个,也会出现这种启动错误。



三、之前的错误固件未清除

你可以尝试先擦除 flash:

python3 ~/下载/esptool-master/esptool.py --chip esp32 \
--port /dev/ttyUSB0 erase_flash
May 22, 2025 at 2:51 PM
一、固件未完整烧录(或地址错误)

你可以再次刷写,确保 bootloader、分区表 和 应用固件 的地址正确:

python3 ~/下载/esptool-master/esptool.py --chip esp32 \
--port /dev/ttyUSB0 write_flash -z \
0x1000 bootloader.bin \
0x8000 partitions.bin \
0x10000 firmware_gpio15_blink.bin
May 22, 2025 at 2:51 PM
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200

重新构建并烧录方法

cd ~/下载/你的项目目录
platformio run
platformio run --target upload --upload-port /dev/ttyUSB0

刷进去不行

你现在看到这个错误信息:

flash read err, 1000
ets_main.c 371
说明 ESP32 正在尝试从 flash 启动固件,但读取失败。这有以下原因:
May 22, 2025 at 2:51 PM
#include

void setup() {
pinMode(15, OUTPUT);
}

void loop() {
digitalWrite(15, HIGH);
delay(500);
digitalWrite(15, LOW);
delay(500);
}

在 PlatformIO 中正确构建该代码的方法
1. 确保你的文件结构如下:

你的项目目录/
├── platformio.ini
└── src/
└── main.cpp

2. platformio.ini 内容如下:
May 22, 2025 at 2:51 PM
根据你最新截图,ESP32 的固件确实刷写成功了,bootloader.bin、partitions.bin 和 firmware.bin 都成功烧录到了指定地址,而且:
• 没有报错
• 数据校验通过
• 重启正常

确认你的 main.cpp 是否正确

请参考这个适配 GPIO15(高电平点亮,500ms 闪烁)的示例代码:
May 22, 2025 at 2:51 PM
• 可以试试换一个常规引脚比如 GPIO2 或 GPIO4 先确认程序逻辑是否正常。

3. 你也可以测试一下 PlatformIO 自动烧录功能是否成功:

在 PlatformIO 项目目录下运行:

platformio run --target upload --upload-port /dev/ttyUSB0

然后用 screen 查看串口输出:

screen /dev/ttyUSB0 115200
May 22, 2025 at 2:51 PM