Learning Module #1 : Arduino
Click here for the final write up
Aidan and Evan learned how to use Arduinos and Breadboards. They learned how to make circuits that allowed them to make LEDs blink and fade in and out, use buttons to turn a light on and off, and how to code an Arduino. After learning how to do some of these things from examples on the Arduino editor website, they then modified and played around with these examples in order to add onto the circuit by ourselves. For example, the fading light example was then modified to work with multiple lights, each fading in and out at different times. They also learned about different resistors, how to use them, and also how to tell the difference between them by using the colored bands. They learned about the importance of resistors after using them incorrectly which caused some of their projects to not work properly. Aidan and Evan also had some problems where they accidentally plugged the wrong ends of the LEDs in, which they corrected after realising that their project did not work. They would suggest learning about all of the pieces for your projects before using them, in order to make sure that you know what you are doing and that you do not mess anything up or break anything. Knowing the pieces will make everything easier to build and troubleshoot, and it will allow you to know why everything is needed instead of you just guessing as to what goes where. In summary, it was a fun experience and they now know more about arduinos and circuits.
Learning Module #2: Soldering
Click here for the daily log and final write up
We covered some basic soldering and desoldering, alongside the safety precautions required to solder. We learned some basic soldering, both for components with leads like resistors and leds, but also more complicated components such as ICs, header pins and soldering jumper wires. We also had to learn to desolder some components. While soldering a resistor onto the board Aidan and Isaac accidentally burned the connection pad off of the board. Without this pad they were not able to solder one side of the resistor onto the board causing the circuit to not work properly. So they followed the connections to where the resistor would be attached to, and then they soldered jumper wires from the end of the resistor to the connection points. They also ran into the problem of not knowing how to construct the proto shield and they did not have any instructions to tell them how to put it together. So they search online for the instructions until they found the website that sold the shield that they were working on and found the instructions there. Some suggestions I’d have is to be careful about how much heat you’re applying to the pad, as applying too much heat can burn the pads off or ruin the board. You can adjust the temperature to be lower, around 300 C is ideal. You also have to be careful that you don’t hold the soldering iron to the pad too long as even at a low temperature, too long of an exposure will still burn it off. Overall they had a good time making the circuits. It was an interesting project and a good reminder on how to solder.
Learning Module #3: ID Scanner
Click here for the daily log and final write up
This learning module James and Aidan figured out how to get a barcode scanner working on a raspberry pi zero w. They also worked with JavaScript and created websites and servers. With the barcode scanner they would attempt to create something that when a student leaves the room they scan their ID and then the information of when they left and came back is logged and can be seen on a website. James and Aidan learned how the barcode scanner works when integrated with the raspberry pi and how they can potentially use this data. They learned how to use the raspberry pi to communicate with other devices locally that were not raspberry pis. Aidan and James encountered a problem where they were not allowed to download a specific program on one of the school’s computers that they needed. In order to get around this they needed an administrator login, but the login was not working on the computer for some reason. They later found out that the computer was not working properly and had to use a new computer in order to continue their project. Another problem Aidan and James encountered was an error in their code. They spent a good amount of time trying to figure out what the problem was and eventually saw that they accidentally put a period instead of a comma into the code. James and Aidan suggest that others also use a raspberry pi if they were to do something similar. It gives a good environment for creating something like this and due to its size can be implemented in a more realistic way rather than having everything running off of a normally sized computer or laptop. We also suggest that others also learn other skills such as a good amount of experience in a programming language as well as some web development knowledge. Overall, the experience was challenging but it was also fun. It was an interesting project that was great to learn about JavaScript, Raspberry Pis, and creating websites/servers.
Learning Module #4: Nerf Turret Start
Click here for the final write up
The original goal of the group was to create a nerf turret that had a webcam attached to it so that it can use face tracking software to figure out where a person is, aim, and fire at them. The turret would have a 3d printed base which would have motors inside of it to allow it to turn and aim before firing. They quickly decided that it would be better to use motion sensors instead of facial tracking because of the time limit.
Probably the biggest problem that the group faced was the 3D printer being broken for the vast majority of the project, so some of the most crucial parts were not able to be printed. Because of these parts not being able to be printed the group could not create or test the code needed for the actual project. The 3D printer being broken also meant that Aidan was not able to help with the hardware for the project because he spent his time in class (and his study hall) trying to fix the 3D printer. Aidan tried to push/pull the filament out but only ended up breaking the filament. He then tried to melt the filament, but it was in a spot that would not heat up. He then tried to extrude the filament, but that did not work either. In the end the only way to get the filament out was for Aidan to take the heating element and the part that held the jammed filament apart from the rest of the 3D printer and drill out the filament. After reassembling the extruder and heating element, Aidan did some test prints which would not stick to the bed, but those were problems that could be fixed by changing the settings for the printer.
Another problem that we had was that the motion sensors did not work as intended. The PIR motion sensors would unreliably output random motion whenever nothing was moving, or say that there was no movement whenever we waved a hand in front of the sensor. We are unsure of how to fix this issue as we had done everything we could think of, including editing the actual PIR motion sensor, as well as using a plethora of the same unit, but to no avail. Our code, schematic and build all worked fine, it was just that the motion sensor would not want to output any of the data that we wanted it to pick up.
Although we had many frustrating failures during the project, we all actually learned a lot. Wesley and Evan spent a lot of time coding in the Arduino IDE and working with the PIR motion sensors. They had learned how to program the movement of a servo in steady increments, they learned how to detect movement using the PIR sensor, even if it wasn’t steady nor reliable, and they had learned how to use the PIR sensor to control the movement of a servo based on when movement is detected. They had learned how to edit the sensors’ settings so that they can change the delay as well as the sensitivity.
The biggest suggestion that we can make for anyone looking to complete a similar project is to simply avoid using PIR motion sensors. They seem very finicky and although their concept seems simple and interesting, it is actually very annoying and unreliable. We highly recommend that you instead use the super sonic sensors, since they are much more common and reliable and can accomplish a task that is very similar to the one we were trying to accomplish. An additional thing you could pursue when creating a project similar to this could be attaching the turret to a RC car if time is on your side!
Overall, we did not get close enough to our goal of creating a motion sensing nerf gun sentry, although we did indeed get close and learned a lot. The original goal was to use some sort of webcam with motion tracking software but then we decided to shift our attention to the PIR motion sensors which were much easier to learn and utilize, but still came with its challenges. We used the 3D printer to print a base for the servos as well as the nerf gun, but eventually the 3D printer fell apart and we were unable to print any more crucial pieces of the base. After that, we ran into the issue of the PIR motion sensors not being as reliable as we needed them to be. We did not accomplish our original goal we set out to do, but we may return to this project in the future to shore it up and complete what we had started.
Learning Module #5: Color Sensor
Final write up: https://docs.google.com/document/d/1eMdelBdcoULPj4hUOfQsOtEMCcB1cpNHmEtKkZ8hTyQ/edit?usp=sharing
Daily Log: https://docs.google.com/document/d/1QzuI0E7sRuAte_syFeEcZPdvtI9ULk5Gs7VPI_Tm0hA/edit?usp=sharing
We planned on creating a color sensor that will tell you the color and RGB value of whatever it is pointing at. It also lights up an RGB LED with the color of whatever the sensor was pointing at.
One of the problems that we encountered was converting the RGB values gathered into the names of colors, but we were not able to figure out how to fix it. The code, for some reason, would only ever say the name of one color no matter what the sensor was pointing at or reading, for example, it would only say the color black no matter what. Another problem we encountered was the wiring of the LCD. The LCD would not work for some reason for a while, but after making sure the wires were correct and all plugged in and resetting the Arduino, the LCD worked. Our last problem we encountered was getting the LED to turn to the correct color. We had figured out that no green values were getting sent to the LED, and after trying to switch out some wires we figured out that the LED was not properly connected to ground.
We were able to get everything except converting the RGB values into the color name. So we were able to get the color sensor working with the LED and LCD. We were able to convert the output values from the sensor and turn them into Hex and RGB values, but we are only using the RGB values.
From this Learning module we learned how to use color sensors, LCD screens, and RGB LEDs. We also learned a little bit about how to code in C++.
If we were to do this project again we would try to replace the idea to convert the RGB value to the color name to something else like the Hex values, or we might want to use a raspberry pi instead.
We would suggest that if you decide to do this project that you learn at least the basics of C++ beforehand. We would also suggest that you either use a color sensor that has a color conversion function built into it, find a library/lines of code that convert values into color names, use a different coding language, or just not try and convert the values gathered from your color sensor into the names of the colors.
If we had more time we could have tried to condense the project so that it could be put on a glove and be transported around.
Learning Module #6: Nerf Turret Finished
Learning Module Daily log and Finial Write Up: https://docs.google.com/document/d/10hnMVVEvABenEMk2Ed_qy80D_ekwNMl6yFYJnxZHHZY/edit?usp=sharing
My original goal was to create a motion sensor nerf turret. It would have three motion sensors, one on the front and one on either side of the turret. When the motion sensor on the left or the right would detect motion the turret would turn towards that sensor until the front of the turret would be facing where the motion was and then it would fire. The way that it would find out where to point would be it would turn a little towards the motion sensors and then check for motion on all of the sensors again until only the front sensor would detect the motion, and then it would fire a shot. The turret was originally going to use a base that was entirely 3D printed. The base had two points where it would be able to swivel, one horizontally and one vertically. The base consisted of five 3D printed parts, all of which I had modeled in Fusion360. There was the bottom most portion which is where the motor for the horizontal motion would be held, the middle portion which sat on top of the bottom motor and held the arm and the motor that controlled the vertical motion, the arm which would hold the pivoting part and allow for the pivoting to happen, the pivoting point which would be held up by the arm and the vertical motion motor and connect to the gun connector, and the gun connector which would hold the gun so it could be put onto the base. But after I found a metal base that did the same thing as my 3D printed base (besides the specialized connector), but it allowed for a greater range of vertical motion, I decided to use that.
Learning Module #7: RC Car
Aidan and Max wanted to create an Arduino controlled RC car that would be able to follow someone. They would use ultrasonic sensors to detect the distances between the front of the car and the person/object it would be following. They used an H-bridge to control the motors in the car to make it turn and go forward/backward. They planned to 3D print parts to mount the Arduino, h-bridge, and the ultrasonic sensors to the car. They used fusion360 in order to 3D model the parts. On a smaller scale, they wanted to learn to control the toy car with Arduino and get multiple ultrasonic sensors to work at once. They were successful with both of these goals.
LM#8: Chess AI
Daily Log: https://docs.google.com/document/d/1wa8cZcqVvgqTskQgygIdc9ohR4Vwo6CLKi6qAmR4XPc/edit?usp=sharing
Final Write Up: https://docs.google.com/document/d/10lRbhdOcMcP_fMvXLkpCQdEfVSX7W56pknc0I2KhlKk/edit?usp=sharing
My initial goal was to create an artificial intelligence, using machine learning, that is capable of playing chess against a person or computer on a chess program that I would create. I also hoped to be able to make the AI capable of learning from its mistakes. The AI would know the rules of chess, be able to move its pieces, and capture the other player’s pieces.
LM#9: AI
Daily Log: https://docs.google.com/document/d/1YN6gZsHworEWLGfAqnZs9azYuIp5IorrO4tT94gO2aU/edit?usp=sharing
Final Write Up: https://docs.google.com/document/d/1DBAxQrQo0esn390BK4has2Kr-rNM7Fw1qbO8i3PEuhY/edit?usp=sharing
We wanted to learn about the basics of machine learning by learning step by step from a long youtube tutorial video. We hoped that this video would be more helpful than the resources that we tried to use in our previous AI projects. We hoped to even branch out to create our own environments for the AI to complete by following the tutorial on how to build openAI gym environments.