Skip to content

Latest commit

Β 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘οΈ Furby Borges

A 1998 Furby converted into a Jorge Luis Borges animatronic with Arduino

Arduino DFPlayer License: MIT

Roni Bandini β€” Buenos Aires, Argentina β€” April 2023

Furby Borges transforms a 1998 Furby into an animatronic version of Argentine writer Jorge Luis Borges.

An Arduino Nano controls the original Furby mechanical system through an H-bridge. A DFPlayer Mini plays Borges recordings while the Arduino moves the mouth in synchronization with the audio.

A PIR sensor detects someone nearby and wakes the machine, which selects a random quotation and recites it while moving its mouth and eyes.


✨ Features

  • πŸ‘οΈ Original 1998 Furby mechanical system
  • ♾️ Jorge Luis Borges voice recordings
  • πŸŽ›οΈ Arduino Nano control
  • βš™οΈ Original single-motor Furby mechanism
  • πŸ”„ H-bridge bidirectional motor control
  • 🏠 Gear-home sensor for mechanical positioning
  • πŸ”Š DFPlayer Mini MP3 playback
  • πŸ‘„ Synchronized mouth movement
  • 🎲 Randomized mouth timing
  • πŸ’€ Eye-closing posture
  • 🚢 PIR motion activation
  • 🧱 Custom 3D-printed electronics stand

πŸ•°οΈ From Borgy to Furby Borges 2.0

The first version was built in 2018.

That version preserved most of the original Furby electronics and intercepted the audio output, replacing Furbish speech with recordings related to Borges.

πŸ‘‰ Original 2018 Furby Borges project β€” Hackster.io

Five years later, the machine was rebuilt with direct control over the Furby's mechanics.

The 2023 version uses:

Arduino Nano
      ↓
H-Bridge
      ↓
Original Furby DC motor

and:

Arduino Nano
      ↓
DFPlayer Mini
      ↓
Borges recordings

The result is a standalone animatronic where audio, mouth movement, eye position and presence detection are coordinated by the Arduino.


πŸ—οΈ Architecture

flowchart LR
    PIR["🚢 PIR Sensor"]
    NANO["♾️ Arduino Nano"]
    DF["πŸ”Š DFPlayer Mini"]
    SD["πŸ’Ύ microSD<br/>Borges recordings"]
    AMP["πŸ”ˆ 3 W Speaker"]
    BRIDGE["βš™οΈ HW094 H-Bridge"]
    MOTOR["πŸ”„ Original Furby Motor"]
    CAM["🏠 Gear Home Sensor"]
    MECH["πŸ‘οΈ Furby Mechanical System"]

    PIR --> NANO
    SD --> DF
    NANO --> DF
    DF --> AMP

    CAM --> NANO
    NANO --> BRIDGE
    BRIDGE --> MOTOR
    MOTOR --> MECH
Loading

βš™οΈ How Furby Mechanics Work

The original 1998 Furby uses a surprisingly compact mechanism.

A single DC motor drives a system of cams and gears responsible for:

  • mouth movement
  • eyelids
  • ears
  • different body positions

The Arduino does not need an individual servo for every movement.

Instead, it controls the original motor direction and duration.

The system also exposes a gear-home position sensor, which provides a known mechanical reference.

Arduino's official feature about the project explains the mechanism in more detail:

πŸ‘‰ Furby modified to recite the wisdom of Jorge Luis Borges β€” Arduino Blog


🏠 Finding the Home Position

Before speaking, the Arduino searches for the Furby's mechanical home position.

The firmware uses:

const int pinCamHome = 5;

and moves the motor until the sensor changes state.

Conceptually:

flowchart TD
    START["Start motor"]
    READ["Read Gear Home"]
    HOME{"Home detected?"}
    MOVE["Continue rotation"]
    STOP["Stop motor"]
    READY["Known mechanical position"]

    START --> READ
    READ --> HOME
    HOME -->|"No"| MOVE
    MOVE --> READ
    HOME -->|"Yes"| STOP
    STOP --> READY
Loading

This gives the Arduino a reference position before performing mouth or eye movements.


πŸ‘„ Speech Synchronization

Audio playback is handled by the DFPlayer Mini MP3 module.

The firmware uses the DFPlayerMini_Fast library because it provides an isPlaying() function.

After selecting a random recording:

myMP3.play(myRandom);

the Arduino moves the mouth while the audio is still playing:

while (myMP3.isPlaying()) {
    speak();
}

The speak() routine repeatedly moves the original motor forward and backward.

To make the motion less repetitive, mouth timing is randomized around:

openMouthDelay = 300 ms
openMouthRandom = 50 ms
speakOffset = 20 ms

So every movement is slightly different.


🚢 Motion Activation

A PIR sensor is connected to:

const int pinPir = 6;

The main loop continuously checks for movement.

flowchart TD
    WAIT["πŸ’€ Wait"]
    PIR{"🚢 Movement?"}
    HOME["Find Home"]
    TRACK["🎲 Select Random Recording"]
    PLAY["πŸ”Š Play Borges"]
    SPEAK["πŸ‘„ Move Mouth"]
    DONE{"Audio finished?"}
    REST["πŸ‘οΈ Close Eyes"]

    WAIT --> PIR
    PIR -->|"No"| WAIT
    PIR -->|"Yes"| HOME
    HOME --> TRACK
    TRACK --> PLAY
    PLAY --> SPEAK
    SPEAK --> DONE
    DONE -->|"No"| SPEAK
    DONE -->|"Yes"| REST
    REST --> WAIT
Loading

This lets Furby Borges remain inactive until someone approaches.


πŸ› οΈ Hardware

Component Function
1998 Furby Original animatronic mechanism
Arduino Nano Main controller
HW094 H-Bridge Drives original DC motor
DFPlayer Mini MP3 playback
microSD card Stores Borges recordings
PIR sensor Detects nearby movement
3 W / 8 Ξ© speaker Audio output
DC connector Power input
5 V / 2 A power supply System power
3D-printed stand Holds electronics and speaker

πŸ”Œ Arduino Connections

Furby Motor Driver

Arduino Nano HW094
D9 Enable / PWM
D8 IN1
D7 IN2

Firmware:

const int enA = 9;
const int in1 = 8;
const int in2 = 7;

Sensors

Arduino Function
D5 Furby Gear Home
D6 PIR motion sensor

DFPlayer Mini

The firmware uses SoftwareSerial:

SoftwareSerial mySerial(10, 11);

Connection:

Arduino D10 ← DFPlayer TX
Arduino D11 β†’ DFPlayer RX

The source specifies a 1 kΞ© resistor on the serial connection to the DFPlayer.

The DFPlayer communicates at:

9600 baud

DFPlayer technical information:

πŸ‘‰ DFPlayer Mini documentation β€” DFRobot


πŸ”Š Audio

The repository contains sample MP3 files:

200.mp3
201.mp3
202.mp3
203.mp3
204.mp3
205.mp3
206.mp3
207.mp3
208.mp3
209.mp3
210.mp3

πŸ‘‰ Browse the audio files in the repository

The firmware is configured with:

const int howManyAudios = 250;

so a larger library of recordings can be stored on the microSD card.

Adjust this value to match the audio collection used in your build.

DFPlayer track playback depends on how files are stored and copied to the microSD card. See:

πŸ‘‰ DFPlayer Mini file and playback documentation


βš™οΈ Main Settings

Important parameters are located near the beginning of furby7.ino:

const int howManyAudios = 250;
const int motorSpeed = 254;

const int speakOffset = 20;
const int closeDelay = 600;

const int openMouthDelay = 300;
const int openMouthRandom = 50;

const int loopDelay = 250;
const int endTalkDelay = 1500;

These values control:

  • number of available recordings
  • motor speed
  • mouth movement timing
  • eye movement timing
  • PIR polling interval
  • delay after finishing a quotation

πŸ“š Arduino Libraries

Install:

DFPlayerMini_Fast

πŸ‘‰ PowerBroker2/DFPlayerMini_Fast β€” GitHub

The firmware includes:

#include <DFPlayerMini_Fast.h>

SoftwareSerial

SoftwareSerial is included with the classic Arduino AVR environment used by the Nano.

Arduino Nano documentation:

πŸ‘‰ Arduino Nano β€” Official Documentation


πŸš€ Installation

1. Install Arduino IDE

πŸ‘‰ Download Arduino IDE

2. Install DFPlayerMini_Fast

Download or clone:

πŸ‘‰ DFPlayerMini_Fast

Install it through Arduino IDE.

3. Clone the Repository

git clone https://github.com/ronibandini/furby.git
cd furby

Open:

πŸ‘‰ furby7.ino

4. Prepare the microSD

Copy the Borges MP3 recordings to the card.

The repository includes several example audio files:

πŸ‘‰ Furby Borges audio files

5. Upload

Select the classic Arduino Nano in Arduino IDE, choose the corresponding serial port and upload the sketch.

Open Serial Monitor at:

115200 baud

At startup:

Furby Borges 2.0 - Roni Bandini

The Arduino then searches for the mechanical home position and closes the eyes.


πŸ“ Repository Structure

furby/
β”‚
β”œβ”€β”€ furby7.ino
β”‚
β”œβ”€β”€ 200.mp3
β”œβ”€β”€ 201.mp3
β”œβ”€β”€ 202.mp3
β”œβ”€β”€ ...
β”œβ”€β”€ 210.mp3
β”œβ”€β”€ README.md
└── LICENSE

🧱 3D-Printed Stand

A custom stand holds the electronics and speaker below the Furby while leaving the circuitry visible.

πŸ‘‰ Furby HW094 stand with speaker support β€” Thingiverse

The stand was designed specifically around this version of the project.


πŸŽ₯ Demo

See Furby Borges speaking and moving:

▢️ Furby Borges Reborned β€” YouTube


🌐 External References

♾️ Arduino Blog

Arduino featured the 2023 version and explains the one-motor Furby mechanism, H-bridge control, DFPlayer synchronization and PIR activation.

πŸ‘‰ Furby modified to recite the wisdom of Jorge Luis Borges β€” Arduino Blog


πŸ“ Raspberry Pi Official Magazine / HackSpace

Furby Borges appeared in HackSpace magazine #67, June 2023 and is now archived by Raspberry Pi Official Magazine.

πŸ‘‰ Furby Borges β€” Raspberry Pi Official Magazine

πŸ‘‰ HackSpace Magazine Issue #67


⚑ Hackaday.io

The complete 2023 rebuild, including the original mechanism, home sensor, mouth synchronization and 3D stand:

πŸ‘‰ Furby Borges Reborned β€” Hackaday.io


πŸ› οΈ Hackster.io β€” Original 2018 Version

The first Borgy / Furby Borges build preserved the Furby's original electronics and replaced its speech with Borges recordings.

πŸ‘‰ Furby Turns into a Writer's Animatronics Bot β€” Hackster.io


πŸ”— Related GitHub Projects

πŸ₯§ PiemPi

A Raspberry Pi machine that calculates Ο€ and generates automatic poetry based on its decimal digits.

πŸ‘‰ github.com/ronibandini/piemPi

🧠 AI Remember

Generative literature inspired by the I Remember format of Joe Brainard and Georges Perec.

πŸ‘‰ github.com/ronibandini/AIRemember

🚢 The Walk

A physical machine that virtually walks through Buenos Aires and generates a travel journal using geolocation, weather data and generative AI.

πŸ‘‰ github.com/ronibandini/TheWalk


πŸ“• Contracultura Maker

Contracultura Maker is a book by Roni Bandini about maker culture, experimental electronics, AI, physical computing and technological autonomy.

πŸ“‚ Contracultura Maker β€” GitHub repository

πŸ“• Download Contracultura Maker PDF


πŸ“¬ Contact

Roni Bandini Maker Β· AI Developer Β· Writer Buenos Aires, Argentina


Built with ♾️ Borges + Furby + Arduino.

About

Furby hack with Arduino and DfPlayer Mini

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages