--------------------------------------------------------------
* O N B O A R D * C O M P U T E R * S Y S T E M *
--------------------------------------------------------------
a complete navigation system / weather station / stereo system
* This page was last updated 28. April 2016 *
(this is the old version of the Onboard Computer System)
(for the new version follow this link)
-----

(If you have a good suggestion for a 10" sunlight readable touchscreen (preferably not too expensive) please send me an email)
I will continue to update this page as the project is progressing, some planned future features:
-- The current touchscreen is almost unreadable in direct sunlight and needs to be replaced --
-- A graphical interface for viewing location history/weather history and other data --
-- Create a custom theme for OpenCPN that fits with the rest of the system style --
-- Adding a second 15" screen (mounted inside) --
-- Adding UPS (for gracefully powering off the device with a physical button (cutting power)): UPS PIco --
-- Adding hydrophone: https://youtu.be/ouCVtEnsiR4 --
-- Adding sonar (depth transducer) --
-- Adding AIS receiver: dAISy AIS Receiver --
-- Adding wind speed/direction sensor --
-- Build a simple alarm system --
-- Adding bluetooth music streaming capability to the Pi (for acting as a bluetooth speaker) --
* Current features *
-----
-- Minimal stereo system --
-- 20x4 Character LCD information display --
-- 10" touchscreen --
-- Chartplotter --
-- Weather data visualization --
-- NMEA multiplexer --
-- Weather station --
-- Digital compass --
-- Digital clinometer --
-- Sunrise & sunset times for current position --
-- Automatic position logging --
-- Automatic weather logging --
-- Automatic webcam capture --
-- Automatic data synchronization with a server --
-- Automatic time synchronization with GPS --
-- Super Nintendo emulator --
-- PDF reader --
* Power consumption *
-----
Raspberry Pi - Minimum (touchscreen off / low cpu load): 3W / 0.25A
Raspberry Pi - Maximum (touchscreen on / high cpu load): 6W / 0.50A
MAX9744 Amplifier (normal usage): Aprox. 1.2W / 0.10A
Huawei B593s: Aprox. 12W / 1A
* Parts list *
-----
(this is just a list of the parts I used, most of these can be replaced with alternatives and a lot of them are optional)
-- Solar panel: IBC SoloSol 150 CS (150W) --
-- Solar charge regulator: Steca Solarix PRS 3030 Charge regulator --
-- 4G Wi-Fi Router: Huawei B593s --
-- Computer: Raspberry Pi 2 Model B --
-- Case: Adafruit Raspberry Pi 2 Case --
-- SD: Sandisk microSDHC 32gb --
-- Screen: Chalkboard Electronics 10" Touchscreen --
-- LCD: HD44780 20x4 Character LCD --
-- Wi-Fi module: Wi-Pi --
-- USB Hub: 7 ports USB Hub --
-- Webcam: Creative Live! Cam Chat HD --
-- GPS: GlobalSat MR-350 S4 --
-- Screen mount: Scanstrut ROKK RL-ADM --
-- Temperature sensor: (3x) DS18B20 --
-- 10 DOF sensor: L3GD20/LSM303D/BMP180 --
-- 12v to 5v converter: LM2596 Buck Step-down Power Converter Module --
-- Amplifier: MAX9744 20W Class D Stereo Amplifier --
-- Speakers: JVC CS-V428 --
-- Buzzer: 5V Electronic Buzzer --
-- GPS USB adapter: GlobalSat 11-BR305-USB2 --
-- Aluminium panel: Aluminum Sheet Metal 12 in. X 10 in --
-- USB panel mount: (2x) USB 30cm Panel Mount Extension Cable --
-- On/Off switch: 3-Pin Rocker Switch --
-- Screen On/Off switch: 3-Pin SPDT Waterproof Toggle Switch --
-- Amplifier volume potentiometer: 1K OHM Linear Taper Rotary Potentiometer --
-- Amplifier input selector switch: 9-Pin 3PDT Toggle Switch --
-- Amplifier 3.5mm jack input: 3pin 3.5mm Panel Mount --
-- GPIO cables: 40pin GPIO Female to Female Cable --
-- Raspberry Pi waterproof box: Junction Box (190x145x70 mm) --
-- Amplifier waterproof box: Junction Box (94x94x50 mm) --
-- 10 DOF sensor waterproof box: Junction Box (94x94x50 mm) --
-- Touchscreen waterproof enclosure: Homemade fiberglass enclosure --
* Usage *
-----

To recieve NMEA data on the local Wi-Fi from the Pi use these settings:

Protocol: TCP
IP: 192.168.1.99
Port: 10110

Location & weather history:
A new entry is added to the location database once every hour if you have moved minimum 50 meters since last entry
A new entry is added to the weather database once every hour

User interface:
Long click on the touchscreen acts as a right-click

Right-click on the desktop for a comprehensive menu

The main (a more simplified) menu is at the top of the screen, with the following buttons:
LOG - View location history
WTHR - View weather history
OCPN - OpenCPN chartplotter
GRIB - zyGrib weather data visualization
HDD - PCManFM file manager
KEYB - Left click to show florence virtual keyboard, right-click to hide
OFF - Left click to power off, right-click to reboot

Under the main menu is the taskbar:
Single click item to open/minimize
Right-click item to close

At the bottom of the screen is the GPS info:
The first (and last) item is GPS fix [ FX ] means there's a 3D fix, [ NO ] means there's no 3D fix
TIME - Date and time
SPD - Speed (in knots)
COG - Course Above Ground (Shows course based on GPS data (only works when moving))

If there's no active windows open:
LAT - Latitude
LON - Longitude
CLINO - Clinometer
HDG - Heading (Compass)
LOG - Total distance travelled
WIND - Not yet implemented
BARO - Barometric pressure (in millibar)
INSIDE - Temperature inside (in celcius)
OUTSIDE - Temperature outside (in celcius)
WATER - Water temperature (in celcius)
SUNRISE - The time of sunrise for current GPS position
SUNSET - The time of sunset for current GPS position

LCD information screen:
The LCD circulates between three different screens
The first screen (shown for 3 minutes):
ROW 1: Current date and time
ROW 2: LAT - Latitude
ROW 3: LON - Longitude
ROW 4: SPD - Speed & COG - Course Above Ground

The second screen (shown for 30 seconds):
ROW 1: CLINO - Clinometer
ROW 2: HDG - Heading
ROW 3: LOG - Total distance travelled
ROW 4: WIND - Not yet implemented

The third screen (shown for 30 seconds):
ROW 1: BARO - Barometric pressure
ROW 2: INSIDE - Temperature inside
ROW 3: OUTSIDE - Temperature outside
ROW 4: WATER - Water temperature

Some useful commands when logging in remotely:

View data:
ocs-info


View location history:
location-history-curses


View weather history:
weather-history-curses


Adjust volume:
alsamixer


Start cmus music player:
cmus


Start ranger file manager:
ranger

Configuration:

General configuration:
vim ~/.OnboardComputerSystem/OnboardComputerSystem.py


Edit desktop right-click menu:
vim ~/.config/openbox/menu.xml


Edit main menu:
vim ~/.OnboardComputerSystem/OnboardComputerSystem.sh


Change kplex settings:
vim .kplex.conf


PHP examples:

Showing realtime data:
(Requires Now-Playing from https://github.com/erikjansson/Now-Playing for Last.fm integration)
https://github.com/LASER-WOLF/OnboardComputerSystem-Mk1-2016/blob/master/PHP/ocs.php

Showing camera:
https://github.com/LASER-WOLF/OnboardComputerSystem-Mk1-2016/blob/master/PHP/camera.php

Showing location history:
(Requires a Google Maps API key)
https://github.com/LASER-WOLF/OnboardComputerSystem-Mk1-2016/blob/master/PHP/location.php

Showing weather history:
(Requires Charts.js from http://www.chartjs.org/)
https://github.com/LASER-WOLF/OnboardComputerSystem-Mk1-2016/blob/master/PHP/weather.php

* Automatic install *
-----
Steve Shannon (https://svhulagirl.com/) is working on an automated installation of everything
You can find his work here: https://github.com/steveshannon/OCSinstall
(This will be implemented into the main project in the future)
* Manual install *
-----

(If for some reason you don't want to do the automatic install, see below for the manual approach)

Write the Raspbian image to the SD-card:
Download the "Raspbian Jessie Lite" image from https://www.raspberrypi.org/downloads/raspbian/
Write the image to your SD-card (instructions on https://www.raspberrypi.org/documentation/installation/installing-images/README.md)

Starting the Raspberry Pi for the first time:
Insert the SD-card into the Pi
Connect ethernet cable
Power on the Pi
Find your Pi's IP (I went to my router settings (homerouter.cpe) and found a list of the connected devices)
We'll be doing most of the setup remotly, SSH into the Pi (replace the IP with the one you found):
(I'll be doing this from a linux machine, but if you're on Windows just use putty instead of the ssh command)
ssh pi@192.168.1.4
The default password for the pi user is "raspberry"

Alright let's start off by updating everything:

(rpi-update is a Raspberry Pi firmware updater tool)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install rpi-update
sudo rpi-update
sudo reboot

Setup Wi-Fi (with static IP):
Screenshot
sudo apt-get install wicd-curses
wicd-curses
Select your wireless network
Press RIGHT ARROW to enter setup
Check the box that says "Use static IP"
Enter the following in the IP field:
192.168.1.99
Fill in rest of the fields, for me it's:
Netmask: 255.255.255.0
Gateway: 192.168.1.1
DNS domain: 192.168.1.1
DNS server 1: 192.168.1.1
Check the box "Automatically connect to this network"
Input your password where it says "Key:"
Press F10 to save the settings
Press Q to quit
sudo poweroff
Disconnect the ethernet cable
Power on the device
Now let's SSH into the Pi by using the new static IP:
ssh pi@192.168.1.99

Change hostname:
sudo nano /etc/hosts
Change the text in the last line from "raspberrypi" to "OnboardComputerSystem"
Screenshot
Press CTRL+O, then press ENTER to save
Press CTRL+X to exit
sudo nano /etc/hostname
Change "raspberrypi" to "OnboardComputerSystem"
Screenshot
Save the file and exit
sudo reboot
At the next login it should say "pi@OnboardComputerSystem"

Change username (replace laserwolf with whatever):
sudo adduser laserwolf
Enter a password
You can fill in name and stuff if you want or just press enter
sudo visudo
Add your new user to the bottom of the file, just copy the line for the "pi" user and replace "pi" with your username, like this:
laserwolf ALL=(ALL) NOPASSWD: ALL
Screenshot
Save the file and exit
logout
ssh laserwolf@192.168.1.99
Add the new user to the default groups:
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio,pi laserwolf
sudo visudo
Remove the line for the pi user
Screenshot
Save the file and exit
Delete the pi user:
sudo deluser -remove-home pi

Configure raspi-config:
Check free harddisk space:
df -h
There's probably not a lot left, we need to expand the filesystem
sudo raspi-config
Select "Expand filesystem" press enter
Setup "Internationalisation Options" (like timezone and stuff)
Select finish and reboot
Check free space again:
df -h
Should be more this time around

Clone the OnboardComputerSystem-Mk1-2016 git repository:
sudo apt-get install build-essential git
git clone https://github.com/LASER-WOLF/OnboardComputerSystem-Mk1-2016
cp -r OnboardComputerSystem-Mk1-2016/.OnboardComputerSystem/ .OnboardComputerSystem/
cp OnboardComputerSystem-Mk1-2016/.bash_aliases .bash_aliases

Create some directories:
"Camera" directory for webcam pictures:
mkdir Camera
"Databases" directory for ocs/position/weather databases:
mkdir Databases

Install vim (text editor):
cp OnboardComputerSystem-Mk1-2016/.vimrc .vimrc
cp -r OnboardComputerSystem-Mk1-2016/.vim/ .vim/
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
sudo apt-get install vim
vim
Type ":PluginInstall" and press ENTER
When it's done type ":qa" to exit vim
vim .bashrc
At the bottom of the file add the lines (press i for insert mode):
export VISUAL=vim
export EDITOR="$VISUAL"
Screenshot
Press ESC to exit insert mode, then type ":w" to save the file followed by ":q" to quit

Install urxvt (terminal emulator):
sudo apt-get install rxvt-unicode

Setup Xresources:
cp OnboardComputerSystem-Mk1-2016/.Xresources .Xresources
vim .Xresources
Replace laserwolf with your username
Save the file and exit

Install Xorg (display server):
sudo apt-get install xorg

Install Openbox (window manager):
Copy the config files:
mkdir .config
cp -r OnboardComputerSystem-Mk1-2016/.config/openbox/ .config/openbox/
Edit the autostart file:
vim .config/openbox/autostart
Replace laserwolf with your username
Save the file and exit
cp OnboardComputerSystem-Mk1-2016/.config/user-dirs.dirs .config/user-dirs.dirs
sudo apt-get install openbox

Install LightDM (display manager):
sudo apt-get install lightdm
Enable autologin:
sudo vim /etc/lightdm/lightdm.conf
Uncomment the following line (replace laserwolf with your username):
autologin-user=laserwolf
Screenshot
Save the file and exit
Enable the LightDM service:
sudo systemctl enable lightdm.service
Reboot:
sudo reboot
After the reboot you should automatically be logged into openbox

Edit config.txt:
(See "~/OnboardComputerSystem-Mk1-2016/config.txt" for an example)
sudo vim /boot/config.txt
Add the following lines:
disable_overscan=1
hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=4
hdmi_drive=2
gpu_mem=128
disable_splash=1
dtoverlay=w1-gpio
dtparam=i2c_arm=on
max_usb_current=1
Screenshot
Save the file and exit
Reboot:
sudo reboot

Remove Raspberry Pi logos at boot:
(See "~/OnboardComputerSystem-Mk1-2016/cmdline.txt" for an example)
sudo vim /boot/cmdline.txt
Add the following at the end of the line:
logo.nologo
Screenshot
Save the file and exit
Do a reboot and check that the logos are not displayed:
sudo reboot

Enable long click on the touchpad as right-click:
(See "~/OnboardComputerSystem-Mk1-2016/xorg.conf" for an example)
Edit xorg.conf:
sudo vim /etc/X11/xorg.conf
Add the following lines:
Section "InputClass"
Identifier "calibration"
Driver "evdev"
MatchProduct "Chalkboard Electronics HID Touchscreen"
Option "EmulateThirdButton" "1"
Option "EmulateThirdButtonTimeout" "250"
Option "EmulateThirdButtonMoveThreshold" "30"
EndSection
Screenshot
Save the file and exit
Reboot:
sudo reboot
Test that right-clicking works by long clicking on the desktop with the touchpad

Install GPSd
sudo apt-get install gpsd gpsd-clients
(See "~/OnboardComputerSystem-Mk1-2016/gpsd" for an example)
Edit /etc/default/gpsd:
sudo vim /etc/default/gpsd
Modify/add the lines:
START_DAEMON="true"
USBAUTO="true"
DEVICES="/dev/ttyUSB0"
GPSD_OPTIONS="-n"
GPSD_SOCKET="/var/run/gpsd.sock"
Screenshot
Save the file and exit
Reboot:
sudo reboot
Test GPSd by running:
cgps
You should see data from the GPS

setup I2C:
sudo apt-get install i2c-tools
sudo vim /etc/modules
Add the following lines:
i2c-bcm2708
i2c-dev
Screenshot
Save the file and exit
Reboot:
sudo reboot
Test I2C by running:
sudo i2cdetect -y 1
You should see some numbers and stuff like that

Install Python:
sudo apt-get install python python-dev python-smbus python-pip
sudo pip install ephem

Install SQLite3:
sudo apt-get install sqlite3

Setup the HD44780 20x4 Character LCD:
sudo pip install RPi.GPIO
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
cd Adafruit_Python_CharLCD
sudo python setup.py install
cd
sudo rm -rf ~/Adafruit_Python_CharLCD/
crontab -e
Add the following line (replace laserwolf with your username):
@reboot /home/laserwolf/.OnboardComputerSystem/lcd-boot.py
Screenshot
Save the file and exit
Test the LCD by running:
.OnboardComputerSystem/lcd-boot.py

Setup the BMP180 barometric pressure sensor:
git clone https://github.com/adafruit/Adafruit_Python_BMP.git
cd Adafruit_Python_BMP
sudo python setup.py install
cd
sudo rm -rf ~/Adafruit_Python_BMP/

Setup the DS18B20 temperature sensors:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
You should get three results starting with "28-..."
Screenshot
Take note of the names
cd
vim .OnboardComputerSystem/OnboardComputerSystem.py
Find the lines:
temp1name='28-0115905a2fff'
temp2name='28-0415901b95ff'
temp3name='28-01159066d4ff'
And replace the names with the ones you found
Screenshot
Save the file and exit

Testing the buzzer:
.OnboardComputerSystem/buzzer-alarm.py

Setup LSM303D:
vim .OnboardComputerSystem/OnboardComputerSystem.py
Find the lines (at the bottom of the file):
#Output data
...
print ...
#print ...
Comment out the first print and uncomment the other:
#Output data
...
#print ...
print ...
Screenshot
Save the file and exit
Run the script:
.OnboardComputerSystem/OnboardComputerSystem.py
Screenshot
Take note of the values you're getting
Press CTRL+Z to stop the script
Edit OnboardComputerSystem.py:
vim .OnboardComputerSystem/OnboardComputerSystem.py
Find the lines:
headingcalibrate=(0)
clinoxcalibrate=(0)
clinoycalibrate=(0)
Set the values, try to zero out the clinox and clinoy
For me I'm gonna set the values like this (because the sensor isn't mounted perfectly level):
headingcalibrate=(0)
clinoxcalibrate=(+3.0)
clinoycalibrate=(-1.5)
Screenshot
Save the file and exit
Run the script again:
.OnboardComputerSystem/OnboardComputerSystem.py
If the CLINO(X) and the CLINO(Y) are at about zero it's good (if not repeat the previous steps untill you get it to about zero)
Screenshot
Stop the script
Edit OnboardComputerSystem.py again:
vim .OnboardComputerSystem/OnboardComputerSystem.py
Find the lines (all the way at the bottom):
#Print data
#print ...
print ...
And change it back to the way it was:
#Print data
print ...
#print ...
Screenshot
Save the file and exit
Clean the Databases directory:
rm ~/Databases/*

Edit starting number for distance travelled:
vim .OnboardComputerSystem/OnboardComputerSystem.py
Find the line:
setdiststart=0*1852
Change it to whatever you want, I'm gonna set the starting distance to 800 nautical miles:
setdiststart=800*1852
(One nautical mile is 1852 meters)
Screenshot
Save the file and exit

Install tint2 (taskbar):
cp -r OnboardComputerSystem-Mk1-2016/.config/tint2/ .config/tint2/
sudo apt-get install tint2

Install lemonbar (statusbar):
(lemonbar doesn't have xft font support so we'll be using a fork with xft support)
sudo apt-get install libxcb-xinerama0-dev libxcb-randr0-dev libxft-dev libx11-xcb-dev
git clone https://github.com/krypt-n/bar
cd bar
make
sudo make install
cd
sudo rm -rf ~/bar/

Install Conky (system monitor):
sudo apt-get install conky
cp OnboardComputerSystem-Mk1-2016/.conkyrc .conkyrc
vim .conkyrc
Replace laserwolf with your username
Save the file and exit
touch .conkytext

Install font, theme and icons:
cp -r OnboardComputerSystem-Mk1-2016/.fonts/ .fonts/
cp -r OnboardComputerSystem-Mk1-2016/.themes/ .themes/
cp -r OnboardComputerSystem-Mk1-2016/.icons/ .icons/
cp OnboardComputerSystem-Mk1-2016/.gtkrc-2.0 .gtkrc-2.0
cp -r OnboardComputerSystem-Mk1-2016/.config/gtk-3.0/ .config/gtk-3.0/
Reboot:
sudo reboot

Setup NTP to syncronize with GPSd:
sudo vim /etc/init.d/ntp
Find the line:
RUNASUSER=ntp
Change it to:
RUNASUSER=root
Screenshot
Save and exit
Edit ntp.conf:(See "~/OnboardComputerSystem-Mk1-2016/ntp.conf" for an example)
sudo vim /etc/ntp.conf
Find the lines:
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst
Add the following lines under the server lines:
server 127.127.28.0
fudge 127.127.28.0 refid GPS
server 127.127.28.1 prefer
fudge 127.127.28.1 refid PPS
Screenshot
Save the file and exit
sudo poweroff
Test that the syncronization works by powering off your wifi router and the Raspberry Pi, leave them both off for a couple of minutes, then power on only the Raspberry Pi, check the clock, it should run a couple of minutes late, but after some time it will syncronize with the GPS and be correct, if it works correctly power on the wifi router again

Setup audio:
Set audio output to 3.5mm jack:
amixer cset numid=3 1
Change volume:
alsamixer
Screenshot
Use UP/DOWN ARROWS to change volume, press ESC when done

Copy apps:
cp -r OnboardComputerSystem-Mk1-2016/Apps/ Apps/
The "Apps" folder contains two apps:
"JTides" for viewing tidal data
"PiSNES" a SNES emulator

Copy scripts:
cp -r OnboardComputerSystem-Mk1-2016/Scripts/ Scripts/

Edit update-server.sh:
vim Scripts/update-server.sh
Change the script to match your server settings
Screenshot
Test the script:
Scripts/update-server.sh
Generate SSH keys (for passwordless login):
(This is how I do it on my host, might be different on another host)
ssh-keygen -t rsa
Press ENTER, ENTER and ENTER
Then add the SSH key to the server:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@website.com
Run the update-server.sh script again:
Scripts/update-server.sh
You shouldn't need a password this time

Setup webcam.sh & update-server.sh to run automatically once every hour:
(See "~/OnboardComputerSystem-Mk1-2016/crontab" for an example)
crontab -e
Add the line (replace laserwolf with your username):
0 * * * * /home/laserwolf/Scripts/webcam.sh && /home/laserwolf/Scripts/update-server.sh
Screenshot
Save the file and exit

Setup documents:
mkdir Documents
Copy all your documents to the ~/Documents folder
Screenshot
Check out https://www.reddit.com/r/sailing/comments/3hwagp/a_collection_of_free_useful_sailing_maritime/ for a collection of documents

Install Kplex (NMEA multiplexer):
cp OnboardComputerSystem-Mk1-2016/.kplex.conf .kplex.conf
git clone https://github.com/stripydog/kplex
cd kplex
make
sudo make install
cd
rm -rf kplex/
Reboot:
sudo reboot
Test Kplex by running OpenCPN on another machine (not the Pi), go to connections, and add a new connection with:
Protocol: TCP
Address: 192.168.1.99
Port: 10110
You should get GPS data from the Pi
Screenshot

Install OpenCPN:
mkdir Charts
Copy all your charts to the ~/Charts directory
cp -r OnboardComputerSystem-Mk1-2016/.opencpn/ .opencpn/
Edit WatchdogConfiguration.xml:
vim .opencpn/plugins/watchdog/WatchdogConfiguration.xml
Find the text:
SoundFile="/home/laserwolf/.OnboardComputerSystem/sounds/Warning_RUS_WATCH_EKRAN.wav"
Replace laserwolf with your username
Find the text:
CommandFile="/home/laserwolf/.OnboardComputerSystem/buzzer-alarm.py"
Replace laserwolf with your username
Save the file and exit
sudo apt-get install build-essential cmake gettext git-core gpsd gpsd-clients libgps-dev wx-common libwxgtk3.0-dev libglu1-mesa-dev libgtk2.0-dev wx3.0-headers libbz2-dev libtinyxml-dev libportaudio2 portaudio19-dev libcurl4-openssl-dev libexpat1-dev libcairo2-dev
git clone git://github.com/OpenCPN/OpenCPN.git
cd OpenCPN
mkdir build
cd build
cmake ../
make
(This is gonna take a while)
sudo make install
cd
rm -rf ~/OpenCPN/
Press the OCPN button on the top menu to start OpenCPN
Go to settings and add your Charts folder

Install Watchdog (OpenCPN plugin):
git clone git://github.com/seandepagnier/watchdog_pi.git
cd watchdog_pi
mkdir build
cd build
cmake ../
make
sudo make install
cd
rm -rf ~/watchdog_pi/

Install Climatology (OpenCPN plugin):
git clone git://github.com/seandepagnier/climatology_pi.git
cd climatology_pi
mkdir build
cd build
cmake ../
make
sudo make install
cd
rm -rf ~/climatology_pi/
sudo mkdir /usr/local/share/opencpn/plugins/climatology_pi
sudo tar -C /usr/local/share/opencpn/plugins/climatology_pi -xvf OnboardComputerSystem-Mk1-2016/CL-DATA-1.0.tar.xz

Install zyGrib (weather data visualization)
mkdir GRIB
sudo apt-get install build-essential g++ make libqt4-dev libbz2-dev zlib1g-dev libproj-dev libnova-dev nettle-dev
tar xvzf OnboardComputerSystem-Mk1-2016/zyGrib-7.0.0.tgz
cd zyGrib-7.0.0
make
Edit Makefile:
vim Makefile
Find the line:
INSTALLDIR=$(HOME)/zyGrib
Replace it with (change laserwolf with your username):
INSTALLDIR=/home/laserwolf/Apps/zyGrib
Screenshot
Save the file and exit
sudo make install
cd
rm -rf ~/zyGrib-7.0.0/
mkdir -p ~/.zygrib/config/
cp OnboardComputerSystem-Mk1-2016/zygrib.ini .zygrib/config/zygrib.ini
Edit zygrib.ini:
vim .zygrib/config/zygrib.ini
Find the line:
gribFilePath=/home/laserwolf/GRIB
Replace laserwolf with your username
Save the file and exit
Press the GRIB button on the top menu to test zyGrib

Install florence (virtual keyboard):
cp OnboardComputerSystem-Mk1-2016/.florence.conf .florence.conf
sudo apt-get install florence
Reboot:
sudo reboot
Press the KEYB button on the top menu to test florence

Install FoxtrotGPS (non-maritime maps):
mkdir -p ~/.gconf/apps/foxtrotgps
sudo apt-get install foxtrotgps
cp OnboardComputerSystem-Mk1-2016/.gconf/apps/foxtrotgps/%gconf.xml .gconf/apps/foxtrotgps/%gconf.xml
Edit %gconf.xml:
vim .gconf/apps/foxtrotgps/%gconf.xml
Replace laserwolf with your username
save and exit

Install unclutter (hides the mouse when idle):
sudo apt-get install unclutter

Install scrot (take screenshots):
sudo apt-get install scrot

Install fswebcam (take webcam picture):
sudo apt-get install fswebcam

Install ranger (console based file manager):
sudo apt-get install ranger

Install PCManFM (file manager)
mkdir -p ~/.config/pcmanfm/default/
cp OnboardComputerSystem-Mk1-2016/.config/pcmanfm/default/pcmanfm.conf .config/pcmanfm/default/pcmanfm.conf
cp -r OnboardComputerSystem-Mk1-2016/.config/libfm/ .config/libfm/
sudo apt-get install pcmanfm

Install slurm (network load monitor):
sudo apt-get install slurm

Install htop (process monitor):
sudo apt-get install htop

Install Epiphany (web browser):
sudo apt-get install epiphany-browser

Install x11vnc (vnc server):
sudo apt-get install x11vnc
use the vnc script to start the server

Install feh (image viewer):
sudo apt-get install feh

Install Okular (pdf reader):
mkdir -p ~/.kde/share/config
cp OnboardComputerSystem-Mk1-2016/.kde/share/config/okularrc .kde/share/config/okularrc
cp OnboardComputerSystem-Mk1-2016/.kde/share/config/okularpartrc .kde/share/config/okularpartrc
sudo apt-get install okular

Install cmus (music player):
mkdir Music
Copy all your music to the "~/Music" folder
cp -r OnboardComputerSystem-Mk1-2016/.cmus/ .cmus/
cp -r OnboardComputerSystem-Mk1-2016/Radio/ Radio/
sudo apt-get install cmus
Install cmusfm (last.fm scrobbler):
sudo apt-get install autoconf libssl-dev
git clone https://github.com/Arkq/cmusfm
cd cmusfm
autoreconf --install
mkdir build && cd build
../configure
make
sudo make install
cd
rm -rf ~/cmusfm/
cmusfm init
cmus
Press 5 navigate to the files/folders you want to add and press A to add them to the library
I'm gonna add all the radio files so I'll navigate into the ~/Radio folder and press A on all the files
Then press 1 to go back to library view

Setup PiSNES (SNES emulator):
sudo apt-get install libsdl1.2debian
Copy roms to the ~/Apps/pisnes/roms/ folder
Edit ~/Apps/pisnes/snes9x.cfg to setup button mappings

Setup JTides:
sudo apt-get install oracle-java8-jdk

Remove the OnboardComputerSystem-Mk1-2016 folder (we have copied everything we need from it):
rm -rf ~/OnboardComputerSystem-Mk1-2016/

Reboot:
sudo reboot

Done and done!
Have a beer or something