Skip to content

Apollo DEV-2 introduction

The Apollo DEV-2 is a very small dev board that we use to prototype before creating other new products. It's a great starter device for tinkerers. You can buy it on its own, or with a breadboard and dupont wires (jumper wires) if you need those too.

Pinout and power

Apollo DEV-2 pinout showing the GPIO number and functions of every header pin

  • Built-in RGB light: on GPIO3.
  • 3.3V pin: supplies up to 600mA, but the microcontroller itself uses 100-200mA of that.

Use one power source at a time

You can power the DEV-2 through the USB-C port or back-feed power through the 5V and G (ground) pins, but not both at the same time.

GPIO pins

These are the DEV-2's I2C, UART, ADC, and onboard RGB LED pins, written as ESPHome YAML:

#These are the i2c pins
i2c:
  sda: GPIO1
  scl: GPIO0

#These are the UART pins
uart:
  tx_pin: GPIO16
  rx_pin: GPIO17
  baud_rate: 115200 #match the device you connect

#ADC pins: GPIO0, GPIO1, GPIO2, GPIO4, GPIO5, GPIO6

#Onboard RGB LED: GPIO3

Flash your DEV-2

The DEV-2 doesn't come pre-flashed with ESPHome or WLED, so you flash it yourself. We made the getting started video below on the older DEV-1 board. The information is still the same, except you use the DEV-2 YAML further down this page.

Example ESPHome YAML

Use the example configuration below as a starting point for your DEV-2. Before you use it, give it your own API encryption key:

1. Open the ESPHome API documentation and copy the randomly generated API key from the code block, as shown in the red box below.

ESPHome API docs with a randomly generated encryption key highlighted in a red box

2. In the YAML below, find the key: line under api: and replace your-api-key-here with the key you copied.

Your configuration now uses its own encryption key.

The DEV-2 now has 8MB flash, but was originally sold with 4MB flash

If you're using an older DEV-2 with 4MB flash, change flash_size: 8MB to flash_size: 4MB in the YAML below.

Here's the full example for the DEV-2:

#Define Project
substitutions:
  name: apollo-dev-2
  version:  "1"
  device_description: ${name} made by Apollo Automation - version ${version}.

esphome:
  name: "${name}"
  friendly_name: Apollo DEV-2
  comment: Apollo DEV-2

  project:
    name: "ApolloAutomation.DEV-2"
    version: "${version}"

# Define Board
esp32:
  variant: esp32c6
  flash_size: 8MB
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "your-api-key-here"

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Apollo-Dev-2 Fallback Hotspot"
    password: !secret wifi_password

captive_portal:

web_server:
  port: 80
  version: 3

#onboard LED using pin GPIO3 as shown below
light:
  - platform: esp32_rmt_led_strip
    id: rgb_onboard_light
    name: "RGB Onboard Light"
    pin: GPIO3
    default_transition_length: 0s
    chipset: WS2812
    num_leds: 1
    channel_colors: GRB
    effects:
      - pulse:
          name: "Slow Pulse"
          transition_length: 1000ms
          update_interval: 1000ms
          min_brightness: 50%
          max_brightness: 100%
      - pulse:
          name: "Fast Pulse"
          transition_length: 100ms
          update_interval: 100ms
          min_brightness: 50%
          max_brightness: 100%

button:
  - platform: restart
    icon: mdi:power-cycle
    name: "ESP Reboot"

sensor:
  - platform: internal_temperature
    name: "ESP Temperature"
    id: sys_esp_temperature

  - platform: uptime
    name: Uptime
    id: sys_uptime
    update_interval: 60s

  - platform: wifi_signal
    name: RSSI
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "${name} IP"
      icon: "mdi:ip-outline"