Today's the day!If you don't remember the Betsy Smith from last year, here is a reminder. In our family, the tradition is to bring each kid once they are 13-14 to the world-famous Beaver Island in Lake Michigan. And after five attempts from five different children, we failed to find the 149-year-old Betsy Smith that sunk in Little Iron Ore Bay off the south end of the island. But as i said, today's the day. The best way to explain it all is in video. The first video is shipwreck footage shot from the bottom of the Sea Lemon autonomous boat as it heads into the deep water. The waves were very rough and the sediment was stirred into the water making it cloudy, although it got clearer as it got further from shore. We had to overcome some unforeseen adversities as explained in the second video. We finally found the Betsy! Unfortunately we did not see it in person but we at least were able to see it through a video. We were honestly so amazed the Sea Lemon came back through such rough seas. We think we may want to add a keel or even make our own boat to overcome waves, but that is all for the future.
Beaver island is a great place and I strongly recommend you come out here and rent a Geo Tracker!
4 Comments
We're back for another post! Remember how we mounted the SQ18 camera to the boat on the recent Belleville lake run? Well our idea was to position the camera to look underwater at the Betsy Smith. We had three ideas:
We chose the 2nd option because it was easy to make. Obviously the 1st option would be cool and stable but we thought it would be hard to make since we would need to make sure it stayed upright using weights and ballasts. The 3rd option would be really nice for solar panels in the future. Heres how the 2nd option turned out: As you can see, we left a bit of metal sticking out for if we want to use a trailer. So we are here at the Beave and we wanted to test it out before we send it to the Betsy Smith. We decided to pick a route that avoided weeds but goes around the harbor in an interesting path We launched the boat and watched it slowly make its way to the other end of the harbor for a while, but then we had to move fast. You see, when we go to Beaver Island we only bring bikes, and we had to make it around to the public beach before the boat did. While we were pedaling, we thought we saw the boat off in the distance. But when we got to the beach, it was no where to be seen. My dad had to go get the binoculars to try and spot the boat. After a few minutes of panicking, my dad came back and we spotted the boat. It was hard to see but it was coming towards us. It barely missed some reeds sticking out of the water but it ended up coming towards us. But there was a problem. There are buoys that line the public beach with one end open for kayaks. We were headed straight for the rope that marked the end of the beach. The boat got caught up on the rope and got stuck. We were pondering what to do since we were both in clothes. My dad ended up having to walk into the water all the way to the boat. The water ended up getting a little below his shoulders but he ended up getting the boat out of the water. We recovered the boat and looked at the data. We got amazing camera footage but we only got 3/4 of the footage. We think maybe the drive formatting wasn't good. Anyway, here is the footage that actually looked good. Be sure to turn down the volume on your computer. The reason i say GOOD footage is because most of it was really deep. If you look on google maps you can see that the water goes from 3 ft down to 51 feet relatively quickly.
We will post again soon once we take a run at the Betsy Smith. Stay tuned! Ezra and my Dad are currently at Beaver Island, which is the same island I visited last year, so I (Malachi) am the only one making this post. That means ZERO restrictions! Ha! Just kidding. So the main reason we haven't exactly posted, is because there hasn't been any serious progress done on the boat. We had an error with the throttle, as well as the steering, and ninety percent of that is just trouble shooting. For some reason, the prior programs are not working. We think the water that damaged the arduino and forced us to make a new computer also might have damaged either the motor or the ESC (Electronic Speed COntrol). If the throttle setting is less than 90 or so, the prop does not spin. Remember the throttle setting goes from 0 -180, like a servo from 0 degrees to 180 degrees. HOWEVER, we did manage to get the boat working again. We modified the program when it wakes up and does a prop test to spin at much higher speeds and then never set throttle below 90. If it does, the motor will not spin again until we reboot. Not only did we get the program working again we added new features. Instead of turning the prop off after the prop test, we start looking at GPS HDOP (Horizontal Degree of Precision) which is a measure of GPS accuracy, and when we get a GPS lock and HDOP is <600, we spin up the prop for 3 seconds so we know we have a lock. Then we don't put the boat in the water without a lock and have it drive in circles, or worse yet, drive off. We don't know why the throttle has to be higher than 90. We tried recalibrating the ESC but nothing works. Still, for finding the Betsy Smith we have a working boat. We also didn't want our arduino to get water damaged in future, even though all the chips are now socketed for easy replacement. Ezra taped a ziploc bag in the roof of the boat, so the arduino has a dry location. To test it all, we sent the boat on a test route around an island at a local lake. For this test we added a 1080P camera. It's a cool little camera off ebay called a SQ18. My Dad loves it because it only cost him 20 bucks. My older brother Noah, who is always looking for an excuse to fly his drone, took some great footage. Here is a video of it: Here is the route we used. It took about 20 minutes to complete... Or so I remember? The speed data from GPS showed around 5 mph at the start and dropping to close to 4mph. On return, the battery was about 40% capacity. Expect an update from beaver island soon. My brother is attempting to find the Betsy Smith, which in the case you don't remember what that is from last year, it is simply a sunken ship that we attempt to find every time a new kid goes to the island.
We are finally back and we have been working behind the scenes, even if it is just to get back to where we were. If you couldn't realize, this is Ezra writing and like every kid in my family i am going to beaver island this year! That means i am the last of six in my family to search once again for the Betsy Smith which also means we are probably going to work really hard this year to find it. Anyway, let me fill you in. The bad news is that we had to remake the boat computer. The good news is that it is socketed to make sure we don't have to do it again! Here is the story. One month ago we thought maybe we should work on the boat again, but unfortunately figured out that all four of the major arduino functions didn't work: rudder, prop, navigation, and SD card storage. But thankfully that is all fixed now! We bought cheap Chinese arduino nanos but Unfortunately we could not upload anything! We looked up some of the issues other people were having and none of the solutions worked. We tried the new bootloader, the old one, different programmers, different ports, boards, ETC. We ended up trying to burn a bootloader but even that didn't work. We even tried getting a legit arduino nano. Until finally, we realized that two strips of wire were connected to eachother. This was a huge relief because that particular issue took a long time and our motivation levels plummeted causing us to rarely work on it. This fixed the problem but we had to socket it which required a whole new rebuild, which you can see below. This is our current state. We have a completely functioning arduino now. We tested it the day of writing this and all four functions worked. We ran it and the SD card initialized. We instantly received NMEA (GPS language) sentences. The only problem is that we didn't get coordinates even after a few minutes of waiting, although once we took it outside it started to get a lock and everything worked fine. Once we mounted it on the boat and plugged it in, the rudder and prop also worked.
I think that the next step is to test it then "solarize" it but the main goal this year is to get it to the Betsy Smith. What a cliff hanger! We haven't posted in a while for unknown reasons, but it is finally here! The moment you have all been waiting for! We failed. Here is a video that I slapped together in about five minutes. And yeah, I know how to spell circling. We threw the boat into the water (We didn't throw it. We placed it into the water) and we turned it on. It began circling without end. We tried moving the GPS, resetting the boat, checking the battery, and all that. It didn't work. We then had to rely on the traditional way of swimming out to find it... IF WE COULD have, but my dad said it was too cold. Please comment "Dad is big meanie"
We got lucky and some guy gave us kayaks (Lee Ermey bless his soul) and we went out there to find it, but we never did. We probably went right over it. We could have found it if we: 1. Had a waterproof pouch for a GPS or phone. 2. Had more time. The last thing I said on the car ride was "My disappointment is immeasurable.... And my day is ruined..." (yes it's a reference to something.) See you guys in a bit. We plan on working on the boat a bit more later. It is a family tradition to travel to an island called "Beaver Island" for each kid who becomes a teen. Off the coast of beaver island is a bay called "Iron Ore Bay". The reason it is called Iron Ore Bay is because an iron ore carrier by the name of "Betsy Smith" sank there and caused the entire body of water within the bay to become red with rust from the iron. It is part of the tradition for each kid to go diving to find the Betsy Smith, and to this day, no one has ever found it. I, Malachi, am on Beaver Island as I write this, and tomorrow I plan to be the first to find this with the help of the sea lemon. I am planning on having the sea lemon circle above the wreck of the ship and letting me snorkel it. BETSY SMITH Official no. : 2852 Type at loss : schooner-barge, wood Build info : 1873, Bailey Bros, Toledo Specs : 201x37x17, 723 t. Date of loss : 1873, Nov (7) Place of loss : Beaver Island Lake : Michigan Type of loss : storm Loss of life : none mentioned Carrying : 1,500 t. iron ore (thats a lot lol) Detail : Soon after leaving Escanaba, her tow steamer J. KELLEY became disabled, and the SMITH raised her sails and towed the steamer back in. She then struck off on her own, but was overtaken by a storm. Picked up by the steamer ANNIE YOUNG, she soon broke loose and was driven ashore. Wreckers put the largest available pumps aboard to try to pump her out, but to no avail. Owner: Shepherd, Henry & Co. As of the end of the season she was still on the beach. We are out here with life jackets and inflatables. We are planning on renting a Jeep and riding out to the south end of the island tomorrow. We already programmed the coordinates of the Betsy Smith, from google earth, into the sea lemon. We'll start it up and follow it to the Betsy.
Check back tomorrow for pictures and maybe a video of a ship that has been under the waves for one hundred and forty years. So we recently added a new prop to our boat so we could achieve a higher speed at lower power. When we brought it to our pond to test it, there was a catastrophic failure in boat. We don't really know what happened, but the boat just stopped moving mid way in the pond. We tried retrieving it by grabbing it with our tree saw, but it was not long enough. We decided to wait till the next morning to pick it up once it drifted to shore. When we (meaning my dad,) picked it up, it was full of water. Not everything was ruined since mostly everything in there was waterproof, but we did lose the Arduino. We decided to remake the arduino with a "nano arduino". There were a few errors, but we managed to get it working like the old one. The new navigation system is about one third the size and weight of the old one, so I guess that is quite an improvement. Although the old boat's brain has died, it still has its old heart. <3
Yes, this project is now officially called "Operation sea lemon". I made this video in Sony Vegas pro. Some of it is made to go faster so you don't waste time, so don't think that the boat is traveling at light speed. After taking a long break from working and an even longer break from posting on this blog, finally got our navigation working. We can now place waypoints that our boat can drive directly to using GPS coordinates. We loaded a library in arduino that allows the boat knows the distance between itself and the waypoint it is trying to reach. The boat can also tell which direction it is going, and the way it should be going allowing it to correct its course. The more its off, the more the rudder turns to correct it. Lets just say that its 5 degrees off its course. It will turn the rudder about 1 degree to correct it until its headed the right way again. Because it can calculate the distance between the boat and the waypoint, we set it to where the boat will stop following the current waypoint if it is within 20 feet and start following the next waypoint on the list. We tested the boat on our local pond and on a very small and busy lake a distance from us. Before on the lake, we walked the boat on land to see if it had a working navigation algorithm. Here are some photos that can satisfy your hunger for visuals: Heres the code for the navigation if you want it: ![]()
We plan on uploading an actual video tomorrow of the boat navigating. Stay tuned.
We needed to measure the power used by the boat at various power levels. The power used in Watts is equal to the current in Amps, multiplied by the Voltage in Volts. Power (Watts) = Voltage (Volts) X Current (Amps) We can use our multimeter to measure the voltage coming out of the battery. To measure current , we used a shunt resistor that has very low resistance so it doesn't slow the current down, but it creates a little voltage drop that we can measure with our multimeter. So we soldered connectors onto some wire and wired up our shunt resistor in series with the battery. We then took voltage and current readings at various power levels. Here is the shunt resistor: The shunt resistor has a stamp on it so you know that at 75mV you are seeing 5A.
So to calculate current through the shunt, you divide the mV by 75, then multiply by 5A to get current. When we took the readings, the voltage out of the battery was 7.6 V. So to calculate Power, you multiply the shunt current by 7.6 V. Here is the data we took: Power Level mV Amps Power (Watts) 27 7.5 0.5 3.8 29 10 0.67 5.1 31 12 0.8 6.1 33 15 1.0 7.6 35 18 1.2 9.1 This is enormously bad news!!! The boat will go 1.0 mph at power of 33, but will use 7.6Watts of power to do this... This will make it very difficult to make the boat solar and be able to maintain power through a whole 24 hours... we just cannot generate that much solar energy on this small boat. We might need a bigger boat that can carry more solar area to make the long trip. We will need to think about this. We are moving on to the navigation problem and we'll come back to this whole power issue. In the previous post we talked about how we loaded the boat and used the Arduino to measure the boat speed at different power levels. Our hope is that we can achieve 3 mph to overcome the currents of Lake Michigan, while using only 3 watts of power. Here is the data we recorded. ![]() This shows that when the boat is carrying 1090g of payload, it will go:
This is slower than we had hoped. We have no idea how many watts the boat is using at each power setting, so that is next. Yeah, It's a boat. It can move on the surface of water. Aside from that, we tested the different speeds at different power levels. When we go on our big mission, the boat will be a lot heavier because it will use solar power. We need to know the speed with all that electronics on board. We weighed all the parts and equipment in the boat, and found that all of them combined weighed roughly 1090 grams. That's pretty much 2 pounds, which is quite a bit more then what we expected. Here's all the parts that added weight: Solar cells (x5) 475 grams Batteries (x8) 360g Battery holders (x2) 60g Solar charger controller (x1) 33g Cell phone/Satellite phone (x1) 162g ---------------------------------------------------------- Total: 1090 grams When we sent the boat out into the water, we didn't quite slap all this junk into it. We actually slapped in about 1090 grams of screws in two bags. We tried two different power levels. We were targeting 3 miles per hour or more, and at 43 power, it was just right.
The next thing we plan on doing is figuring out how much power it takes in Watts to run at power level 43, so stay tuned! Incase you don't know, (or i haven't mentioned it,) we actually have an issue with the compass sensor. The compass sensor we currently have won't actually work. Because it uses magnets, it will receive interference from the magnetic (brushless) electric motor. We are actually unsure if this is going to be a problem, but either way we need some type of backup. What we ended up doing was seeing if the GPS could see its heading. It actually could see its heading even at walking speeds. We tested this by walking around our neighborhood while carrying the arduino. If the arduino can get this heading from the GPS module, then we could use this to code the rudder to steer the boat.
The thing we are most nervous about is the propeller shaft running out of grease... The grease has an extra purpose: To keep the water from coming up the shaft and flooding the whole boat... It does the same things as normal grease too, such as protecting the shaft from wearing out. But this grease only lasts so long and when it runs out? The arduino will wish it had a bathing suit. So we went to buy some grease... It turned out to be blue... so then we started testing it by, of course, greasing it all up we readied the boat up with some pliers to account for the added weight of solar cells and a sat-phone, and put it into a large lake (the tub) and left it for 30 minutes. The motor stopped when the battery ran short... It worked out though We did it a second time. It lasted 1 3/4hours. Long story short, The boat was fine. The shaft? Oh, yeah... It seemed, "different". the grease turned dirty and milky and was a gray-green color and The rest of the shaft was almost out of grease. We need this to last a week... That won't work... So we have some ideas like making a silicone seal or using an o-ring... We also thought about an arduino pump or making the compartment sealed so the water can't get in... We will see! We separated the code into an ESC calibration program that only needs to run once, then a durability test program. The slowest the propellor would turn was when the power level was 27 degrees. Not sure why this is... 27 degrees on a scale from 0 to 180 is 15% power, but the motor doesn't turn at lower power levels than that. Here is the code for the calibration program: #include <Servo.h> /* * 1. Set the throttle trim and sub-trim to neutral or zero. * 2. Move the throttle stick to full throttle, turn on the transmitter. * 3. Plug the ESC to the Receiver, then Plug the battery to ESC. * 4. After 2 seconds, it will have 2 short beep, than pull down the Throttle Joystick to the down position. * 5. Unplug the battery, restart the ESC. * * download to Arduino and plug in battery. After two seconds and two beeps, power D0 pin to 5V, then unplug battery * it appears that ESC1(27) is the lowest speed the motor will turn at based on this calibration. * Any program MUST write a zero value to ESC1 in setup to guarentee the ESC is not recalibrated */ Servo ESC1; // create servo object to control a servo Servo rudder; // create servo object to control a servo int throttle = 0; // variable to store the ESC throttle setting -- max 180, min 0 int pos = 60; // variable to store the servo position int val = 0; // variable to store the read value of pin d0 void setup() { rudder.attach(10); // attaches the servo on pin 10 to the servo object ESC1.attach(9); // attaches the servo on pin 9 to the servo object pinMode(0, INPUT); // sets the digital pin 0 as input so it can be used as a switch ESC1.write(180); // calibrate ESC -- max throttle immdiately upon waking up } void loop() { val = digitalRead(0); // read digital pin 0 while(val=1){ ESC1.write(0); // calibrate ESC -- min throttle for 2 seconds delay(500); } } Here is the durability program. It runs the motor at 27 degrees (on a scale from 0 to 180 degrees) then cycles the rudder once a minute: #include <Servo.h>
/* this program assumes the ESC has been calibrated */ Servo ESC1; // create servo object to control a servo Servo rudder; // create servo object to control a servo int throttle = 0; // variable to store the ESC throttle setting -- max 180, min 0 int pos = 60; // variable to store the servo position void setup() { rudder.attach(10); // attaches the servo on pin 10 to the servo object ESC1.attach(9); // attaches the servo on pin 9 to the servo object ESC1.write(0); // write 0 to ESC to avoid recalibrating delay(8000); // delay to get everything powered for (throttle = 0; throttle <= 27; throttle += 9) { // goes from 0 degrees to 180 degrees - throttle blip appears to initialize ESC, 27 degrees ESC almost 0 power ESC1.write(throttle); // tell servo to go to position in variable 'throttle' delay(2000); // waits 20ms for the servo to reach the position } for (throttle = 36; throttle >= 27; throttle -= 3) { // goes from 180 degrees to 0 degrees ESC1.write(throttle); // tell servo to go to position in variable 'throttle' delay(2000); // waits 20ms for the servo to reach the position } } void loop() { throttle = 33; ESC1.write(throttle); // provide low power to ESC delay(60000); // move rudder once per mintute for (pos = 60; pos <= 120; pos += 1) { // move rudder from 60 to 120 degrees // in steps of 1 degree rudder.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } for (pos = 120; pos >= 60; pos -= 1) { // move rudder from 120 to 60 degrees rudder.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } } |
AuthorMalachi and Ezra's page where we build cool stuff and either break it, set fire to it, etc. in the name of science. Archives
August 2019
Categories
All
|