KillingMinion
By Yue, Yanan and Hao.
The project conducted as part of the Computational Design and Digital Fabrication seminar in the ITECH masters program.
Some of us unconsciously shake legs all the time. With cellphone in your pocket, this random movements are sensed by the internalized 'Accelerometer'. Via bluetooth sending back to our little machine, a mechanical loop of a simple gear - chain system, which has minion hanged up to a servo, is triggered. The minion will be moved along with the chain and dropped at the end. While you don't even notice what you're keeping doing, R.I.P. Minion!
List of Items
List of Items:
- 3D Print items:
Platform【servo seating, chain connector, gear】
Minion & coffin
- Arduino:
UNO R3 Controller Board
830 tie-pin breadboard
Stepper motor(28BYJ48 5V DC)
UNL2003 Stepper Motor driver board
Servo motor
Bluetooth receiver
Piezo buzzer
9V battery with DC
9V battery adapter
330R or higher resistor *2
LED *2
Jumper wires
- Others
4mm wood sticks(moving tracks)
Chain (tear from Logo car)
M3 bolts and screw drivers
Cellphone (Android)
Assemble the Platform
Stepper motor and servo motor are part of control circuit. Servo motor is connected directly into the 830 tie-pin breadboard and Uno R3 control board, whereas the stepper motor needs to link to UNL2003 Stepper Motor driver board first, then link to the Uno R3 control board.
Circuits and Codes
To control the movements of the chain, the following basic states are considered:
0. Install the App and connect it to the machine via bluetooth. And, start shaking!
1. after signals received, gears started to rotate and the chain start to move at a certain speed.
2. signals continue, till the minion is carried through till the other end of the path, then stepper motor stops and servo motor rotates 90 degree, drops the minion into the coffin.
3. during the chain walking, if the signals stop for an identical period of time, gears reverse and the chain moves back at a very low speed.
4. by reset bottom on Uno R3 control board, or if the reversed movement hit the starting end of the path, procedure is reset.
5. to make things a bit more interesting, some noises are made during the moving and dropping. You can also extend the sound and music module by Apps in your phone. Have fun with that.
#include <Stepper.h>
#include <Servo.h> #include <SoftwareSerial.h> #include "pitches.h"const int step = 64; const int counterMax = step * 9; int counter = 0;
SoftwareSerial mySerial(7, 8); Stepper stepper(step, 9, 11, 10, 12);Servo myServo;
const int Buzzer = 5; bool isAlive = true;
char data;
int melody[] = { NOTE_CS4, NOTE_CS4, NOTE_CS4, NOTE_CS4, NOTE_CS4, 0, NOTE_CS4, NOTE_CS4, NOTE_CS4,0,NOTE_CS4 }; int noteDurations[] = { 2, 2, 2, 2, 8, 8, 8, 8, 8, 8, 8 };
void setup() { Serial.begin(9600); mySerial.begin(9600); myServo.attach(3); pinMode(4, INPUT); stepper.setSpeed(80);
while (digitalRead(4) == LOW) { stepper.step(-1); } stepper.step(60); }
void loop() { if (mySerial.available() > 0) { while (mySerial.available() > 0){ data = mySerial.read(); } if (counter < counterMax) { mySerial.print("0"); for (int thisNote = 0; thisNote < 11; thisNote++) { int noteDuration = 100 / noteDurations[thisNote]; tone(Buzzer, melody[thisNote], noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); noTone(Buzzer); stepper.step(2); counter += 2; } data = 0; } if (counter >= counterMax && isAlive) { mySerial.print("2"); myServo.write(180); for (int thisNote = 0; thisNote < 11; thisNote++) { int noteDuration = 1000 / noteDurations[thisNote]; tone(Buzzer, melody[thisNote], noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); noTone(Buzzer); } isAlive = false; } } else if (counter > 1 && counter < counterMax) { mySerial.print("1"); stepper.step(-1); counter -= 1; delay(200); } }
A Test Run
All the Files We Can Share
You can find all the files we can share in this link, including 3d-print models, fritzing circuit diagrams and arduino codings.