Understand and apply the engineering design process in real world applications.
Understand how technology changes over time.
Understand the career opportunities available within the design fields, and understand the education requirements for these careers.
Develop proficiency in the use of design tools and materials by working safely, intelligently, and efficiently.
Successfully communicate ideas visually, orally, and through written communication.
Begin to use your design skill set in ways that benefit others.
Create effective and dimensionally correct 3D CAD Models.
Learn how to learn: become true research and development experts.
Make decisions based on data, and justify their decisions in writing citing data that they collected.
Create technical sketches of their designs to effectively communicate visually.
Utilize the design process to develop visually pleasing solutions to problems that are within a set of constraints using a combination of art, math, science and technology.
When I first started taking engineering concepts, we were learning virtually due to Covid-19. My teacher gave me this kit of materials to use for our first project. Our very first assignment was to make sure we had everything that was expected within our kits and learn what each item is and what they do. This is an image of what was within our first project bag and what they are.
Today I learned our project will be about automation! We are going to design a rolling robot!
Above is how we will progress through the project. We will use what we learn in this rolling robot for our next project as well!
Today we learned what circuit diagrams are. They are a drawing meant to show the arrangement of the wires and their purpose is to show the components they connect.
Today we learned what circuit pictures are. They are a like a circuit diagram but they help give you a mental picture of the circuit. Their purpose is to show circuits without using symbols and instead using pictures of what is in the circuit.
This servo based robot is made from a premade kit that comes with its acrylic plastic base. Although it can't be seen in this photo, there is actually a third wheel underneath the battery pack on top. Also this robot uses a different motor/servos that ours. The sensors are an Optical Interrupter Sensor and LM393 Comparator. Also the Breadboard is extremely small compared to ours.
The second servo based robot has 3 wheels—one hidden behind the battery pack—and uses stepper motors. The model comes from a website that includes a schematic of the stepper motor driver. They also used a seven inch round, 1/4 inch thick expanded PVC for the base of the small model. Unfortunately, you can't see the wiring or breadboard of this robot well.
My last servo robot also has three wheels. The smallest wheel is in the front of the robot unlike the other two. The base is made from an acrylic plastic base. Much like the first robot, it is made from a kit. The link also brings you to a website which includes the parts and pieces used to make the robot and how to put it together. I also like this one because it looks like a wheelchair.
The red wire connects the servos to the Arduino 5 volt pin though the breadboard. Arduino. The black wire connects the servos to the ground pin on the Arduino. The orange and blue wire connect the servos to the Arduino pins.
The red wire connects the servos to the Arduino 5 volt pin through the breadboard. The black wire connects the servos to the breadboard, which then connects them to the ground pin on the Arduino. The yellow wire connects the servos to the Arduino pins.
The red and orange wire connects the servos to the Arduino 5 volt pin though the breadboard. The black and brown wire connects the servos to the ground pin on the Arduino. The white wire connect the servos to the Arduino pins.
#include <Servo.h>
Servo myservo;
Servo myservo2;
int servoPos = 0;
void setup()//this is where you set things up
{
myservo.attach(9);
myservo2.attach(8);
}
void loop() {
//Causes servos to slow down and swithc position
for(servoPos = 0; servoPos < 180; servoPos++)
{
myservo.write(servoPos);
myservo2.write(servoPos);
delay(100);
}
}
This is the path my robot will be moving around my house
Go forward for a couple seconds
Left wheel stop for less than a half a second for the turn to make 40 degree turn
Go forward for a couple seconds
Right wheel stop for less than a half a second for the turn to a full 90 angle (50 degree turn)
Go forward for a little more than one second
Right wheel stop for a second to make a 90 degree turn
My robot can move forward around my house.
This is the the updated wiring of our robots in a circuit picture.
This is the the updated wiring of our robots in a circuit diagram.
#include <Servo.h>
Servo leftservo;
Servo rightservo;
int CW = 0;
int Stop = 90;
int CCW = 180;
void setup() //this is where you set things up
{
leftservo.attach(9);
rightservo.attach(8);
}
void loop() {
//Code; runs in a loop
//Forward
leftservo.write(CW);
rightservo.write(CCW);
//Backward
//leftservo.write(CCW);
//rightservo.write(CW);
//Right
//leftservo.write(CW);
//rightservo.write(Stop);
//Left
//leftservo.write(Stop);
//rightservo.write(CCW);
}
To get to this final product I had to do a few changes such as:
Before, the now back, was in the front. This didn't work because the third wheel which has no servo attached or any weight on it, so it would tilt up causing a bit of offset on my robot.
Also I had to remake my wheels because at first the wheels were a bit off, but I remade them and made sure the wheels were as perfects possible
I had to put hot glue on the wheels that connect to the servo wheels because the cardboard wheels kept slipping.
I had to cut down some carboard from the front and sides of my robot because it was too tall and made it harder to access what I needed to.
This is a circuit picture of how to wire the Arduino Uno and Ultrasonic Sensor. The wiring diagram shows that from the Trig and Echo ports, the wires should connect to a pin (Putting the pins next to each other simplifies the process). The VCC port should connect to 5V on the Arduino, and the GND should connect to the ground wire.
This is a document that contains the data sheet for the ultrasonic sensor. It also contains a a description of how it senses the distance of objects. The sensor emits a short ultrasonic pulse, that is reflected back by an object. This is received by the sensor and converted into an electrical signal. This link to the Arduino Project Hub website shows some basic coding on the sensor and some more basic information about how to wire the Ultrasonic Sensor.
As we move on to the next step with our robots, we decided it would be best if we labeled our wires. This is a good idea because in the next step we may have to remove some wires and move them around.
During today’s class, my teacher wanted to check our understanding of the code. She gave each of us individual “pseudo code” and during class we needed to make our robot complete our series of commands. Here is the pseudo code I was given:
180 degree tank turn to the left
Backwards for 5 seconds
Stop for 3 seconds
90 degree standard turn to the left
Forward for 5 seconds
For extra credit:
Do a full 360 tank turn to the right and a full tank 360 degree turn to the left
The video of my robot performing these functions is to the left.
My code had to be broken up to work, but here I put it all together: Google Doc
In this video, you can see the Ultrasonic Sensor putting out how far away things are in cm. During the video you can see at some points, the numbers drop drastically. This is because I was waving my hand in front of it. Near the end the numbers go down slowly because I slowly moved my hand closer to the sensor.
I created a circuit picture which includes the Ultrasonic Sensor wiring along with all the previous wiring. The Ultrasonic Sensor works by sending out pulses that are then picked up and reported on the screen
getReadyForSchool();
function getReadyForSchool(){
wakeUp();
walkToBathroom();
bathe();
dressUp();
cleanRoom();
getComputerSetUp();
eat Breakfast();
}
function cleanRoom(){
makeBed();
pickStuffOffFloor();
}
function getComputerSetUp(){
if (ADay) {
openAPCSP();
} else {
openEng();
}
}
#include <Servo.h>
Servo leftservo;
Servo rightservo;
int CW = 0;
int Stop = 90;
int CCW = 180;
int CWL = 15;
int CCWL = 175;
void setup()//this is where you set things up
{
leftservo.attach(9);
rightservo.attach(8);
}
void Stop(){
rightservo.write(Stop);
leftservo.write(Stop);
}
void Forward(){
rightservo.write(CW);
leftservo.write(CCWL);
}
void Backward(){
rightservo.write(CCW);
leftservo.write(CWL);
}
void Right(){
rightservo.write(Stop);
leftservo.write(CCWL);
}
void Left(){
rightservo.write(CW);
leftservo.write(Stop);
}
void loop() {
//Code; runs in a loop
//Actual Code
Forward();
delay(5200);
Left();
delay(300);
// FIRST TURN COMPLETE
Forward();
delay(8500);
Left();
delay(500);
Forward();
delay(4500);
Stop();
delay(9000);
// LOOP COMPLETE
}
The front of my robot now has the Ultrasonic Sensor. Also, I did some cleaning up on top of my robot because the wires were becoming one confusing clump.
#include <Servo.h>
Servo leftservo;
Servo rightservo;
int CW = 0;
int Stop = 90;
int CCW = 180;
int CWL = 15;
int CCWL = 175;
void setup() {
// put your setup code here, to run once:
leftservo.attach(9);
rightservo.attach(8);
}
void loop() {
// put your main code here, to run repeatedly:
Forward();
delay(1000);
Right();
delay(500);
Forward();
delay(1000);
Left();
delay(500);
Forward();
delay(3000);
Right();
delay(500);
Forward();
delay(1000);
Right();
delay(500);
Forward();
delay(100);
Nope();
delay(6000);
}
void Nope(){
rightservo.write(Stop);
leftservo.write(Stop);
}
void Forward(){
rightservo.write(CW);
leftservo.write(CCWL);
}
void Backward(){
rightservo.write(CCW);
leftservo.write(CWL);
}
void Right(){
rightservo.write(Stop);
leftservo.write(CCWL);
}
void Left(){
rightservo.write(CW);
leftservo.write(Stop);
}
void RightTank(){
rightservo.write(CCW);
leftservo.write(CCWL);
}
void LeftTank(){
rightservo.write(CW);
leftservo.write(CW);
}
A conditional statement that will work if certain conditions are met. This can be used so you create an output, but only when needed or called upon. For example, if you want a light to come on, but only when the distance on the ultrasonic sensor reads less than and equal 10cm, you can make an if/else stating, If (distance < 10) then the Light turns on, else the light is off. You can also use functions that you have already created in the code, inside of a If/Else Statement.
If (Bored();){
workOnHomework();
}
If else (homeworkCheck(); = true){
workOnAnimating();
}
else {
playVideoGames();
}
function workOnHomework(){
If (homeworkCheck(); = false){
whatClassHasWork();
doWorkForClass();
}
else {
workOnAnimating();
}
}
function (homeworkCheck();){
If (isGoogleClassroomEmpty(); = true){
homeworkCheck(); = false
}
else(isGoogleClassroomEmpty(); = false){
homeworkCheck(); = true
}
Some people in the class with choose to focus on different things than other people. We were split on whether we wanted to work on design constraints, things that would improve the craftmanship of our project and make it more functional shape-wise. Or we could work on adding the Bluetooth module that would allow for the control of our robot using our phones and connection from the Bluetooth module. I have chosen to take the path of makeing my robot more functional.
We have to have all of our electronic computer parts enclosed
Usability Constraints
Easy access to:
The “B” end of the arduino A-B Cable port.
Arduino 5V
Breadboard
Possible removeable door
Function Constraints
Balanced Weight/ Able to move
Stable
Rigid Materials
No slipping
Aesthetic Constraints
Not larger than a microwave
Covering is colorful and neatly crafted
Craftmanship
Clean Edges
Pieces and parts match up
This robot is a good representation of what I would like to achieve with my robot. It is fully enclosed with the batteries accessible and it has 2 wheels. But a few things that differ mine are the fact that it switch and all the parts are 3D printed.
This robot I also like because it has 3 wheels, like mine, and all the pieces are accessible. While they aren't enclosed, I can edit the design. Another difference is they fact that the robot is able to swerve the front the wheel to move it from left to right. This would not be able to work for my robot, but I do like the design.
This robot I like for the design of where the electronics were and how it was balanced. Unfortunately, it uses 4 wheels and I can support at most 3. Also the electronics are not fully enclosed, but I can make a roof using the the design of this robot.
Next I will be making a sketch of what I want my new design to look like so I can model my final product off of it.
This picture includes wiring for the Ultrasonic Sensor, Batteries, Servos and Arduino
This is our title for our newest project.
This is a list that contains all of our goals for this project and questions to ask ourselves as we do it.
This is the list of constraint we have to attend to in this project.
This carboard automata features a cam, which is a shift like mechanism that uses both linear and rotation motion to function. The rotational motion is the pear-like shape that is connected to the pencil that spins around. The linear motion moves by the pear pushing the flat piece of carboard up and allowing gravity to move it back down. My creative piece if the sun that is moved by the linear motion.
The driveshafts under the LEDs show linear motion by going up and down in a mechanical slot. The tri-cams show rotational motion by being turned around by a motor. The driveshafts are being brought up by rubbing against the cams and they go down by gravity pulling them back down.
I really like stars, so I kinda wanted to cooperate that idea into my gear. My first gear is a simple gear with just a star in the middle. It is my favorite because it is so simple and pretty. My bottom one looks like a star explosion, because of all the spikes that come out. Then the one in the middle, has a really cool, and odd, shape that has a 4 pointed star in the middle and 4 circles surrounding it.
Tools Used to Create Face:
Head, Eyes, Pupil cutouts - Circle Tool; Eyebrows, Mouth, Nose, Hair - Pen that draws both straight lines and Bezier curves.
The Bezier Curve tool allows me to draw nice curves and straight lines.
How to create the inside design of a gear:
Create the pattern to be repeated
Select it and go under the Edit tab, scroll over clone, and click tiled clone
Under the tab Shift, make sure Shift X = -100 for 'Per Row' and 'Per Column'
Under the tab Rotation, set Per Colum to 360/X , with x being the number of how many times you want the pattern to repeat
These gears were made on Inscape and made to resemble the ones I drew previously.
This gear was made on Inscape and made to practice using the path function. How to use the Path function is down below.
Create a "weird" shape for the path to copy. You can use the start/pentagon tool to make this.
Once you have your copy-able shape, Make a circle in the center of the gear. This circle should be the same size as your "weird" shape, or close to it.
Then open the path effects (Hotkey: Ctrl + &). Add the Effect, Pattern Along Path.
With your "weird" shape copied, press the button, Link to path in clipboard (The last picture in the row)
In the Pattern Copies dropdown, make sure Repeated or Repeated, stretched is selected.
Now you can use the other dropdowns to customize your gear.
In this video I created the scenario where a driving gear turns a gear that moves in the same direction and one gear two times its speed.
The driving gear turns two different gears at the same time. But it also turns these two in two different directions. The most appealing part of the mechanism, the large spinning gears, move in opposite directions in the same place. The way they are able to do this is by moving on two different layers. The drive shaft
Creating one linear motion using cams
Today we were required to plan our final project using the items in our kits! First, we had to decide which direction we are going. I decided to pursue "advanced" which means I will drive gears in an opposing motion as well as multiple linear motions using cams.
The first 2 images show how the designs will be printed. The second one includes the wood with the spacers, drive shafts, and cranks ready for laser cutting. The third one is a picture of the acrylic with the holes for the slots, ultrasonic sensor, and gears. And the last photo is one with the full gear layout.
Getting my Motor Working
This is the documentation of the circuit diagram, video of my motor working, and my functioning code.
My Functioning Code
/* Control Speed of a DC Motor from serial monitor
More info: http://www.ardumotive.com/how-to-drive-a-dc-motor-with-transistor.html
Dev: Vasilakis Michalis // Date: 13/7/2015 // www.ardumotive.com */
//Transistor 'Base' pin or input pin of motor driver ic to Arduino PWM Digital Pin 3
const int motorPin = 3;
int Speed; //Variable to store Speed, by defaul 0 PWM
int flag;
void setup()
{
pinMode(motorPin, OUTPUT); //Set pin 3 as an OUTPUT
Serial.begin(9600); //Init serial communication
//Print a message:
Serial.println("Give a number from 50 to 255."); //Why minimun value 50? Because with values below 50 the motor doesn't spin ;)
Serial.println(""); //Blank line
}
void loop()
{
//Check if incoming data is available:
if (Serial.available() > 0)
{
// If it is, we'll use parseInt() to pull out only numbers:
Speed = Serial.parseInt();
flag=0;
}
//Valid range is from 50 to 255
if (Speed>=50 && Speed<=255){
//Send PWM value with analogWrite to Arduino pin 3 and print a message to serial monitor
analogWrite(motorPin, Speed);
//Print message only once
if (flag==0){
//Print PWM value
Serial.print("Motor spinning with ");
Serial.print(Speed);
Serial.println(" PWM");
flag=1;
}
}
delay(1000);
}
//
After getting my gears and acrylic, I took the time to build my gearbox with a hand crank. But to fit all the gears with the shafts, I had to sand them down because they didn't fit. But after getting them to work, the gears turned smoothly with the acrylic.
To add the motor to the gearbox, I had to layer three of my drive gears together so it could spin the bottom and top layer. The motor was difficult to put in because the motor had to be centered to make sure it was working. So I had to use hot glue to keep it in place. Once I hot glued it in place, the drive gear now moved much better and was much more stable.
The Ultrasonic Sensor was the hardest part of my project. I had a lot of trouble with it. At first, it worked, but not even up to the limit it was supposed to work at. The work around was to change to code to accommodate the new limit. But once I was trying to install the Ultrasonic sensor into my gearbox, I found that the wiring was very delicate, and came apart very easily.
This shows my final gear box that is now all built together. The video features my drive gear, drive shaft, driven gears, opposing directions, motor, enclosure, wiring, decoration.
This school year was the year of COVID.
The most challenging part of engineering this year was having to build from home and not having other people around you in the room you could easily talk to for help. I also had to go out of the country for a month in a place of limited wifi. It was hard to connect to class sometimes, but I made it through. But in the end I am most proud of the fact that I persevered and I made a beautiful project that I can look at and be proud that I made and designed it.
This project incorporated science in the science of how the project span around
This project used a motor to turn the gears, an ultrasonic sensor to change the speed of gears by sensing motion, and it uses an Arduino to hold all the code to make the gearbox function.
This entire project was made using engineering. We use the design process which includes the Project Brief, Research, Idea Development, 3D prototyping, Evaluate and Testing, and finally, Production.
We use the principles of design to design to make gears with all different types of original patterns.
The gears are all different sizes, and because of this, they are all going at different speeds. The bigger ones move rotate less times than the smaller ones in a certain time period.