Ozirma - near infrared spectrometer

A small infrared spectrometer to help plastic recycling. Dedicated to micro-factories around the world.

Public Chat
Similar projects worth following
OZIRMA is a portable sensor that can identify different types of plastics in order to help plastic recycling.

OZIRMA uses InfraRed spectroscopy, the same technology found in big recycling factories, but scaled down to fit with fablab/micro-factories capabilities (3D printing, laser cutting, CNC..) and low budget.

With an accessible price tag, OZIRMA aims to help decentralized and low-tech recycling workshops (like PRECIOUS PLASTIC) to sort all the types of plastic waste; the first step in transforming them in new plastic objects (sett, brick, chair, pot...) or raw material (filaments, tubes, sheets...)

Key specifications:

- BOM of 200€

- 10nm spectral resolution

- Diffuse reflectance of three NIR bands: 750-1000nm, 1100-1300nm, 1500-1700nm

- Fluorescence (450-1000nm) at 405nm excitation

- 5 minutes to scan a full spectrum (Fluorescence + 3 NIR bands)

We, Mejdi and Vivien, optical and electronic engineers, are working together to develop OZIRMA. It is designed with cost and fablab-technologies in mind.

A lot of work has been done to decentralized and further plastic recycling (with initiatives such as PRECIOUS PLASTIC) but one essential piece of hardware is still missing: a reliable tool to identify the different types of plastics.

OZIRMA will be able to detect plastics from various types: PE, PP, PET, PS... and allows for better sorting at a lower cost.

Existing solutions are the expensive ones (50k to 100k€), used by large recycling facilities.

Smaller (portable) solutions exist, but still costs around 10k€.

The key ideas being our frugal design:

  • Single pixel IR detector (InGaAs photodiode). Therefore, we need to scan (rotation) with a stepper-motor and the aquisition take some time...
  • Infrared (NIR) LEDs: Lower power than a light bulb (~1mW vs 10W), but they put all their power in the right spectral bands.
  • Moreover, the LEDs are modulated which increase the SNR (synchronous detection).
  • Cheap transmission grating
  • A crazy high-gain transimpedance amplifier: 1 GigaOhm (!!!) over 1kHz bandwith.
  • Vertical scanning compensation of the focal (with a small linear motor), in order to allow for play and slight misalignment of the mechanics.
  • Signal acquisition is done via a dedicated "main board", and signal processing is for  handled by a host software.

Designed with open source in mind:

OZIRMA is an open-source-hardware project (will be when we'll have the time to finish it!) built solely with open-source softwares: GeoGebra, OpenSCAD, KiCAD, Python, and open-source firmware solutions (GCC / Modm).

We truly believe that open-source helps spreading and improving projects, and we want to share this tool to help reduce plastic waste !

Video presentation

The CAD files, all done with OpenSCAD. The fabrication files in stl for 3D-printing , in dxf for CNC.

Zip Archive - 1.29 MB - 11/07/2021 at 09:37



Bill Of Material (170€)

Portable Network Graphics (PNG) - 500.57 kB - 10/27/2021 at 12:15



Bill Of Material (170€)

Adobe Portable Document Format - 565.62 kB - 10/27/2021 at 12:10


Portable Network Graphics (PNG) - 306.55 kB - 10/27/2021 at 11:13



Ozi, full beam line view

JPEG Image - 4.27 MB - 10/27/2021 at 09:41


View all 17 files

  • 1 × Illumination unit (custom PCB and 3D printed housing). 30€ including two IR LED at 1200 and 1600nm (~200nm bandwidth) and a 405nm laser-diode.
  • 1 × Scanning spectrometer. 65€ including a flat diffraction grating (photographic slide format, 600 groove/mm), few lenses, a NEMA 17 motor (for horizontal circular scan); as well as a CNC base (aluminium) and pinhole (copper sheet)
  • 1 × Detection unit (custom PCBs and 3D printed housing). 45€ Including NIR Photodiode, 1 GigaOhm transimpedance amplifier, micro stepper motor (for vertical linear scan), 2mm shafts and zero-backlash spring
  • 1 × Control Board. 40€ Including ARM MCU, Low noise power supply (from USB 1A), ADC, PDM controlled sources generation, USB Communication

  • Q1 2022 - Updates

    mejdi02/22/2022 at 10:51 0 comments

    Vivien and Me had to put the project on pause for few months, but we are back at it since the beginning of the month!

    Heavy modification (some upgrade but also many simplifications) of the optcomecanics and electronics is afoot...

    Plan is to finish designs of "OZIRMA v2" in March and fab+testing in May/June. 1st pilot production (and test IRL by "independant" partners) during the summer....

    Maybe Crowdfunding for this autumn... Anyway release of the sources by the end of the year.

    Stay tuned!!

  • Releasing Ozirma

    Vivien Henry11/07/2021 at 13:49 0 comments

    We are happy to share with you our work !

    But for now, it is still a "lab notebook" !

    Repositories are messy, they need a lot of cleaning !

    We will release everything in time (and with a instruction manual), when the improvements are implemented, and Ozirma is stable and ready for manufacturing  !

  • Last preparation for the 2021 Hackaday price final!

    mejdi11/06/2021 at 23:11 0 comments

    Dead line is tmr 7am Pacific Time. Luckilly it means 4pm French time ^^!

    We have few hours to have a nap and then:

    - Finish to consolidate the documentation of OZIRMA (one zip for PCB, for opto-mechanical, the firmware, the software...)

    - Finish editing the video

    - Finish recording its sounds

    - Have at least 10 entries in our project logs... Just one to go!

  • Pollutech Show

    Vivien Henry11/06/2021 at 22:54 0 comments

    In Lyon, France, 15 of October was the Pollutech show, dedicated to fighting against waste!

    I saw a lot of big actors, and had a lot of discussions about Ozirma !

    It is good to see that we are working in the right direction, and that the spectrometer will be useful around the world !

  • Making a video

    Vivien Henry11/06/2021 at 22:51 0 comments

    Hey ! It's time to rush !

    As a developer, that was my first time shooting a video clip !

    What a day !

    Fortunatly, good friends are helping, they are doing real magic !

    Can't wait to see the result ! (hopefully, before 7th, 16h00 !)

  • Entry to the Hackaday prize 2021

    mejdi11/06/2021 at 19:33 0 comments

    We did rethink and refresh infra-red spectroscopy...

    And OZIRMA is designed to be (re)buildable in any Fablab...

    Why not try our chances to Hackaday prize 2021?

    Reactive Wildcard, a better future! lets go.

  • Octobre 2021

    mejdi11/06/2021 at 19:27 0 comments

    Octobre 2021

    We got some cool "recognizable" spectra for some plastics. But almost no signal for sample that are too or too translucid (especially thin-film)

    While using all the tricks of averaging, denoising and deconvolution we are very close to the limit of detection .

    We still need to increase SNR to detect broader spectral bands on opaque plastics and/or see some signal on dark plastics.

    What would be the cheaper way? a faster ADC (reducing noise by averaging) or switch to a reflection grating (increasing optical signal)?... We may end up trying both ^^

    We also need to modify the geometry of the sample holder to be able to detect thin plastic film (like PET) by retro-diffusion.

  • 1st spectra

    mejdi10/27/2021 at 12:21 0 comments

    September 2021:

    First spectra of PP, PS and PE.

    NB: Spectra are not completely repeatable and the deconvolution sometime diverges. The aquisition need to be done very slowly (high averaging).

    Still some issue with PET, but we have some clues why...

    Next R&D session is schedule for end of November!

  • Second prototype

    Vivien Henry10/27/2021 at 09:34 0 comments

    In May, 2021, we found time to work on the V2 !

    Let's move to a more powerful MCU, a F4 ! Time to learn USB communication as well, to transfer buffers to the computer !

    ~200 machine and hand mounted components later, we have a new set of PCB

    The 1GOhms Transimpedance amplifier DOES work as expected: bandwidth: 1kHz.

    As I recall, I have never spend so much time on so little number of components :)

    SNR is around 80dB. We can start measuring the incredibly small signals from the photodiode !

    (We have in the best case, ~1V of signal, meaning 1nA in the photodiode: noise is 80dB lower than that.)

    We are now measuring, after developing a software toolchain (python / pyqt) spectral data !

  • First Ozirma Prototype

    Vivien Henry10/27/2021 at 09:27 0 comments

    Between March and July 2019 we worked on the first prototype !

    We started with a small MCU, a F0, and a 10MOhms Transimpedance amplifier for major electronics sub modules.

    It was working, in a way ! we learned a lot: the main information was: 10M is not enough !

    Wow. After spending few weeks to simulate completely the TIA and searching all over the internet for the perfect opamp (which we found :) ) , we decided to go for the V2

    The second important new was: A STM32F0 was well under the needed specs, mainly because we needed bigger data buffers for synchronized acquisitions....

    In the meantime, we found a name for this crazy project: OZIRMA.

    It's time to start the second prototype :)

View all 11 project logs

Enjoy this project?



Ki Keri wrote 10/15/2023 at 14:49 point

I was thinking of building a similar design as a project sometime soon to compliment my UV/VIS spectroscope and wondered if instead of the photodiode rotating around the diffraction grating it could be feasible to rotate just the diffraction grating slightly at a high gear ratio. Maybe this would skew the optical axis too much?

  Are you sure? yes | no

Ivor Hewitt wrote 08/16/2022 at 11:33 point

Fascinating, would be great to see the circuit designs when ready, I'm struggling to design a TI amp for the NIRS build I'm currently working on.

  Are you sure? yes | no

ameerbasha12 wrote 05/19/2023 at 17:45 point

you finished?

  Are you sure? yes | no

mejdi wrote 11/03/2021 at 20:43 point

Hi 3d6!

Classically plastic are identified/sorted using their reflection spectra in the NIR (1100-1700nm).

Classically using "broadband IR light-source" aka  "incandescent light bulb".

The full spectra is not necessary, though. Some carefully chosen bands (like the one we chose ^^) are enough to see some specific spectral features.

The  spectral bandwidth of the LED we are using is about 200nm @ 20% power  (if you only consider the FWHM, ie 50% power, it is more like 80nm). It is not much, but it is enough to see specific spectral features. The real challenge is to be sensitive enough, as the level of signal reflected are very low.

We can see the feature of some plastics, though not all YET ( it depends also on the plastic darkness and  thickness). Soon... ^^

NB: SInce 2018 it is easier to find NIR LED with wavelength from 1000 to 1700nm.

We are using the MARKTECH ones that come in  1206 packages.

See all NIR LED of marktech here:

Exemple of the LED we use for the 1100-1300nm band:

  Are you sure? yes | no

the_3d6 wrote 11/03/2021 at 23:27 point

I hope enough information can be extracted this way. Thanks for LED link, on several occasions we had in mind projects requiring those wavelength and getting proper parts was a big problem, somehow never saw this company!

As for sensitivity - sure, but opa380 combined with a good standalone ADC seems to be good enough here. Btw, are you using proper ADC? If not and you rely on in-built ADC of STM32 - you really should try switching, once you'll try it. you won't ever want to go back :)

  Are you sure? yes | no

mejdi wrote 11/04/2021 at 00:13 point

Glad we can help!

If you use NIR LED maybe you'll also need a NIR Photodiode too...

Check this one out ;)

Best bang for your buck in the (new) world of 1206 packaged NIR.

For the sensitivity: ADC is not the big issue (but indeed need to be done properly via dedicated IC ^^). The GigaOhm TIA is the bottleneck (or the optical power, that could be improved); bellow the opa: EMI clip, power supply rejection trace capacitance... it ain't easy to get "good enough"  (ie being only limited by the thermal noise) above 10MegaOhm :p

I wander what Vivien thinks of the OPA380...

  Are you sure? yes | no

Vivien Henry wrote 11/04/2021 at 09:03 point

Did a (very) quick look at the opa380. Not sure that the GBW is high enough.

In term of noise, is a little bit higher that the ones we use.

I should give it a try in sim BTW :)

yes definitly we use a proper ADC :)


  Are you sure? yes | no

the_3d6 wrote 11/04/2021 at 09:58 point

And what opamp and ADC you are using now? Also, is schematics available somewhere?

  Are you sure? yes | no

Vivien Henry wrote 11/05/2021 at 15:10 point

We use the ads868x series for the adc, the first opamp used was a opa2156, and we are investing and testing some others references ! but i'll take a deeper look at the opa380 as soon as possible !

  Are you sure? yes | no

the_3d6 wrote 11/05/2021 at 15:29 point

opa2156 looks good, possibly it's better than opa380 in this role (definitely better by specs but it also depends on how exactly it's used). As for ADC - that one doesn't look optimal here, I can recommend looking either into 16-bit ones with smaller input range (we use mcp391x, at 1 kHz it has 15 noise-free bits for +-19 mV range, with configurable gain it can be set from +-19 to +-600 mV) - or into 24-bit family if you want to keep wide input range, I saw some promising ADS129x parts. Those are sigma-delta ones, but that doesn't look like a problem for this application

  Are you sure? yes | no

mejdi wrote 11/07/2021 at 14:46 point

I like the price of this MCP3910.

reducing range to +/-600mV would work, but not bellow (we are doing fft on large buffer to get the modulation amplitude of each LED).

ADS1291 is a little pricey... And I am not sure more bits is what we need as the thermal noise, in sqrt(k_b x T x 1GOhm) is quite high, even in a 1kHz bandwidth.

More speed (with still low band pass) would allow us to do more averaging and increase SNR. What would you advise as cheap "good" ADC 12bits with higher sampling rate (10MSaps?)  that can easilly be plugged to an MCU (FPGA would be out of price, we think).

  Are you sure? yes | no

the_3d6 wrote 11/08/2021 at 00:43 point

12 bits at 10 Msps is something I haven't ever met - I believe SAR is necessary there, while I mostly search for sigma-delta ones.

If you will decide to use MCP391x - I suggest 3911, then you can use code from our uECG project - I dedicated some time to declare unions with named bitfields, which makes testing different configurations significantly simpler ))

  Are you sure? yes | no

Vivien Henry wrote 11/08/2021 at 09:54 point

The  mcp391x looks nice !

except for the analog range, which is annoying because we need the very high dynamic, i think.
(I like the Oversampling, if i did understand it well, because it does the avering for us at very hiigh speed, and we can keep the data samplerate low, to avoid overstressing the MCU) (maybe i'm mistaken. Need to do more research and calculation ^^)

  Are you sure? yes | no

the_3d6 wrote 11/03/2021 at 18:40 point

Have you compared captured spectra from different materials? Does it have enough sensitivity in the right spectral areas to distinguish between different plastic types? We considered making this kind of device, but from available information it didn't look like plastics can be sorted using easily available LED wavelengths...

  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