Coder Social home page Coder Social logo

yaaap's Introduction

YAAAP Yet Another Arduino AutoPilot

Yaaap is a simple autopilot for a sailboat using Arduino pro mini card and breakouts The interface is reduced to 3 buttons and an LCD display. The project was intended to replace the CPU of an old analog pilot Autohelm 2000 retaining the original electric actuator.

Modifications

I'm making several modifications to the original library: Pololu LSM303D as a tilt adjusted compass instead of 9dof IMU MPU9250 and RTIMUlib (done 9/2/18) Replacing LCD display with 128x32 OLED using Adafruit_SSD1306 and GFX libraries (done 11/3/18)

Next

what is the i2cdev.h library for? update the menu setup file for oled

Features

Heading is given by the 9dof IMU MPU9250 using the RTIMUlib for Arduino by Richards-Tech. RTIMUlib filter is especially effective to keep a steady course when the heel angle varies. I reduced the impact of magnetometer instability with a reduced SLERP value: fusion.setSlerpPower(0.001) The tiller actuator is the old cylinder from the original Autohelm 2000 tillerPilot (with Omron motor 2332 12V) Typical current for this motor is 1.6A. The cheap TB6612FNG can drive this motor with the 2 channels in parrallel (typical 2A to peak 6A). It can be replaced by a more powerfull driver like IBT_2 with BTN7970B. I dropped the usage of PWM with my old small motor. Minimal pulse is 10ms, increasing to continuous depending on the computed command(PID). There is no device to read the tiller position. Current to the motor is controlled to detect end of course or overload (ACS712). The interface is minimal, made of 3 buttons using OneButtons library https://github.com/mathertel/OneButton The LCD display is an I2C version.

Instructions

The device is fixed behind the tiller facing the route. Button 1 on the left: sarboard/less fonctions button 2 on center: select/run-standby fonctions Button 3 on the right: port/plus fonctions

Startup

On startup, after initialization, the device is on standby, bearing to the current direction. The display shows the status(Sby/Run), baering, heading and error (difference to baering).

Run

click once on button 2.

During run

click on button 1 or 3 increases (resp. decrease) 1 deg of bearing. long press on button 1 or 3 increases (resp. decreases) 20 deg of bearing long press on button 2 resets bearing to current heading long press on button 1 and 2 (starboard and select) to tack to starboard long press on button 3 and 2 (port and select) to tack to port double click on button 2 to stop motor and standby

During standby

long press button 1 push the tiller long press button 3 pull the tiller long press on button 2 resets bearing to current heading long press button 1 and 3 to enter setup

On setup first level

click 1(-) for dimmed backlight click 3(+) for full backlight click 2(sel) to enter setup menu

On setup menu

click 1(-) to go to previous menu item click 3(+) to go to next menu item click 2(sel) to select menu item

On setup item

click 1(-) to decrease value if applicable click 3(+) to increase value if applicable click 2(sel) to validate entry/value

Calibration

To calibrate the compass, chose the menu item, draw 8 with the device. The display shows the offsets. Click button 2 when OK.

Configuration saving

Go to the saving menu item and validate to write calibration and other parameters to EEPROM

yaaap's People

Contributors

filbip avatar odani avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.