ADA is an interactive desktop robot built around the Wemos D1 mini / ESP8266. It combines animated OLED eyes, four capacitive touch inputs, expressive servo head motion, DFPlayer audio feedback, battery monitoring, Wi-Fi configuration and an NTP clock.
مستندات کامل فارسی: docs/README_FA.md
- ARDUnia projects and technical articles: ardunia.ir
- Hamidreza Milaninia: hrmnia.com
- GitHub organization: github.com/ARDUnia
- 15 animated face states on a 128×64 SSD1306 OLED
- 19 mapped touch gestures using four TTP223 sensors through a PCF8574
- Non-blocking servo animations and left/right swipe movements
- 14 reaction tracks plus a startup track on DFPlayer Mini
- Local Wi-Fi setup portal with scanned network selection
- NTP clock configured for Iran Standard Time by default
- Battery voltage and percentage display
- Automatic dim, half-closed and sleep states
- Persistent, CRC-protected settings and Wi-Fi credentials
- Host-side hardware simulation with AddressSanitizer and UndefinedBehaviorSanitizer
- Build the circuit according to docs/HARDWARE.md.
- Install the libraries listed in docs/SOFTWARE.md.
- Open
firmware/Ada/Ada.inoin Arduino IDE, or open the repository in PlatformIO. - Format the microSD card as FAT32.
- Copy the included
assets/audio/MP3directory to the root of the card. It already contains/MP3/0001.mp3through/MP3/0014.mp3and the startup sound/MP3/0020.mp3. - Upload the firmware to a Wemos D1 mini / ESP8266.
- If no saved network exists, connect to
ADA-Configusing password12345678, then openhttp://192.168.4.1.
| Part | Quantity | Purpose |
|---|---|---|
| Wemos D1 mini / ESP8266 | 1 | Main controller and Wi-Fi |
| SSD1306 OLED 128×64, I2C | 1 | Animated face and menus |
| PCF8574 I/O expander | 1 | Four touch inputs |
| TTP223 capacitive touch module | 4 | Gesture sensors S1–S4 |
| DFPlayer Mini | 1 | MP3 reaction audio |
| microSD card, FAT32 | 1 | Audio storage |
| Small speaker, suitable for DFPlayer | 1 | Audio output |
| Hobby servo such as SG90 | 1 | Head movement |
| Battery measurement divider | 1 | Safe A0 voltage sensing |
| Regulated power supply | 1 | Stable controller, audio and servo power |
See the complete BOM, voltage warnings and wiring table in docs/HARDWARE.md.
| ESP8266 pin | D1 mini label | Connected device |
|---|---|---|
| GPIO4 | D2 | I2C SDA: OLED + PCF8574 |
| GPIO5 | D1 | I2C SCL: OLED + PCF8574 |
| GPIO16 | D0 | Servo signal |
| GPIO13 | D7 | ESP RX ← DFPlayer TX |
| GPIO15 | D8 | ESP TX → DFPlayer RX through a series resistor |
| A0 | A0 | Battery divider output |
- Persian overview and operating guide
- Hardware, BOM and wiring
- Libraries, build and upload
- Touch gestures and reactions
- Wi-Fi, Setup menu and SD card
- Software architecture
- Testing and simulation
- Troubleshooting
- Contributing
- Security policy
- Change log
firmware/Ada/ Arduino sketch and modules
assets/audio/MP3/ Ready-to-copy DFPlayer sound effects
docs/ Hardware and software documentation
tests/host/ ESP8266 peripheral simulation and regression tests
.github/workflows/ Automated host test workflow
platformio.ini Optional PlatformIO environment
The current build passes 83 host assertions, recognizes all 19 gesture patterns and verifies that all 15 required audio tracks are present. The simulated servo command range is 45°–134°. See docs/TESTING.md for scope and limitations.
No open-source license has been selected yet. Copyright remains with the project owner; reuse or redistribution requires permission until a license is added.
Hamidreza Milaninia — ARDUnia
ardunia.ir · hrmnia.com