Introduction: Voice Activated Interactive Puzzle

Create a voice activated puzzle that will make counting fun! As you say the words "one, two, three" the LED lights will turn on one at a time. This project uses a special voice recognition shield (EasyVR 2.0) that programs the lights to turn on only when they hear a word they recognize (in this case the words are "one, two, three").

Step 1: Materials

To complete this project you will need the following...

A pair of scissors, an Exacto knife, a glue stick, a piece of cardboard, a picture you would like to turn into a puzzle (in this case a picture of three reindeer https://www.flickr.com/photos/scottboydportfolio/8157682319), an outline of a puzzle (https://pptcrafter.files.wordpress.com/2012/07/puzzle-outline.png?w=300&h=265), an Arduino Uno (http://arduino.cc/en/Main/arduinoBoardUno), an Easyvr Shield 2.0 (http://www.veear.eu/products/easyvr-arduino-shield/), a breadboard (https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard), a 555 Timer IC Chip (https://www.instructables.com/id/Know-Your-IC-555-Timers/), a USB cable (http://www.adafruit.com/products/62?gclid=CIShgJD4lsICFZAF7AodWjAAGA), three LED lights, a computer and a pack of breadboard jumper wires (http://www.amazon.com/Breadboard-Jumper-Wire-75pcs-pack/dp/B0040DEI9M).

Step 2: Creating Puzzle Pieces

Before you print your picture of the three reindeer resize it so that it is the same size as the puzzle outline. Then print out both images. Cut out the outline of the puzzle pieces using the scissors and then place them on the back of the picture and trace the pieces. (You are using the puzzle pieces as a tracing guide to break your photo into puzzle pieces). Once you are done tracing cut out the pieces using the scissors and your picture should be split into puzzle pieces. Follow the same process on the cardboard using the Exacto Knife to cut out the pieces. After that glue your picture puzzle pieces to the cardboard puzzle pieces. This will allow you to create sturdy puzzle pieces.

Step 3: Assemble the Puzzle

Put the pieces together and you've created a home made puzzle! If you want to add the voice activated interactive part, cut holes in each reindeer nose with the Exacto Knife and then continue to the next step.

Step 4: Prepping the Breadboard

Add the 555 IC Timer Chip to your breadboard.

Step 5: Adding the LEDs

Grab your three LED lights and 6 breadboard jumper wires. Twist the ends of the LEDs and the jumper wires together as shown

Step 6: LEDs to the Breadboard

Attach the LEDs to the breadboard. Note that the longer lead on the LED means that is the positive terminal. Pay attention to which jumper cables are connected to the positive leads as this will be important when attaching the lights to the bread board.

Attach one LED as follows-place the wire attached to the positive lead in position F9, place the wire attached to the negative lead in position E3

Attach the next LED as follows-place the wire attached to the positive lead in position F7, place the wire attached to the negative lead in position E7

Attach the last LED as follows-place the wire attached to the positive lead in position F3, place the wire attached to the negative lead in position E9

Step 7: Connect the Shield and the Arduino

Line up the pins on the Easyvr Shield to the corresponding slots on the arduino and gently push the two together

Step 8: Connecting the Breadboard to the Arduino Uno

Grab four more jumper wires so that you can connect the breadboard to the arduino. Take one wire and connect it from the slot labeled D2 on the arduino to G3 on the breadboard. Take another wire and connect it to the slot labeled D3 on the arduino to H7 on the breadboard. Take a third wire and connect it to the slot labeled D4 on the arduino to H9 on the breadboard. Finally take a wire and connect it to the slot labeled GND on the arduino to a slot in the negative column next to the A column (it does not matter which slot in the negative column this wire is placed)

Step 9: Connecting the Arduino to Your Computer

Take the USB cord and plug the smaller end into the arduino and the other end into the computer

Step 10: Programming Your Shield and Arduino

Go to the following website http://www.veear.eu/downloads/ and download the EasyVR Commander and the EasyVR Arduino Libraries. Then go to the following website http://arduino.cc/en/Main/Software and download the arduino software. Once both softwares are downloaded, copy and paste the EasyVR Arduino Libraries into the Arduino software (one of the drop down menus in the arduino software should have a libraries button, click that, then copy and paste the EasyVR Arduino Libraries). Adding the EasyVR Arduino libraries to the arduino software is what will allow the EasyVr Shield and the arduino to communicate with each other.

Step 11: Using the EasyVR Commander

Open the EasyVr Commander. This is the program where you will train the shield to recognize certain words. For this project we will use the trigger word LETS_COUNT and the command words ONE, TWO and THREE. Connect the EasyVr Commander to your USB drive by clicking the button with the plug and the green arrow at the top left of the screen. There is a drop down list on the home screen of this software on the left side with the following "GROUP 1, GROUP 2, GROUP 3...etc. Open the first option labeled COMMANDS. Click the "add a new command" icon at the top of the screen. Name the command LETS_COUNT and then click the "train command" icon. Attach the microphone that came with the EasyVr Shield to the spot labeled J11 on the EasyVr Shield. Speak clearly into the microphone and say "let's count." Once you have programmed this word follow the same process for the words "one, two, three." Make sure to add the words "one, two and three" to GROUP 1 from the drop down menu on the left of the screen.

Step 12: Connect the EasyVR Commander and the Arduino

Go to the Arduino software click File, Examples and EasyVR (the EasyVr button will only appear if you saved the EasyVr libraries correctly into the arduino software). Then click EasyVr Bridge. Make sure the jumper on the EasyVr Shield is in the PC position then upload the EasyVr Bridge code (make sure to disconnect the USB port you are using from the EasyVr Commander software before you do this).

Step 13: Uploading the Arduino Code

In order to get the lights on the puzzle to turn on one by one in response to the words "one, two, three" you have to upload the appropriate code provided below. Go to the arduino software and click File, New then copy and paste the code below and upload it.

#if defined(ARDUINO) && ARDUINO >= 100

#include "Arduino.h"

#include "SoftwareSerial.h"

SoftwareSerial port(12,13);

#else // Arduino 0022 - use modified NewSoftSerial

#include "WProgram.h"

#include "NewSoftSerial.h"

NewSoftSerial port(12,13);

#endif

#include "EasyVR.h"

EasyVR easyvr(port);

//Groups and Commands

enum Groups

{

GROUP_0 = 0,

GROUP_1 = 1,

};

enum Group0

{

LETS_COUNT = 0,

};

enum Group1

{

G1_ONE = 0,

G1_TWO = 1,

G1_THREE=2,

};

EasyVRBridge bridge;

int8_t group, idx;

void setup()

{

// bridge mode?

if (bridge.check())

{

cli();

bridge.loop(0, 1, 12, 13);

}

// run normally

Serial.begin(9600);

port.begin(9600);

if (!easyvr.detect())

{

Serial.println("EasyVR not detected!");

for (;;);

}

easyvr.setPinOutput(EasyVR::IO1, LOW);

Serial.println("EasyVR detected!");

easyvr.setTimeout(5);

easyvr.setLanguage(0);

group = EasyVR::TRIGGER; //<-- start group (customize)

pinMode(2, OUTPUT);

digitalWrite(2, LOW);

pinMode(3, OUTPUT);

digitalWrite(3, LOW);

pinMode(4, OUTPUT);

digitalWrite(4, LOW);

}

void action();

void loop()

{

easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

Serial.print("Say a command in Group ");

Serial.println(group);

easyvr.recognizeCommand(group);

do

{

// can do some processing while waiting for a spoken command

}

while (!easyvr.hasFinished());

easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

idx = easyvr.getWord();

if (idx >= 0)

{

// built-in trigger (ROBOT)

// group = GROUP_X; <-- jump to another group X

return;

}

idx = easyvr.getCommand();

if (idx >= 0)

{

// print debug message

uint8_t train = 0;

char name[32];

Serial.print("Command: ");

Serial.print(idx);

if (easyvr.dumpCommand(group, idx, name, train))

{

Serial.print(" = ");

Serial.println(name);

}

else

Serial.println();

easyvr.playSound(0, EasyVR::VOL_FULL);

// perform some action

action();

}

else // errors or timeout

{

if (easyvr.isTimeout())

Serial.println("Timed out, try again...");

int16_t err = easyvr.getError();

if (err >= 0)

{

Serial.print("Error ");

Serial.println(err, HEX);

}

group=GROUP_1;

}

}

void action()

{

switch (group)

{

case GROUP_0:

switch (idx)

{

case LETs_COUNT:

group=GROUP_1;

// write your action code here

// group = GROUP_X; <-- or jump to another group X for composite commands

break;

}

break;

case GROUP_1:

switch (idx)

{

case G1_ONE:

Serial.println("In Light");

digitalWrite (2, HIGH);

break;

case G1_TWO:

Serial.println("In Light");

digitalWrite (3, HIGH);

break;

case G1_THREE:

Serial.println("In Light");

digitalWrite (4, HIGH);

break;

}

// write your action code here

// group = GROUP_X; <-- or jump to another group X for composite commands

break;

}

}

Step 14: The Final Touches

Position the LED lights in the holes in the noses of the reindeer. Switch the jumper on the EasyVr shield to SW, click the magnifying glass in to top right of the arduino software and wait to see if the EasyVr is detected. If the EasyVr is detected start by saying the trigger word (Let's Count) into the microphone on the Easyvr Shield. (If the EasyVr is not detected try unplugging it from your computer, plugging it in again and re-uploading the EasyVr Bridge Code and the code provided in the previous step). You should then be prompted to say a command in Group 1. You should then say "One" and one of the LEDs should light up. As you say "two" and "three" the other LEDs should also light up. Now you have a fun home made way to help your child develop important spatial skills through puzzle building as well as a fun way to teach counting concepts!

Step 15:

First Time Author Challenge

Participated in the
First Time Author Challenge

Enchanted Objects

Participated in the
Enchanted Objects

Make it Glow!

Participated in the
Make it Glow!