Introduction: Voice-Controlled Clock With Arduino (no WiFi, No PC)

This Instructable explains how to build a voice-controlled alarm clock/timer by connecting a real-time shield and a MOVI Speech Dialog Shield to an Arduino. See the video above for the result! The voice control does not require an Internet connection and can be configured to other commands than the ones shown in the video above. MOVI also supports other languages, like Spanish and German. For more information on MOVI, check out their page.

This Instructable assumes basic familiarity with Arduino and electronic projects. Please check out the Arduino and the MOVI Instructable first, if you need to get familiar with these types of projects. Otherwise, let's go!

Step 1: Ingredients

Picture of Ingredients

To build the alarm clock you need:

  • An Arduino-compatible board, we used an Arduino Uno.
  • MOVI Speech Recognizer and Synthesizer shield for Arduino.
  • A Tiny Real Time Clock DS1307.
  • Loudspeakers that plug into a headphone jack (no 4ohm or 8ohm).
  • A power supply, e.g. 12V 500mA or 4 AA alkaline batteries (rechargeables: use 5).
  • Optional: An Arduino project box.
  • Optional: A proto shield to mount the realtime clock module

Step 2: Solder Wires to the RTC Module

Picture of Solder Wires to the RTC Module

To connect the RTC module to the Arduino board, we need to solder 4 wires as follows:

Tiny RTC PinWire ColorArduino
GNDBLACKGND
VCCRED5V
SDAGREENSDA
SCL YELLOWSCL

The wires can either be directly connected to the Arduino (see later step) or you can use a proto shield.

Step 3: Assembly

Picture of Assembly
  1. Optional: Place the Arduino inside the project box.
  2. Optional: If you used a proto shield for the real time clock, mount it onto the Arduino.
  3. Then, mount the MOVI shield onto the Arduino.
  4. If you are using a MOVI for the first time, you want to check the instructions on how to get started with MOVI regarding jumper settings and other prerequisites.
  5. If you use a project box, drill a hole into the cover of the project box, close to the microphone or better on top of the microphone. This will increase the accuracy and responsiveness of the speech recognition dramatically. In our case, the project box had a pre-perforated hole close to the microphone, so we used that instead of utilizing a drill.

Step 4: Wiring

Picture of Wiring
  1. Connect the speaker jack into MOVI headphone output.
  2. If you did not use a proto shield make the following connections:
    1. Connect the RTC BLACK (GND) wire to the Arduino header GND pin.
    2. Connect the RTC RED (VCC) wire to the Arduino header 5V pin.
    3. Connect the RTC YELLOW (SCL) wire to the Arduino header SCL pin.
    4. Connect the RTC GREEN (SDA) wire to the Arduino header SDA pin.
  3. Connect the power supply to the Arduino.
  4. Turn on your speakers (you should hear MOVI's boot messages)

Step 5: Programming

Picture of Programming
  1. Take your laptop and fire up your Arduino IDE
  2. Connect the laptop via USB to the Arduino board
  3. If you have not already, download the MOVI library at http://www.audeme.com/downloads.html and install it. This project used library version 1.10.
  4. Download the Real Time Clock Library at https://github.com/adafruit/RTClib and install it.
  5. Download the following program into the Arduino IDE, compile it, and upload it to the board:

Step 6: Ready to Go!

Picture of Ready to Go!

Close the casing and unplug the USB as your clock is independent of any laptop or Internet connection. The program presented here understands the following commands:

  • What time is it?
  • What is the time?
  • What is the date?
  • What is today?
  • Cancel timer
  • Is timer set?
  • How much time remaining?
  • Set Timer for 1 minute
  • Set Timer for 2 minutes
  • Set Timer for 3 minutes
  • Set Timer for 4 minutes
  • Set Timer for 5 minutes
  • Countdown

And, of course, there is nothing that prevents you from programming your own commands and have the clock do more functions.

In case you do encounter any trouble, we recommend checking out MOVI's forum.

Comments

botronics (author)2017-03-25

I just put one together with the board I purchased at Maker Faire. Works very well. Added relay control and humidity/temperature sensor. For the RTC, I used a logger shield for the Arduino. It has a DS1307 ic and SD card slot. When I get this in a box, I will post photos. Thank you for posting this project.

botronics made it! (author)botronics2017-04-02

The clock fits well inside a speaker box. I used a 3 watt PAM digital amp to drive the speaker. Next I added an external electret to the ext. mic jack. I've tried several electret microphones, but get nowhere the same sensitivity as the one on the board. Because the board is inside a box, I can't use the on-board microphone. Apparently, when using an external mic, the signal does not go through an auto-adjusting gain amplifier like the on-board microphone does. Since I'm warned not to add a pre-amp, how can I get the same response like the on-board mic can provide? I would like to speak to MOVI from about 3 feet and not up very close to the microphone.

GeraldF6 (author)botronics2017-04-02

Nice implementation! You have two options to get better voice recognition from further away in your case.

1) You unsolder the onboard microphone and instead solder wires in it's place that connect to the same microphone. You also drill a hole of the size of the microphone into your speaker box. This way your microphone can face the outside, just like the speaker.

2) You use an external pre-amplified microphone that outputs line level and connect it to MOVI's microphone input using an attenuator circuit. See also the discussion (and circuit) on Audeme's forum: http://www.audeme.com/forum.html#/20160106/external-microphone-5138266/