This page last changed on Oct 22, 2013 by oreilly.

This is the home page for the 901112 - MBTS; Android data logger project.

The Chavez lab has developed a robust low cost "Stella" drifter that has been used repeatedly by our lab, CANON, Autonomy and several other MBARI projects. The drifter is based on a SPOT tracker and total hardware cost is about $250. We propose to exploit the rapid development of commercial low-cost mobile computing and sensor platforms by taking a prototype instrument data logger (developed by O'Reilly and Risi) that runs on an Android device (e.g. phone or tablet) and deploying it as a test on the low cost Stella drifter. The Android logger application known as "Drifter" was developed by O'Reilly; it periodically retrieves data from one or more RS-232 or analog instruments as well as onboard phone sensors (e.g. GPS, accelerometer, compass). The app then telemeters the retrieved data to shore via the cell phone network, WiFi or a satellite modem. Such a data logger could have several applications including low-cost moorings, drifters, or pier-mounted deployments.

The Drifter app source code and associated files are attached to this page as a compressed '.tar' file. E.g. the code for Drifter version 1.61 is attached to this page as Drifter-1_61.tar.gz.  Download the file into an Eclipse workspace, then decompress and un-tar it, e.g. on a Linux system:

% tarĀ  zxf Drifter-1_61.tar.gz

 Now run Eclipse - configured with the Android Development Tools plug-in - and import the files as an Eclipse project.

 pH Drifter application

Below is a schematic depiction of components for the pH drifter application.

The Drifter app runs on the Android phone (currently a Kyocera Rise phone). The app is written in Java, and source code is currently archived at http://bitbucket.org as a "private" repository. We plan to distribute the code as open source in the near future.

The app retrieves pH and temperature sensor data through analog input ports on the IOIO board. The app manages the 'Wakey' power controller through an RS232 port on the IOIO board. The phone sends telemetry to shore as 41-byte messages through the SPOT Connect satellite modem, using the Bluetooth protocol described here.

The 'Wakey' power controller board developed by McGill provides power to the IOIO board, phone, and SPOT Connect satellite modem. 

Android OS power management attempts to minimize power usage based on app activity. Note that phone can be externally reset only by physically pressing the phone's power button - but we do not have a way to do that with our current approach.

  • Advantage: No physical modifications required to the phone.
  • Disadvantage: There is no way to reset the phone once deployed.

Paul McGill measured Kyocera phone power usage in the following configuration: Airplane mode, Bluetooth enabled, screen off, Android data logger app sampling once every minute. Paul measured power usage in the following states:

  • Data logger idle (between samples): 1.2 mA
  • Data logger sampling: 60-70 mA. The sampling phase (acquire and log sample, send to SPOT Connect modem) lasts approximately 5 seconds

At the end of each sample cycle, Data logger puts Wakey to sleep, which disconnects power to the IOIO board; thus the phone does NOT get charged while the in the idle state. 

Telemetry via SPOT Connect

A SPOT message can be no longer than 41 bytes (not including the transmit time and latitude/longitude header that the modem prepends). Thus the data logger  app generates very terse summaries of the instrument, sensor and diagnostic for transmisson via SPOT. The app generates SPOT messages consisting of fields separated by a semicolon,  with the following format:

instrument_record:orientation:gps:compass:phone_batt_level:wakey_batt_voltage

instrument_record - data record from attached serial or analog instrument. The format of the instrument_record depends on the instrument type.

orientation - data record from phones orientation sensors consisting of roll, pitch, and yaw

gps - data record from phone's GPS

compass - magnetic azimuth from phone's sensor

phone_batt_level - remaining phone battery, in percent

wakey_batt_voltage - "Wakey" battery voltage

Note that some fields may be zero-length. E.g. if the user does not select orientation sensor to be logged, then the SPOT message orientation sensor field (second field) will be zero length. E.g. following is an example SPOT message:

tmp 2923,pH 1352:::264.0:98:11.9

In the above case, the app had been configured to log data from an attached analog pH sensor (which outputs temperature and pH), and to log phone compass data (no other sensors were selected).

Software tasks


901112_MBTS_2013.pdf (application/force-download)
Drifter-1_61.tar.gz (application/x-gzip)
DrifterSchematic.png (image/png)
Document generated by Confluence on Feb 03, 2026 15:53