Båt Autopilot - baserat på Arduino (3 / 13 steg)
Steg 3: Prototyp #2
Jag var nöjd med framgången med den första prototypen, så jag beslöt att göra en secound en avsikt att sätta den på en båt. De flesta av ändringarna i denna autopilot var mjukvaran baserat. Målen för denna prototyp var att:
- Resa till en uppsättning av GPS-koordinater
- Kör autopiloten på ett batteri
- Test och registrera autopilot data
Jag gjorde några ändringar i den fysiska strukturen av autopiloten. Jag la en ProtoSheild, som ansluts till Arduino och har en liten skärbräda på den. Jag flyttade dit kompassen. Jag också bifogas en ny plywood bas alla autopilot komponenter och sätta det plywood basen inuti en smörgås behållare.
Jag försökte också lägga en RC mottagare till denna autopilot, men jag lyckades inte på grund av space begränsning inuti det behållaren.
Resa till GPS koordinater
Jag programmerade Arduino med en skiss som förvandlar rodret för att resa till nästa waypoint. Skissen används GPS för att beräkna bäringen till varje waypoint, sedan jämfört det med kompassen, och skillnaden mellan två var felet. Om felet var till höger, 90 grader, skulle sedan rodret vända sig till 60 grader. Om felet var till vänster, 270 grader, skulle sedan rodret vända sig till 120 grader. Om felet var mellan 330 och 30 grader (rakt fram), skulle rodret slå sedan exponentiellt för att hålla att gå rakt.
Allt detta skulle hända i en slinga liknar detta en (denna kod är överdriven):
samtidigt (distanceInMeters (gpslat, gpslong, waypointlat, waypointlong) < 5) {
int uthärda = GetBearing();
int rubrik = GetHeading (gpslat, gpslong, waypointlat, waypointlong);
försedda med = RealBearing (gpslat, gpslong, uthärda);
RudderTurn (RudderAngle (bär, rubrik));
}
Här är en "engelska" förklaring till koden ovan: om avståndet mellan dig och waypointen är mer än fem meter, sedan beräkna den som bär på kompassen, bäring till waypoint, få riktiga bäring på kompassen, då skicka två lagren till funktionen RudderTurn som beräknas felet och visar rodret därmed.
Lägga till ett batteri
Lägga till ett batteri för att driva Arduino var enkel. Det finns en Vin pin på Arduino Uno. Det accepterar upp till 20 volt DC. Jag hade en 12.6v, 3 cell, litiumbatteri liggandes, så jag gjorde helt enkelt en kontakt som gick från batteriet till Vin stift.