Sam's Neat Project Blog
June 20, 2016
Arduino Tutorial: How to Make an Arduino Instrument
This most recent video combines the three previous Arduino component tutorials into one big project. I implemented a few new techniques into this video, differing from the constant drawing in previous videos. This tutorial still has the same style as the others, but now features real life objects, superimposed virtual wiring and code diagrams, and also some computer generated pencil drawings (These were more of an experiment. They still look almost exactly the same as real pencil drawings.)
June 06, 2016
How to Use a Force Sensitive Resistor With Arduino
May 27, 2016
Roomy: Autonomous Robot
Roomy is an autonomous robot controlled by three ultrasonic sensors. The goal of Roomy was to create an autonomous robot that smoothly drives around a room without the need to stop and scan its surroundings like many other ultrasonic robots.
The base of the robot utilizes the chassis and arduino boards used in the Carduino project. Also, I attached three ultrasonic sensors on the front of the robot, which Roomy uses to scan his surroundings. One sensor is facing forward and the other two are to the left and right of the center sensor, rotated about 35 degrees.
Operation:
Roomy has been working pretty well lately. He drives around fairly smoothly, avoiding most obstacles. When he does become trapped, he almost always is able to free himself. Also, the robot tends to often travel through similar paths throughout the house, even if the starting place is difference. These patterns are likely just because of the geometry of the rooms.
Challenges with Ultrasonic sensors:
Ultrasonic sensors are an extremely valuable tool, but aren't very accurate. I learned that they work best against flat surfaces. This meant that when approaching an obstacle at certain angles, Roomy often would ram into a wall after not detecting it. The addition of two ultrasonic sensors (see diagram) and a few new lines of code allows Roomy to detect angles much easier, as there is a greater likelihood that at least one sensor will be facing a flat side.
Also, Roomy can often become stuck if there is an object too low or high that the ultrasonic sensors don't detect. One idea to fix this problem is to add force sensitive resistors or buttons to the sides of the robot as a secondary sensor system.
Roomy's other major flaw is that he can't detect sharp drops such as stairs. A downward facing ultrasonic sensor at the front of the robot could be implemented to easily fix this issue. Whenever it detects a sharp drop it could throw the motors into reverse to avoid falling. The only issue here would be reaction time. The wheels are fairly far forward on the robot, so Roomy may not stop in time.
Personification:
If you haven't noticed yet, Roomy has been pretty personified. The ultrasonic sensors' inaccuracy creates occasional oddities, making Roomy seem to have his own personality. Combined with eye shaped sensors, Roomy seems very emotive. When Roomy successfully navigates through a difficult area or frees himself from being stuck, I find that I'm proud of Roomy instead of my own coding and building. Also, when I've shown the robot to family and friends they also quickly bond with Roomy and talk to and about him like a pet.
Updates:
Better Sensor Mount
The original ultrasonic mount was made from a bent piece of pie tin, which was not very precise and also looks pretty sketch. I used a bendable plastic material called Wonderflex to create a much cleaner mount with more accurate 35 degree angle bends. The sensors attach to the mount using velcro.
The base of the robot utilizes the chassis and arduino boards used in the Carduino project. Also, I attached three ultrasonic sensors on the front of the robot, which Roomy uses to scan his surroundings. One sensor is facing forward and the other two are to the left and right of the center sensor, rotated about 35 degrees.
Roomy |
Operation:
Roomy has been working pretty well lately. He drives around fairly smoothly, avoiding most obstacles. When he does become trapped, he almost always is able to free himself. Also, the robot tends to often travel through similar paths throughout the house, even if the starting place is difference. These patterns are likely just because of the geometry of the rooms.
As you can see in the video, Roomy still hits a lot of stuff but he almost always frees himself. (Except for that one chair leg)
Ultrasonic sensors are an extremely valuable tool, but aren't very accurate. I learned that they work best against flat surfaces. This meant that when approaching an obstacle at certain angles, Roomy often would ram into a wall after not detecting it. The addition of two ultrasonic sensors (see diagram) and a few new lines of code allows Roomy to detect angles much easier, as there is a greater likelihood that at least one sensor will be facing a flat side.
Sensor Mount Design |
Also, Roomy can often become stuck if there is an object too low or high that the ultrasonic sensors don't detect. One idea to fix this problem is to add force sensitive resistors or buttons to the sides of the robot as a secondary sensor system.
Roomy's other major flaw is that he can't detect sharp drops such as stairs. A downward facing ultrasonic sensor at the front of the robot could be implemented to easily fix this issue. Whenever it detects a sharp drop it could throw the motors into reverse to avoid falling. The only issue here would be reaction time. The wheels are fairly far forward on the robot, so Roomy may not stop in time.
Personification:
If you haven't noticed yet, Roomy has been pretty personified. The ultrasonic sensors' inaccuracy creates occasional oddities, making Roomy seem to have his own personality. Combined with eye shaped sensors, Roomy seems very emotive. When Roomy successfully navigates through a difficult area or frees himself from being stuck, I find that I'm proud of Roomy instead of my own coding and building. Also, when I've shown the robot to family and friends they also quickly bond with Roomy and talk to and about him like a pet.
Updates:
Better Sensor Mount
The original ultrasonic mount was made from a bent piece of pie tin, which was not very precise and also looks pretty sketch. I used a bendable plastic material called Wonderflex to create a much cleaner mount with more accurate 35 degree angle bends. The sensors attach to the mount using velcro.
New Sensor Mount |
May 05, 2016
How to Make a Radio Controlled Arduino Robot (Carduino)
This is my first How-To video. It took a lot of work to make the video, but it was a pretty fun experience overall. It has definitely improved my film-making abilities by teaching me better looking and more efficient ways to shoot a video.
March 15, 2016
Science Palooza
Every year, the Science National Honors Society at my school hosts an event called "Science Palooza." There are multiple booths set up in the gym featuring many STEM related attractions. This year the robotics club has been allotted a much larger amount of space than normal, so we are in the process of coming up with multiple projects to present. I am in the process of planning out the different booths that the club will present. So far we have booths that involve a Facetime Robot, 3D printers, a robotic arm, a robot coding station, and a robotic sumo fight arena.
February 26, 2016
Project #4: FaceTime Robot
Every year, the Science National Honors Society at my school hosts an event called "Science Palooza." There are multiple booths set up in the gym featuring many STEM related attractions. This year the robotics club has been allotted a much larger amount of space than normal, so we are in the process of coming up with multiple projects to present. One of our projects will be a FaceTime robot. The Facetime robot will hold an iPhone equipped with Facetime. Students will be able to drive the robot from a control station in the gym and interact with other students using Facetime. We considered using other video methods such as first person view cameras, but eventually decided to use Facetime because of its intuitive two-way video communication.
Building Process
Day 1:
Original Design
The robot is about 2 feet wide, 2 feet long, and 5 feet tall. The Facetime robot is constructed mainly from robotics components that our team used in this year's First Tech Challenge (FTC) robotics competition.
Starting from the bottom, the robot has four wheels. The back two are powered by DC motors and the front are idle. The bottom foot or so of the robot is a square chassis containing most of the robot's electronic components. A tall post that supports the phone is on top of the chassis, and is supported by two diagonal beams. A two-axis servo system which allows 180 degrees of camera motion in two directions, is on top of the post. The phone is secured to the servo system with a phone mount.
One major foreseeable problem will be the robot's top-heaviness. This can be remedied with the addition of a counter-weight added in the chassis of the robot.
Day 2:
Building the chassis:
I assembled the chassis and attached motors and wheels. The back two wheels are powered by DC motors while the front two are idle. I was able to attach the first section of the post today.
Day 3:
Got through most of the wiring:
We installed electronic components left over from this year's robotics competition.
Finished building:
We increased the height of the camera post and began work on the 2-axis servo system.
Day 4:
Coded the robot:
My friend Brendan programmed the robot's controls using Android Java and FTC phones. The two ZTE phones used in the robotics competition act as a transmitter and receiver for the robot. Currently the robot moves using tank controls. This means that the left and right joysticks control the left and right motors respectively.
Set up the servo system:
Today we coded the controls for the servo system. The bottom servo controls horizontal orientation of the phone, and the top servo controls vertical orientation. The phone mount will be secured to the vertical servo.
Two Axis Servo System |
Day 5:
Created a phone mount that is attached to the servo system:
The phone mount is made with Tetrix parts from the FTC robotics competition. Three tabs press on the left, right, and bottom sides of the phone. The pieces happened to be spaced perfectly enough to snugly and safely fit the iPhone. We tested this system and it works!
Phone Mount |
Test and Fix Code:
We tested the robot's driving controls and noticed that it was acting very odd, starting and stopping randomly and spinning in circles. We've determined that it was due to kinks in the wires and a bad core power module. We relieved strains on the wires and now it is working intermittently.
Day 6:
Fixed Code:
The Robot is driving correctly now. We discovered that there was a code issue in which we mixed up which axis controls motors on the joystick, causing irregular driving controls.
Day 7:
New Wheels:
When the robot makes a swing turn it experiences a fair amount of bumpiness. We are fixing this by installing front omni wheels. Omni wheels are shaped like normal wheels but also have incremented sideways rollers which allows the robot to turn much better. We also will attach wheels with less traction on the back, as high traction is likely another cause of the rough turns. However, the back wheels will be slightly larger than the omni wheels, so the robot will have a slight tilt. We can fix this problem by adding spacers on one side of the robot, increasing the height of the lower side.
Day 8:
Fixed Tilt:
I added spacers on one side of the robot's frame, which removed the tilt.
Reduced Bumpiness:
Whenever the robot drove, the phone post shook a lot. We fixed this by adding structural supports on all sides of the post.
Added Weight:
We also have added a weight in the chassis of the robot to decrease the chance of the robot tipping over.
Day 9:
Removed One Servo:
I removed one of the servos because the horizontal axis increased camera-shake and made it difficult to figure out which direction is forward. Now the phone can only look up and down, which actually improves the driver's experience.
Wide Angle:
Improve Controls in Future:
We also plan to make the controls more intuitive. Currently each stick controls the throttle of one motor. The new plan would be to have one stick control the throttle of both wheels and the other stick would control steering.
Day 10:
Tried to Secure Wheels:
We tried to change the wheels to make them more secure, because one of them fell off during a test drive. However, most of our motor mounts are slightly too large for the motor. We may switch out to an older motor but this would require a different motor controller.
Day 11:
Secured Wheels:
We attached the wheels successfully! They are secure and the robot can now drive around! We were able to do our first long range test today.
Long Range Test #1:
We had our first long range test run and it was a huge success! It lasted for about 20 minutes and we were able to get at least 100 yards range (we haven't been able to test farther). The robot never went out of range and I was even able to interact with other people fairly easily through the robot. The controls are still clumsy and the robot shakes when turning, but the experience overall was really great. A long range test also made clear some features that I should add.
Features that need to be added:
-Fisheye lens: I have a small fish-eye lens designed for iphone usage, but I need to make a front facing mount. This shouldn't be too hard.
-Servo controlled arm: An arm that can push elevator buttons would make this robot unstoppable.
-Centered camera: Currently the camera is mounted on the left side of the central post. If the post is moved to the right slightly then the phone will be perfectly centered.
Day 12:
Fish-Eye Lens:
I created a fish-eye lens mount for the front-facing camera, which increases the driver's the field of view. However, when tested on the robot it did not work perfectly. We are working a more official design of this lens mount using 3D modeling and a 3D printer.
Fish-Eye lens |
Day 13:
Centered Camera:
I centered the phone mount by moving the most to the left slightly.
Generally Bad Controls:
The tank controls feel unnatural and make driving the robot difficult. We are still working on implementing the new controls discussed earlier. Also, turning is still pretty bumpy. The omni wheels may actually be increasing this bumpiness, so we will test with smoother wheels again.
Finally, it should be noted that the robot can easily tip if hooked up to a full battery.
Day 14:
Fixed Controls:
Brendan and I fixed the controls, so now the robot is much more controllable.
Unstable:
When the robot is on full battery it can flip easily. Brendan set the speed to half in the tank tread controls, which prevented tipping. not tip. I think that bit of code wasn't transferred over.
Wheels Bumpy:
The front wheels are consistently bumpy. Both omni and normal wheels experience pretty severe shaking when turning. We're going to try to bring in caster wheels and try those out in hopes that they allow for better turning.
New Fisheye mount:
My friend Clay modeled and 3D printed a new fisheye lens mount for the robot. We will figure out how to mount it after we fix the bumpiness issue.
Day 15:
Caster wheels:
I brought some small caster wheels (front shopping cart wheels) to replace the front wheels. However, the wheels make the robot very unstable. We are going to try to move them forward to prevent tipping. These wheels should be able to make the robot turn much more smoothly.
Original Caster Wheel Setup |
I moved the casters forward and now the robot turns very smoothly and maintains its stability!
Updated Caster Design |
Day 16:
Fisheye Lens:
We created a mount for the fish-eye lens that holds it to the phone. This lens increases the field of view, dramatically improving the driving experience.
Phone with the new fisheye mount |
Driving Test:
I test drove the robot around the hallway and the driving experience was amazing. The lens increased my field of view and confidence while driving, as I had a much better idea of my surroundings. Also, the casters make driving much smoother, so camera shake was a very minimal problem. This was the first time where I almost forgot that I was actually driving a robot.
Day 17:
Preventing Tipping:
The new caster design prevents tipping in the front, but the robot can still easily fall over on its back. To prevent this I've installed two bars just above the bottom of the wheels that will hit the ground before the robot tips over enough to fall.
Booth Design
January 16, 2016
January 08, 2016
Mini-Project #2: Overhead Desk Rig
I've had a lot of fun making the videos for these projects. In the videos I usually include a stop-motion section where I explain the process that I went through in the creation of the project. Although, my current process for stop motion is pretty tedious.
The current process:
The goal of this project was to make an overhead rig that allows me to easily and quickly take pictures or videos from directly above my desk.
Here's how it works:
I arranged PVC pipes in a "table" shape. On top of the PVC pipes is a wooden plank that holds the phone, a light, and a mirror that is used to see the phone screen while sitting at my desk. Also, I have a small Bluetooth button that controls the shutter on my phone. The phone and the mirror rest on top of the plank, while the light is held on the bottom by rubber bands.
The current process:
- Draw a few lines of the drawing on a piece of paper
- Get out my phone and open the camera app
- Frame the shot
- Take a picture of the piece of paper
- Repeat
The goal of this project was to make an overhead rig that allows me to easily and quickly take pictures or videos from directly above my desk.
Here's how it works:
I arranged PVC pipes in a "table" shape. On top of the PVC pipes is a wooden plank that holds the phone, a light, and a mirror that is used to see the phone screen while sitting at my desk. Also, I have a small Bluetooth button that controls the shutter on my phone. The phone and the mirror rest on top of the plank, while the light is held on the bottom by rubber bands.
Full Shot of the Rig |
My POV of the mirror that reflects the phone screen |
January 03, 2016
Project #1: Sonar Sketch
The goal of this project was to turn my desk into a digital drawing board. I used four
ultrasonic sensors connected to an Arduino Mega, which sent data to Processing.
Arduino Code
Processing Code
December 22, 2015
Mini-Project #1: Arduino Drum Kit (Kind Of)
Today I made a small Arduino drum kit using a passive speaker and four force sensitive resistors. The force sensitive resistors basically just act as flat buttons that trigger a certain tone. The duration of the tone is dependent on how long you hold down one of the resistors. I honestly did this project so that I could get some practice on making videos for projects.
Youtube video of this project.
December 15, 2015
Yoyoyoyoyoyoyoyoyo
Yoyoyoyoyoyoyoyo!
Welcome to Sam's Neat Project Blog. I'll post neat projects that I do here.
Disclaimer:
I mean neat as in cool, not clean and organized. My projects get kind of messy sometimes.
-Sam
Subscribe to:
Posts (Atom)