TOPSOIL
Back to Projects

Overview

Built with Bennett McDonough for Microprocessors, Microprogramming, and Computer Architecture (April 2025). The concept: a "little guy" who could tell jokes.

The platform is an Arduino Nano RP2040 Connect, chosen for its onboard microphone, WiFi/BT, accelerometer, gyroscope, and IMU. A Cyberon voice recognition library listens for a trigger word via the onboard mic. Once detected, a joke is pulled from a stored array and sent character-by-character to an Emic 2 Text-to-Speech module (Parallax, DecTalk engine), which vocalizes it.

For physical expression: mounted a Furby face and gear train onto a SUNY Poly mascot plushie. An L293D H-Bridge motor driver off the Nano drives the mouth mechanism.

System Architecture

Voice detection

Arduino Nano RP2040 onboard MEMS microphone → Cyberon Voice Recognition library → trigger word detection

Speech output

Joke text stored in array → character-by-character serial output → Emic 2 TTS module (DecTalk engine) → speaker

Animatronics

D5/D6 PWM pins → L293D H-Bridge → Furby gear train → mouth/eye movement

Wiring diagram for Nano RP2040, Emic 2 TTS, and L293D motor driver
Wiring diagram for Nano RP2040, Emic 2 TTS, and L293D motor driver

Key Technical Notes

  • The Nano RP2040 runs at 3.3V; the L293D logic inputs are 5V-tolerant but the Nano's outputs are 3.3V, so voltage level compatibility had to be verified carefully
  • The Emic 2 module communicates via UART serial (Sout → Nano Rx, Sin → Nano Tx); text is sent one character at a time and the module responds with a ':' when ready for the next command
  • Furby gear train provides mouth and eye movement from a single motor; the gear ratio determines how quickly the face animates relative to speech tempo

Challenges

The Cyberon voice recognition library trial version is unreliable and the full commercial license is expensive. Trigger word detection worked, but false positives were higher than we wanted.
  • Powering the motor driver effectively: the Nano's 3.3V GPIO needed careful current budget management
  • Stuffing electronics inside a plushie without shorting anything against the conductive gear train
  • Coordinating mouth animation timing with speech output: the Emic 2 doesn't provide a real-time phoneme signal, so timing is approximate

Future Work

  • Solder the circuit onto a perf board for durability
  • 3D-print a vented electronics enclosure to isolate the board from stuffing
  • Expand the joke library; add a randomized response mode
  • Explore full-license voice recognition or an alternative offline library