I thought I’d take a few moments to introduce the next prototype open source science tricorder that I’ve been working on, the Arduino-compatible Mark 5 Arducorder.
I wasn’t having a great deal of luck with the earlier Mark 5 design, and so I decided to start from scratch and create something completely different under the hood. The new design has a larger sensor suite (a few sensors have been updated, and a multi-gas sensor had been added), but it should also be easier to program, easier for folks to tinker with, more modular, and less expensive to produce. It’s also Arduino Due compatible, so the hundred thousand folks out there who love Arduino programming and building simple circuits should feel right at home tinkering.
Like the Mark 1 and 2, the Mark 5 Arducorder has a separate motherboard and sensor board. I think community building is a huge part of a successful open source design, and in this spirit I’d like it to be as easy as possible for folks to build new sensor boards for their Arducorders, or add expansions that I can’t anticipate. The Arduino folks have been very good with designing their boards to be expandable using “shields” that have standard, easy-to-prototype, 0.1″ headers. Similar to the idea of a shield, I’ve designed the Arducorder to have a 34-pin header for the sensor boards that expose a variety of pins for the I2C, UART, SPI, Analog, PWM, and Digital I/O peripherals, so that there are plenty of pins for expansion and interfacing to most kinds of sensors.
These boards were an interesting challenge to design. Conceptually the Arduino motherboards are fairly simple, but in order to maintain perfect compatibility with the Arduino Due board the routing was a little complex in areas. The whole Mark 5 Arducorder system is small — really small — and having the large easy-to-use sensor connector consumes a lot of real-estate, totaling nearly one quarter of the board area. Because of this I had to move to a 4-layer design, which takes a little longer to get fabbed. Still, the entire Arducorder including the 2.8″ LCD, WiFi module, and sensor board fits in about the same footprint as the original Arduino Due (or, about the size of my Blackberry), so it’s all quite compact and I’m very happy with the footprint.
In terms of hardware, the prototype Arducorder motherboard currently has the following specifications:
- Arduino Due compatible, using the Atmel SAM3X8E ARM Cortex-M3 CPU
- 84MHz CPU Clock, 512KBytes of flash, 96KBytes SRAM
- External 128KByte SPI SRAM
- microSD card socket for data, graphics, and so forth
- 2.8″ TFT LCD display w/touch panel
- FT800 Graphics and Audio Controller to offload graphical rendering. Supports JPEG decompression.
- CC3000 802.11b/g WiFi module
- Two user-selectable input buttons, one on either side
- microUSB for programming and charging (Due “native port”)
- Exposes the second programming port through a header, as well as the two erase/reset buttons on the side, to maintain Arduino Due compatibility
Having some mechanism to render quality graphics has been a requirement since the Mark 1 using its external SED1375 graphics controller, and was certainly the case with the Mark 2’s beautiful dual organic LED displays. But graphics of any resolution have always been difficult for microcontroller-powered systems, like the PIC family (used in the Mark 1) or the Atmel microcontrollers used with the Arduino family of boards. Even with a microcontroller fast enough to perform graphics rendering, most microcontrollers don’t have nearly enough memory to support even a single framebuffer for a 320x240x16bpp screen (128k), so any graphics they do render tend to look choppy.
Enter the FT800 Graphics controller, a new product from FTDI, the same folks who make the popular FT232R USB-to-serial converter. The FT800 looks a lot like a modern version of the the 2D tile-based graphics controllers found in handheld gaming systems a few years ago, while also incorporating audio and touch-screen peripherals. The Gameduino 2 is a recent Arduino-powered project that makes use of the FT800, and it shows Gameboy Advanced-era graphics on an Arduino Uno — so I’m confident that an attractive and elegant interface can be crafted on the Arducorder. While it has less graphical capabilities than the original Mark 5 design, it should be much easier for folks to modify — and I’m excited to see the first user interface themes folks come up with.
In terms of sensing capabilities, the current sensor board has footprints for the following sensors:
- Ambient Temperature and Humidity: Measurement Specialties HTU21D
- Ambient Pressure: Bosch Sensortec BMP180
- Multi-gas sensor: SGX-Sensortech MICS-6814
- 3-Axis Magnetometer: Honeywell HMC5883L
- Lightning sensor: AMS AS3935
- X-ray and Gamma Ray Detector: Radiation Watch Type 5
- Low-resolution thermal camera: Melexis MLX90620 16×4
- Home-built linear polarimeter: 2x TAOS TSL2561
- Colorimeter: TAOS TCS3472
- Open Mini Visible Spectrometer v1 using TAOS TSL1401CL 128-pixel detector, with NeoPixel light source
- GPS: Skytraq Venus 638
- Distance: Maxbotics Ultrasonic Distance Sensor
- Inertial Measurement Unit: Invensense MPU-9150 9-axis (3-axis accelerometer, gyro, and magnetometer)
- Microphone: Analog Devices ADMP401
Many of these are new or updated offerings that either offer new sensing modalities that weren’t previously available (like the lightning sensor from AMS), or that improve upon resolution, size, or cost over previous versions. Gas sensing has been on the wishlist for a long while, but many contemporary sensors are large and use power-hungry heating elements — so I’m particularly excited about trying out new line of micro gas sensors from SGX.
One sensor has been temporarily removed — the camera. There’s currently no easy way that I’m aware of to hook up a camera (which is a high bandwidth device) to an Arduino Due, which has limited memory. I’ve replaced the camera with a small board-to-board connector, in the hopes that someone in the open source community will develop a small SPI JPEG camera board with an onboard framebuffer shortly. If not, I’ll have to have a go at it once the rest of the device is functional.
While the top of the sensor board contains the thin, omnidirectional sensors, the bottom contains many of the larger, directional sensors including the open mini spectrometer and the ultrasonic distance sensor. I’d love to find a shorter alternative to these sensors at some point, as right now they are the determining factor in the Mark 5’s thickness — about an inch.
Currently I’m testing out the sensor board — some of the sensors are a bit expensive, so I’m iteratively populating the boards, testing, and so forth. I also have to 3D print more open mini spectrometers — my cats absolutely love to play with them, so the bunch I’ve made have vanished into the aether under the couch, never to be seen from again.
My current TODO list is to verify the basic functionality of the hardware (currently the FT800 as well as a few of the sensors have been tested), write low-level drivers for all the sensors and peripherals, then move on to creating the larger graphical user interface. At first the graphical environment will likely be somewhat modest, but I’d love to recruit the help of some skilled folks from the open source community who would enjoy working on the interface side of things once the prototype hardware is stable. Please feel free to contact me if you’re interested.
Thanks for reading!