µ Spec Mk II

Compact Scientific Multi Sensor Measurement Unit.
19Ch Spectrometer - Thermal Imaging - audio & light Spectrum Analyzer - 2D LIDAR Imaging

Similar projects worth following
Compact stand alone and easy to use multi sensor measurement unit displaying analysed and processed signals.

This would be a nice educational gadget, or a early warning system for different human senses.

Stil on my ToDo list:

-Afterglow measurement with analysis (maybe getting the halftime and dimming coefficient - same with cooling curve)
-if time allows a early warning system for dangerously hot objects, UVA-dose, flickering light (photo sensitivity / possible epilepsy warning).
-And just maybe, if i learn how to, putting measurements on a html.

+ Simple Hardware setup.
+ Cost effective.
+ Dimensions: 10 x 6 x 4.5 cm
+ Weight: 137.8 g
+ Code is optimized for high refresh rates. Audio & LDR analysis and display/ refresh rate now 70+ % faster.
+VL53L5 LIDAR 8x8 Sensor is working now.
+ Screensaver (morphing Julia Set)
+ Easter Egg (7 times zoom able Mandelbrot-Set)
+ Pre-complied .bin file now available!


-Animated Boot Screen:  "from chaos to clarity"

Displaying a more realistic prism dispersing light into its components. 

-Main menu:

*The LIDAR-sensor VL53L5cx is build in µ-Spec finally, and its working !! *

Working measurements:

Thermo Cam

- Displaying Raw Data from 32x24 pixel Thermocam (MLX90640) with colorbar and dynamic min./max. temperatures at 1.9 fps (obsolete, due same refresh rate as 80 x 60 interpolated graphic)

- Displaying interpolated Data from 32x24 pixel Thermocam (MLX90640) to resolution: 80x60 pixels with colorbar and dynamic min./max. temperature at 1.9 fps (fps breaks down above 80x60 pixels)

- Displaying Raw Data (MLX90640) 32x24 pixel plotting Min. & Max. Temperature graph


Raw data image of a sphere: (8.4 fps 8x8, 5.6 fps with 32x32)

Spectral Sensor

- Displaying Raw Data input from 1 + 18 spectroscopic channels (340 & 410 - 904 nm) from AS7265x and ML8511 sensors at 11.5 fps.

+ summed up light intensities in µW/cm²
+ summed up light intensities in "normalized" W/m² 
+ Integration Time of exposure Time (adjusting dynamically)
+ lux in lumen/m² at the moment only from the 560 nm Channel (..its not that easy to convert and needs more lines in code for a nice value) thanks to 

- Displaying Transmission Coefficient of translucent objects in percent after taking a reference measurement from static background / ambient light at 11.5 fps

Reference (100 % from ambient light):

Red filter:

Green filter:

- Displaying Reflection Coefficient of objects in percent after taking a reference measurement at 11 fps. (hard coded reference of white paper or make a new own Ref.)

(normal) Light sensor
- Displaying LIGHT signal in time domain at 7.8 fps (old code) => 12.3 fps (tuned code)

+ 480 samples of light intensities in a 30 ms time frame
+ FFT 0-8,5 k Hz Amplitudes
+ color coded Waterfall diagram
+ Light-level in percent over long term time
+ Frequency with maximum amplitude


- Displaying calibrated Audio signal in time domain at 7.8 fps (old code)  => 11.3 fps => 12.1 fps (tuned code) 
+ 480 samples of audio in a 30 ms time frame
+ FFT 0-8,5 k Hz Amplitudes
+ color coded Waterfall diagram
+ Audio-level in dB_spl (Soundpresurelevel) over long term time with 92 dBmax (dampening the signal would give way bigger dB spl-levels)
+ Frequency with maximum amplitude

- Displaying calibrated Audio signal in time domain at 11.7 fps (old code)  => 16.6 fps => 19.6 fps (tuned code) 

+ Audio-level in dB_spl (Soundpresurelevel) over even longer term time

morphing Julia-Set (random initial settings with 242 200 000 million variations ! )

Future hidden Easter Egg:
working 8x zoom able Mandelbrot/Julia-Set (random color palette and Mandelbrot or Julia-Set)

Code for Mandelbrot here:

Future plans:

- combining different sensor data for more information about some sample

- mixing a physical reference white for reflection coefficient 
- using a SD Card to save measurements in CSV format
- WiFi + html with graphs and .txt-file output (is it possible?)

i found those projects stream measurements to a client via html:

for the spectrometer:
for the thermo cam:

I'll investigate that in the future. Maybe there is a way to run that on the 2. core of the ESP32, so the performance/fps doesn't drop to much.

... and much more. But it feels 76% done.


+ ESP32 TouchDown by Dustin Watts 
    -480 x 320 pixel Touch Display

Read more »


Compiled .bin file. The Driver for the LIDAR 8x8 sensor had been edited, so to make it easy for everybody, I pre-complied it for everyone.

octet-stream - 409.88 kB - 11/01/2021 at 18:12


View all 11 components

  • 1
    Print and prepare the case

    To prepare the build, begin with 3d-printing the case.
    This case (*.stl-file) is part of the driver-pack of the screen/esp32 combi from Dustin Watts' github repro.

    Just place all sensors so the breakout-boards don't interfere with each other. A few sensors are just pressed into the cutouts and fit well.  Keep space for the LiPo-battery.

    The AS7265 ist placed at the end of a short, small pipe, with fits into the drilled hole.

  • 2

    Screw the screen into the case and connect all sensors.

    **the VL53L3cx is missing two connections, and I'll update the wiring soon**

  • 3

    Upload code & 'voila'! 

View all 3 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

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