How to build a DIY Raspberry Pi Spectrometer using a Picamera and Spectroscope.
Vložit
- čas přidán 1. 06. 2024
- Episode 20
#raspberrypi
#spectrometer
Code at the end of the Description! Check out my other videos: / leslaboratory
Please don't forget to like,subscribe and comment for more great content!
If you found this content useful, and would like to support this Channel, please consider supporting this work on Patreon: / leslaboratory
Or donate directly: paypal.me/leslaboratory
Alternatively, please share this content on your social media platforms, it really helps me out!
In this video I demonstrate a home-made Raspberry Pi Spectrometer for measuring the wavelength of light! If you already have a Raspberry Pi, this useful tool can be built for under 100 bucks!
This uses readily available components and easy to use Python software I have written specially for this application.
All code for this video and the bill of materials, as well as additional information is available at my GitHub:
github.com/leswright1977/PySp... - Věda a technologie
Ahhhh shit, here we go again ... *opens project list* .... *adds another point*
Nice project.
bro, can you please share your project list with us?
Great project. Congrats !
Thanks, mate. Definitely gonna make this to analyze the light for my plants
Amazing project! This video earned you a new subscriber! I really appreciate the thought process behind this. Making scientific instruments more affordable by using readily available parts is truly brilliant. This personifies the spirit of open source in my book!
Thanks very much! Totally! Knowledge should be free!
A nice update to a cool project, Thanks for sharing.
You are welcome!
Looks really nice!
Exceptionally clear presentation of a cool project. This is the kind of useful and informative high caliber project you would see in the Amateur Scientist section of Scientific American back in the mid 50's to mid 70's. The content makes this project accessible to people with a wide range of capabilities and experience levels. I cold easily see a middle school or high school student build this as a tool to use in support of a variety of Science Fair projects. I think it will also work well for many of us DIY experiments at home. Providing the source code and a quick tutorial on building the PY project is also very helpful to those who are just starting out or others that want to brush up their skill sets. I hope to see more like this.
Awesome! Thanks for your kind words! I used to read the Amateur Scientist over and over as a kid!
Awesome Project and very nice presentation!
Thanks! Hope you guys find it useful!
Great Work! Very nice project!.
What a great project!
Superb build, hardware and software, love this.
Thanks!
Simply Awesome!
Congrats on 1k subscribers! This is a really cool project, very useful. Would be cool to make a briefcase style case with an lcd and put a fiber connector or something on the input.
Thanks Justin! For sure. I deliberately made the GUI small enough that is should fit on most decent LCD modules you can get for the Pi (clicking the graph on a touchscreen would be a pain, but there are ways around that!). A Desktop instrument would be pretty sweet!
Wow. This is the coolest video I have seen all day!
Thanks! Please like and share!
Great project!
This is fantastic and exactly what I needed... you now have another subscriber! Thanks Les!
Awesome, thanks! More to come!
Very nice! I built a spectrometer inside a CD-ROM drive case using a laptop USB web cam pulled from the screen and a cheap 1000 lines/mm grating. I've also just seen that you can get 13500 lines/mm gratings so I'll be upgrading it and adding the Raspberry Pi instead of having to use my working laptop. Cheers Les, great stuff as always!!
Awesome, thanks! Yep this should work with any physical hardware setup just fine. Happy hacking!
That's pretty impressive subbed
Very nice. Lotsa uses for it.
Great! Hope you guys enjoy it!
this is fantastic!
Super nice project!
Thank you!
What a great project 👍👍👍
Thanks 👍
Just thanks. Made the world better - kudos
Awesome! You are welcome!
Thank you so much. This is wonderful.
You're very welcome!
Fantastic stuff!
Thanks!
Nice! Just a suggestion: instead of reading the amplitudes from a single line of the camera image, maybe you should integrate over the image. 100 lines -> 10 x amplitude resolution, in theory. Either requires a good orientation of the spectroscope or an algorithm finding the tilt (not too hard).
Yep for sure. A much earlier version did this, but I found it too slow. My particular need was speed (pulsed Laser), but if you were doing astronomical observations then integrating is probably a good idea!
A little tilt allows OpenCV to achieve subpixel resolution when it is calculating the location of straight line intersections in an image.
Tilt will help here too, if the system is limited by the optical sensor.
Which is to say that fancy math won't help if the optics move around when the cat jumps on the table.
Great work!
Thanks!
I love how dominant is that elusive, pricey 608nm, makes me hope for that WL to become available as direct diode in a near future
That would be cool, and yellow as well!
Shrek green would be a good addition too
dude, this is awesome!!
I'm glad you like it!
If the ability to take the difference between two spectra is added, it will be useful to characterize optical filters, color film, and the reflective properties of materials.
I love tat the rPi has an RGB cooler, with heatpipes and all. awesome project.
For sure! There's a huge gap between Green and Red that Laser diode manufacturers have been trying to figure out for years.
Extremely important to obtain maximum fps in the program interface!!!
@@appabison8694 indeed. I tried MATLAB in a really early version, but it was far too slow.
This is really cool. You know, one of the ways chemists use spectrophotometry is to estimate the concentration of a given compound in a solution, but doing that requires making a series of standard solutions. Particularly IR-spectrometry is uesd for identifying organic compounds, but doing that requires a library of known transmission spectra. Either way, you have a very powerful tool right there.
Thanks, Les
Great video...👍
I think this project is superior!
nice work
I really enjoyed this video. Thank you for sharing!
Btw, on the web you can find a lot of projects using webcams as spectrometers, most of them where from 2012-2015.
Great! Yep, for sure, but I thought it would be cool do do it on the Pi with Open Source Software.
4:23 Dog in the Background likes the beautiful Spectrum...🐶🐕🐕 me2
Nice Video 👍Thx
:-D all creatures love Spectra :-)
@@LesLaboratory oh Yes..everyone is stunned by such a miraculous appearance...
Have a nice week, keep going with this nice videos and Stay Safe! 👍
Greetz from Germany
Ps: give me that mnl 100...instantly!!! 😁😋
This is very interesting Project. I think if we calibrate it with saturation absorption spectroscopy technique this could become a commercial level spectrometer
have you done any work on this?
Spectacular!
Don't you mean SpectRacular? :)
Thanks Les, great project. Installed on RPi 3B+ and it runs ok ...
Great!
Amazing!! Back in school I didn't end up taking a real optics class. Any recommendations for books or online resources for optics? If not for this video I wouldn't know what lenses to put between the spectroscope and the camera, or if I wanted to project a LCD onto a wall. I really need to know more about this.
Looking forward to the software fix! I was looking for something like this to test/calibrate my custom grow lights, this is really nice.
Version 3.2 is up on GitHub, which temporarily resolves the Bullseye issues!
@@LesLaboratory epic, thanks!
superb. thank you.
I'm so glad I found this channel. Criminally under-subscribed but it won't be for long
Thanks, it is much appreciated. Yeah, the CZcams algorithm doesn't seem to be trying to push my content. Meh, patience and time....
Great project! I think I will build one and do some tests to find a suitable light source to make it a transmission spectrometer. Let's see if I can convince some chemistry teachers at school to do experiments on spectroscopy and photometry.
Thanks! I am sure one of them will be interested in it for sure. Would make a great project!
Very impressive, well thought out presentation and process. I so want to make this! Thank you so much! Subscribed, with the bell :)
Awesome thank you! Yes another use for the Pi! :-t
Very interesting - thanks.
Glad you enjoyed it!
Good on CZcams bring it out or underrated people
Nice! I was just looking at the adafruit AS7341 spectrometer board earlier and this came up
Just get the break out 😂
@@LungsMcGee haha
Very nice gui 👌
Thanks 😁
Cool I have built a Raspi Terminal with 7" touch screen, that is beside my light microscope... with Raspi cam mounted to the third ocular on the microscope. Now if I added a UV LED illuminator I could measure wavelength shifts etc of specimens !
This is great!
Glad you like it!
Very cool indeed, thanks for sharing, liked and subbed :)
You are welcome!
Amazing!
Thanks!
Very cool project. DId you consider the smaller pocket spectroscope and have you done any flame tests. One of my interests is identification/verification of 3D printing filament
The one I have was gifted to me, so I worked with what I had. The pocket version should work, with some experimentation. I have not done a flame test, but now it is added to my to-do list! ;-)
Thanks for making it with items that are available, the classic "I bought it off Ebay" is the most annoying thing to say.
You are welcome, yeah, I hate unobtanium for builds like this, sometimes it's a necessity, but if it can be done with off the shelf parts, then all the better!
Nice! can you add calibration for relative amplitude? for example with a black body source.
Very nice. I am working on getting an AS7341 specto-sensor working on a telescope. It has ok wavelength coverage for a cheap sensor. I have made a 3d printed mount for it that resembles an eyepiece camera. It keeps the sensor's entrance in the center of the optical train. Shooting for prime-focus but may introduce an ED 2x Barlow to give larger star images. I have an ESP D1 Mini reading the sensor and sending the data via MQTT for processing. I will be looking into getting a plot done soon after I get the optics/focusing sorted. Looking at making a focus mask to use in place of the sensor in the same type of mount.
Interesting project. Just curious, do you have a specific astronomy goal such as identifying certain types of objects by their spectra?
@@WilliamDye-willdye Long term, I'm looking to have a small on-the-scope sensor that can be used for quick spectral analyses. Short term, it's to see if I can get a working system for such data collection just on the scope. The AS7341 is the first device I thought would be a good one worth testing due to its bandwidth and cost. I did us an RGB sensor a few years back but never moved past an initial test due to the limitation on the sensor. I know this would not replace a real Astro-spectra setup, but it has been fun and the sensors are getting better.
All sounds pretty cool! :-)
Cool!! Have you thought about removing the UV- and IR-cutoff filter from the Pi cam?
I had the same question --> can we upvote this question ? :)
@@haroldemmers3678 I concur. It is a very solid question and I'm now curious about the answer. Perhaps he considered removing them but decided against it for some reason, and that reason itself might make for a good followup video.
Bayer filter also might affect the spectrum, going with black and white sensor is doable with calibration. Hardest part in this DIY setup is intensity calibration since sensors might pick up different spectrums with different intensity.
All good questions!
I did not remove the IR filter, as the scope I am using was designed for visible wavelengths only, and my interest at the moment is the visible spectrum.
Internally the spectroscope is a transmission Diffraction grating, plus a collimating lens and a prism (for a linear design) this is too much glass and plastic film for UV to make it though and would significantly attenuate IR.
If you build your own spectroscope frontend, you could do whatever you like. For this you would need a reflective Diffraction grating to deal with IR and UV, and quartz optics as well.
Yes, Picams have a Bayer filter. Jon Smirl on GitHub suggested removing this for UV work, and cited a paper here: www.mdpi.com/1424-8220/16/10/1649/pdf but it is not for the faint of heart!
Also yes, you would then have to characterize the response curve for the Picam sensor, minus the Bayer filter.
On the plus side, you would have a really high resolution B&W Picam if you sample the original RGB values as individual pixels. That, in and of itself might be useful to the Astronomers.
Consider removing the CFA or using a monochrome sensor ;)
OMG NICE!
Great video! For those of us who are super-cheap, I wonder if it's possible to make a version that uses light reflected off of CD's or DVD's instead of the spectroscope. Maybe the software could transform the image as needed to reconcile between the CD and a real spectroscope.
Thanks! It should work with any home made spectroscope. So long as you can fit the spectrum in the preview Window. RPi4 is best for this as that is what it was deigned for.
Brilliant
Holy shit man… It was just a suggestion 😂 When I left those comments and suggestions I didn’t think you would drop everything and do this as your next video! But I’m not complaining because this is exactly what I’ve been looking for!
I’m so happy you made this! That’s the reason I left those comments because I knew you would design this thing perfectly and I’ve been ready for a good and polished DIY spectrometer design for a long time!
LOL chill! It was already in the pipeline for some time as I need a tool to measure the tuning curves of the homemade Dye Laser (upcoming video ;-) ) Besides, although there is plenty of x86 Windows software kicking about, nobody seemed to have written software to do this on the Pi, so I figured, why not, it seemed like a good idea! Also Raspberry Pi's are just awesome.
You are welcome! It seems pretty popular on here too.
😂😂😂😂😂😂 this made my day
Fantastic video! I can’t wait to try this myself. Is the website you listed on the GitHub page the place you bought your spectroscope?
And how bright of a light source do you need to get a reading? For example would it be sensitive enough get a reading off something like a glowstick? or maybe a bright LCD screen?
Thanks! The spectroscope was gifted to me, but that is the manufacturers site for this model. There are plenty of similar ones about, or you could make your own.
You can easily get spectra from an LCD monitor. I would imagine you should be able to for a glowstick as well in ideal circumstances.
If I can get time on my side, I might add things like brightness, contrast etc, but I would need to rewrite the interface.
Great!
Badass!
Wow ! Please, any more info on software would be amazing, I'm blown away by this, if ever I needed an excuse to find out what RP is all about its this ! Wow ....cheers.
Thanks! I will do a video on the inner workings of the program when I get some time.
Kinda of cool... You could use it to measure color space and calculate CIELAB ( L*a*b*)... Sort out that sock drawer... Check a paint job... Color formulation... Quality control (if there is such a thing)... Cheers
Nice
Can this be used for display calibration with something like ArgyllCMS? I guess a custom driver would have to be written, but it's the hardware adequate for this purpose?
I have never used that software, so I am not sure whether this would be suitable. I think there are already miniature sensors that can do that at a fraction of the cost.
I wonder if this can be used for leaf spectral analysis or other agricultural use. Can the software be run in other os with python? Thanks!
Would see additional value in integrating detector response curve... currently it is only calibrated for wavelength, not intensity. I agree, that is much more difficult to achieve though.
Good idea. For this, one will need the quantum efficency curve from the camera. But I m not sure the manufacturer has measured it for such a cheap camera. Also, the camera uses a bayer matrix, which means there are red, green and blue pixels. These have to be callibrated individually. So i guess it is easier to look for a monochrome sensor with a quantum efficency curve available.
@@TheMAggi99 Definitely going black and white sensor is a good option. In my young days when still doing detector work, I removed the glass protective plates in front of the ccd array: you can buy 50 of them on the cheap (and break several off them while improving your methods), compared to only one equipped with a quarz window.
I was dealing with soft x-rays lasers, and these tend to actually increase the dark current of your pixels over time, burning the camera chip, even at low average (but high peak) intensity.
Cool :)
Excellent video. I was wondering how I can utilize the spectrum data. Since I can capture some screen shot of the spectrum, how it is possible to analyze the whole spectrum. For example, I want to see the color spectrum of a colorful shirt, how can understand what different colors are present in the shirt. Moreover, while we take spectrum of a white thing, its a combination of all color and show all different spectrum. How can we understand if the color is white or brown.
Great video. I have a question, I need to measure uv wavength from 320 up to 420 nm. Any suggestions? Is there any filter for the camera? Or a specific camera for uv?
jonsmirl on github sent me this: www.mdpi.com/1424-8220/16/10/1649/pdf Worth a look!
Thanks!
Thanks so much!
I'd love to see if you can actually find out the emission and absorption spectrum of actual stars, if you used a good telescope
Neat project. You got my attention with spectrometer, I've always wanted to use a metal spectrometer that can identify alloy percentages in metals. I think they use an x-ray as the most common type , could something like that be modified to use your design?
What you are talking about is XRF (X-ray Fluorescence), which is a whole different ballgame, but fundamentally similar, it just uses X-rays instead, and a suitable Scintillator instead f a diffraction grating to detect the different photon energies.
It would be possible to identify a metal with an optical spectrometer by vaporising it. This can be done with a High power Laser. Mars Curiosity does that: mars.nasa.gov/msl/spacecraft/instruments/chemcam/
I wonder if you could use this to analyze the composition of soil samples? I was thinking of trying to use a specroscope to analyze the mineral content of. Rocks and soil near my house, so I can try my hand at refining metals.
Maybe. I know the Gemologists use them for large gem samples. For things like soil, I'm not sure. You might have to suspend them in a viscous solution like Glycerin perhaps, or as a thin layer on a microscope slide (just a guess I'm afraid).
Aaaah, man, why? ... Just ordered mine ... Great project. Thank you.
You are welcome!
Pipe that spectrums to a tensorflow network and see if you can make it to recognize diffrent waveforms.
That could make a pretty cool project!
EXACTLY what I have in mind. Material identification with a Jetson Nano, if possible. If not, another SBC. Same idea. That's exactly why I'm here.
Would this be useful in detecting what substances make up a powder or liquid? Like if you put it between the light and the receiver, would the change in what light passes through help to determine the makeup of whatever solution you put in its path? Like say for instance you had a few bottles of plant fertilizer without labels and your objective is to identify which is what and if any of them are mixtures, and if they are, what that mixture would be..... If you understand what I'm saying
Yes. What you are describing is Spectrophotometry. You would have a light source aimed at the spectrometer with a known spectrum. This would pass through a Cuvette containing your solution and note the absorption spectra to make a determination of the contents.
You might find with things like Ammonium nitrate, you would need to be able to detect quite far into the Infrared though.
@@LesLaboratory what about products like SCiO's NIR Micro Spectrometer? Too good to be true?
It is a big deal man!
Now I know what to do at this sunday.
Awesome! Have fun with it!
what do you plan to do with this? It seems limiting that it's only as accurate as the light sources you have on hand
How do you calibrate amplitude (height)? which source could be used with a known curve? For example, I think a calibrated amplitude is needed to calculate CRI for light sources
@@TheOleHermit that part is clear, I'm suggesting to introduce a second calibration for the amplitude
epic cool
Hypothetically could you run multiple instances of this for use with multiple cameras on the one rpi ?, is there an AU ledgend on the y axis ? Would it be easy to pipe this data through to another program which could act on the data say for monitoring cell densities during fermentation?
Hypothetically, yes, but it would require a rewrite. The Y axis vals are AU from 0-255.
Again, yes, but a rewrite would be required. There has been considerable interest in using data beyond the program itself, I am just pushed for time at the moment, but it is coming.
With the number and types of request, I am thinking of creating a "suite" of small applications that will run on the pi Zero. One that just spits data out so you can pipe to whatever seems like a good idea.
@@LesLaboratory awesome, thanks for replying, your setup could give my work spec a run for its money, brilliant work
There are cheap handheld spectroscopes on aliexpress (between 4 and 7 USD). Can they be used instead of the spectroscope you are using?
Possibly! Try it, and let us know!
Just what I've been looking for - THANK YOU!
I have lots of RPi 3B+ but no RPi4, so I'll have to get one I suspect. I assume a 2GB one will be enough - but I see that you're using a substantial heatsink on the Pi.
Two questions: Is the heatsink really necessary? Will your software work with the the RPi HQ camera?
Thank you again!
You are welcome!
The heatsink is not totally necessary, but I use the pi for some OpenCV dev work, so why not!
I have not tried it with the HQ cam (I dont have one...yet), but there is no reason why it wouldn't work!
@@LesLaboratory Thanks - much appreciated. I'll give it a go this week some time. None of the work I do with the Pi is particularly demanding (I've got every variety except the 4, and desperately waiting for some Zeros to become available again)
@@LesLaboratory Thanks again - I've only just made a test version, and it works pretty good. I got a pi-4 and set it up with the HQ camera (12.3Mp) and the 6mm CS-mount lens.
It's quite a wide angle lens so the spectrum appears quite narrow, and calibrating the software resulted in the graph grid becoming corrupted. So I'll try with the 16mm lens if I can find it, although I suspect it may be too narrow (but it is optically a much better lens than the 6mm). I'd like to try to get maximum resolution from this, although I guess it'll slow the refresh rate.
The pi does get VERY hot, and eventually shuts down after about 15 minutes - so I've added a simple heatsink.
I've 3D-printed a basic mount for all of this, but will redesign when I get a narrower-angle lens.
How did you know the lasers were those values? I did see a test where the nominated value was not the true value as referenced from a calibrated scope. Is there a standard product where we know the true value that does not vary?
He-Ne Lasers have very specific wavelengths. The common red He-Ne for example is 632.8nm, and does not drift with temperature like diode lasers. This makes quite a precise standard. DPSS Lasers, again these have very specific wavelengths. although the pump diode (808nm) may drift, the Nd:YV04 lases at 1064nm exactly, and so the doubled light is exactly 532nm.
How high in frequency can your system detect? can it detect far infrared? or is this more dependent on the camera being used? Great work!
It can go a little ways into the UV ~380nm to a little ways into the IR ~810, but the spectroscope was designed for visible light. You could build a spectroscope with an extended range though.
Interesting
Awesome work!
Could you suggest other suitable usb camera fore the project ?
It 'should' work with any USB cam that the Linux driver supports. Of course there is variation in quality of cameras. The beauty of Picams though, is that there isn't much variation between models, even from different suppliers.
Greetings from a HAD reader & new sub. I only recently became aware that it was even possible to build lasers at home -- my wife is concerned. 😁 Cool you were able to get that spectrum on a regular RPi camera. Would the NoIR cam variant help with the sensitivity at the extremes of the spectrum, maybe?
Yes, the NoIR cam would be more sensitive. The Spectroscope I am using is designed for visible wavelengths though. The deepest into the IR I have seen is 760nm. To get a larger range, you would have to build the spectroscope frontend. UV is particularly problematic. Most glass types, and all plastic will absorb it. You would have to use Fused Silica optics for UV work, which costs $$$! IR should be no problem though.
@@LesLaboratory Ahh yes, of course. You're working in UV... no idea how I got IR in my head. That explains the effort behind the dye lasers.
Interesting project. I wonder if this band would be useful to measure aqueous salts as in the content of said salts for maintaining a hydroponics system? I suspect, (I am no chemist), that shorter wavelengths would be more useful in that domain. Any idea? A broad band of light may be required also.
Not a Chemist either really. My suspicion is as yours, short wavelengths. IR transmission of solid salt at least, is pretty good, good enough for IR Laser windows such as for CO2.
the most useful range for chemical compositions are SWIR and LWIR as the bond lengths absorb IR light for different bonds.
Pin hole camera to look at the sun? Might be useful for calibration.
Either that or an ND filter and you can maybe calibrate from prominent Fraunhofer lines perhaps. Relative intensity is a different story.
Brilliant, well done. Is its possible to get an xy data file of the spectra?
Thanks! It's coming in the next release (this weekend with luck). A few people have asked, so it will do CSV export, that you can use in other programs. Also, I have implemented a peak hold feature for pulsed applications. Stay tuned!
evolving!
Have you played around with the Pi NoIR camera? Just a Pi camera without the IR filter -- seems like it would be useful for spectroscopy.
I have tried one and can see a little way into the IR, but I haven't fully tested it yet. I have another NoIR cam on order at the moment, as I sacrificed the one I have for an upcoming video...