Microship Information Management System (Mimsy)
and the Shipnet


Concepts, Devices, and Applications

Steven K. Roberts
Nomadic Research Labs
Feb 15, 2003




This corner of the site exists to provide Microship project participants (and other interested parties) with a convenient online reference covering the combination of resources that integrate all on-board systems into a consistent and portable user interface... while managing background tasks such as security and telemetry.

The architecture of this system has been in a state of flux for some years, largely because the available tools have been evolving so rapidly.  An important transition occurred in 2002: off-the-shelf systems capable of running a rich OS reached a level of integration that allows the core processor on the Microship to be always on. In the past, we assumed that only tiny embedded micros would be powered on 100% of the time, and that "Big Iron" would come and go as needed. This was obviously messy.

The current design instead postulates an I/O-rich laptop-scale Linux system known as Mimsy that handles (via USB) all the physical devices on the boat, performs data collection and transmission, manages crossbars and other resources, and provides a primitive interface protocol both within the cockpit and remotely via a wireless text link. This machine is only intended to be shut down when I'm off the boat or asleep, though its native LCD can go away at any time to save power. The UI can actually appear in any connected system... notably a stock sunlight-readable PDA mounted on the console and a stand-alone laptop that connects via any of a variety of wireless links. Since the connection is a reasonably low-volume link over TCP/IP, this would work just as well via a dial-up link, allowing development or system monitoring from a distance (underscoring the need for user authentication, which would otherwise not be much of an issue beyond simple-minded WEP on the local 802.11 access point).

The actual "apps," other than those that have a persistent presence within the Hub even when the UI is not alive, run within the Squeak environment (either in the Hub itself or whatever connected machine is currently in use). Since most of these are display or control tools, this makes sense... and the apps can be optimized for their local display environment, or tailored to the user level if this scales to other boats.

At the I/O end, one of Mimsy's primary jobs is to provide access to a rich array of physical devices, including control of audio and video crossbar networks. Clearly, there are some design issues here:  engineering unit conversions, reservation and checkout of scarce resources, handling multiple subscribers to streaming sources, data collection, unattended telemetry, autonomous tasks like security/watch functions, and random interconnections that may not have been anticipated at design time. To handle this apparent complexity without having to manage dozens of sockets, Mimsy will use Spread.  

The I/O itself is handled entirely via custom devices we are developing based on the FTDI USB chip along with the PIC 18F452 Although there are quite a few USB I/O devices cheaply available, none provide the combination of canned code for basic port access along with the ability to accept, on the fly, executable state machines from the host. This capability will let Mimsy assign "night watchman" tasks to the I/O subsystem and then doze off, knowing that any alert will not only bring the machine out of sleep but also, optionally, page me. It appears at this point that four of these boards will be used.

I should make a comment about serial devices. The current inventory shows about 16 RS-232 channels, and earlier incarnations of the Microship design accommodated these via a serial crossbar network. This was overkill, as it allowed peer-to-peer connections, and was also hobbled by some electronic problems. In practice, it's fine for all serial devices to report directly to Mimsy, so we're giving them each a USB interface. All these, along with human-interface and utility devices, will hang off a tiered-star topology of four 8-port USB hubs.

This page is the introduction to a family of simple web pages, one for every hardware object in the Shipnet. You can get to any of them from this high-level index, but once inside the network, it is possible to traverse any connection by following the links (or return to this page if you get lost). Eventually, there will be a page for each UI software tool as well, but first things first. Listed below are the USB Interface HardwareI/O Devices, Audio and Video crossbar devices, and the Applications hierarchy.


USB/Network Devices


Mimsy
Level 1 Hub
KB/Mouse (poss with PS/2 interface)
Audio interface
Video interface
Digital camera port
MIDI interface
Level 2 Hub
Watchman (security and wake-up functions)
Crossbartender (general I/O and A/V crossbars)
Macdonald (power-related I/O)
Gofer (general I/O)
Level 3 Hub #1
7 USB-serial ports
Level 3 Hub #2
7 USB-serial ports

Microship I/O Catalog

Digital Input Bits (total 47)

Marine radar detector (4)
Microwave motion sensor
Infrared internal motion sensor
Infrared external motion sensor
Enclosure sensors - hatches, cowling, display panel, systems (5)
Bilgewater detectors and pump duty cycle (6)
Appendage status - LG, rudder, dagger, thruster (8)
Solar cable loopback (4)
Anchor nested
Status of manual switches (8)
Status from various standalones (8)


Digital Output Bits (total 30)

Power control (24)
Az-El head control (4)


Analog Inputs (total 13)

Barometric pressure
Ambient temperature
Water temperature
Relative humidity
Internal enclosure humidity
Internal enclosure temperature
Solar array temperatures (4)
Battery temperature
Ambient light level
Flux-gate compass


Serial Channels (total 16)

Wind speed & direction, interactive serial
Water depth
GPS, continuous
Compass sensor, continuous
3-axis accelerometer/inclinometer
PPT/Battery/Thruster subsystem, continuous
GlobalStar phone
Terminal Node Controller, multimode
Micropower TNC
High-Speed wireless link
HF Radio control
VHF/UHF Radio control
Video deck control
MIDI synthesizer
Stand-alone speech synthesizer


Pulse Counters (total 2)

Radiation sensor
Lightning sensor

Audio Crossbar Devices

Device Sources
Sinks
Speech Synthesizer 1 0
Dual-band ham rig 1 1
HF/SSB transceiver 1 1
MIDI Synthesizer 2 0
System Sound 2 2
AM/FM Receiver 2 0
TV Receiver 2 0
FM Transmitter 0 2
Video Transmitter 0 2
Stereo Amp 2 0
Satellite phone 1 1
Marine VHF 1 1
Multimode TNC 1 1
DTMF Transceiver 1 1
Headset 1 2
Hydrophone 1 0
Ambient Microphone 2 0
DV Recorder 2 2
TOTAL
24
16


Video Crossbar Devices


Device
Sources
Sinks
TV Receiver 1 0
DV Recorder 1 1
Console Camera 1 0
Underwater Camera 1 0
Steerable Camera 1 0
Fixed Forward Camera 1 0
Fixed Reverse Camera 1 0
Console Video Display 0 1
Video Receiver 1 0
Video Transmitter 0 1
System video output 1 0
System video capture 0 1
TOTAL
9
4

MIMSY User-Interface Applications

This is an initial list of applications, based on assumptions about what sorts of views into the system would be desirable, the need for configuration tools, and active control requirements. The hierarchy is very flat at this stage, though display real estate and other factors may change this considerably. Each line represents a "view" into the system, and communicates with the hub via an API, transferring data instead of pixels.  There may be issues with response delays from initial acquisition of live data on entry to any view, possibly suggesting that the UI environment might want to be a telemetry client in the background.

Base View - icons for the other top-level views

Live Sensor Monitor Group

View all system & enclosure integrity channels
View all ship status channels View all navigation channels
View all environmental channels
Graphic weather display
Display boat drawing with color-coded status sensors
Initiate “slide show” from available clusters or sequences
Define arbitrary named “instrument clusters”
Define display lists and dwell time of cluster sequences

Security/Watch Group (interacts with persistent app at Hub)

Edit security macros using matrix or state-machine metaphor
Invoke/abort a security macro from pick list
Review history of alerts and sensor activity

Data Collection Group

Plot history of any single channel over specified time
Edit channel groups list
Plot history of a channel group over specified time (common timebase)
Compute cross-correlations between channel groups
PSD plots, peak finders, and other computations
Data collection schedule/channel editor
Start/Stop data collection
Add a text annotation or image to database
Raw database queries

Power/Solar Group

Main power display with live representation of system
Peak power tracker performance (live)
PPT override/enable
Edit A-B battery handoff protocol and critical loads
Solar array historical display, 8 strip charts
Solar and battery temperatures
Power distribution display (what’s on)
Manual device power control

Thruster/Autopilot Group

Thruster mode (direct throttle or solar tracking)
Manually control thruster speed and angle
Set autopilot algorithm
Initiate station-keeping

APRS/Navigation Group

Display zoomable chartlet with APRS overlay
Range and bearing to any entity
Breadcrumb trail
APRS message screen
Display general GPS and compass data (backup to standalone plotter)

Audio/Video Group

Select camera/mic and invoke recording or remote monitoring
Control Az-El Spotlight/camera assembly
Speak canned text strings or entered text via synthesizer & stereo
Stereo control panel
MP3 player (any local in Hub?)
Setup FM transmitter
Initiate record/playback of audio/video, by file name

Communications Group

HF Radio front panel for manual operation (including xbar/pwr setup)
VHF/UHF Radio front panel (including xbar/pwr setup)
GMRS/FRS link
Configure telemetry schedule, path, channels
Configure APRS
Live chat window for PSK31, Packet, PACTOR, etc
Fetch/display NAVTEX transmission(s)
Globalstar phone control

System Tools Group

Simple text terminal
Raw query of any device
Enumerate all active Spread connections
Setup and initiate self-running demo
Show system network status
Display current A/V crossbar connections
Edit named crossbar configurations
Invoke named crossbar configuration from pick list
General diagnostics

Documentation Library

Collection of help tools, reference material, channel lists, etc.