Skip to content

Add ELIO Eliobot S3 board - #11411

Merged
tannewt merged 2 commits into
adafruit:mainfrom
Eliobot:eliobot-s3-board
Sep 18, 2026
Merged

tannewt merged 2 commits into
adafruit:mainfrom
Eliobot:eliobot-s3-board

Conversation

@rboutrois

Copy link
Copy Markdown

Adds the Eliobot S3, an educational robot from ELIO (France) used to teach children programming, from blocks to Python.

This PR only adds ports/espressif/boards/elio_eliobot_s3/, following the feedback on #10935 (one small, focused PR for the board).

Hardware

  • ESP32-S3, 4MB flash, 2MB PSRAM (quad)
  • DRV8833 motor driver, LED matrix eyes, NeoPixel status LED, IR obstacle sensors, line sensors, buzzer, battery voltage sense
  • I2C, SPI and UART expansion connectors

Notes

  • USB VID/PID 0x303A:0x8384 is allocated to "Eliobot-S3 - CircuitPython" in espressif/usb-pids.
  • board_init() writes a default boot.py (storage.remount("/", False)) and main.py when boot.py is missing, the same approach as mixgo_ce_serial: the robot is programmed from our web editor over the serial REPL or BLE rather than through the drive.

Testing

  • pre-commit and tools/ci_check_duplicate_usb_vid_pid.py pass.
  • Built from this branch and flashed on an Eliobot S3 after a full flash erase: CIRCUITPY drive labelled ELIOBOT, boot.py and main.py created at first boot, code and library upload over USB serial and over the BLE workflow.

Eliobot is an educational robot built around an ESP32-S3 (4MB flash,
2MB PSRAM) with a DRV8833 motor driver, LED matrix eyes, IR obstacle
sensors, line sensors and a buzzer. USB VID/PID 0x303A:0x8384 is
allocated to Eliobot-S3 CircuitPython in espressif/usb-pids.

@tannewt tannewt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple questions about the board_init.

Comment thread ports/espressif/boards/elio_eliobot_s3/board.c Outdated
Comment thread ports/espressif/boards/elio_eliobot_s3/board.c Outdated
- board_init() no longer deletes code.py or creates main.py: the Elioblocs
  editor now writes code.py.
- The default boot.py explains why the drive is read-only and how to
  change it.
- GPIO15-16 are free pins (no 32 kHz crystal), and the NeoPixel count
  anticipates the next board revision.

@tannewt tannewt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine. Thanks!

@tannewt
tannewt merged commit 2b386e2 into adafruit:main Sep 18, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants