UART und Programmieren
Als Programmieradapter sind ein simpler USB-UART und 2 Taster ausreichend. Der Betrieb ist halbautomatisch. Zum
Starten des Bootloaders den Taster FLASH gedrückt halten und kurz RESET drücken. Die Pin-Belegung des
Steckverbinders im Beispiel ist für ein ESP-01S-Modul ausgelegt, die Signalnamen sind beim Shelly aber identisch.
Auf einigen "etwas besseren" UART-Boards ist auch das RTS-Signal herausgeführt. Damit, und mit 2 Transistoren, kann
man die auf den üblichen Eval-Boards vorhandene (automatischere) Programmierbeschaltung nachbilden. Details dazu finden sich
im ESP-Datenblatt.
Mit angeschlossenem USB-UART-Adapter kann man die Monitor-Daten auf der seriellen Schnittstelle (115200,8,1,N) mitlesen.
Nach einem normalen Reset meldet sich der Shelly mit den folgenden Daten (gekürzt):
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x1 (POWERON),boot:0xd (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5820,len:0x11a8
load:0x403cc710,len:0x148c
load:0x403ce710,len:0x28c0
entry 0x403cc71a
boot: Shelly OS loader 1.0.0 (Oct 11 2024 11:45:33 IDF 5.2.1-s2)
boot: chip revision: v0.4
boot.esp32c3: SPI Speed : 80MHz
boot.esp32c3: SPI Mode : DIO
boot.esp32c3: SPI Flash Size : 8MB
boot: Enabling RNG early entropy source...
...
Das Bild ändert sich wenn GPIO9/[15]/"FLASH" während des Reset auf Masse liegt. Der Bootloader wird aktiviert und
der Programmiermodus gestartet. Das Gerät wartet auf neue Firmware:
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x1 (POWERON),boot:0x5 (DOWNLOAD(USB/UART0/1))
waiting for download
PlatformIO
PlatformIO ist eine der aktuell gängigsten Programmierungebungen.
Üblicherweise beginnt man dort mit der Angabe des verwendeten Board-Typs. Dadurch werden alle für die SW-Erstellung
wesentlichen Details (z.B. Port-Belegungen und Speichergrössen) gesetzt. Leider sind "die Shellys" dort
unbekannt. Eine schnelle und einfache Lösung ist es ein primitives/generisches Board mit dem gleichen Prozessor
als Basis zu nehmen und die Abweichungen händisch in der "platformio.ini" aufzulisten. Für den ESP32-C38F ist
das insbesondere die Speicherkonfiguration:
[env:esp32-c3-devkitc-02]
platform = espressif32
board = esp32-c3-devkitc-02
board_upload.flash_size = "8MB"
board_upload.maximum_size = 8388608
board_upload.maximum_ram_size = 512000
board_build.partitions = default_8MB.csv
framework = arduino
monitor_speed = 115200