Open Source Science Tricorder

Science in your hand. A pocket-sized instrument capable of visualizing and exploring the world around you.

Similar projects worth following
It is my deep belief that knowledge brings about positive change.

We could live in a world where the same instrument that can show a child how much chlorophyll is in a leaf could also show how them much pollution is in the air around us, or given off by one's car. As an educator and a researcher, I feel that if people could easily discover things about their worlds that were also important social topics, that they would then make positive social choices, like reducing their emissions, or petitioning for cleaner industry in their communities.

By having access to general inexpensive sensing tools, people can learn about healthy leaves, clean air, clouds and the water cycle, energy efficient homes — and visualize abstract concepts like spectra or magnetism.

As a tool for exploration, we can discover things around us that we don't already know. And that's what it's about. Little discoveries, everywhere.

Finals Video

Semifinals Prototype Video

Concept Video

Hardware and System Design

The Arducorder Mini is an Arduino-compatible handheld sensing device, and the next iteration of my open source science tricorder-like device project that's designed to be easy to use, have a large array of sensors, and easy to share sensing discoveries. The Arducorder Mini is designed to foster a community of open source users and development, and is ChipKit MAX32 compatible, which is a port of the Arduino platform to the much more powerful PIC32 family, and makes use of a PIC32MX795F512L with 128k of RAM, 512k of flash, a zippy 80Mhz processing speed, and a fantastic set of peripherals for interfacing to sensors.

The current prototype is designed to use a 1.5" OLED with 128x128 pixels and 16-bit colour, a touch interface, and connectors for 5 modular sensor boards that each contain several sensors. The sensor boards are designed to be interchangeable and upgradable, so that a large number of configurations are possible with different sensing capabilities and price points.

While the Arducorder Mini is being designed with a wide array of sensing capabilities off-the-shelf, it's also designed to be easy for folks to tinker with and upgrade. Accessibility is a central goal of the project -- If you're familiar with Eagle CAD and have ever made an Arduino shield, it should be easy to design your own sensor board. Using OSHPark and Digikey, the parts cost for a new sensor board (PCB and header, not including sensors) is about $5, which is even less than most protoboards!

Sensing Capabilities

The current prototype has been designed to include the following sensing capabilities:

Atmospheric Sensors

  • Ambient Temperature and Humidity: Measurement Specialties HTU21D
  • Ambient Pressure: Bosch Sensortec BMP180
  • Multi-gas sensor: SGX-Sensortech MICS-6814

Electromagnetic Sensors

  • 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
  • UV: Silicon Labs Si1145
  • Spectrometer: Hamamatsu C12666MA micro-spectrometer, with NeoPixel light source

Spatial Sensors

  • Inertial Measurement Unit: Invensense MPU-9150 9-axis (3-axis accelerometer, gyro, and magnetometer)

Other Sensors

  • Microphone: Analog Devices ADMP401

Check out the project logs for the current build progress, and stay tuned!

GitHub Repository and Source Files

The source files are available on the Arducorder Mini GitHub Repository as the development progresses. The hardware is licensed under Creative Commons By-Attribution Share-Alike 4.0 International, and the firmware and libraries are available under various open licenses. Please see the licenses file included with the source for more information.

Gerbers and Parts List

While the major parts are listed below, the Arducorder is a modular ecosystem of seven boards -- including the motherboard, capacitive touch interface board, and five modular sensor boards. The hardware folder of the Github repository contains the latest Eagle source files, and gerber files that can be uploaded directly to OshPark. While the Eagle files contain internal parts lists, this source directory will also maintain PDFs of schematics and separate parts listings.


In addition to the device, this project has developed open source Arduino-compatible libraries for a light weight live tile based graphical user interface, supporting tools, open libraries for new sensors including the Radiation Watch Type 5 and Hamamatsu micro spectrometer, additions to the Adafruit MPR121 library to support capacitive touch wheels, and a port of the Adafruit CC3000 WiFi module to the Chipkit MAX32 platform. I have also greatly expanded the Plotly library for Arduino, which now supports multiple streams, much faster transfer speeds, and sending normal (non-streaming) plots. I have also partially updated the ChipKit IDE I2C and Client/Server libraries to partial...

Read more »

  • 1 × PIC32MX795F512 Microprocessors, Microcontroller
  • 1 × HTU21D Sensors / Temperature, Thermal
  • 1 × BMP180 Sensors / Pressure
  • 1 × MICS6814 Sensors / Gas
  • 1 × HMC5883L Sensors / Hall Effect, Magnetic

View all 31 components

  • And then there were three...

    peter jansen03/10/2015 at 17:47 3 comments

    A quick update -- I was packing up the Arducorder to ship off to @Mike Szczys for the Hackaday Prize booth at SXSW, and thought I'd snap a picture of it fitting snugly in it's new instrument case and shipping enclosure. I hope the folks at SXSW enjoy it, and all the other finalist projects from 2014!

    The other exciting news is that I've /finally/ completed two more Arducorders, with the exception of their enclosures. The original enclosure had some specially machined standoffs inside, and so I'm hoping to put together a slightly modified enclosure with entirely off-the-shelf hardware later this week. Each Arducorder has 7 double-sided PCBs totalling about 200 components, and takes me the equivalent of four full days to assemble (this work is really intended for pick-and-place machines), so it's really incredible to see them when they're finished.

    One of these -- the second one made -- is going to my very excited father, who helped teach me to make, build, solder, and learn from a very young age. I've been tinkering with developing a science tricorder-like device with everything on my sensor wishlist for nearly ten years, and have always said that the second one off the line would be very warmly given to him, as thanks for helping show me the joy of being a scientist, and being a wonderful and supportive dad.

    Developing a complete, modern open source science tricorder-like device has been on my bucket list for a long while, and the Hackaday prize helped me reformulate the project into something tractable enough that it could be designed and built in five months, capable enough that I could include exciting new sensors like micro-spectrometers and high energy particle detectors, and elegant enough that it could make both myself (and, a panel of judges) happy to carry it around in one's pocket. I'm sure like all the other finalists, the last three months were incredibly intense, and between the lab at school and my Arducorder building I was putting in 12 to 16 hour days, every day. I was desperately scared of being knocked out of the competition after the semifinals -- not because I wanted to win, but because I wanted to finish, I knew it would take until the end of October to get there, and I had been pushing myself so hard for so long that I'd likely have collapsed and slept for a week were I knocked out, and lost some steam. I'm extremely grateful that things worked out the way they did, and that the Arducorder is a real, working device that sits on my desk, and has a complete set of plans for folks to build their own, improve upon the design, or use aspects of it for their own projects.

    With the Hackaday Prize 2015 launched today, I'm very excited to see what folks will come up with to help change the world, and make it a better place. I'd like to thank the folks at SupplyFrame for putting this incredible competition together, and helping me make the Arducorder possible.

    Update: More Pictures

    The first three Arducorders that I've built are complete, and they look beautiful. I'd vastly underestimated the time that it would take me to assemble them -- each unit likely has somewhere around 80 hours in it, which is more than double what I was expecting. For those building their own, don't forget that the driver for the touch wheel has a noise threshold that may need to be calibrated for each unit.

    They fit perfectly into a Pelican 1120 case, which are very compact travel cases with plenty of room for extras, like USB drives with firmware.

    Thanks for reading!

  • Spectrometer Group Buy, and see the Arducorder at CES!

    peter jansen01/07/2015 at 06:37 0 comments

    Just a quick update, and my apologies for taking a while to update -- I think I speak for all the Hackaday prize finalists when I say that the push to finish was absolutely exhausting! In the mean time I've been very busy catching up on writing two papers in the lab, visiting with family over the holidays, taking care of a sick kitty, and trying to find a few hours of rest.

    Arducorder at CES

    The good folks at Hamamatsu have borrowed the Arducorder this week to help demonstrate their beautiful C12666MA micro-spectrometer in action. If you happen to be at CES, be sure to drop by the Hamamatsu booth to check it out!

    Micro-spectrometer Group Buy

    The C12666MA micro-spectrometer is a beautiful instrument, but it's also not the easiest to get ahold of in small quantities. The folks over at Group Buy (who helped get the FLIR Lepton thermal imager out into the community) have a group buy for the micro-spectrometer at the fantastic price of $180, or about $50 off the regular single-quantity pricing. This is a really fantastic deal, and if you've been assembling your own Arducorder (or would like to experiment with the C12666MA micro-spectrometer), it's a great opportunity. As of writing there are only 4 days left to get in on this group by, so you'll likely want to act quickly.

    Power Switch!

    Every designer has aspects of a project that they do well, and places where they could use a little improvement. Power circuits are where I usually need improvement, and I tend to overengineer them for efficiency so much that occasionally they're simply too complex to work on the first revision. The Arducorder has a very good and high-efficiency buck/boost power circuit, but the case design was missing an important element -- the acrylic slider that covers the power switch, and lets you easily turn the unit on! Free yourself from the bounds of having to carry around a tiny screwdriver or paperclip, and cut out this power switch slider :).

    Just a quick update -- thanks for reading!

  • Project Video, and Plotly data!

    peter jansen10/28/2014 at 06:33 1 comment

    The project video is up! It's been a very busy few weeks building the final revision boards, putting together an enclosure, and adding the final features to the software. I'm absolutely thrilled at the results, and I hope it helps you make little discoveries -- everywhere.

    Connectivity with Plotly

    The Arucorder Mini now interfaces with Plotly -- a website that's like social media for data, that I've absolutely fallen in love with. After hours of rearchitecting the Plotly Arduino library (with Chris from Plotly's help -- thanks Chris!), there is now a beautiful, fast library for Arduino that supports multiple streams, blazing fast transfers, and normal plotting functions. Please use it, and send me links to your amazing streams.

    The Arducorder now supports one touch uploading to Plotly -- you can literally pull the device out of your pocket, and in 20 seconds have sensor data streaming or spectra shared with friends on the other side of the planet. It's really incredible, and I'm pleased with the results.

    The data used in the video is all available on the Arducorder Mini Plotly profile. Here are direct links to some of the data, including:

    In addition, I will try to keep some of the data from the live streams used in the video active, including the atmospheric stream, magnetic field stream, radiation stream, and inertial measurement unit stream.

    Build Instructions and Acrylic Case

    I've tried to put together a case that would help draw people in, while being functional and easy to construct and disassemble for tinkering. Thanks to Connor and David from Xerocraft for helping me figure out the settings for precision laser engraving, and machining the delrin standoffs!

    Thanks to everyone for their kind words and helpful comments over the project! While designing and building the device is very rewarding, I feel like the real fun is just starting -- actually using the device, and having a reconfigurable scientific multitool to explore the world around us.

    I hope you enjoy the video, and thanks for reading!

  • Hardware Revisions -- Preparing for Release

    peter jansen10/11/2014 at 05:47 6 comments

    After a marathon programming session, the different modules of the software came together wonderfully for the prototype video nearly two weeks ago -- it's been very exciting to see the Arducorder Mini hardware coupled with an attractive and intuitive user interface:

    Hardware Errata

    I tend to think of first prototypes as a sketch -- in hardware -- that's as close to the final project as time and experience afford, but with the knowledge that for a sufficiently complex project there will always be an errata, or list of items that need to be modified or corrected in the next revision. The idea here is to make our mistakes cheaply so that everything has the best possible chance of working the first time -- and to ensure that we have enough wiggle room to tinker with any critical bits that don't work the first time, so we can quickly narrow down any design changes for the next revision.

    With PCB turn times taking about two weeks, my recent focus has been revising the few issues that popped up when validating the hardware, and sending these new boards off to be made. It's my hope that if everything validates fine, that these boards will be the first official release candidate for the Arducorder Mini.


    I confess that when I designed most of the first revision boards, I failed to include mount points on the motherboard and capacitive touch board that would allow the whole thing to be placed in an enclosure! This was a bit of an issue, since the motherboard is only 2-layers, and so densely populated that I had to increase the size a small amount (4mm in both width and height) to accommodate four M2 mounting holes. If I was willing to increase the PCB specifications to 4-layers the board would have been significantly less dense and made mounting much easier, but I'd like to keep the specifications as low as possible so that the boards can be made inexpensively, and the open source community can easily modify the designs with the free version of Eagle CAD. I remember years ago reading that when Stephen Hawking was writing A Brief History of Time, his publisher told him that his readership would be halved for every equation he placed in the book. I feel the same about open hardware -- for every barrier I place on people easily modifying the hardware -- expensive software, 4 layer boards, etc -- that it will reduce the reach by at least an order of magnitude. So I'm trying to keep it simple and accessible.

    Other than mechanical considerations -- the four mounting points, and switching to a connector for the capacitive touch board itself with mounting holes -- there are a few minor schematic changes for the motherboard:

    • Added I2C pullup resistors on motherboard
    • Fixed VCC/GND pin swap on two sets of the PIC32 pins
    • The OLED 13V booster VIN is now sourced from the 3.3V regulator instead of the battery. When sourced from the battery and the booster was disabled, the OLED 13V line would be equal to VBAT, causing a few pixels to stay on, and draining the battery a bit.

    These are largely minor changes, and the technical challenge is largely in rerouting big chunks of an existing board for the modifications.

    The capacitive touch wheel board also has largely mechanical modifications to allow it to securely mate with the motherboard, and to mount in a case. The parts have all been moved to the underside of the board (except for the two pushbuttons), leaving a flat surface for some acrylic to mate with for the touch wheel. I'm hoping to have the opportunity to camp out infront of the laser cutter at Xerocraft one evening in the next week or so to design an attractive case with the hardware in hand.

    To help the indicator LEDs for battery charging and programming to shine through to the front face of the enclosure, I've added the small notch along the length of the bottom of the capacitive touch board. Inventables has some back-surface laser-engravable acrylic that looks very interesting, so I've ordered a few pieces and I'm excited to see what some...

    Read more »

  • Tile-based User Interface, and Spectrometer Board!

    peter jansen09/17/2014 at 06:31 1 comment

    User Interface Design

    Visualization and user interface design is a hobby that I really enjoy, and I've been lucky enough to have friends and colleagues who are usability and visualization folks that I've been able to periodically soak information up from.  The open source science tricorders present a really interesting UI problem -- where most mobile devices have at most a few different sensing modalities, here we have 12 different physical sensors, each of which measures between 1 and 3 different things!  What's more, while some of these measurements are single values (like temperature, say 24C), others are vector values (like the three separate 3-axis vectors coming from the MPU9150 -- one vector for acceleration, rotation, and magnetic field strength, giving nine values total, from a single sensor).  In the extreme case, the spectrometer returns a vector of 256 values. That's a lot of data!  I'm really not aware of any other device that comes close to having so many different kinds of sensing data pouring into it constantly, and while this is very exciting, it's also challenging -- we want folks to intuitively browse and navigate through that data very quickly. 

    I've spent the past few weeks researching design concepts for user interfaces by browsing popular design websites, and talking to some friends, and I think I've settled on a very intuitive, attractive, and useful interface design.  I'll confess that I've been working harder, not smarter about this in recent years -- I'd try and design very complicated things that looked like how other people had done mobile devices and visualization (like android phones), which is a fantastic amount of work for a single human being.  Starting this Arducorder mini project almost 4 months ago, and keeping it attractive and capable but tractable has finally helped me work smarter about this, and figure out a lightweight, usable and intuitive interface concept. 

    I like the idea of live tiles.  When done well, it reminds me of Danny Hillis's idea (30 years ago) about maximizing the amount of computing silicon active on a processor at any one time, but attractively applied to data visualization.  Instead of having icons that just take up space and give you a name, here you have tiles that display a live updating value.  This is powerful from a usability perspective -- instead of having to enter each application to obtain this information (which can consume a lot of time), the most important information is available at a glance from many applications.  While this has largely been applied to communication (e.g. messaging), web (weather/news), and I'm sure sensing applications, here we're going to construct an interface  made almost entirely of sensor data. 

    The really interesting aspect (if you're a data abstraction nerd, like me) is that if we consider only this special case -- visualizing sensor data through tiles -- then we can formulate the software engineering aspect of this very elegantly.  If each tile has a sensor data buffer behind it, then we can browse it's most recent data on the top of the tile, then activate the tile to display additional (historical) data and different visualizations.  If we abstract the sensor data buffer into a few different types, like continuous streaming data (from something like a temperature sensor or an accelerometer) and discretely sampled data (from something like a lightning sensor, that only activates when an event occurs), then we can get rid of the idea of an application.  The design concept becomes browsing sensor data buffers first through a high-level tile interface, and then activating an individual buffer and using a suite of generic visualization tools to better explore it. 

    Interface Implementation

    All of the software engineering aside, what the user sees is very attractive -- tiles with live data that they can browse through very quickly with...

    Read more »

  • Spectrometer Board Design, and Beginning User Interface

    peter jansen09/04/2014 at 02:41 0 comments

    A quick update with lots of progress designing the spectrometer (and thermal camera) board, attaching the radiation sensor board, and beginning to work on the low-level routines for the user interface!

    Fast and Efficient Bitmap Rendering

    Now that much of the hardware is in good shape (or being fabbed), I've been working on the low-level software and APIs that would support building an intuitive and attractive user interface. 

    A bit of background -- from my hobby of indie game development in undergrad and participating in the Ludum Dare 48-hour game competitions (a really fun experience!), I've picked up that in a desktop system (and some embedded systems), a graphical user interface is often functionally implemented as a large collection of bitmaps stacked atop each other with transparent layers.  This has the benefit of being able to make large changes to the user interface through editing configuration files that describe which bitmap corresponds to which background or widget or font (instead of recompiling code), and also allows the user interface artist to easily use whatever tools they're most comfortable illustrating in to rapidly iterate without having to use middleware, or (even worse) be constrained to building an interface entirely out of low-level graphics primitives like squares, ellipses, and triangles.

    This is the approach that I'd initially planned on using, but I'd discovered about a month ago when running a display verification test that the ChipKit SD card library has a read speed of around 100k/sec, which puts the time to load and display a bitmap on the order of about one second -- far too slow for an interface.  There are faster libraries like sdfat, but these required more than a solid evening of porting, and at some point you have to put these on the wishlist, accept the constraints, and exploit the benefits of your existing system while architecting it in such a way that you could drop more advanced functionality in later with a minimum of effort. 

    Posterizer Tool

    While loading bitmaps from an SD card is currently slow, the PIC32MX processor that the Chipkit Max32 uses does have 512k of flash memory that (in addition to code) can store bitmaps that can be loaded very quickly.  A full screen (128x128) 16-bit (2bpp) bitmap takes 32k of memory, so we can't fit very many in memory, but if we manage our resources and store things efficiently, we should have plenty of space for backgrounds and widgets and icons in ~128k or so. 

    One way of compressing bitmaps is to reduce the colour depth -- if we can reduce an image from 16-bit colour (64k colours) to 8-bit (256 colours) or 4-bit colour (16 colours), then we can store the image in half to a quarter of the space.  The trick is selecting a smaller colour palette so that the final "posterized" image still looks very good. 

    There are automated algorithms to do this, but they often give non-ideal results, and I want this thing to look /good/.  I've been looking at user interface concept art the last few days to get ideas, and I'd had the idea of having a main menu that showcases a space theme by having a scrolling background under an icon-based main menu with multiple pages of icons, similar to Android.  I grabbed a copy of NASA's amazing public "earth at night" photograph, downsampled it to 256x128, and used manual posterizing tool I quickly put together in Processing to reduce the colour depth to 4-bit, and store the image as a static array in flash.  Despite being 256x128, the image only uses 16k of flash, and the manual conversion (above) is so good compared to an automated algorithm that I would never have known it was poserized if I didn't do it myself!  It also scrolls back and forth at about 50fps, which looks really impressive.  While I'm still deciding the final user interface concept, it was a good test, and a useful tool to compress the graphic assets into flash so that they're...

    Read more »

  • Update: Now with 100% more WiFi!

    peter jansen08/27/2014 at 06:41 2 comments

    A quick update, with some of the high-risk high-gain aspects of the project!

    CC3000 WiFi Module and ChipKit Library Port

    It's great to get out of your comfort zone and learn new skills or expand your familiarity with different aspects of design.  For me, in addition to the capacitive touch wheel, I decided to include the popular CC3000 WiFi module from Texas Instruments.  I think connectivity fits a lot of the use cases for a science tricorder-like device, from kids using social media to share their sensing and measurements to engage themselves and their friends, to nerdy scientists that spend their entire days in the lab (like me) who would like to push all their raw data to somewhere like for sharing, advanced visualization, or later analysis.  Personally, a neat visualization experiment I'd like to try is to sit the Arducorder Mini on my desk for an afternoon when we're expecting a storm, and visualize the storm coming in through data -- the decreasing temperature and pressure, increasing humidity, reducing distance-to-lighting, and it'd be neat to see if any x-rays from close lightning strikes are detectable and coincide with the lightning detection.  

    This is my first use of a WiFi module in a project, and so my concerns in terms of hardware were routing the antenna traces correctly, and being able to successfully interface with the module using an open library.  There are a number of open reference designs for the CC3000 antenna circuit, and space being at a premium I ended up using the same layout as the folks who designed the open Spark Core (thanks Spark team!).  In terms of open ilbraries, Adafruit released their CC3000 Library, which was recently ported to the Due, which would give me a trail of github commits to look through when porting to the ChipKit MAX32-based system that the Arducorder Mini is based upon.  It all looked good, so I incorporated the CC3000 module into the Arducorder Mini motherboard.

    To make a bit of a long story short, I ran into a problem similar to the issue with the capacitive touch sensor requiring the ChipKit I2C library to be updated from the Arduino 0023 libraries to the new Arduino 1.x (post-Due) libraries, to make use of the additional features that have been added in the last few years.  With the capacitive touch sensor, it was fairly easy to add the repeated stop condition support from the newer Arduino 1.x I2C/Two-Wire libraries, but the Adafruit CC3000 library is based on the much larger Arduino 1.x ethernet library, so there was a good deal of effort involved -- porting the Adafruit CC3000 library from the AVR/Due to the PIC32 from the top, while simultaneously updating the ChipKit Arduino peripheral libraries from the bottom.

    Fully updating the ChipKit libraries to Arduino 1.x would be a full-time task for someone familiar with their inner workings for a good week or two, so it's well beyond the scope of this project -- but after a solid weekend of work I was able to successfully port enough of the Arduino 1.x ethernet library (and its dependencies) to then port the Adafruit CC3000 library to the ChipKit!  The picture above shows success, and the Arducorder Mini successfully fetching its first webpage and displaying it over the serial console.  Great stuff!

    In the end, this means that in order to compile the Arducorer Mini firmware, I'll also have to maintain an updated version of the MPIDE on the github repository.  A side effect of this will be that Chipkit folks should be able to enjoy the benefit of some (partial) Arduino 1.x compatibility.  

    Open Mini Spectrometer 

    In addition to the WiFi module, the other high-risk high-gain aspect of the Arducorder Mini is creating a new version of the open mini spectrometer suitable for one of the low-profile modular sensor boards.  I really needed to build (and not code) last weekend, and have been boring...

    Read more »

  • Quick Update: Capacitive Touch Wheel!

    peter jansen08/12/2014 at 03:31 3 comments

    A quick update -- the capacitive touch wheel is working great!

    I've been working through verifying the hardware (since there's a lot of it), and ensuring all the critical hardware bits are working before shifting focus to the software and user interface.  This is largely to make my mistakes cheaply -- it takes two weeks for new sets of boards to arrive, so it's important to figure out any issues sooner rather than later so that they can be sent out for another turn.

    The capacitive touch board was one of the first of the half-dozen modular Arducorder Mini boards that I assembled, and one that I've been excited to get working -- it's the first capacitive touch sensor that I've designed.  I mentioned that in an earlier post I'd had trouble contacting the MPR121 capacitive touch sensor on these boards, even after putting together several capacitive touch boards (with progressively less of the board populated, to try and isolate the issue):

    Making expensive (in terms of time) mistakes

    My normal debug process is to try and isolate the problem -- first to determine if it's a hardware or software issue, then narrow it down to figure out what's going on.  Eagle footprints -- check.  Schematic verified -- check.  Three boards, three different MPR121 Arduino libraries, and one touch board jumpered to an Arduino Due later, the MPR121 still didn't appear to be communicating (while the real time clock on the same board seemed to be communicating fine).  This is a really unusual problem, and I'd convinced myself that as unlikely as it was, it was possible that the MPR121 chips had simply arrived dead, or that they were particularly heat sensitive and not amenable to being reflowed in a toaster oven (although the one I hand soldered made this last alternative less likely). 

    To test this I ordered more touch boards (with slight revisions) from OSHPark, more MPR121 ICs from a different supplier, and an MPR121 breakout board from Sparkfun.  The boards arrived this past weekend, and I put one together with the new parts -- same issue, it didn't communicate.  I wired up the Sparkfun MPR121 breakout, and tried three MPR121 libraries (I2CDev, Sparkfun, and Adafruit, who just released one and a breakout to match) and two boards (Chipkit Max32 and Arduino Due) -- same issue.  It's extremely unlikely that parts from two different batches would be bad, and the Sparkfun breakout board should be tested during assembly -- What was going on?

    For debugging purposes, I decided to try the same code and wiring on an Arduino Uno, not because I had any reason to expect that it'd be different, but just to see -- being their flagship product, it was likely it'd work, and maybe there was something subtly different with the timings. And it did work!  On goes the logic analyzer to see what's going on!

    The MPR121 communicates over I2C, which is a two wire master/slave protocol with a bidirectional data line (SDA) and a clock line (SCL) that's clocked from the master.  Above we see the waveforms for the first communication to the MPR121 using the Adafruit library, with the Due on the top, and the Uno on the bottom.  The interesting thing is that the waveforms are nearly identical, and in both cases the MPR121 is acknowledging the communications by sending the ACK bit at the end of each transfer, but in the case of the Due (and Chipkit), the read commands are not returning data. 

    There is one notable difference in the waveforms for the Due and Uno -- during the command to read data from the MPR121, the Uno is correctly sending an I2C "Repeated Start" condition between telling the device it wants to read and actually performing the read, where as the Due is instead sending an I2C "End" followed by a "Start".  In most cases that I've encountered this doesn't appear to be an issue, but the MPR121 datasheet clearly appears to show a "Repeated Start" condition for this transaction, so it's likely...

    Read more »

  • Sensor Board Mega-Update!

    peter jansen07/29/2014 at 06:14 4 comments

    A big update with lots of pictures -- I've been building and testing many of the first revision sensor boards.

    Watching the PWM of your soldering station's power supply!

    One of the things I remember most from building the Open Source Science Tricorder Mark 1 is that the moment I had it built and programmed -- around 2am, late one weekend, doing laundry at my parents house in the finest grad student tradition -- I immediately looked around for things to sense.  The magnetometer visualization on the Mark 1 was always my favorite, and holding the Mark 1 up to a wall-mount power supply I was able to see the fields of the transformer bouncing back and forth, only moments after finishing the device.  Definitely very cool, and very memorable.  Years later we were hunting down some high magnetic fields in a mens washroom under an NMR lab at school, which is probably the second most memorable (and probably one of the most hilarious) moments of science I've had. 

    I decided that, with many of the Arducorder Mini sensor boards up and running, and a basic multi-series graph visualization plotting the x, y, z (RGB) and total (white) field strengths from the magnetometer, that it'd be interesting to place it near my heavy soldering station -- heavy from a big transformer in its base -- and see what we could see.

    The solder station works by pulsing the heater on the soldering iron to keep it at a set temperature.  When the internal temperature sensor reads the iron is too cold, it likely pours on the juice to keep it at a given temperature.  The neat thing is that this appears to happen in discrete chunks of time a second or two apart -- looking at these two pictures, we can see a roughly sinusoidal magnetic field strength (white line) from the transformer -- my first guess is that this is that this is the 60Hz line frequency aliased by whatever the sampling frequency is of the magnetometer here (about 20Hz).  But, in the first picture, something really interesting is visible -- the field strength suddenly shoots up for half a second, likely signifying that the soldering station has engaged the heater on the iron.  Very neat to watch!

    And here's a quick video I took while testing the magnetometer (and microphone -- the purple series). 

    Modular Sensor Boards

    I try to make my mistakes cheaply, so recently I've been building as many of the first-revision boards to verify their functionality, and note any issues or modifications for the next revision.  Pictured here (above) is the sensor board that contains the lightning, UV, and audio sensors (front), and the atmospheric sensor board that contains the atmospheric sensors like temperature, pressure, and humidity (right).  

    The same view, but here I've just waved a pair of piers that are slightly magnetic near the Arducorder Mini to show the simple multi-series graph widget.  There's still a great deal to do on this widget, but it's a good start for easily graphing a few related sets of data, and the autoscaling feature means it's entirely hands free. 

    To verify the functionality of the microphone, I wrote something that would pipe the data to a graph, and started singing to watch the waveforms.  (Actually, the first thing I did was to put on some music with a beat, put the Arducorder Mini up to the speaker, and see if I could watch both the audio waveform and the magnetic field from the speaker, but I think I'd have to look at the data a little closer or plot it overtop of each other to verify that the field strength changes were correlated with the audio amplitude).  Still, very cool for something that's just starting!

    The UV sensor also looks to be communicating okay, and the data changes when I place my hand over it, but it'll need a bit more work to verify the measurements.  I didn't happen to have a storm handy to test the lightning sensor, but the breakout board I have seems to be particularly good at...

    Read more »

  • First Sensor Boards

    peter jansen07/16/2014 at 06:42 5 comments

    A bunch of the sensor boards arrived this week!  I confess that holding them in your hand is a lot different than seeing them in Eagle CAD -- these new sensor boards are tiny. 

    Modular Sensor Boards

    The first three (of five) sensor boards arrived, with the radiation sensor board (and the touch interface board) arriving a few days later.  The spectrometer board is the only sensor board that still has to be designed, and I'm waiting on laying it out until I have a better idea of how the radiation sensor board fits on the back.  The spectrometer is the largest sensor in the device, but if there's room I might be able to lay it down and make the entire device even thinner -- definitely worth holding off a few weeks on.

    The first thing that struck me is that these sensor boards are *tiny* -- much smaller than any of my previous boards.  They're about the size of the tip of my finger!  I think the idea of utilizing as much real estate on the outside of the device as possible for sensors (rather than just having them all face towards the front) is really a fantastic design idea for keeping the device small. 

    These boards are so tiny that they're a bit of a challenge to attach a solder stencil to. Since invariably many of the parts I use end up having very fine pitches (0.4 to 0.5mm), my favorite method of stenciling is to clamp the board and stencil in a clamp, adjust it so it's aligned, then squeegee on some solder paste.

    Here, the sensor board combining the Honeywell HMC5883L 3-axis magnetometer (left) and the Invensense MPU9150 9-axis accelerometer/gyro/magnetometer (right) is being assembled.

    Here's the board, with solder paste.  Looks good!  The paste on the MPU9150 is a little misaligned by a few tenths of a millimeter, but it tends to sort itself out during the reflow process.  I usually adjust some of the more worrisome looking misaligned paste around with a pair of tweezers before placing the components.

    Here's the board with paste and after the components have been placed.  Time for reflow!

    I tend to reflow most of my boards in a $20 toaster oven.  It sounds crazy the first time you hear it, and you feel crazy the first time you do it, but it usually works out very well.  Sparkfun has a tutorial on converting toaster ovens into reflow ovens, but I live a little more dangerously and just set the heat to maximum and bake -- watching the board like a hawk until it reflows, and then popping it out of the oven immediately after.  

    These sensor boards are /so small/ that they will fall through the grill of the toaster oven, so I've layed this one on an old coaster -- er -- breakout board from another project.  I'm also trying not to snap pictures for too long, since I have to pull it out as soon as it reflows or the parts will cook!

    The finished magnetometer and inertial measurement unit sensor board.  Not shown was attaching the sensor board connector to the back of the board -- a 20 pin double-row 2mm-pitch male connector. 

    I hadn't yet soldered on the sensor board connectors to the motherboard, in part because they were low on stock, so I could only order enough for a few boards. These have alignment pins that go through the board (and make routing a little more challenging), but it's worth it -- they align in exactly the correct, orthogonal orientations. 

    I confess that one of my largest anxieties about this design was the sensor board connectors.  I literally looked through thousands of connectors on Digikey searching for one that was both right-angle, board-to-board, medium-density, strong enough to firmly mechanically support the sensor boards, and larger than a 0.5mm pitch for easy alignment and soldering. There were not many options.  The ones I settled on looked like they would have /exactly/ the right mechanical clearance if the board could be routed within 10 mil of the connector footprint, which is a little tight...

    Read more »

View all 16 project logs

  • 1
    Step 1

    Step 1: Motherboard Assembly and Programming

    I designed all of the boards to be hand solder friendly, with leadless QFNs all on one side (that can be reflowed). If the other side has components, these are usually larger and easier to hand solder.

    Step 1 is to use your stencil to apply paste to the CC3000 side of the motherboard. Note that we'll occasionally switch between Revision 0 and Revision 1 motherboard pictures, but you should be using revision 1 (or the latest release, if a later revision exists at the time of reading).

    Populate the back components. I recommend leaving off the sensor headers until the end -- it'll make it easier for the board to fit into a holder while you solder the top components later.

    Reflow the bottom side. You may wish to pre-solder at least the mechanical mount points on the USB connector and battery connector to make sure they don't move (and end up angled) during reflow.

    Next, solder the top components. I do this by hand, starting with the PIC32, moving to the OLED connector, and then if everything looks good, stenciling the bottom of the board for the passives. Please take your time, it's not a race -- and if you bridge the connections it will make a mess of the board to clean up. For reference it takes me about an hour to solder all four sides of the PIC32, going slowly with very small amounts of solder paste. The OLED connector is similarly fine pitched, and the capacitive touch wheel connector is VERY fine pitched, so take it slow. The crystal will require a quick reflow with a hot air station to be properly hand soldered.

    Do not solder on the programming (ICD3) connector -- This is a one-time use connector, so the pins are offset such that the tension will let you quickly program the device, then remove the header so it's not in the way.


    Next we'll need to load the Chipkit bootloader onto the Arducorder Mini motherboard using a Microchip PIC programmer, like this ICD3. If you're not a PIC developer and don't need the debugger functionality, Microchip also has a programmer that's about a tenth of the cost, and here we're just using it to upload the bootloader -- afterwards we'll be uploading firmware using the Chipkit IDE over USB.

    If you're using the ICD3, you'll need a converter to go from the 6-pin phone connector to a regular 0.1" header (Sparkfun sells these). Note that only 5 pins are exposed on the motherboard -- the unused pin (opposite of MCLR) isn't included since space is at a premium.

    Don't forget to power the board from an external supply through the battery connector -- 3.3V from a regulated supply should to well. Ensure that you check for bridges before powering the board, and are using a power supply with a fuse and current meter so that it doesn't blow the whole thing to the moon if you've got a solder bridge.

    The Chipkit folks maintain a great set of documents on how to go about this process (which only takes a few minutes), as well as having the bootloader that you'll need to install:

    The abridged version is that in the new Microchip IDE this has been made super easy, and takes only a few clicks with their HEX programmer:

    Connect, Select bootloader, Program. If you see something like this output, then congratulations, the programmer can successfully commuicate with the PIC32 and has programmed the bootloader! If you don't see 'Target Detected', ensure that you've powered the board externally, and that the power switch is in the "ON" position. If those are the case, verify your soldering.

    CC3000 Firmware Update

    The Adafruit CC3000 library requires that the firmware on the CC3000 is updated in order to connect. This is a quick update and a good first test. Unconnect the programmer and connect a USB cable. Using the Chipkit IDE (Ideally version 0024 or later), load the driver patch sketch and allow it to update the CC3000 module firmware. You shouldn't require the Arducorder-modified Chipkit IDE (which updates a few of the libraries for better Arduino 1.x compatibility) for this operation.

    Finishing up soldering

    Now that everything's working, feel free to solder on the sensor board connectors:

    If you're eager to see /something/ on the screen, you can grab the latest Arducorder firmware (currently "test2k") as well as the updated Chipkit IDE (skip ahead to the main firmware step for the link). You will likely see something on the screen before it fails to find the sensor boards or capacitive touch wheel attached, and freezes -- but this will let you know that the screen is healthy and functioning.

    Congratulations! You now have a working Arducorder Mini motherboard! On to building the sensor boards.

  • 2
    Step 2

    Step 2: Sensor Boards

    Congratulations -- if you've successfully soldered the motherboard, then you'll likely have little issue putting together the sensor boards. They're very tiny, and about a 2 hour build per board. Because the process is similar for each board, here we'll just highlight any deviations to keep in mind. All of these boards have been designed to be relatively easy for an experienced surface mount solderer to put together -- one side has most of the parts and can be easily reflowed, and then the other side (usually just a connector, and perhaps a few passives) can be quickly hand soldered.

    The six sensor boards are: (1) the capacitive touch board, (2) the magnetometer/IMU board, (3) the atmospheric board, (4) the lightning sensor board, (5) the spectrometer/thermal camera board, and (6) the radiation sensor board. Of these, only the spectrometer board and radiation sensor board have special instructions.

    Spectrometer Board

    The spectrometer/thermal camera board houses the most high value sensors on the entire device, and individually represents most of the BOM. Ensure that you take care when assembling this board, and verify the voltages (both 3.3V and the 5V boost for the Hamamatsu micro spectrometer) before soldering the thermal camera and spectrometer.

    I very strongly recommend placing squares of kapton tape (or another non-conductive tape) under both the spectrometer and thermal camera before soldering. Their cans are conductive, and this will help avoid any of the other pins accidentally bridging with the case.

    Optional light source header: The spectometer board includes an optional 3 pin header for connecting your own light source. This header exposes 3.3v, GND, and an I/O pin. It's recommended that you solder a connector to this header, that you can attach LED boards to. The I/O pin should be used to drive a MOSFET that powers the LED -- the pin itself shouldn't be used to source any current (especially for something like a small incandescent bulb!)

    Filters: The two light sensors at the top right of the board have mount holes on either side. These are designed to allow user-configurable narrow band filters (or polarization filters) to attach, for user configurted applications. You'll need to laser cut or 3D print a tiny holder for your filters that affixes to this footprint, with M2 machine screws.

    Radiation Sensor Board

    The radiation backpack board allows the Radiation Watch Type 5 connector to the Arducorder Mini. This sensor board also contains an external comparator that allows the radiation sensor to be much more sensitive. You can experiment with different values for the calibration resistor, but a 2.7k 1% seems to have a good balance of signal-to-noise for me.

    In order to make the Type 5 extra sensitive, you will have to solder a piece of wire wrap to one of the test points. I recommend making a tiny loop at the end (with some tweezers), bending it 90 degrees, then hitting it with some solder paste. This connection has a very low voltage signal running through it, so be sure to do a good job soldering.

    The short piece of wire wrap solders to the backpack at TP1, which should be directly above the appropriate location on the Type 5.

    Congratulations! Feel free to connect this board up to an Arduino/Chipkit to test it out separately with the example firmware before continuing, if you'd like. The folks at Radiation Watch also have some Arduino-compatible Type 5 firmware that should work with this board (and takes the noise pin into account, if you're planning on vibrating the sensor).

    Cat in Digikey box interlude

    Magnetometer/IMU Board

    This board includes an I2C address solder junction for the MPU9050. Ensure that it's shorted as above (otherwise it may conflict with the MPR121).

    Atmospheric Board

    This is the first revision of the Atmospheric board -- you'll want to put together the second revision, with the mosfets for the gas sensor.

    Lightning / UV board

    You'll need to use hot-air reflow or reflow the board twice to properly reflow the tiny microphone on the back.

    Capacitive Touch Sensor board

    The latest revision of this board moves all the components except for two pushbuttons to the bottom side of this board. The whole thing can be easily reflowed without issue. The two LEDs/resistors beside the button are "do not populate" -- they're included incase you want to have a fancy glowing OK button, but are untested.

  • 3
    Step 3

    Step 3: Constructing the Case

    This beautiful case is constructed from laser cut acrylic -- part of which is engraved to make the touch wheel, and buttons. The side is easily manufactured by bending a long strip of acrylic with a normal hot air rework station.

    Laser cut the acrylic

    The enclosure is constructed from 1/8 inch (~2.9mm nominal) acrylic. The pattern files can be found on the Github repository under "mechanical".

    While the back pieces are standard cutting and engraving, the side requires bending, and the top requires essentially using the laser cutter as a mill. The top process is as follows:

    • Cut the top plate outline and M2 holes
    • Cut an outline around the touch wheel
    • Manually remove the plastic shroud on the acrylic, so the next engraving step won't leave any of the protective cover in the touch wheel engraving area
    • Engrave the touch wheel (on the top of the acrylic) to ~2mm depth
    • Carefully flip the top plate in place, using the acrylic sheet that it was cut from as a placement jig
    • Engrave the bottom of the acrylic for the two button lips, and the buttons themselves -- these should also be engraved to ~2mm depth
    • Cut the buttons

    You will need to experiment to find settings on your laser cutter that engrave to the required depth -- this will take a few minutes of experimenting. The settings that I use for our Trotec 60W cutter at Xerocraft are:

    Initial Cutting Step

    Touch Wheel Engraving

    Flip piece -- engrave buttons and button holes

    Final step -- cut buttons out

    Side Piece

    Cut out the bending jig out of 3mm MDF. There will be one extra middle piece that isn't required. The holes should snugly fit some number 6 screws, and hold the jig together. Don't forget to include a nut in the captive slot, so that you can securely hold the large side piece in place while you bend it.

    This step takes a bit of practice, so I recommend cutting out a view side pieces to practice on. Using your hot air rework station set to around 250C, heat the bends one at a time until they very slowly bend into beautiful curves. For the two long pieces, I attached a counter weight on either end for leverage (Just taping a small screwdriver to the ends). This helps gravity along a bit. Try not to force the pieces -- let gravity do the work, and it'll look better.

    It takes about 5 minutes per bend, or about 20 minutes total. If you have an actual acrylic oven meant for this, then you're job is a little easier -- although be careful not to bend the straight pieces, or it may end up looking more like a Picasso.


    Countersink the four holes on the top plate. Using four M2x16mm countersunk machine screws, bolt the capacitive touch wheel board to the motherboard. Place four 3mm high M2 spacers between the boards. The two middle bolts should have M2 nylon washers, and M2 locknuts.

    Attach four M2-tapped 5mm diameter delrin standoffs. You'll likely need to quickly machine these yourself, or purchase some nylon standoffs and tap them yourself. These act as the main fastener for the bottom two holes.

    Ensure these are snug, but not too snug. It's critical that the acrylic faceplace makes very good contact with the capacitive touch wheel for normal operation.

    Attach the battery, with the cable snaked over the top of the spectrometer board connector to take care of any slack. Attach the spectrometer board next, then the three side-mounted sensor boards.

    Next up, attach the radiation sensor board. This should snugly fit between the standoffs, keeping everything in place.

    Next we'll attach the first bottom plate -- this one snugly fits onto the four 5mm standoffs, and provides a lip for the side piece to rest on.

    Next we'll place the side piece on -- this should snugly fit around the top bottom plate

    Last, we'll install the bottom plate with the engraving. The four M2 holes here should also be countersunk. This acts as a retainer plate, very snugly keeping the sides together without any adhesive, so that you can take it apart to tinker without issue.

    Fasten with four M2x12mm countersunk machine screws.

    Plug in the USB cable, and view the beautiful LEDs telling you how great a job you did. Red means the battery is charging, green and blue mean serial communication over USB for firmware programming. If you haven't already, download the Arducorder-modified ChipKit IDE, which updates some of the Arduino libraries towards 1.X compatibility. Grab the latest firmware from the Github Repository (currently test2k) and program the device. The firmware is very large, and will take a few minutes to upload and verify.

    The firmware will display this splash screen during boot up. It should be on the screen for a few seconds while all the sensors are initialized.

    After booting, your Arducorder Mini should begin to display the tile interface. Go explore the world, and share your discoveries with your friends!

View all 3 instructions

Enjoy this project?



nate wrote 05/02/2022 at 05:19 point

This is really cool. If these were available premade, or mostly-made, I'd buy one. I have no idea what I'd do with it, but I'd still buy one.

  Are you sure? yes | no

bgbock2 wrote 09/14/2020 at 01:50 point

Could you post the file arduino-bootloader.X.Max32.hex. I'm not having much luck trying to find it yet. Thanks

  Are you sure? yes | no

peter jansen wrote 09/14/2020 at 06:03 point

Hi bgbock2,

I think this was distributed with the older chipkit MPIDE (and I think this was developed on version 0023, which should be available here: ).  If you don't have any luck finding it after installing it, I can dig out the original machine this was developed on and have a look.

  Are you sure? yes | no

bgbock2 wrote 09/14/2020 at 12:00 point

That's the one I have installed. It does not appear to be there. It looks like I may need the one from your original machine.

  Are you sure? yes | no

peter jansen wrote 09/14/2020 at 19:02 point

Hi bgbock2,

Here's the entire chipkit directory from that machine (including the bootloader directory), just in case there are other bits that are hard to find:

Let me know if you have any other issues!

  Are you sure? yes | no

ephraim.baker wrote 03/07/2017 at 03:36 point

I hope I'm not making a mistake here, I'm not seeing documentation on your Type 5 radiation watch backpack. This was a wonderful solution that I'd like to proxy.
I'm attempting to pull data from the radiation array into an Intel Edison breakout, it's probably easier than I'm making it look haha

  Are you sure? yes | no

peter jansen wrote 03/07/2017 at 07:20 point

Hi Ephriam,

I am slowly working on a new model to replace the Arducorder, and have just uploaded a new (much fancier, but still first and only partially tested) revision of the backpack, available here: . I'm working towards understanding how to characterize energy level with these RWT5 sensors, but I'm largely still an amateur at analog design, so this is an exercise for me. 

The earlier version of the backpacks are available on the github repository.  There is also example code here for the Arducorder Mini version: .   The very first version with the manual potentiometer used on the OpenCT is available here: .  Note that if you're using the Edison with 1.8V I/O, you'll need a level translator to make sure that you don't fry something.  You'll have to have the comparator output connected to an external interrupt -- I'd recommend verifying the board function with an Arduino (or something else real-time) before moving to the Edison. 

  Are you sure? yes | no

ephraim.baker wrote 03/08/2017 at 20:06 point

Thank you for your advice. I intended to do just that actually with a final product being an Edison communicating with an Arduino for sensor data. I might be overthinking what it is I'm attempting to accomplish as well. I definitely have some serious research and catching up to do concerning power distribution.

I'm very much a newbie in this direction (to the extent that I'm learning to solder from scratch) however I'm confident that the amount of free information on the topic will help to overcome the learning curve.

I cannot wait to see what you come up with as a next step for your Arducorder.
It has been a great inspiration to me to imagine a future where the common man has access to such intangible data. I hope that my construct, if completed even into Alpha phase, might enable others to feel as if the construction of personal application devices is not just a thing of science fiction and kids cartoons.

  Are you sure? yes | no

josh034 wrote 02/07/2017 at 00:53 point

Will you be posting any updates as you go, and as you use it?  Also,  are you making any modifications? 

  Are you sure? yes | no

ephraim.baker wrote 02/12/2017 at 00:29 point

I've decided to go a different route with my environment assessment unit.
Rather than use Peter's custom shields I'll be attempting a prototype using prefabricated sensors built around a series of micro-controllers, probably Intel Edison.

The reason for deciding to come up with something a little different really comes down to what I would find useful, my sensor shields include the Type 5 radiation watch, the MLX90621 Far Infrared Thermal Sensor and the MG2639 cellular shield by Sparkfun. Many more not mentioned. GDU will consist of two, 3.2" TFT touchscreen LCD displays.

I can foresee facing problems with compatibility so please offer as much unsolicited advice as you can :) 

This is pretty new territory for me, I'll try to keep updates rolling :)

If you're interested in finding out more about my project you can e-mail me directly,!

  Are you sure? yes | no

peter jansen wrote 03/07/2017 at 07:10 point

Apologies for being slow -- I've begun a new professorship, and time seems to speed away at the speed of light (and I am very behind on my e-mails).  But I have begun designing a new model that's a replacement for the Arducorder Mini, and ideally both much more capable and far easier to construct.   Unfortunately I'm much less quick at posting updates, but hopefully stay tuned!

  Are you sure? yes | no

ephraim.baker wrote 01/27/2017 at 21:33 point

Interested in purchasing a competed unit for field testing within the property inspection industry! 

Is there an engineer out there with whom I could sub contract the construction?

EDIT: 2/4/2017
I begin undertaking the process of construction today making full use of the links the good Doctor has provided. I am optimistic that with the correct application of patience and care I can have a functioning Arducorder in a finite amount of time.
Wish me luck!

Would love to be able to tap somebody who is more familiar with this sort of stuff as a Q/A resource :)

  Are you sure? yes | no

josh034 wrote 01/20/2017 at 02:15 point

I was curious if anyone had built one, and if they could give a review of the building process? Also, a review of using it would be great. I really want to get one built. But before I spend that much money,  I'd like to hear what others think.

  Are you sure? yes | no

justin.m.riddle wrote 04/24/2016 at 05:52 point

I would love to get my hands on one of these, is there anyway to buy a copleteld one?  Or just the circuit board?

  Are you sure? yes | no

James Stewart wrote 04/25/2016 at 05:15 point

you can download the .brd files on github and upload the mto oshpark to buy the boards.

  Are you sure? yes | no

ginhatorra wrote 04/17/2016 at 09:46 point

Would it be possible to remove the screen and couple the sensor array with a smartphone via Bluetooth for the visual output and interface? Obviously you would also have to create an App for it as well. 

  Are you sure? yes | no

Dash Lambda wrote 09/01/2015 at 22:59 point

I must say that this is one of the most exciting things I've seen in a while. My two favorite devices in all of science fiction are the sonic screwdriver and tricorder.

Anyway, I have a couple questions:

-Where do you get your PCB's printed?

-And have you considered trying to use the Intel Edison? I'm currently working on building a tricorder of my own design based around the Edison (Very much inspired by the Arducorder~), and it seems like a very promising platform so far.

  Are you sure? yes | no

peter jansen wrote 09/02/2015 at 05:49 point

Thanks for your kind note.  If I were to have designed this project today, I would likely have chosen to use the Intel Edison.  Their project was delayed, and the Edison wasn't available until the project was nearly complete. 

The Edison still isn't a perfect fit, and while it would make some aspects much easier (like the user interface programming and WiFi), it doesn't have a lot of I/O pins, nor (to my knowledge) a parallel interface.  This means that the OLED display would have to be controlled over SPI (in addition to any other sensors that one places on the SPI bus).  

One could probably make an Arducorder-compatible motherboard using the Edison and a number of I/O expanders without much issue.  I'm not sure what it's current draw is (so I'm not sure how long a battery would last -- you may need a larger one). It'd be an exciting project. 

The purple PCBs that the Arducorder uses can be ordered from, and the stencils from OSHStencils.  OSHPark is very reasonable for small boards, and the quality and specifications are quite good compared to the inexpensive Chinese board houses. 

When you get your project working, please post updates, I'd love to see it!

  Are you sure? yes | no

Dash Lambda wrote 09/02/2015 at 07:35 point

I've seen a lot of people mention OSHPark, but there are just so many sites that it's hard to figure out which one to use.

Oh, and I believe the Edison's power draw ranges from 10mA to 40mAh, though I may be mistaken. They made it a point to keep its power consumption and thermals low- That actually makes it surprisingly versatile.

  Are you sure? yes | no

Dylan Bleier wrote 04/14/2015 at 19:39 point

Find someone with an MBA plus a lawyer to help you commercialize it!  Here, I wrote the beginning of an ad for you:

The Tricorder enables research scientists, engineers, and technicians to conduct fast and effective preliminary investigation in both the lab and the field, fundamentally changing how science is done.  The Tricorder is not designed to replace expensive, dedicated scientific lab equipment that's often bulky and immobile – instead the Tricorder offers a inexpensive, unique all-in-one toolbox of spectroscopic and sensing modules in an unparalleled pocket-sized, wifi-enabled package.  As an extremely customizable and capable mobile analytical tool, the Tricorder finds many applications where conventional spectroscopic and sensing machines are too expensive, slow, bulky, immobile, inflexible or incompatible. 

  Are you sure? yes | no

peter jansen wrote 04/14/2015 at 22:56 point

I'm afraid that after a good deal of research it's highly unlikely that I'll be able to put the Arducorders in people's hands.  I'm an academic researcher at a university, and also a Canadian living abroad in the US.  The visas here are exceptionally restrictive with regards to foreign nationals starting businesses (including those with PhDs), and moving to something less restrictive like permanent residency would be incredibly expensive and take many years.  Science education and the open source devices that I make are a big part of my world, and I spend most of my days doing science in one form or another -- either academic research, or open source hardware.  But the very last step in that process that allows things to move from the lab into people's hands -- commercialization -- is something that I'm simply not allowed to participate in.  Thankfully the nature of open source hardware means that the source files are available for you to build your own, although clearly there is a massive skill barrier that dramatically affects how many will be made. With luck someone fluent in the commercialization process might come along and decide it's the coolest thing they've ever seen, and make them into something that could be inexpensively purchased by all the folks who have excitedly and enthusiastically filled up my inbox asking for that opportunity.   

  Are you sure? yes | no

John wrote 04/15/2015 at 01:21 point

I hate to be an American stereotype, but I see you mentioned you are open to others commercializing these units. What would you want to see from such an individual? Does the open-source nature of the product mean that anyone can do this independently of anyone else? I am very curious as to the specifics of what I or others would expect if pursuing it.

  Are you sure? yes | no

peter jansen wrote 04/15/2015 at 07:10 point

My primary motivation is science education, and giving folks the tools to help sense the world around them.  From the perspective of an open content author (myself), the high-level summary of the CC-BY-SA license is that others are free to use the source files for most purposes (including commercial purposes) without my permission, as long as they provide attribution, and share any changes that they make back to the community.  But this is not a product -- it's a late stage prototype. A product has been optimized for manufacture, shipping, support, has been tested for regulatory compliance, durability, and accuracy, has been through a legal evaluation, has an easily manufacturable industrial design and the associated tooling, and so forth.  This would be a substantial undertaking -- the BOM has nearly 200 components across 7 boards, is about $600 single quantity in parts (no labour), and has a dozen different instruments, many with different industrial design requirements. There are also a few small known errata items, and likely several unknown ones.  It would be wonderful for someone to undertake commercializing this device, but they would have to be very experienced in this process, and it would take significant resources. 

  Are you sure? yes | no

Dylan Bleier wrote 04/15/2015 at 15:00 point

Regulatory compliance and legal evaluation.... ugggghhhhhh!!! 

I think this has potential as a tool for research in some areas, not just as an educational toy.

  Are you sure? yes | no

peter jansen wrote 04/17/2015 at 18:57 point

I think it has fantastic potential for research as well.  A story I'm not sure that I've shared is that one day I had the Arducorder sitting on the corner of my desk charging while I was working (I had a meeting with a reporter later that day who wanted to write a story on it) -- so it had been on and charging for a few hours, and passively collecting data.  Before walking over to the coffee shop to meet the journalist, I happened to be scrolling through the screens and noticed the radiation histogram (basically the energy levels of high energy radiation) looked fairly normal, except that in the last bin -- the catch-all for the really high energy particles, had a HUGE number of counts.  This was really unusual -- usually it only had a few counts, at most, and signified something very interesting was going on.  I asked one of my astronomer friends, and they suggested I check out the space weather -- and sure enough, there was a massive rise in solar activity for an hour or two a few hours before, and (in normal terms) the Arducorder had essentially alerted me to a solar flare that I was otherwise oblivious to.  It was incredibly cool.  I'm a scientist, and these open source devices I build still lead me to discoveries, even while simply sitting on the desk!

Also, try to stay positive.  Who knows, maybe there's an immigration lawyer out there who happens to have an affinity for open source hardware authors, and we'll all be walking around with open source sensing devices in our pockets before you know it.

  Are you sure? yes | no

Dylan Bleier wrote 04/17/2015 at 20:34 point

now that's a pretty cool story.

  Are you sure? yes | no

vipersan wrote 03/05/2015 at 10:01 point

Hey Peter there is new uBlox EVA-M8M GNSS module (7x7x1.1 mm, 5.5-20mA supply current when tracking, UART/SPI/USB/I2C)

And it look's like they have this module on request:

  Are you sure? yes | no

justinStitches wrote 12/21/2014 at 05:28 point
Peter - wow. This is incredible. If you want add Thermal Imaging via a FLIR Lepton contact me and I'll send you one gratis immediately along with a breakout board for prototyping that we did with Pure Engineering: Also, to anyone else, we are now carrying the spectrometer in this project and Pure will soon have a simple breakout for it too:

  Are you sure? yes | no

PointyOintment wrote 12/22/2014 at 08:10 point
You'll need to add a space before the period so the website doesn't think it's part of the link.

  Are you sure? yes | no

peter jansen wrote 12/26/2014 at 03:32 point

This is absolutely fantastic, and exactly what I was hoping would happen! The Arducorder is a huge build, but I was hoping folks would get excited about specific aspects of it (like the spectrometer) and help adapt those into new open source projects. That spectrometer is a beautiful instrument, and $180 is a really great price for it! Let me know if you have any issues with the board, or need a hand -- the external 14-bit ADC adds a little to the BOM, but it really bumps up the resolution, and allows oversampling to 16-bit very easily. Also, thanks for the kind offer of sending one of the Lepton modules -- I actually just received the boards for a version of the spectrometer board with the Panasonic GridEye, but those parts are tricky to get ahold of, and still low resolution. I'll send you an e-mail shortly!

  Are you sure? yes | no

Michael wrote 11/25/2014 at 17:30 point
Please, take my money!
If I had the time and expertise to build one of these, I would. Sadly, I'm way more high-level software than the hardware side of things. So please, please, take my money!

  Are you sure? yes | no

peter jansen wrote 11/26/2014 at 00:26 point
I'm hoping to put together a long post in the next week or two (it's /very/ busy in the lab right now!) with a project postmortem, and part of it will talk about the folks having "i keep throwing money at the monitor but nothing's happening!" problems (which is somewhat overwhelming, and very kind -- thank you). i'm an academic researcher and scientist who just happens to be an okay electrical engineer, and so i'm good at solving scientific and engineering problems. for the first time, the problems that this project now faces are now much more business, regulatory, and legal issues rather than engineering issues, and i'm much less adept at finding answers to these. but i hope to have some answers shortly.

  Are you sure? yes | no


[this comment has been deleted]

peter jansen wrote 12/08/2014 at 22:58 point
Hi Norman, sorry it's still very busy in the lab -- it may be a little while yet before I have the opportunity to do the postmortem.

  Are you sure? yes | no

Jasmine Brackett wrote 12/12/2014 at 23:42 point
Hello Noman, as you are following this project is should show up in your feed when there is an update.

  Are you sure? yes | no

Gasump wrote 11/21/2014 at 10:35 point
Just adding my vote for a pre-assembled PCB or a Kickstarter. If the latter, I'm sure you'll get funded in no time!

  Are you sure? yes | no

andy wrote 11/21/2014 at 05:28 point
Hi! Amazing project. Two things. First, you may want to consider a physical knob in future versions vs. the wheel to make it usable with gloves on.

Second, I'm throwing money at my screen but nothing is happening. Will I ever be able to buy at least pre-assembled PCBs? Thanks!

  Are you sure? yes | no

jaromir.sukuba wrote 11/04/2014 at 19:41 point
Hello Peter,
this is awesome project. I built already a small tricorder, but it is toy compared to your device. It is great not just as whole unit, but even the parts are interesting on itself.

I'm interested in the C12666MA sensor, but I'm unsure where to get it and what is important - how much it does cost. My favorite distributor channels (Mouser, Farnell, RS) doesn't seen to know about the sensor and dealing with manufacturer directly is usually pain in the S, especially when manufacturer is huge and one doesn't want to buy full truck of sensors.

Regarding the radiation sensor - I'm a bit unsure about what sensor you actaully used (FSX100-7 2.0?) and how it is connected - schematics shows comparator and "clicker", but I can't find the detection diode itself and charge amplifier.
You also uploaded pulse width histograms of Ba133 and Cd109, exhibiting interesting differences. Did you investigate more about this, like corelation between energetic and width spectrum?

Sorry for asking questions that may be already answered - your project logs are really huge and informative, but I'm a bit overwhelmed by the amount of information.

  Are you sure? yes | no

peter jansen wrote 11/05/2014 at 00:20 point
Hi Jaromir,
No worries -- they're answered in the project logs and bill of materials, but I suspect that a lot of folks will focus onto these two parts, and I'm very happy to make finding the information about them easier.

The Hamamatsu microspectrometer is available off-the-shelf from Hamamatsu, but you'll need to contact them directly to order one. Last I checked they are about $250 in single quantity, which makes that single part worth nearly half the bill-of-materials cost, so folks have the option of making the "inexpensive-corder" by leaving it out. To the best of my knowledge Hamamatsu only sells directly to folks, and I think at least part of the reason is that they manufacture world-leading sensors for scientific and medical use, and don't want them to be misused for military purposes.

The radiation sensor is described in this project log, about half way down ( ). The radiation sensor is called the "Type 5" by Radiation Watch. Building noise-tight circuits that amplify the signal from a single subatomic photon to a 3.3V pulse absolutely blows my mind, and while they publish the schematics, you'll definitely want to purchase one directly from them -- the process of manufacturing these and making them noise resistant is non-trivial. They're about $70 each, last I ordered. The radiation backpack board (that you linked to above) connects to this Radiation Watch Type 5 at CN1 ("Radiation Watch Type 5 Header", center left) and at TP1 ("Type 5 Pre-comparator test point", top left). The stock Type 5 is good, but it can be made much more sensitive, and the board I designed basically gets its detection efficiency to just above the noise floor. You're right, the Type 5 does use the FSX100, which the datasheet shows has an incredible detection efficiency for low energy (on the order of ~10keV) x-rays, and quickly collapses to ~1% efficiency on the order of ~100keV. I think the folks at Radiation Watch calibrated the Type 5 for Cesium-137, which does have a lower energy emission around ~30keV, but also has lots of higher emissions >100keV to detect. I think the stock threshold is around 60-80keV, but with the modifications (and a R7=2.7k calibration resistor, this is in the build instructions), I think you can get it down to around 30keV, where the Barium-133 has lots of emissivity. The Cd-109 has lots of emissions around ~22keV, and while you see more of these, I think 22keV is buried under the noise threshold... so if you lower R7 you'll see more of these, but your baseline counts will be much much higher (ie. you'll have a much lower SNR that you'll have to characterize).

The energy sensitive histograms are definitely really interesting and exciting. The proper way to sense energy would be to integrate the area under the detection curve and report this out (instead of just having a comparator), but this would be a much more complicated and very fast circuit. The easier way is what I'm doing here, counting the pulse width, with the knowledge that higher energies will take longer to decay, so the pulse width will be longer (but of course this is just approximate, the two are only correlated, and right now we don't know what the coefficient is). I'd love it if there were a clear way to back out energy level (keV) from pulse width. It's clear that it's non-linear, and that there's some variability and overlap (e.g. 50keV might be 50uSec +/- 10uSec). Aside from that, I'd love a few hours with a few monochromatic sources to back out the relationship. It does look like the acrylic case acts as a beta particle blocker, and so a few peaks disappear when the histogram is taken in the case versus out -- so by selecting a few radioisotope check sources with different beta emissions, it might be possible to take a first look at backing this out without too much trouble. Also, for the radioisotope sources the detections are typically under 200uSec, but if you leave it out on a table for an hour pointed up just picking up background/cosmic, you'll very occasionally get a few REALLY big pulses, which are likely some high energy cosmic rays (I've seen one or two on a scope -- they were very big detections). So it seems clear that in the worst case there might be at least half a dozen or a dozen good spectral channels, and in the best case, the Cd109 and Ba133 histograms I posted at least hint that there might be much finer discriminations possible. There are lots of radiation enthusiasts out there with large collections of check sources, so I'm very interested to see what those folks with much more experience come up with.

  Are you sure? yes | no

David wrote 11/05/2014 at 07:57 point
I have a quote from Hamamatsu for Europe; the module alone costs 170 euro.

  Are you sure? yes | no

jaromir.sukuba wrote 11/05/2014 at 10:01 point
I take my hat off to you. Thanks for long and informative response.

Now it's getting clear about the spectrometer - the price is not bad (compared to near IR spectrometers I'm working on daily basis), but something sub 100USD would be sweet. Nevermind, now I've got new item on my TODO list :-)

Regarding the radiation sensor, I understood it now. Honestly, I could track the information back in your project logs, but your summary makes it much easier.
As I looked into X100 datasheet (by the way, sensor is available at Mouser -, great - they have a good selection of sensors at Mouser, actually) the absorption of gamma photons varies quite wildly, peaking about 10keV and going down to approx. 2% at 100keV, decreasing further below 1% at 1MeV. Does it mean that some sort of spectrometry would be difficult anyway? My knowledge/experience is almost zero in here, but to me it looks like the analysator would have hard time telling whether impulse from detector is weak photon (good absorbed) or high energy photon (weakly absorbed). I'd like to be wrong here.

  Are you sure? yes | no

peter jansen wrote 11/05/2014 at 17:22 point
You're very welcome -- like you, I'm definitely excited for when micro spectrometers become sub $100 (they're close now, especially compared to a few years ago). But it's a new and enabling technology. It feels like not a month has gone by in the last 5 years where there's an announcement of a new spectrometer-on-a-chip product by company X, but they never end up working out the bugs or coming to market -- Hamamatsu is the only one that's made it, and that you can purchase (to the best of my knowledge). And it's a beautiful little instrument. If you just want to play, there's my Open Mini Spectrometer design, but the Hamamatsu is a real instrument and has orders of magnitude better performance in almost every measure.

If I remember correctly the X100-7 is most efficient at lower energies where the photoelectric effect dominates, and compton scattering dominates at the higher energies. If particle physics wasn't at 8:30am a decade ago, I might be able to tell you if those effects would have different energy profiles on a scope... :) It's very normal to have different detection efficiencies at different energies in spectroscopy, though -- you just take that into account as part of the "instrument function" to back out the likely physical signal (ie. multiply the counts at those inefficient 1% higher energies by 100x). The issue is of course is if there's a substantial spot where the signals from the two effects overlap, then you have to get a little more clever -- counting the peak heights, sampling the pulse profiles to back out which effect they came from, etc. But it's definitely possible that for x-rays your pulses may look one way, and for gamma rays they may look another. For proper spectroscopy you'd want to back all this out. If you're just interested in doing a classification task (like figuring out what radioisotope you're looking at), in the simplest case you could just build a library of what different radioisotopes histograms look like, and do vector-distance matching. But of course doing the work to get the spectroscopy histogram -> energy level function is more general and exciting.

  Are you sure? yes | no

Androiders wrote 11/04/2014 at 10:32 point
This is so cool :) Great job!

  Are you sure? yes | no

David Baldwin wrote 11/01/2014 at 17:20 point
This is absolutely amazing! Have you given any thought to, or do you plan on designing a premade kit for this device?

  Are you sure? yes | no

Robert Hoffman wrote 10/31/2014 at 01:26 point
Dr. Jansen,
I've been following you and the tricorder since April of 2012. I've never been so excited about a project like this, I thought the idea was both fascinating and awesome. I wish you the best of luck and I hope you are able to reach your dream of every kid owning one of these

  Are you sure? yes | no

Jrsphoto wrote 10/29/2014 at 04:36 point
Dr. Jansen, I've been following along for some time now and just wanted to say congrats on making the final 5! My favorite project of the bunch and I can't wait to see if you win! You've put a tremendous amount of thought, work, heart, and soul into this project and it really shows. Here's to seeing you in space!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates