Migrate all ESP32 envs to Arduino-ESP32 3.x (pioarduino)
The registry espressif32 platform still ships Arduino core 2.0.17, which
lacks ESP32-C6 support. Switch every ESP32 env to the pioarduino fork
(Arduino-ESP32 3.x) via a shared ${common.platform_esp32} variable and
consolidate shared settings into [env].
Rewrite the PWM code for the 3.x LEDC API:
- ledcSetup + ledcAttachPin -> ledcAttach(pin, freq, res)
- ledcDetachPin -> ledcDetach
- ledcWrite now addresses PWM by pin instead of channel index
Adds the esp32-c6-devkitc-1 env; all four ESP32 envs build clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+27
-21
@@ -8,37 +8,43 @@
|
|||||||
; Please visit documentation for the other options and examples
|
; Please visit documentation for the other options and examples
|
||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
|
[common]
|
||||||
|
; All ESP32 targets use the pioarduino fork, which ships Arduino-ESP32 3.x
|
||||||
|
; (the registry espressif32 platform is still on 2.0.17 and lacks C6 support).
|
||||||
|
platform_esp32 = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.39/platform-espressif32.zip
|
||||||
|
|
||||||
[env]
|
[env]
|
||||||
|
framework = arduino
|
||||||
|
monitor_speed = 115200
|
||||||
|
lib_deps =
|
||||||
|
tzapu/WiFiManager@^2.0.17
|
||||||
|
bblanchon/ArduinoJson@^7.4.3
|
||||||
|
knolleary/PubSubClient@^2.8
|
||||||
|
|
||||||
[env:esp32-s3-devkitc-1]
|
[env:esp32-s3-devkitc-1]
|
||||||
platform = espressif32
|
platform = ${common.platform_esp32}
|
||||||
board = esp32-s3-devkitc-1
|
board = esp32-s3-devkitc-1
|
||||||
framework = arduino
|
|
||||||
monitor_speed = 115200
|
|
||||||
board_build.filesystem = littlefs
|
board_build.filesystem = littlefs
|
||||||
lib_deps =
|
|
||||||
tzapu/WiFiManager@^2.0.17
|
|
||||||
bblanchon/ArduinoJson@^7.0.0
|
|
||||||
knolleary/PubSubClient@^2.8
|
|
||||||
|
|
||||||
[env:esp32dev]
|
[env:esp32dev]
|
||||||
|
platform = ${common.platform_esp32}
|
||||||
board = esp32dev
|
board = esp32dev
|
||||||
framework = arduino
|
|
||||||
platform = espressif32
|
|
||||||
monitor_speed = 115200
|
|
||||||
board_build.filesystem = littlefs
|
board_build.filesystem = littlefs
|
||||||
lib_deps =
|
|
||||||
tzapu/WiFiManager@^2.0.17
|
|
||||||
bblanchon/ArduinoJson@^7.4.3
|
|
||||||
knolleary/PubSubClient@^2.8
|
|
||||||
|
|
||||||
[env:esp32-C3-devkitm-1]
|
[env:esp32-C3-devkitm-1]
|
||||||
|
platform = ${common.platform_esp32}
|
||||||
board = esp32-c3-devkitm-1
|
board = esp32-c3-devkitm-1
|
||||||
framework = arduino
|
|
||||||
platform = espressif32
|
|
||||||
monitor_speed = 115200
|
|
||||||
board_build.filesystem = littlefs
|
board_build.filesystem = littlefs
|
||||||
lib_deps =
|
|
||||||
tzapu/WiFiManager@^2.0.17
|
[env:esp32-c6-devkitc-1]
|
||||||
bblanchon/ArduinoJson@^7.4.3
|
platform = ${common.platform_esp32}
|
||||||
knolleary/PubSubClient@^2.8
|
board = esp32-c6-devkitc-1
|
||||||
|
board_build.filesystem = littlefs
|
||||||
|
|
||||||
|
[env:rpipico2w]
|
||||||
|
; RP2350 support requires the maxgerhardt fork of the raspberrypi platform
|
||||||
|
; and the earlephilhower arduino-pico core.
|
||||||
|
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
|
||||||
|
board = rpipico2w
|
||||||
|
board_build.core = earlephilhower
|
||||||
|
board_build.filesystem_size = 0.5m
|
||||||
|
|||||||
+7
-9
@@ -152,7 +152,7 @@ static void attachMeters() {
|
|||||||
|
|
||||||
// Release the channel if it's no longer used or its pin changed.
|
// Release the channel if it's no longer used or its pin changed.
|
||||||
if (attachedPin[i] != -1 && attachedPin[i] != pin) {
|
if (attachedPin[i] != -1 && attachedPin[i] != pin) {
|
||||||
ledcDetachPin(attachedPin[i]);
|
ledcDetach(attachedPin[i]);
|
||||||
pinMode(attachedPin[i], OUTPUT);
|
pinMode(attachedPin[i], OUTPUT);
|
||||||
digitalWrite(attachedPin[i], LOW); // drive freed pin low so the meter reads zero
|
digitalWrite(attachedPin[i], LOW); // drive freed pin low so the meter reads zero
|
||||||
Serial.printf("[PWM] detach ch%d pin%d\n", i, attachedPin[i]);
|
Serial.printf("[PWM] detach ch%d pin%d\n", i, attachedPin[i]);
|
||||||
@@ -160,8 +160,7 @@ static void attachMeters() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pin > 0 && attachedPin[i] != pin) {
|
if (pin > 0 && attachedPin[i] != pin) {
|
||||||
ledcSetup(i, PWM_FREQ, PWM_RES);
|
ledcAttach(pin, PWM_FREQ, PWM_RES);
|
||||||
ledcAttachPin(pin, i);
|
|
||||||
attachedPin[i] = pin;
|
attachedPin[i] = pin;
|
||||||
Serial.printf("[PWM] attach ch%d pin%d\n", i, pin);
|
Serial.printf("[PWM] attach ch%d pin%d\n", i, pin);
|
||||||
}
|
}
|
||||||
@@ -173,7 +172,7 @@ static void applyMeters() {
|
|||||||
if (meters[i].pin <= 0 || meters[i].maxDuty <= 0) continue;
|
if (meters[i].pin <= 0 || meters[i].maxDuty <= 0) continue;
|
||||||
float pct = meters[i].currentValue / 100.0f * meters[i].maxDuty / 100.0f;
|
float pct = meters[i].currentValue / 100.0f * meters[i].maxDuty / 100.0f;
|
||||||
int duty = constrain((int)(pct * 1023), 0, 1023);
|
int duty = constrain((int)(pct * 1023), 0, 1023);
|
||||||
ledcWrite(i, duty);
|
ledcWrite(meters[i].pin, duty);
|
||||||
Serial.printf("[PWM] ch%d duty=%d (cur=%.1f maxD=%.1f)\n", i, duty, meters[i].currentValue, meters[i].maxDuty);
|
Serial.printf("[PWM] ch%d duty=%d (cur=%.1f maxD=%.1f)\n", i, duty, meters[i].currentValue, meters[i].maxDuty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,7 +221,7 @@ static void mqttCallback(char* topic, byte* payload, unsigned int len) {
|
|||||||
meters[idx].currentValue = physicalToPct(val, idx);
|
meters[idx].currentValue = physicalToPct(val, idx);
|
||||||
if (meters[idx].pin > 0 && meters[idx].maxDuty > 0) {
|
if (meters[idx].pin > 0 && meters[idx].maxDuty > 0) {
|
||||||
float pct = meters[idx].currentValue / 100.0f * meters[idx].maxDuty / 100.0f;
|
float pct = meters[idx].currentValue / 100.0f * meters[idx].maxDuty / 100.0f;
|
||||||
ledcWrite(idx, constrain((int)(pct * 1023), 0, 1023));
|
ledcWrite(meters[idx].pin, constrain((int)(pct * 1023), 0, 1023));
|
||||||
}
|
}
|
||||||
mqttPublishCurrent(idx);
|
mqttPublishCurrent(idx);
|
||||||
}
|
}
|
||||||
@@ -686,7 +685,7 @@ static void handleSet() {
|
|||||||
if (meters[idx].pin > 0 && meters[idx].maxDuty > 0) {
|
if (meters[idx].pin > 0 && meters[idx].maxDuty > 0) {
|
||||||
float pct = val / 100.0f * meters[idx].maxDuty / 100.0f;
|
float pct = val / 100.0f * meters[idx].maxDuty / 100.0f;
|
||||||
int duty = constrain((int)(pct * 1023), 0, 1023);
|
int duty = constrain((int)(pct * 1023), 0, 1023);
|
||||||
ledcWrite(idx, duty);
|
ledcWrite(meters[idx].pin, duty);
|
||||||
}
|
}
|
||||||
mqttPublishCurrent(idx);
|
mqttPublishCurrent(idx);
|
||||||
server.send(200);
|
server.send(200);
|
||||||
@@ -763,8 +762,7 @@ static void factoryReset(bool clearWifi) {
|
|||||||
// Attach meters temporarily for the sweep acknowledgement
|
// Attach meters temporarily for the sweep acknowledgement
|
||||||
for (int i = 0; i < count && i < 8; i++) {
|
for (int i = 0; i < count && i < 8; i++) {
|
||||||
if (meters[i].pin > 0) {
|
if (meters[i].pin > 0) {
|
||||||
ledcSetup(i, PWM_FREQ, PWM_RES);
|
ledcAttach(meters[i].pin, PWM_FREQ, PWM_RES);
|
||||||
ledcAttachPin(meters[i].pin, i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -776,7 +774,7 @@ static void factoryReset(bool clearWifi) {
|
|||||||
for (int i = 0; i < count && i < 8; i++) {
|
for (int i = 0; i < count && i < 8; i++) {
|
||||||
if (meters[i].pin > 0 && meters[i].maxDuty > 0) {
|
if (meters[i].pin > 0 && meters[i].maxDuty > 0) {
|
||||||
float duty = pct / 100.0f * meters[i].maxDuty / 100.0f;
|
float duty = pct / 100.0f * meters[i].maxDuty / 100.0f;
|
||||||
ledcWrite(i, constrain((int)(duty * 1023), 0, 1023));
|
ledcWrite(meters[i].pin, constrain((int)(duty * 1023), 0, 1023));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delay(50);
|
delay(50);
|
||||||
|
|||||||
Reference in New Issue
Block a user