How to use an old plush toy to build a storyteller using an Arduino

Arduino is an open-source prototyping platform based on easy-to-use hardware and software. Over the years Arduino has been the brain of thousands of projects, from everyday objects to complex scientific instruments. This project use DFPlayer module to create a storyteller toy.

Preparing the hardware

Just use the diagram to connect every component.

preparing the hardware

– Arduino board (pin11) to RX of DFPLayer (pin2)
– Arduino board (pin10) to TX of DFPLayer (pin3)
– (pin1) of DFPLayer to +5v of Arduino board
– (pin7) of DFPLayer to gnd of Arduino board
– (pin6) and (pin8) of DFPLayer to speaker
– Arduino board (pin9), (pin7) and (pin6) to push buttons used for play/pause, previous and next

Preparing the software

You need to create a new sketch using Arduino IDE and upload to you Arduino.

– Open the Arduino IDE
– Create a New sketch and paste our code.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

const int prevButton = 6;
const int nextButton = 7;
const int playButton = 9;

int buttonState = 0;
int playState = -1;

void setup() {

if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));

pinMode(prevButton, INPUT);
pinMode(nextButton, INPUT);
pinMode(playButton, INPUT);

myDFPlayer.volume(29); //Set volume value. From 0 to 30

void loop() {

if (digitalRead(prevButton) == LOW) {
if(buttonState == 2){
buttonState = 0;
playState = 1;
} else {
buttonState = 2;

if (digitalRead(nextButton) == LOW) {
if(buttonState == 3){
buttonState = 0;
playState = 1;;
} else {
buttonState = 3;

if (digitalRead(playButton) == LOW) {
if(buttonState == 1){
buttonState = 0;
if(playState == 1){
playState = 0;
} else {
if (playState == -1 ){;
} else {
playState = 1;
} else {
buttonState = 1;

if (myDFPlayer.available() && myDFPlayer.readType() == DFPlayerPlayFinished){


– You need also to install a library using Include library under Sketch and Manage library
– Search for DFPlayer and install this library

install DFPlayer library

– Verify and upload the sketch to Arduino

Build your own prototype

Use a prototype pcb to move this project form breadboard to pcb.
If you don’t have an Atmega328 with bootloader you need to burn a bootloader to upload the sketch.
Also if you intend to use a 9v battery, you need to use a voltage regulator.

build your own prototype storyteller using arduino

Assembles the toy

Use a plastic case to encapsulate the project.

assembles the storyteller toy

Components and supplies

USB cable to connect PC-Arduinox1
Arduino UNOx1
Prototype PCBx1
Crystal 16Mhzx1
Ceramic Capacitors 22pFx2
Resistor 10 Kohmx3
DFPlayer modulex1
Push buttonx3

Leave a Reply