Skip to content

Latest commit

 

History

History
41 lines (36 loc) · 15.2 KB

README.md

File metadata and controls

41 lines (36 loc) · 15.2 KB

R.S.P.

The Robotic Snow Plow is a robot that uses a raspberry pi microprocessor to shovel a user's driveway while they are inside their own residence.

Working Demo: https://www.youtube.com/watch?v=4ujWAwa2vso

Motivation: Experiencing Canadian winters has its own charm with snow covering the coniferous trees, houses and smoke arising from the chimneys and exhausts from the central heating system. Snow covered houses, trees and streets brings alive the memory of Christmas and Santa Claus. However, if you look beyond the pure white coat of snow you will see something dangerous that claims several lives each year. Most people see snow removal as just another household chore but it can get very dangerous if you don’t be careful. All of that bending and lifting of heavy snow can put you at risk for injury and place a considerable amount of stress on the heart. According to 2013 US Consumer Product Safety approximately 28 000 people were treated in hospital emergency rooms for injuries that happened while shoveling or removing ice and snow. The US Consumer Product Safety is not the only organization that has recorded thousands of injuries due to snow removal. On January 20, 2011 WebMD News recorded 11 500 adults and children that were injured from snow removal. They also realized that between 1990 and 2006, 195 000 people were injured from shoveling snow. When I was little I was also a victim to shoveling snow. One day, I was shoveling snow and one brick was raised higher than another. The shovel hit the side of the brick and the handle of the shovel hit me in the mouth. This incident chipped my front tooth that is still chipped to this day. I had a minor injury, but I am sure everyone in Canada has their own story to being a victim to snow. Some injuries might be worse than others but they are all still injuries. This lead me to realize that there must be something, that can solve this problem and it lead me to create The Robotic Snow Plow (or R.S.P. for short). The robotic snow plow can divided into five major components: (a) Mechanical part of Robotic Snow Plow (b) Battery and Electric Motors to motion, steering and lifting of the plow (c) Single Board Computer - Raspberry, wi-fi, LED Flashing Lights and Cameras (d) Program to control the Snow Mobile using Python (e) Mobile web App to run on smartphone to control the snow plow using Html 5.

Building of Snow Plow Body: The first thing that I needed for construction was a Yamaha ATV 700R. I got this product from an auction for $20. I first removed the plastic cover of the plow by removing the handle bars and gear shifts. Then I took out the pedals and made a box that went around the chassis of the ATV.. I covered this unit with the lid. The box was 21” x 37”. The platform was 50” x 17”.. The next stage was to make the plow. I could not curve the plywood so I decided to use a stacked approach which gave the plow more strength. I used four 81 cm x 8 cm pieces of wood and drilled them in two pairs so one part of one pair was horizontally overlapping the other by 2 cm. Then I drilled both pairs on opposite sides of a piece of wood that is 81 cm x 26 cm. The smaller piece will overlap the bigger piece by 3 cm. Then I cut two pieces of wood in house shape blocks and two strips of wood that are 21 cm x 3 cm. I then slid the metal pole from the pedals through the screw holes of the base. I attached the strips to the metal pole from the original ATV and attached a piece of wood in between them. Then I attached the house shaped blocks horizontally on the piece of wood in between with 3 cm in between the two blocks. Then I cut a half of a circle block and then I attached it on the plow and slid the half circle in between the two house shaped blocks. Then I drilled a screw threw the three pieces and bolted the screw loosely at the bottom. Beside the screw I drilled a hole and dropped a metal nail threw it. Then I turned the plow to the right and drilled a hole and to the left and drilled another hole. This let me be able to manually adjust the angle of the plow. Also I screwed a hook to the back of the plow. Then I put the winch on the front of the platform and made a pillar. I put a pulley at the top and the winch wire went on the pulley and attached to the hook at the back of the plow. Then I made a mount for the front camera by making two column on either side of the pulley and a small wooden beam that goes across and I drilled it down. I put the camera 38 inches above the ground because if I put it higher it would become unstable and blur and if I put it lower when the plow went up it may block the camera's view. Then I put a piece of wood for the rear camera mount at the back and cut it on a slant and drilled it to the lid. I also made a rectangular hole behind the camera mount at the back for the switches. I attached an extended platform to the back for the batteries. I also made the plow aluminum. I got an aluminum sheet and bent and shaped it for the plow. After it was bent and shaped I unscrewed the pieces of the front of the plow and moved the two pairs down ½ an inch and slid the aluminum on it. Then I unscrewed the back pairs again and move it to its original spot. This made the aluminum and wood tighten together. Battery and Electric Motors for motion, steering and lifting of the plow Ride-on kids ATV runs on 12 volt battery. Initially we used small motocycle 12V battery but it didn’t had enough capacity to run the snow plow. Also, I realized a problem when I was using this plow in my trial runs. When the battery of the plow became low the raspberry pi would reset itself and the connection would be lost. So to solve both the problems we used small 12V battery to drive Raspberry PI and full size 12 volt car battery to drive RSP motors. We also extended the back of the RSP to hold 2 additional batteries which can be connect in parallel thereby providing additional Ah capacity at 12 volts. As the same time the weight of the batteries help push RSP down and avoid spinning of the wheel. I re-wired the motors of the ATV to go through the relays which were connected to GPIO ports of Raspberry PI. Originally I used car window motors for the steering of the plow. However, I soon realized that the motors did not have enough power so I decided to use an electric actuator. I got an electric actuator from Princess Auto that fit into the steering handles and fixed the actuator by drilling it to the inside of the box I also added five LED lights for the plow by drilling four lights to the corners and one light one the pillar. We brought 12 winch from the Princess Auto to move the plough up and down and connected it through the relays. I put one switch between the battery and the motors and LED lights and second switch between battery and Raspberry PI through 12 volt – 5 volt converter Single Board Computer - Raspberry, Wi-Fi, LED Flashing Lights and Cameras I used a 12 to 5 volt converter to give power the Raspberry Pi. I also used a broken micro-USB charger to give power to the raspberry pi. Then I used a GPIO ribbon and M to M wires to connect the raspberry pi to the breadboard. (You will have to use choose your GPIO ports that you will program using the following website: https://code.google.com/p/webiopi/). I used relays because the motors draws to much power so the relay would isolate the pi and the motors. At first I connected the relays directly to the raspberry pi, then I soon realized the Raspberry Pi would burn because the feedback current from the relays would leak into the raspberry pi We burned two raspberry pies because of this. We used IC ULN2003APG to isolate Raspberry PI which solved the problem. I then wired the motors to the relays. I used (a) Two relays to control motors to move RPS forward and backward (b) Two relays to control steering left and right (c) Two relays to winch up and down (d) Four relays for the five color changing Flashing LED lights The raspberry pi had only two USB ports and it could not give enough power to run both the cameras so I used a powered USB hub. Then I placed the cameras on their respected mounts and taped them down and connect their USB to the hub and connected the output to the raspberry pi.
Program to control the RSP using Python I used Raspbian which is based on Ubuntu Linux. We downloaded the Raspbian image from http://raspberrypi.org. I used Win32 Diskimager from http://Sourceforge.net to write the Raspbian image on the micro SD card. I configured date, time, keyboard type, language for the Raspbian as part of installation process. Then I installed PHP and WebIOPI which includes the webserver and the pi wiring library. To access the raspberry pi from smartphones such as iphone we had to configure the raspberry pi to act as an access point as follows: (a) Install the Wi-Fi USB adapter which can act as an access point which includes a. installation and configuration of the Wi Fi USB driver including security configuration b. Configuration of TCP/IP with static address for Raspberry Pi. c. Install the DHCP server on the raspberry to give it an IP address to smart phones to connect to webiopi had to make a wireless hotspot using raspberry pi. I used http://sirlagz.net/2012/08/09/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-1/ and http://sirlagz.net/2012/08/09/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-3/ for configuring hotspot. I did not use part two because I did not want to have a bridged network. In this programming I had to download a DHCP server, dnsmasq, and hostapd to create a network. Then I had to program the webpage for the phone using html and python. Webiopi is a tool that can help you send messages to the relays. So I downloaded a sample from https://code.google.com/p/webiopi/ and used the sample to control the relays. I could also change the data in the html document that was in my file manager to let users understand the buttons, for example, if I wanted another button I would copy and paste the data of the previous button and then change its context. In webiopi you have to have your functions and ports which you can find the port using the same website. Then after you enter you ports match the port up to the bread board that is in the row connected to the specific motor you programmed the button for. You might want to re-wire the relay if the wires start tangling up though. The webiopi program was already programmed using python so I did not have to worry about the python programming. The programming for the camera was left. I used http://jacobsalmela.com/raspberry-pi-webcam-using-mjpg-streamer-over-internet/ for most of the programming for the cameras. I got two Creative Live Sync Cameras for this project. I checked online at http://elinux.org/RPi_USB_Webcams to see which cameras were capable with the raspberry pi. So I found these and decided to use them. I used the fswebcam program to test if the cameras can stream the video in a great quality and I used MJPG Streamer for the real casting. The fswebcam let took a quick snap shot and the MJPG Streamer took a live stream. The MJPG Streamer went to its own site and to put it in my html I used its image source which was located under the broadcast on the site. I copied and pasted it on my html document. Then I went to my second camera. I realized that the raspberry pi could not supply power for both cameras so I had to get a power hub which supplied the extra power. When I did my second camera, I made a silly mistake which caused me to lose a lot of time. The mistake was that the two cameras were connected to my SweetAcubeHome network while my computer was connected to Bell190 and I could not realize what was wrong and I lost three days. Then I realized the problem and connected to the network and it worked. The programming of the second camera went flawlessly after that. With that the project was done and I had to put it to the test on the real battlefield the next day which happened to be the coldest temperatures there was that year, it was “Super bowl Sunday!”

Super bowl Sunday was quite cold with snow and Windsor was under the weather. Literally Windsor was buried in 36 centimeters of snow. My plow was about to face one off the hardest test it could ever have. It had to go out in the blizzard and shovel 5000 square feet of a driveway full of snow. We did a trial the day before to see if it would work and it did about half the driveway before my phone lost connection. Then I realized I needed an adapter with more range so I got an Odroid Realtek RTL8188CUS-GR Wi-Fi dongle. This had double the range of the old Edimax Wi-Fi dongle which gave it a better camera view as well. Then I went to test it on Super bowl Sunday. The plow did a spectacular job it shoveled the whole driveway in 37 minutes. I went and did further testing to see how much weight it can push in how many seconds. I got bricks that were three pounds each and put them in front of the plow. The first test I did was with five bricks which came to a total of fifteen pounds. It took 10.3 seconds for the plow to pass the finish line which was nine feet away. The second run was with 7 bricks for a total of 21 pounds. It took 11.9 seconds to cross the finish line. The last run was with 9 bricks which I believe is its limit because it starts to stop in between. The plow pushed 27 pounds in 14.7 seconds. I concluded that the plow is great for shoveling snow in the United States and the provinces but I would need to make it stronger if it needed to go to the territories or the northern part of Russia. Then I did my final test to see how long the plow can run continuously. I tested it by making it continuously run with one car battery, it took 48 minutes. Then I used a second car battery and it took 89 minutes before it the batteries emptied. Then with a third battery took 125 minutes. I stopped after that because I figured the weight would start weighing it down. This helped me understand the fixed amount of batteries I should give the plow when I use it daily and if I sell it to the public. I would give the plow two car batteries which is I believe a sufficient amount because you don’t want it to go too fast to get out of control or to be slow. After this my testing was completed and my results were analyzed, the project that could help millions of people across the world was made.

Imagine, a world where most of our daily chores and heavy risk jobs are done by robots. This will be happening in the near future where single-board computers that are very low in cost will be programmed to do jobs that people would find impossible. The single boarded computers will have electric rechargeable batteries that are environmentally friendly. They will be wired to have systems that can learn from their surroundings. Some of these machines are already around us that most of us know about. For example, the nest thermostat will learn from how you change the temperature each day and adjust accordingly. I also plan to add a lawn mower to the bottom so in summer it can mow your lawn. The R.S.P. has the potential to be a part of those special robots that can improve our daily lives. In the future I plan to add ultrasonic sensors that will guide the machine to shovel your whole driveway for without you having to do a thing. This is the future ahead of the Robotic Snow Plow and one day everyone will have it shoveling their driveways or mowing their lawns without them having to do anything. Do you want the R.S.P.?