Project Development¶
Time Management¶
Firstly, we had a zoom call with our instructorr and divided the amount of work into catagories,
Then, I had a one on one with my local instructor and made a check list as well
After all the planing, I made proper timetable with Ghant charts to have it better sorted.
Cardboard prototype¶
We were assigned to make a prototype so we have a clearer vission of what we want to make, with where the components go and the size of the model.This was my prototype(without the wheels for now, because I think I will use plastic wheels from a toy, or a building kit)
These are the measurements for this model
This is the plan I have for where to place the components
After building this prototype, my whole idea of my project changed. I got a clearer idea of what I wanted to make and the measurements. I ended up changing the shape and placement of my components as well. After making this, I feel like my prokect is more relistic and possible. It feels like I made progress and actually managed to take a step forward (of course with a lot of help from the others.)
This is the 3-d design of my project(you can see the layout changed quite a lot) I left the holes in the design to show a clearer view of how it’ll look.
The placement of the components are: - The head will hols a seperate circuit board with the 2 matrix displays and the esp32 camera. - The neck will be hollow to connect the display circuit board’s wires. - The ultrasonic sensor will pop out of the main body. - The battery will have a seperate case that I can access from the bottom to cahnge it, or charge it.
Design and Fabrication¶
I started by making the design and planning for the bottom of the robot. I already tryed out the matrix displays, and the ultrasonic so I decided that its about time I did the moter test.
Heres a car set we had in our lab, This was a project another student worked on one time, so the picture bellow is a model of it fully working
First enclosure¶
From this set, I will be using the wheels, the ball caster and the design of the base.
After making this though, I realised that if i wanted to laser cut the body, than the curvs on the base probably wouldnt be a good idea.
I also had some diffulicity figuring out how I should keep the neck connected to the body and the head. While discusing some of this issues, it occured to me theat the neck isn’t really a required component, so I removed the neck from my design and made the new one like this.
YES: - The head will be somewhat merged inside the body - The Ears to make it look more like a creature.
MAYBE: - Covering the wheels
NO: - The tail and the legs in the front
After making the layout of that design, this was the first design I made for the body part
Than as for the head, at first I was planing to make the head with a lid, but the first one I printed was for my earlier design plan, which I did end up changing.
The lid worked pretty well, but I think I needed to add a lock so that the lid won’t fall off.
Heres the new head.
While printing this head, I was told I could also make it press fit instead, because the shape is quite simple, so I made a press fit design as well.
Here are the results !
Electronic Test¶
Matrix Display Test¶
The first component I’ll be needing for my project id the matrix display so for the eyes of the bot. While testing and learning about this component, I was able to change up and make a few different animations!
The code for the blinking eye is from chatgpt.
#include <LedControl.h>
// DIN = 12, CLK = 11, CS = 10
LedControl lc = LedControl(12, 11, 10, 1);
byte eyeOpen[8] = {
B01111110,
B10000001,
B10000001,
B10111101,
B10111101,
B10000001,
B10000001,
B01111110
};
// Half-closed eye (top lid coming down) (vertical flipped)
byte eyeHalfClosed1[8] = {
B00001110,
B00110010,
B01000010,
B01111110,
B01111110,
B01000010,
B00110010,
B00001110
};
// Closed eye (vertical flipped)
byte eyeClosed[8] = {
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000
};
// Half-closed eye (bottom lid going up) (vertical flipped)
byte eyeHalfClosed2[8] = {
B00001110,
B00110010,
B01000010,
B01111110,
B01111110,
B01000010,
B00110010,
B00001110
};
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void loop() {
displayFrame(eyeOpen);
delay(6000);
displayFrame(eyeHalfClosed1);
delay(500);
displayFrame(eyeClosed);
delay(1000);
displayFrame(eyeHalfClosed2);
delay(500);
}
void displayFrame(byte frame[8]) {
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, frame[i]);
}
}