Skip to content

About

Product documentation for CodexPad-S10

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

CodexPad-S10

中文

Overview

CodexPad-S10 is a Bluetooth Low Energy gamepad from the CodexPad series, highly optimized for bare-metal and lightweight runtime environments. Unlike conventional gamepads that depend on an operating system’s Bluetooth stack, this product focuses on low‑barrier access. Utilizing an open, lightweight binary protocol, it can establish peer‑to‑peer communication directly with bare‑metal BLE devices such as ESP32, ESP32‑S, ESP32‑C, STM32, nRF, micro:bit, Raspberry Pi, and similar boards. This makes it an out‑of‑the‑box remote physical input solution for robots, IoT devices, custom control panels, and more.

We provide a clean communication protocol, lightweight driver libraries, and a wide range of examples for supported platforms, so you can integrate the gamepad into your firmware quickly and focus on your core application.

⚠️ Important: This is NOT a plug‑and‑play gamepad

The CodexPad-S10 is not a BLE-HID device, so it will NOT be automatically recognised by the operating system as a standard gamepad like an Xbox or PlayStation gamepad. Therefore:

  • ❌ You CANNOT simply pair it with Windows / macOS / Linux, a phone, or a game console and start playing games;
  • ✅ You MUST establish the Bluetooth connection manually in code, and parse the gamepad’s reported data (buttons, joysticks, etc.) yourself to obtain input.

In other words, every input must be actively read and handled by your own program — the system does not perform the “button → keyboard / gamepad event” translation for you. This product is positioned as a development‑oriented input device, not a plug‑and‑play gaming peripheral for end users.


Product Appearance

codexpad_s10


Product Component Diagram

Product Component Diagram


Button Diagram

Button Diagram


Input Device Specifications

  • Number of buttons: 17
  • Number of joysticks: 2
  • Joystick type: dual‑axis analog
  • Joystick resolution: 8‑bit (0 – 255)

Electrical Characteristics

  • Charging voltage / current: 5 V / 500 mA (USB Type‑C)
  • Battery capacity: 400 mAh
  • Charging time: approximately 1.5 hours
  • Battery life: approximately 8 hours under typical use

Connectivity and Protocol

  • Bluetooth version: Bluetooth Low Energy 5.3
  • Transmission distance: Up to 50 m (under optimal conditions; actual range depends on host Tx power, antenna gain, BLE PHY settings, and environmental factors)
  • Transmit power: 0 ~ 6 dBm (adaptive, automatically adjusted by the gamepad based on RSSI, no user configuration required)
  • BLE PHY support: 1M, 2M, Coded S2, Coded S8
  • Communication protocol: open, lightweight binary protocol optimized for embedded systems
  • Supported role: BLE peripheral (slave)

Powering On and Off

  • Power on: Briefly press (click) the Home button in the centre of the gamepad. The No. 1 blue LED indicator will start blinking slowly, indicating the device is starting up.
  • Power off: While powered on, long‑press the Home button for 3 seconds. The No. 1 blue LED indicator will turn off and the device will shut down.

💡 Tip: If the gamepad shows no LED response at all after you attempt to power it on, or the LEDs turn on but go out immediately, the battery is most likely fully drained and cannot support startup or stable operation. Please charge the gamepad with a USB Type‑C cable first, then try again.


LED Indicator Description

  • No. 1 Indicator (Blue): Operating status indicator

    No. 1 LED Status Device Status
    Slow blinking (approx. 1 s on/off) Powered on, advertising, and ready to connect
    Solid on Powered on and successfully connected to a host device
    Off Powered off
  • No. 2, 3, 4 Indicators (Green): Battery level and charging status indicators

    Together these three LEDs form a three‑bar battery gauge that shows the remaining capacity or charging state at a glance.

    • When the device is powered on and not charging, they display the current battery level:

      LED Status (No. 2 / 3 / 4) Battery Level
      All three on (full bars) High
      No. 2 and 3 on, No. 4 off (two bars) Medium
      Only No. 2 on, No. 3 and 4 off (one bar) Low (charge recommended; may auto‑shutoff when reaching the minimum protection voltage)
    • When the device is connected to a charger, they display the charging state:

      LED Status (No. 2 / 3 / 4) Charging State
      The three LEDs cycle on in sequence (running‑light effect) Charging in progress
      All three on solidly Charging complete

Auto Power‑Off

To conserve power, the gamepad will automatically shut down under the following two conditions:

  1. Low‑battery auto power‑off: When the battery drains to the minimum protection voltage, the gamepad powers off automatically and all LEDs turn off. This is a battery protection mechanism. Please recharge promptly. The gamepad will power on normally after charging.

  2. Broadcast timeout auto power‑off: After power‑on, if the gamepad remains in the slow‑blinking state (advertising and waiting for a connection) for more than 1 minute without being connected, it will turn itself off to save power.

💡 Tip: If the gamepad shuts down shortly after power‑on, first check the battery level indicators, or try to complete the Bluetooth connection as quickly as possible after turning it on.


Obtaining the Bluetooth Device Address (BD_ADDR)

When connecting to a CodexPad, you may need the device’s unique identifier: the Bluetooth Device Address. It acts like an “ID number” for the device, formatted as 12 hexadecimal characters separated by colons: XX:XX:XX:XX:XX:XX (where X is 0–9 or A–F), for example E4:66:E5:A2:24:5D.

The Address is printed on the label located in the centre of the gamepad’s back panel. Please check and record it yourself.


Charging and Battery Maintenance

To extend the lifespan of the built‑in lithium battery, follow these charging and care guidelines:

  • Avoid overcharging; disconnect when full: Lithium batteries do not need a “12‑hour first charge” activation. When the green LEDs No. 2‑4 stay solid on (fully charged), disconnect the charger promptly. Avoid leaving the gamepad plugged in for extended periods (e.g., overnight or for several days) — staying at 100 % charge for a long time accelerates battery ageing.

  • Charge as needed; avoid deep discharge: You don’t have to wait until the battery is completely empty to recharge. When the battery gauge shows low (only LED 2 is on), you can charge the gamepad. Frequent deep discharge (to auto‑power‑off) significantly shortens battery life.

  • Use a suitable charger: Please use a standards‑compliant 5 V / 1 A (or 5 V / 500 mA) USB charger or a computer USB port. Avoid using fast chargers — excessive current may cause the battery to heat up, affecting safety and lifespan.

  • Charge in a suitable environment: Whenever possible, charge at room temperature (0 °C – 35 °C). Extreme high temperatures (e.g. inside a car in summer) or very low temperatures will seriously reduce charging efficiency and harm battery health.

  • Long‑term storage: If you plan not to use the gamepad for an extended period (more than one month), charge the battery to a medium level (around 50 %–60 %, i.e. LEDs 2 and 3 on, LED 4 off) and store it in a cool, dry place. Never store the gamepad for long periods either fully charged or fully drained.


Connection and Usage Guide

All hardware platforms listed in the table below are provided with official adaptation libraries and sample code, and developers can directly use the corresponding resources for rapid development.
In theory, any hardware platform with standard BLE capability can communicate with this gamepad. If your platform is not included in the list, you may refer to the library implementations and communication protocols of existing supported platforms for self-porting. The official team will also continuously evaluate and expand support for new platforms based on market demand and technical roadmap.

Native BLE Main Controller Platform

Main controller has built-in BLE capability or a BLE coprocessor, and the software can directly call low-level BLE APIs to connect to devices

Main Controller Hardware Platform Development Environment and Languages Documentation
  • ESP32
  • ESP32-S3
  • ESP32-C3
  • ESP32-C5
  • ESP32-C6
  • ESP32-H2
Arduino IDE(C/C++) CodexPad Arduino Lib
  • ESP32
  • ESP32-S3
  • ESP32-C3
  • ESP32-C5
  • ESP32-C6
  • ESP32-H2
  • Raspberry Pi Pico W
  • Raspberry Pi Pico 2 W
MicroPython CodexPad MicroPython Lib
  • micro:bit v2
MakeCode CodexPad Extension for micro:bit MakeCode
  • Windows 10
  • macOS
  • Linux(including embedded devices such as Raspberry Pi)
Python CodexPad Bleak Lib

External BLE Module Solution

Main controller (e.g. STM32/Arduino) lacks Bluetooth and requires an external Bluetooth-to-Serial module (connected to TX/RX pins)

Hardware Combination Development Environment and Languages Documentation
  • Arduino UNO + NL16 Bluetooth Module
  • BLE UNO(built‑in NL16 module)
  • Arduino IDE(C/C++)
GamepadCodec Arduino lib

Important Notes

Important Notes

About

Product documentation for CodexPad-S10

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors