Board overview
The ED1 is an ESP32-based educational development board designed by Citilab Edutec. It integrates multiple peripherals for learning embedded systems and IoT development.Specifications
Block diagram
Components
Main controller
Power management
Communication
Display
Sensors
Input/Output
Connectors
Stepper motor control
The ED1 board includes built-in support for two 28BYJ-48 stepper motors via the MCP23009 I2C GPIO expander and ULN2004A Darlington driver arrays.Signal path
MCP23009 to motor pin mapping
28BYJ-48 specifications
- Step angle: 5.625° (64 steps per motor revolution)
- Gear ratio: 64:1
- Steps per output revolution: 512 (full-step mode) or 4096 (half-step mode)
- Operating voltage: 5V DC
- Drive method: Full-step sequence (4 phases) - matching MicroBlocks implementation
MCP23009 initialization
The MCP23009 requires specific register initialization for motor control:
Important: The GPPU register (pull-ups) must be enabled for reliable motor operation. Without this, the ULN2004A drivers may not receive proper signal levels.
Full-step sequence
The step sequence matches the MicroBlocks “ED1 Stepper Motor” library, which was used as the reference implementation. MicroBlocks is the official programming environment for the ED1 board. Source: MicroBlocks ED1 Library
Timing: ~2ms between steps (1500µs in MicroBlocks)
ESPHome usage
Include the stepper package:- Number entities: Set step count (-4096 to +4096) for precise positioning
- Button entities: Quick rotation (CW/CCW 512 steps = full rotation)
- Stop button: Immediately stop motors and power down coils
Power system
Power sources
- USB-C (5V): Primary power, also charges battery
- Battery (3.7V): 16340/CR123A Li-Ion cell
Power rails
- VBUS: Raw USB voltage (5V)
- VDD_IN: After overvoltage protection
- VBAT: Battery voltage (3.0-4.2V)
- VDD5: Regulated 5V (from buck-boost)
- VDD33: Regulated 3.3V (system rail)
- VDD3A: Analog 3.3V (for ESP32)
Charging
- Charge IC: MP2607DL with load sharing
- Charge Rate: 1000mA (set by R6)
- Status LEDs: STAT1, STAT2, DONE, CHR
Battery protection
When battery is inserted with wrong polarity, Q1 and Q2 transistors isolate the battery from the system, preventing damage.Power switch (SW1)
The slide switch on the right side of the board (JS102011SAQN) connects/disconnects the battery from the power circuit. This is a purely mechanical switch with no GPIO connection.Battery monitoring limitations
The ED1 board has no built-in battery monitoring capability. The following cannot be detected programmatically:
The charger status signals (STAT1, STAT2, DONE, CHR) from the MP2607DL are routed only to LED drivers (NL7SZ97), not to ESP32 GPIOs.
Hardware modification for battery monitoring
To read battery voltage, add an external voltage divider to an analog expansion port: This divides the 3.0-4.2V battery range to ~1.5-2.1V, safe for the ESP32 ADC. ESPHome configuration:Datasheets
Component datasheets are included indocs/datasheets/:
Hardware revisions
This documentation primarily covers ED1 Rev 2.3, but packages have been tested on both revisions.Revision differences
Compatibility notes
- Core packages (display, buttons, sensors, buzzer, etc.) work on both revisions.
-
Stepper package (
packages/stepper.yaml) is designed for Rev 2.3’s MCP23009. -
IR Features:
- Rev 2.3: Receiver works reliably on GPIO35. No emitter hardware.
- Rev 1.0: Receiver on GPIO33, emitter on GPIO32 (both untested in this project).
- Accelerometer is not yet implemented in ESPHome packages
Identifying your revision
Check the I2C scan on boot (in ESPHome logs):0x15+0x20= Rev 2.3 (MXC6655XA + MCP23009)0x19+0x20= Rev 1.0 (LIS3DH + MCP23017)