Difference between revisions of "Picorder 2"

From Squared Wave
Jump to: navigation, search
(Hardware)
(45 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:Picorder2feb7th1.jpg|thumb]]
+
 
[[File:Picorder2feb7th2.jpg|thumb|The Picorder 2 test platform, February 2020]]
+
[[File:Prototype 20201017.jpg|thumb|The current prototype test rig]]
The successor to the original [[Picorder]]. What began as wanting to make a single Tricorder replica is slowly becoming more of a set of standards for the picorder family of devices I want to make.
+
[[File:Mainboard 20200811.jpg|thumb|The Picorder 2 test platform main board prototype showing off some new modifications that will be part of version 2, August 2020]]
 +
 
 +
The TR-109 Picorder 2 project aims to develop and produce a portable, self contained, Raspberry Pi based sensor data acquisition platform.
 +
 
 +
It is the successor to the original [[Picorder]]. Originally the projects goal was to make a single Tricorder replica, but the Picorder 2 project has slowly lead to a set of standards for the Picorder family of devices I want to make.
 +
 
 +
<span style="color:#008000">Latest update:</span>
 +
New screen has been installed. Prototype has been wired up with capacitive buttons and shift register controlled indicator lights.
 +
 
 +
<span style="color:#ff0000">To Do:</span>
 +
 
 +
- find a turnkey capacitive touch module
 +
 
 +
- get sensor board printed and assembled
 +
 
  
 
==Software==
 
==Software==
  
Picorder 2 will use [[PicorderOS]] a python library that unifies a number of different modules.
+
Picorder 2 will use [[PicorderOS]] a python library that unifies a number of different modules under a custom user interface.
  
 
==Hardware==
 
==Hardware==
I am planning to make two seperate TR109 Tricorders so as to slowly develop my design. Though they will have different displays they will use the same sensor pallette and basic mainboard layout.
 
  
 
===PCBs===
 
===PCBs===
 +
I'm in the process of having some PCBs fabricated. They were designed in Kicad and I'm planning to release the files for anyone interested in reproducing them.
  
Custom PCBs are being designed and will soon begin prototyping stages:
 
  
 
====Mainboard====
 
====Mainboard====
 +
<gallery widths=500px heights=400px>
 +
File:Chassis 20200827.jpg|The prototype chassis holds the mainboard which connects to the display, supports the interface elements, and main indicator LEDs.
 +
File:Picorder2 mainboardtest mar2020.jpg|The Picorder 2 prototype, March 2020
  
 +
</gallery>
  
[[File:Picorder backplanes ready to ship.jpg|200px]]
 
On March 4th 2020 I received word the first prototype boards were being shipped out.
 
  
  
 
+
=====Changes=====
[[File:TR109mainboard 2020-02-20.png|200px]]
+
I had to change some elements of the design to allow for shift register controlled lighting and so the prototype pcb has been modified.
 
+
Connects to the display, supports the button inputs pcb, main indicator LEDs and other items on the main body.
+
 
+
  
 
===CPU===
 
===CPU===
Line 32: Line 44:
  
 
===Sensors===
 
===Sensors===
Basic ambient environmental; temperature, pressure, humidity and VOC (Volatile Organic Compounds). Ranged line-of-sight temperature sensing (very small envelope. 0°c to 80°c). Magnetometer, maybe something like spectroscope if I can find one that works. Electromagnetic interference of a very arbitrary envelope could be displayed using some kind of ADC and an antenna.
+
Im using these sensors to develop the prototype:
  
====Potential Components====
 
 
;[https://www.adafruit.com/product/3660 Bm860 VOC, Temp, Humidity, Pressure sensor]
 
;[https://www.adafruit.com/product/3660 Bm860 VOC, Temp, Humidity, Pressure sensor]
 
: The [[BME680]] is a basic environmental sensor. VOC is a nice added feature. This sensor will provide ambient environmental information. I've found a good [https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas/python-circuitpython guide] for how to connect it to a Pi.
 
: The [[BME680]] is a basic environmental sensor. VOC is a nice added feature. This sensor will provide ambient environmental information. I've found a good [https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas/python-circuitpython guide] for how to connect it to a Pi.
 
;[https://www.mouser.ca/datasheet/2/18/1143_Datasheet-MiCS-6814-rev-8-1144828.pdf MiCS6814]
 
: I was turned onto the idea of an 8 gas sensor by the [https://magazine.odroid.com/article/the-odroid-go-tricorder-project/ ODROID-GO Ticorder project] where they used this IC to measure carbon minoxide, nitrogen dioxide, hydrogen, ammonia, methane, propane, and iso-butane. I found a [https://blog.enbewe.de/posts/2018-05-19-improving-a-gas-sensor/ great blogpost] on some ways to use it. Because it is an analog sensor I would need to use an ADC and some way to connect it to the Pi.
 
  
 
;[https://www.adafruit.com/product/3538 AMG8833 IR Thermal Camera]
 
;[https://www.adafruit.com/product/3538 AMG8833 IR Thermal Camera]
Line 46: Line 54:
 
;[https://learn.adafruit.com/using-melexis-mlx90614-non-contact-sensors/wiring-and-test MLX90614 Non Contact Thermometer]
 
;[https://learn.adafruit.com/using-melexis-mlx90614-non-contact-sensors/wiring-and-test MLX90614 Non Contact Thermometer]
 
: A cheap and accessible non contact thermometer. This sensor provides accurate specific temperature readings at range. I've managed to find Adafruits own [https://github.com/adafruit/Adafruit_CircuitPython_MLX90614 circuitpython implementation] and  [https://github.com/CRImier/python-MLX90614/blob/master/mlx90614.py this page] looks fruitful too.
 
: A cheap and accessible non contact thermometer. This sensor provides accurate specific temperature readings at range. I've managed to find Adafruits own [https://github.com/adafruit/Adafruit_CircuitPython_MLX90614 circuitpython implementation] and  [https://github.com/CRImier/python-MLX90614/blob/master/mlx90614.py this page] looks fruitful too.
 +
 +
====Other Options====
 +
Other possible sensor options include
 +
 +
;[https://www.mouser.ca/datasheet/2/18/1143_Datasheet-MiCS-6814-rev-8-1144828.pdf MiCS6814]
 +
: I was turned onto the idea of an 8 gas sensor by the [https://magazine.odroid.com/article/the-odroid-go-tricorder-project/ ODROID-GO Ticorder project] where they used this IC to measure carbon minoxide, nitrogen dioxide, hydrogen, ammonia, methane, propane, and iso-butane. I found a [https://blog.enbewe.de/posts/2018-05-19-improving-a-gas-sensor/ great blogpost] on some ways to use it. Because it is an analog sensor I would need to use an ADC and some way to connect it to the Pi.
  
 
;An EMF sensor of some kind.
 
;An EMF sensor of some kind.
 
: Probably a resistor on an ADC to give me basic environmental electrical readings. I found [https://hackaday.com/2016/11/07/diy-i2c-devices-with-attiny85/ this site] that shows you how you can use at AT tiny as an i2c device, which I could use with [https://www.instructables.com/id/Attiny85-EMF-detector/ this guide] to make a small EMF detector to read low frequency interference.
 
: Probably a resistor on an ADC to give me basic environmental electrical readings. I found [https://hackaday.com/2016/11/07/diy-i2c-devices-with-attiny85/ this site] that shows you how you can use at AT tiny as an i2c device, which I could use with [https://www.instructables.com/id/Attiny85-EMF-detector/ this guide] to make a small EMF detector to read low frequency interference.
 +
 +
===Audio===
 +
 +
Audio was missing on the Picorder 1, I'd like to add it to this picorder if possible. I found a great instructable post by [https://www.instructables.com/id/One-Transistor-Audio-for-Pi-Zero-W/ rgrokett] for an audio solution that might work.
  
 
===Shell===
 
===Shell===
 
Picorder 2 will officially support a standardized 3D printed enclosure. This file will likely be included with picorderOS software. The case is designed to be several pieces that fasten together.  
 
Picorder 2 will officially support a standardized 3D printed enclosure. This file will likely be included with picorderOS software. The case is designed to be several pieces that fasten together.  
  
[[File:Picorder2 3d plan.png|200px]]
+
{|
 +
|[[File:Rev1b.png|200px]]
 +
|[[File:Picorder2 3d plan.png|500px]]
 +
|}
 +
 
 +
====General Design====
 +
The current design of the Picorder 2 shell incorporates a main body and chassis with a lower door. All of the major components are housed in the main body with the lower door being used for extra buttons and battery storage. The mainboard PCB is attached to the chassis, along with the Raspberry Pi, the sensor board and all internal lighting. The chassis slides in and out of the main body on tracks, and is secured to the main body with 4 M2 screws.
  
 
Before I decided to use a 3D printed enclosure there were two "off the shelf" options that seemed suitable for the shell
 
Before I decided to use a 3D printed enclosure there were two "off the shelf" options that seemed suitable for the shell
  
 
;Mark 7 Tricorder Replica
 
;Mark 7 Tricorder Replica
: I've acquired a prop replica kit for the mark 7 tricorder from [Stapleton Productions](https://www.facebook.com/Stapleton-Productions-156609151162729/).  
+
: I've acquired a prop replica kit for the mark 7 tricorder from [https://www.facebook.com/Stapleton-Productions-156609151162729/ Stapleton Productions].  
  
 
;1993 Playmates Tricorder Toy
 
;1993 Playmates Tricorder Toy
Line 66: Line 90:
  
 
===Input===
 
===Input===
;[https://www.adafruit.com/product/1982 MPR121 Capacitive Touch Buttons]
+
;[https://www.adafruit.com/product/1982 MPR121 Capacitive Touch Buttons] <<OBSOLETE>>
 +
: It turns out this component has been discontinued.
 
: Controller to use small metal pads for capacitive buttons for inputs. I found a good guide and software info for the Pi [https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/python-circuitpython here.]
 
: Controller to use small metal pads for capacitive buttons for inputs. I found a good guide and software info for the Pi [https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/python-circuitpython here.]
  
 
===Display===
 
===Display===
There are two main display targets for this project.
 
 
The premium version is this colour screen:
 
  
 
[[File:TFT ST7735.png|200px]]
 
[[File:TFT ST7735.png|200px]]
 
;[https://www.adafruit.com/product/358 Generic ST7735 LCD Display]
 
;[https://www.adafruit.com/product/358 Generic ST7735 LCD Display]
: In applications where power isn't as critical a screen like this can provide full colour rich interface. Use of this screen can be facilitated by specifically pushing data to this screen using the [https://pypi.org/project/luma.lcd/ Luma python module] (more work but perhaps less processor intensive) or by using [https://github.com/notro/fbtft/wiki#install FBTFT] to use it as a display target (requires additional software modifications, but allows for generic computing functions to be displayed). The display I found (pictured) had no pins listed as MOSI or MISO (for SPI) but I found a [https://luma-lcd.readthedocs.io/en/latest/install.html#st7735 pin chart] in the Luma docs that helped.
+
: I've been using screens with of this type with the [https://pypi.org/project/luma.lcd/ Luma.lcd python module]. I bet you could also use [https://github.com/notro/fbtft/wiki#install FBTFT] to use it as a display target (requires additional software modifications, but makes it usable as a small computer). The display I found (pictured) had no pins listed as MOSI or MISO (for SPI) but I found a [https://luma-lcd.readthedocs.io/en/latest/install.html#st7735 pin chart] in the Luma docs that helped.
 +
 
  
  
And then a low cost low power monochrome screen:
+
I had considered the idea of also offering a low cost screen, but the availability is poor.:
  
 
[[File:5110 3310 monochrome LCD.jpg|200px]]
 
[[File:5110 3310 monochrome LCD.jpg|200px]]
Line 86: Line 109:
  
 
===LEDS===
 
===LEDS===
As with the original [[picorder]] I want to make sure that this one has a feel of the actual prop. the TOS tricorder only had 3 indicator lights but the TNG tricorder is lit up like a christmas tree.  
+
As with the original [[picorder]] I want to make sure that this one has a feel of the actual prop. the TOS tricorder only had 3 indicator lights but the TNG tricorder is lit up like a christmas tree. Since it seems ill advised to drive all the leds directly from the 3v3 GPIO pins of the Pi Zero I have decided to have a secondary driver for the LEDs capable of supplying the higher current. In order to facilitate this both the main board and the sensor board will include a 74HC595 shift register to drive the many lights on board. This should do for most of the lights on the picorder, but I am still testing.
  
 
I'm going to try and include at the very least:
 
I'm going to try and include at the very least:
Line 102: Line 125:
  
 
I have read (somewhere) that the TNG Tricorder lights were changed by a prop maker to run in the opposite direction only so they could tell when their work was being used on screen.
 
I have read (somewhere) that the TNG Tricorder lights were changed by a prop maker to run in the opposite direction only so they could tell when their work was being used on screen.
 
 
===Controller===
 
I think in the interest of reducing processing load on the Pi I will just use the Pi as a clock and pulse a GPIO pin high and low to a number of decade counters to control the "look and feel" LEDS.
 
  
 
==Gallery==
 
==Gallery==
 
<gallery>
 
<gallery>
 +
File:Prototype 20200817.jpg|The Picorder 2 prototype, August 2020
 +
File:Picorder2 mainboardtest mar2020.jpg|The Picorder 2 prototype, March 2020
 +
File:Picorder2 testrig mar2020.jpg|The Picorder 2 test platform, March 2020
 +
File:P2proto mar2020 chassisandpcbs.jpg|The Picorder 2 test platform, March 2020
 +
File:P2 mar2020 proto.jpg|The Picorder 2 test platform, March 2020
 +
File:Picorder backplanes ready to ship.jpg| On March 4th 2020 I received word the first prototype boards were being shipped out.
 +
File:Picorder2feb7th1.jpg|The Picorder 2 test platform, February 2020
 +
File:Picorder2feb7th2.jpg|The Picorder 2 test platform, February 2020
 
File:Picorder2 3d plan.png|General 3d printed plan
 
File:Picorder2 3d plan.png|General 3d printed plan
 
File:Picorder2 20191103.jpg|The Picorder 2 test platform, Nov 2019
 
File:Picorder2 20191103.jpg|The Picorder 2 test platform, Nov 2019

Revision as of 21:43, 16 October 2020

The current prototype test rig
The Picorder 2 test platform main board prototype showing off some new modifications that will be part of version 2, August 2020

The TR-109 Picorder 2 project aims to develop and produce a portable, self contained, Raspberry Pi based sensor data acquisition platform.

It is the successor to the original Picorder. Originally the projects goal was to make a single Tricorder replica, but the Picorder 2 project has slowly lead to a set of standards for the Picorder family of devices I want to make.

Latest update: New screen has been installed. Prototype has been wired up with capacitive buttons and shift register controlled indicator lights.

To Do:

- find a turnkey capacitive touch module

- get sensor board printed and assembled


Software

Picorder 2 will use PicorderOS a python library that unifies a number of different modules under a custom user interface.

Hardware

PCBs

I'm in the process of having some PCBs fabricated. They were designed in Kicad and I'm planning to release the files for anyone interested in reproducing them.


Mainboard


Changes

I had to change some elements of the design to allow for shift register controlled lighting and so the prototype pcb has been modified.

CPU

Raspberry Pi Zero W
My old favourite will return for this model. Power consumption was a MAJOR problem with the first Picorder, I have found a really good article on some ways to reduce power consumption. I am playing with the idea of using something like an arduino or just an ATTINY, but the Pi has so many advantages.

Sensors

Im using these sensors to develop the prototype:

Bm860 VOC, Temp, Humidity, Pressure sensor
The BME680 is a basic environmental sensor. VOC is a nice added feature. This sensor will provide ambient environmental information. I've found a good guide for how to connect it to a Pi.
AMG8833 IR Thermal Camera
This is a VERY low resolution and low range thermal camera. It will basically only be useful for detecting dramatic temperature differences. It was relatively cheap so I want to include it. This sensor will provide inaccurate CONTEXTUAL temperature information at range.
MLX90614 Non Contact Thermometer
A cheap and accessible non contact thermometer. This sensor provides accurate specific temperature readings at range. I've managed to find Adafruits own circuitpython implementation and this page looks fruitful too.

Other Options

Other possible sensor options include

MiCS6814
I was turned onto the idea of an 8 gas sensor by the ODROID-GO Ticorder project where they used this IC to measure carbon minoxide, nitrogen dioxide, hydrogen, ammonia, methane, propane, and iso-butane. I found a great blogpost on some ways to use it. Because it is an analog sensor I would need to use an ADC and some way to connect it to the Pi.
An EMF sensor of some kind.
Probably a resistor on an ADC to give me basic environmental electrical readings. I found this site that shows you how you can use at AT tiny as an i2c device, which I could use with this guide to make a small EMF detector to read low frequency interference.

Audio

Audio was missing on the Picorder 1, I'd like to add it to this picorder if possible. I found a great instructable post by rgrokett for an audio solution that might work.

Shell

Picorder 2 will officially support a standardized 3D printed enclosure. This file will likely be included with picorderOS software. The case is designed to be several pieces that fasten together.

Rev1b.png Picorder2 3d plan.png

General Design

The current design of the Picorder 2 shell incorporates a main body and chassis with a lower door. All of the major components are housed in the main body with the lower door being used for extra buttons and battery storage. The mainboard PCB is attached to the chassis, along with the Raspberry Pi, the sensor board and all internal lighting. The chassis slides in and out of the main body on tracks, and is secured to the main body with 4 M2 screws.

Before I decided to use a 3D printed enclosure there were two "off the shelf" options that seemed suitable for the shell

Mark 7 Tricorder Replica
I've acquired a prop replica kit for the mark 7 tricorder from Stapleton Productions.
1993 Playmates Tricorder Toy
For the prototype, this is easy to get and modify.

And I hope to be able to maintain support for those ideas as I continue developing the P2.

Input

MPR121 Capacitive Touch Buttons <<OBSOLETE>>
It turns out this component has been discontinued.
Controller to use small metal pads for capacitive buttons for inputs. I found a good guide and software info for the Pi here.

Display

TFT ST7735.png

Generic ST7735 LCD Display
I've been using screens with of this type with the Luma.lcd python module. I bet you could also use FBTFT to use it as a display target (requires additional software modifications, but makes it usable as a small computer). The display I found (pictured) had no pins listed as MOSI or MISO (for SPI) but I found a pin chart in the Luma docs that helped.


I had considered the idea of also offering a low cost screen, but the availability is poor.:

5110 3310 monochrome LCD.jpg

Nokia 5110 LCD screen
To provide low power information output to the user, and maybe to play some snake. I looked in a number of places to find a good guide on how to connect the Adafruit part I have with various descriptions around the web. I found this guide to have some important information, but the wiring information seemed incorrect. This guide lays out how to connect the screen properly..

LEDS

As with the original picorder I want to make sure that this one has a feel of the actual prop. the TOS tricorder only had 3 indicator lights but the TNG tricorder is lit up like a christmas tree. Since it seems ill advised to drive all the leds directly from the 3v3 GPIO pins of the Pi Zero I have decided to have a secondary driver for the LEDs capable of supplying the higher current. In order to facilitate this both the main board and the sensor board will include a 74HC595 shift register to drive the many lights on board. This should do for most of the lights on the picorder, but I am still testing.

I'm going to try and include at the very least:

  • the four green indicator lights (alpha, beta, delta, gamma)
  • the front panel sensor array (the green ripple lights, the various and sundry sensor illuminations)
  • the EMRG button
  • the PWR button.
  • GEO, MET, BIO buttons.

ALPHA BETA DELTA GAMMA

Its always perplexed me that these indicator lights seem to ripple (light up and turn off one after the other) in different directions depending on the season of TNG you're watching.

It makes sense to me that the LEDs on the Tricorder should ripple from top to bottom (alpha to gamma).

I have read (somewhere) that the TNG Tricorder lights were changed by a prop maker to run in the opposite direction only so they could tell when their work was being used on screen.

Gallery

MyCorder

This project is a "MyCorder" build and so I'm using this subreddit to solicit advice from the community.