GETTING STARTEDBY UNEXPECTED MAKER

Getting started with your board.

Welcome to your new Unexpected Maker board! This guide will help you connect it, explore its features and start creating your own projects.

Choose your MCU

Match the chip on your board. The connection, coding and recovery instructions below will change to suit.

Showing the ESP32-S2 guide.

Connect your ESP32-S2 board

  • TinyS2
  • FeatherS2
  • FeatherS2 Neo

Plug your TinyS2, FeatherS2 or FeatherS2 Neo into your computer with a USB-C power and data cable.

Your board comes with CircuitPython pre-installed

A demo program is already installed and starts automatically when you power up the board.

If your board includes an RGB LED, you will see it cycling through the rainbow when powered up.

Use the CIRCUITPY drive

Your board appears on your computer as a USB drive named CIRCUITPY. It is the board’s own file system: copy files onto it and off it in Finder on macOS or File Explorer on Windows, just like a USB flash drive.

Each time your board powers up or resets, CircuitPython looks for code.py on the drive and runs it. On your new board, code.py contains a demo program; edit it or replace it with your own.

Edit files directly on the drive, or work on them on your computer and copy them across. Whenever a file on CIRCUITPY changes, CircuitPython reloads and runs code.py.

If you are new to CircuitPython, Adafruit’s Welcome to CircuitPython guide walks you through editing code and using the serial console.

Choose your language and tools

CircuitPython, MicroPython, Arduino, ESP-IDF, PlatformIO, Rust and more. Step-by-step setup for each one is on the Develop page.

CircuitPython

MicroPython

Arduino

ESP-IDF

PlatformIO

.NET nanoFramework

Rust

PHP

TinyGo

JavaScript

Lua

Erlang / Elixir

Flash new firmware

Switching to a different platform means installing different firmware. Erase the flash first: it removes the previous program, its settings and its filesystem.

These commands are for esptool 5.4.0, the latest release. Replace PORT with your board’s port. esptool documentation →

esptool --chip esp32s2 --port PORT erase-flash

Enter download mode

Download mode lets the computer install firmware without running the program already on your board. Close any serial monitor before uploading.

1Hold BOOT

Keep BOOT pressed.

2Tap RESET

Press and release RESET while still holding BOOT.

3Release BOOT

Select the download-mode port on your computer.

There is no LED signal to confirm download mode. Check the computer’s port list instead. On boards using the chip’s USB connection, a different serial port can appear after the button sequence.

If you manually put your board into download mode, press RESET after the upload finishes to start your code running. Open the port list again and select the port used by the running program.

Battery & power

Every Unexpected Maker board can run from a single-cell LiPo battery, and it charges the battery whenever USB or 5 V power is connected.

Choose and connect a battery

  • Use a compatible protected single-cell LiPo battery: 3.7 V nominal, 4.2 V fully charged.
  • Check positive and negative against the board markings. Matching connector shapes do not guarantee matching polarity. The battery input on all UM boards has reverse polarity protection, but other connected hardware could still be damaged, so be careful.
  • Connect only to the documented battery input or VBAT/GND pins. Do not connect a LiPo directly to 3V3 or 5V, and do not use multi-cell packs or non-rechargeable batteries on a charging input.

Your board’s pin reference shows where to connect the battery.

Charging and runtime

A battery with a larger capacity runs your board for longer, but takes longer to charge, because the board charges it at a fixed current.

How long a battery lasts also depends on how much current your project draws, how much it uses Wi-Fi, and whether it uses sleep modes.

When your board is powered only from the battery, there is no 5V output from the 5V header pin.

Use your board’s helper libraries

Helper libraries give your code simple access to your board’s own hardware, such as its RGB LED, battery monitoring and, on Series[D] boards, the antenna switch. You call the helper instead of looking up pins and writing that code yourself.

Each platform has its own helper library. Choose the tab for the platform you use.

Use the helper for your exact S2 board. FeatherS2 and FeatherS2 Neo have different onboard hardware; examples for the Neo matrix are not interchangeable with the single RGB LED on other boards. Follow the board example when enabling an LED supply or a second regulator.

Start with the examples in the board’s repository linked below. Copy the helper beside code.py and its dependencies into lib.

If something isn’t working

The board powers up, but no serial port appears

Try a known data cable and a direct computer port. Disconnect attached hardware, then enter download mode. Download mode bypasses your installed program. If a port appears in download mode but disappears after RESET, check the installed firmware and its USB settings. If no port appears in either mode, try another cable and USB port, then check whether the computer detects a USB device at all. On Linux, check serial-device permissions. On Windows, inspect Device Manager for a device or driver error.

I can’t see a CIRCUITPY drive

CIRCUITPY appears when CircuitPython is running with its USB filesystem enabled. It is not expected while Arduino or MicroPython is running, or while the chip is in ROM download mode. A bootloader drive is a different drive. Check which firmware and mode you are using before attempting recovery.

Uploads fail or the port is busy

Close serial monitors, other IDEs and browser tabs connected to the board. Reselect the port after entering download mode. Check the MCU, board definition and firmware file. If transfers start but fail, try a shorter cable, direct USB connection or lower upload speed.

The upload finishes, but there’s no output

Press RESET, then check the port again. Set the monitor to the baud rate used by your program. For Arduino over USB, check USB CDC On Boot; for ESP-IDF, check the console channel. If the board repeatedly resets, verify its flash and PSRAM configuration and power supply.

The RGB LED or battery example does not work

Check the board revision, helper version and pin reference. Some boards need the LED supply or a second regulator enabled. NeoPixel and DotStar LEDs use different drivers. Battery examples must also match the hardware: an ADC voltage-reading example cannot read an I²C fuel gauge. Test with the matching UM example before changing wiring or pin definitions.