Back at it with the Teensycorder

A project log for Iteration 8

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

peter-jansenpeter jansen 11/21/2022 at 06:396 Comments

Three years is perhaps a bit of a long while for an update, but here we go. 

I've had precious little time over the past three years for my open hardware projects -- being a tenure track professor and a father to a little one already takes up most of my day, and when the pandemic hit it just took away every bit of time I had.  But, things are starting to get slightly back to normal, and I've been eager to finish off some projects including this latest iteration of the open source science tricorder project. 

The world has of course also changed in the last three years -- in the electronics world, it's almost impossible to get ahold of some parts, including the Raspberry Pi Zero W's that Iteration 8 was originally designed with.  I have thought for a number of years of simply redesigning Iteration8 with a number of changes:

I'm also intending on embracing the 80/20 rule: you can often get a project 80% of where you'd like it to be in about 20% of the time it would take to get it to 100%.  In my past open source science tricorders I've spent a lot of time keeping the board compact and saving every millimeter. Here I'd like to try and use off-the-shelf parts as much as possible, even if it makes the device a little bigger, in favor of finishing the project quickly. 

Enter what I'm currently calling the Teensycorder until I come up with a proper name -- it's a handheld device with a speedy Teensy 4.1 microcontroller, a 2.8" LCD, and one of the blackberry keyboard breakouts from solder party.   One of my recent struggles with using a microcontroller has been the limited RAM.  For example, magnetic tile imager has an 8x8 grid of sensors (64 total) that are read as 16-bit values, that is capable of being read at up to 20,000 frames per second.  At 128 bytes per frame, that's 2.5 megabytes per second of data -- way more than is possible to store for most microcontrollers.  The Teensy 4.1 has 1MB of onboard RAM, with the ability to add 8MB of external SPI RAM -- so it should be able to fit this with room to spare. 

I have drivers for the previous sensors from Iteration 8 currently working:

The switch from a FLIR Lepton to an MLX90640 was a bit difficult because of the lower resolution, and one of the main benefits of the Pi is that it can easily connect to the Lepton through USB.  I've tinkered with Lepton drivers for the Teensy without luck, and can always hook up the Lepton through one of the SPI headers if I'm able to figure it out in the future. 

Just like Iteration8, the sensor boards have small adapters that I put on the back to adapt their standard 0.1 inch headers to the small board-to-board cable connectors. 

The motherboard for the Teensycorder essentially is a large collection of headers and connectors.  Currently, there are specialized headers for the radiation sensor, the magnetic tile (SPI), the TF Mini Pro (UART), two unused headers for the Hamamatsu spectrometer and an SPI camera module.  There are also plenty of standard QWIIC connectors for I2C devices, so that sensors with that interface can be added in easily. 

For this prototype I embraced the idea of headers -- centrally because it's extremely hard to find nearly all of the parts on the device, and I was very lucky to find two Teensy 4.1's in the current shortage, and didn't want to waste one by soldering it to a board that might not work.  The story is much the same for the power circuitry -- while the 3.3V buck power supply is relatively easy to find, it's very hard to get ahold of the 5V boost + lipoly charger, so I decided to make my mistakes cheaply and put everything on headers so that I can reuse them between prototypes. 

With the drivers for most of the major components and sensors seemingly working, my next steps are brainstorming ideas for a lightweight but attractive graphical user interface for the sensors.  I'd also like to try and put as many of the sensors in a power-saving mode as possible, as the current draw can currently be quite large with all of them enabled. 

That's all for now -- thanks for reading!


josh034 wrote 03/23/2023 at 00:47 point

Have you decided what you want the user interface to be? Or is it still a work in progress?

  Are you sure? yes | no

josh034 wrote 12/29/2022 at 00:49 point

Could you do an interface similar to the tablets that can use a keyboard attachment? I mean would you be able to use input from either one, depending on user preference? Or both, if it’s easier?

  Are you sure? yes | no

josh034 wrote 12/22/2022 at 17:42 point

Is the current design going to be touchscreen or will it keep the physical keyboard? Or some combination of both?

  Are you sure? yes | no

peter jansen wrote 12/23/2022 at 04:37 point

That's a good question, and something I'm still trying to figure out.  I had tinkered with using LVGL to make a GUI that was primarily driven by the keyboard, but it's not particularly exciting (and, I'm struggling with the LVGL libraries a bit, so it's been slow going).  So I'm rethinking the interface, and somewhat at the mercy of inspiration for exactly what the interface will look like right now.  I think the other models have historically just had very simple input devices, so similarly simple interfaces.  Now that there's a full keyboard, I'm brainstorming how to best make use of it.

  Are you sure? yes | no

josh034 wrote 12/04/2022 at 02:26 point

That looks like a lot of progress. Congratulations! 🙂

  Are you sure? yes | no

peter jansen wrote 12/07/2022 at 05:24 point

thanks! definitely getting there!

  Are you sure? yes | no