Otherwordly Terrific Plushies
In the context of the Makerspace class we have explored the deep dark fringes of the electronics corner of our lab, scoured the savage lands of instructional YouTube videos, risking the dreaded “YouTube Hole”, scavenged every last Instructable and Teachables and DIYs in the massive expanse of the independently built universe. We’ve made a self-heating cup, bookend, and even skates, pushing our own limits as well as that of physics itself! Okay, maybe not modern physics, that’s pretty rock solid. At least, until the next Einstein shows up. Until then however, we decided to pool our resources and make something truly remarkable: a stuffed animal.
Now stay with me here! Not just any simple, casual, uninteresting, stuffed animal, but an otherworldly terrific Arduino programmed alarm clock stuffed octopus! The acronym is thankfully not as long. This project is the penultimate combination of our abilities in Arduino coding, mediocre sewing, and last minute assembling, making a miss-matched, patchwork portrait of our skills learned during our time in the Makerspace class. We decided to make this stuffed animal as a gift for Mia, my teammate’s cousin who has a rather endearing addiction to octopuses, and will be entering kindergarten in the Fall. To help her out during this important transition in her life, we decided to make waking up for school and activity she would enjoy by building a stuffed animal alarm clock. This way, we could complete our final project for the Makerspace class as well as please a darling young girl.
Our initial project consisted of a stuffed animal in the shape of an octopus, sewn based off patterns found on the internet. Inside, we wanted to place an electrical circuit connecting a battery box with an Arduino Uno with an mp3 Module, a buzzer, and a RTC (Real Time Clock) Module. This would enable us to program an alarm clock onto the Arduino to make it play a specific track at a predetermined time. This plan later encountered a rather striking series of obstacles we had to surmount, leaving behind shreds of dignity and a few more complicated aspects of our project. The final product still has the octopus stuffed animal (we just couldn’t separate ourselves from it), but contains a heavily modified electrical circuit. The reasons behind these changes will be further explained in the Electrical Circuit step. However, we still managed to squeeze in all three Makerspace components required by our course: Arduino, Electrical Wiring, and Sewing.
Therefore, by making this project we hope to not only make an alarm for the little Mia, but also a toy that she will be able to play with, hug and show to her friend. Of course, that being said, our main challenge will be to make it safe for her, but keep the Arduino device accessible to a parent for the programming of the code.
Tools, Material and Files
List of the tools needed for the realization of our project.
- Sewing machine
- Welder
List of the material needed for the realization of our project.
- Fabric
- Thread
- Buttons
- Needle
- Pins
- Arduino usb cable
- Arduino MOD-JQ6500 Mini module MP3 based on JQ6500 IC
- Real Time Clock
- Two 2.2kohms resistors
- 100nF Capacitor Quartz of 32.768 Mhz
- RTC DS1307
- Circuit Switch
- 3V Battery
- CR1220 Lithium
- 5V Battery
List of references or hyperlinks to other people’s project that you used or other projects that inspired our project.
https://www.instructables.com/id/Plush-toy-singing...
https://www.instructables.com/id/Arduino-Alarm-Clo...
List of software with the websites where the software can be downloaded.
- Arduino Program (https://www.arduino.cc/en/Main/Software)
Sew the Plushies
Material:
- Fabric
- Thread
- Buttons
- Needle
- Pins
Protocol:
- Print or draw the patterns of the various piece you’ll be making
- Cut the sheet of paper and pin the shapes on your fabric. You can fold your fabric so that two pieces can be cut at the same time.
- Cut the fabric according to the pattern
- Sew the different pieces together using the sewing machine. The head and the body should be two distinct pieces that you will later stuff individually before sewing them together. Keep in mind that a small portion of the neck of both pieces should not be sewed in order for you to flip the piece later on.
- Add the buttons on the back the body part of your plush
- Inverse the piece inside out using the gab not sewed
- Stuff both pieces with filling
- Sew both the head and body using needle and thread or glue them in place.
Useful link:
Note:
As shown in the picture, we used a specific type of button to close the opening of the octopus (where the Arduino will go) because they are quite difficult to undo and thus, they'll make it harder for children to have acces to the electric circuit.
Design and Make the Electric Circuit
Material:
- Resistance
- 5V battery
- Arduino devices
- Real time clock and its components (see step 1)
- Switch
Protocole:
Look at the image following and reproduce the design to your needs. Note that the components can either be solved together or assemble as we did using a circuit board.
Due to some complication (see step 6), we had to change the circuit in the end. Since this is a school project for one of our classes, we decided to do something else in the end so that the alarm clock would actually worked (circ-06 slightly modified). However, the first electrical circuit should work according to our research. Personally, our only problem was that the mp3 device was uncooperative. To see more details on the problem we faced with the Arduino technology, look at the conclusion of our work (step 6). That being said, the image of our initial circuit was added so that you can use it for yourself. along with the Arduino codes that we used to create our own code (on the next page). Nonetheless, since in the end we did get to test the code we created, we decided not to integrate it in this instructable. We felt it would likely need modification for it to be usable and thus found it was useless to include it in the end.
Arduino Code
Material:
- Arduino program
- Arduino usb cable
- Arduino mini portable MP3
- Real time clock and its components (see step 1)
Program:
/* Melody
* (cleft) 2005 D. Cuartielles for K3
*
* This example uses a piezo speaker to play melodies. It sends
* a square wave of the appropriate frequency to the piezo, generating
* the corresponding tone.
*
* The calculation of the tones is made following the mathematical
* operation:
*
* timeHigh = period / 2 = 1 / (2 * toneFrequency)
*
* where the different tones are described as in the table:
*
* note frequency period timeHigh
* c 261 Hz 3830 1915
* d 294 Hz 3400 1700
* e 329 Hz 3038 1519
* f 349 Hz 2864 1432
* g 392 Hz 2550 1275
* a 440 Hz 2272 1136
* b 493 Hz 2028 1014
* C 523 Hz 1912 956
*
* http://www.arduino.cc/en/Tutorial/Melody
*/
int speakerPin = 9;
int length = 15; // the number of notes
char notes[] = "ccggaagffeeddc "; // a space represents a rest
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 50;
void playTone(int tone, int duration) {
for (long i = 1; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}
void playNote(char note, int duration) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
// play the tone corresponding to the note name
for (int i = 0; i < 8; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}
void setup() {
pinMode(speakerPin, OUTPUT);
}
void loop() {
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(86400000); // rest
} else {
playNote(notes[i], beats[i] * tempo);
}
// pause between notes
delay(tempo/2 );
}
}
If you want to do what we originally wanted to achieve, here are the code to set the time on your RTC and the one to set the alarm. Note that you'll need to had the time library along with the TimeAlarm one in order for it to work. These are the original code found on online on the Arduino's website and in the forums, because in the end we never got the chance to verify if ours actually worked and thus didn't want to confuse anyone by publishing it.
To set time:
/*
* TimeRTC.pde
* example code illustrating Time library with Real Time Clock.
*
*/
#include
#include
#include // a basic DS1307 library that returns time as a time_t
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait until Arduino Serial Monitor opens
setSyncProvider(RTC.get); // the function to get the time from the RTC
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
}
void loop()
{
if (timeStatus() == timeSet) {
digitalClockDisplay();
} else {
Serial.println("The time has not been set. Please run the Time");
Serial.println("TimeRTCSet example, or DS1307RTC SetTime example.");
Serial.println();
delay(4000);
}
delay(1000);
}
void digitalClockDisplay(){
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
To set the alarm :
/*
* TimeAlarmExample.pde
*
* This example calls alarm functions at 8:30 am and at 5:45 pm (17:45)
* and simulates turning lights on at night and off in the morning
* A weekly timer is set for Saturdays at 8:30:30
*
* A timer is called every 15 seconds
* Another timer is called once only after 10 seconds
*
* At startup the time is set to Jan 1 2011 8:29 am
*/
// Questions? Ask them here:
// http://forum.arduino.cc/index.php?topic=66054.0
#include
#include
AlarmId id;
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011
// create the alarms, to trigger at specific times
Alarm.alarmRepeat(8,30,0, MorningAlarm); // 8:30am every day
Alarm.alarmRepeat(17,45,0,EveningAlarm); // 5:45pm every day
Alarm.alarmRepeat(dowSaturday,8,30,30,WeeklyAlarm); // 8:30:30 every Saturday
// create timers, to trigger relative to when they're created
Alarm.timerRepeat(15, Repeats); // timer for every 15 seconds
id = Alarm.timerRepeat(2, Repeats2); // timer for every 2 seconds
Alarm.timerOnce(10, OnceOnly); // called once after 10 seconds
}
void loop() {
digitalClockDisplay();
Alarm.delay(1000); // wait one second between clock display
}
// functions to be called when an alarm triggers:
void MorningAlarm() {
Serial.println("Alarm: - turn lights off");
}
void EveningAlarm() {
Serial.println("Alarm: - turn lights on");
}
void WeeklyAlarm() {
Serial.println("Alarm: - its Monday Morning");
}
void ExplicitAlarm() {
Serial.println("Alarm: - this triggers only at the given date and time");
}
void Repeats() {
Serial.println("15 second timer");
}
void Repeats2() {
Serial.println("2 second timer");
}
void OnceOnly() {
Serial.println("This timer only triggers once, stop the 2 second timer");
// use Alarm.free() to disable a timer and recycle its memory.
Alarm.free(id);
// optional, but safest to "forget" the ID after memory recycled
id = dtINVALID_ALARM_ID;
// you can also use Alarm.disable() to turn the timer off, but keep
// it in memory, to turn back on later with Alarm.enable().
}
void digitalClockDisplay() {
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits) {
Serial.print(":");
if (digits < 10)
Serial.print('0');
Serial.print(digits);
}
Downloads
Assemble the Circuit and the Plush
All that is left in order to complete the project is to place the circuit inside the plush (note that you might have to remove some stuffing in order for it to enter.
Congrats you created your own "Otherwordly Terrific Plush".
Conclusion
Hence, during this project
everything seem to have went wrong at some point, even though the concept was very feasible.
First of all, the JQ6500 mp3 Arduino device was unable to connect because of a bad cable. Indeed, the cable in question could charge one of our cellphone but for some reason wouldn’t connect the device to the computer. After realizing, that such a thing was in fact possible, we found out that the mp3 device was not compatible with the mac and some version of windows (consult the link following to see the list of what the device is compatible with and the procedure). Once we got it working on one of the computer from the makerspace of our school, we were unable to download any mp3 file into the device and this message appeared: “Error://datafile.ini”. We are still unsure what it means and unfortunately nor google or the Arduino website seem to be of any help. Of course, the fact that the program on the chip was only in mandarin didn’t help either. In the face of those multiple problems, we were forced to abandon the idea of using this device and instead used the different tonalities from the Arduino circ-06 to produce a melody using the program to create various notes.
However, this decision brings us to our second problem, the change of the code was quite complicated and with the limited time left we had to abandon the idea of the Real Time Clock all together. Thought the based code clearly work, only one note would play at the time of the alarm instead of the entire melody. It is still unclear as to the why only one tone would play, we decided to unplug the Real Time clock to instead create an alarm. We thus modify the piezo basic clock for it to create an alarm that would repeat itself at a given interval. It could thus be used as an alarm, but also as a chronometer or as a basic clock busing every hour.
All though I am personally quite irritated that we couldn’t realize our project ultimately because of an uncooperative device, I do believe that our initial concept was great had it worked.
Therefore,though I am not able to say what could have been improved in our initial design, I believe that what we made could have been more efficient if a resonance cage was added so that our piezo would buzz louder. Also, the addition of a working battery would be useful if one were to use our creation.
The link for the mp3 device and how to use it even though it's in mandarine :