Compact, $25 spectrometer

AMS's new AS7265X 3-chip set promises a compact, 18-channel, 20 nm FWMH spectrometer for less than $25

Similar projects worth following
Designing and building an inexpensive spectrometer just got easier with AMS' new 3-chip AS7265X smart spectral sensor; once this is working, building a modern tricorder should be a piece of cake!

AMS makes several interesting sensors including the CCS811 air quality sensor which I use in my STM32 Sensor Tile project and the AS7262 6-channel light sensor, which appears now in a breakout board that Adafruit has just announced. The AS7262 offers six channels in the visible (430 to 670 nm) with 40 nm FWHM resolution. There is also another similar AMS sensor the AS7263 which offers six channels in the near IR (600 - 870 nm) with 20 nm FWHM resolution.

I was thinking of designing a simple spectrometer out of these two by combining them onto one pcb. The problem with this idea is that they both have the same I2C address, so I would have had to use an I2C multiplexer. Then there is the problem of syncing the data conversion and read times to build a proper 12-channel spectrum. These are both manageable problems and I was looking forward to working them out when I discovered, in a way, AMS had already beat me to this idea.

It should be no suprise that AMS thought of combining sensors with different filters (this is how they achieve the relatively narrow 20 nm spectral resolution) just as I did. But they did it right, equiping one of the sensors with a master I2C bus to allow management and proper syncing with the other two. Yes, that's right, in the 3-chip AS7265X set AMS has come up with (AS72651 as master, AS72652 and AS72653 as slaves) there are now 18 individual channels spanning the 410 to 940 nm range with 20 nm FWHM resolution. The full 18 channels can be read out after two conversion cycles (minimum conversion time is 5.6 milliseconds). The sensors can also control indicator leds as well as source leds for illumination to match the spectral response of the sensors.

The idea here is that the resultant device is a reflectance spectrometer which will work best when the object under analysis is bathed in light matched to the sensitivity of the (filtered) photodetectors. The chemical makeup of the test object will determine how much of the light is reflected or absorbed, and a catalog of specific spectral responses of known materials can be built up to allow identification of many unknown ones.

In the initial design, I have chosen one broad spectrum 5700 K 90 CRI led and two IR leds (one peaked at 850 nm and one peaked at 940 nm). The idea is to gather an 18-channel spectrum using the broad band illumination, then again using one or both IR sources. The latter will provide the signatures needed to distinguish and identify organic compounds and analyze plant and animal matter, whether in the wild, in the garden, or on the dining table.

The pcb itself has been designed to be as compact (18 x 19 mm) as possible while remaining easy to assemble, aesthetically pleasing, and functional.

I still have several problems to solve. The master (AS72651) requires that firmware is loaded onto the connected SPI flash memory. I am still not sure where to get the firmware, how to load it, and even whether this needs to be done through the SPI port (which I did not expose to the board edge) or via I2C. Also, I do not know if the master bus requires pullup resistors (this is required on the EM7180 master bus, but not on the MPU9250 bus, so I added them to be sure). I also can't find the three chip set for sale anywhere. Lastly, I think the reference design in the AS72651 data sheet has several obvious errors but it is hard to be sure. I have sent AMS e-mail with my questions and thoughts about the reference circuit but haven't heard a peep yet. I ordered the AS7265X evaluation kit ($130) so I will at least have a working version to examine and start the Arduino sketch development.

This promises to be a fun and very useful project which should result in a tiny 18-channel spectrometer capable of forming the basis for my (or anyone else's) modern tricorder.  

The project is all open source (at least my part is) so anyone should be able to copy it once I get it working. The best part is the total cost (once I do get the bugs out...

Read more »

Final production-ready design

x-zip-compressed - 157.27 kB - 07/22/2018 at 16:49



850 nm IR led data sheet

Adobe Portable Document Format - 144.05 kB - 04/19/2018 at 03:46



940 nm IR led data sheet

Adobe Portable Document Format - 157.60 kB - 04/19/2018 at 03:46



BOM spreadsheet

Microsoft Excel - 12.50 kB - 04/19/2018 at 03:37


EAGLE design files and gerbers

x-zip-compressed - 118.60 kB - 04/19/2018 at 03:16


View all 6 files

  • Getting Serious with Spectra

    Kris Winer08/03/2018 at 21:35 0 comments

    3 August 2018

    Now that the spectrometer design is basically complete (I might replace the switch with a solder jumper to lower cost) and the spectrometer functions (I get 18 channels of data) I want to learn how to get the most out of it---along the way to answering the question: What is it good for?

    First step is to assess reproducibility and accuracy for any given task. I have been struggling with a proper reference material as well. Since I don't want to spend a lot of money, I have tried paper, aluminum foil, and most recently teflon. I bought a 12 inch x 12 inch x 40 mil (0.040 inch)-thick piece of teflon to use as a (relatively cheap) reference. It does a good job of diffusing incident light but even at 40 mils it is not completely opaque (glad I didn't get the 4 mil version!). So I slipped a piece of aluminum foil under the teflon sheet and arranged the spectrometer about 2.5 cm above the teflon surface to take some spectra as follows:

    Breadboard with spectrometer, target (coin of 0.999 pure copper), and cardboard box to place over everything when accumulating data all sit on top of the white teflon sheet. You can see the rectangular piece of aluminum foil (a bit bigger than the breadboard) just under the copper coin and teflon sheet.

    The idea is to average spectra with and without the target in place (in both cases with the cardboard box in place over the whole apparatus to minimize external light sources) and then compare by dividing the target spectrum by the reference spectrum at each of the 18 different frequencies. There remain flaws in this method: I am not rigidly fixturing the spectrometer, the box is leaky, I am not controlling position of the coin except by eye, etc. But I would expect even this semi-lax method to produce something close to the reflectivity spectrum shown here:

    Copper isn't plotted but it would look a lot like gold except shifted to the right by ~100 nm. That is, like all good metallic conductors there should be a reflectivity edge, in the case of copper at ~600 nm. Reflectivity peaks at ~700 nm and then trails off slowpy at higher frequencies.

    This is what I measured:

    I measured each spectrum, three reference spectra and three spectra from the copper coin, separately and with a pause in between where I removed the protective box, rearranged the coin or slightly moved the breadboard, etc. The idea was to assess reproducibility of the measurements and sensitivity to small perturbations. I arbitrarily chose reference spectrum 1 as my reference and I am plotting the ratios of all six spectra relative to reference spectrum 1 above.

    The reference spectra are identical within the width of the synmbols used to mark the data. This shows that at least the spectrometer is measuring the same thing from the teflon + aluminum foil reference material each time. 

    Next, the copper spectra show ratios above one for almost all of the channels because the coin is partially mirrored and should reflect a lot more light at most wavelengths that the diffusely-reflecting teflon sheet. There is relatively low reflectance between 410 and 535 nm as expected, and a strong edge at ~580 nm, also as expected. And the spectrum tails off slowly above 800 nm also as expected.

    What is not expected is the broad dip at 700 nm where there should be a broad peak!

    Is it possible this is due to a geometric effect of light at these frequencies being unable to get to the photodetectors? This is why I repeated the experiment three times and adjusted the spectrometer/target each time. If there was some subtle alignment issue this would show up as a more wild variation; these three copper spectra are remarkable consistent and reproducible.

    This is not pure copper since the surface no doubt is somewhat oxidized; is it possible that the thin oxide layer could produce the absorption at 700 nm? Nope:

    The edge shifts a bit to the IR when there is a thin oxide, but the reflectivity above the edge should be monotonic...

    Read more »

  • First Production Boards

    Kris Winer07/22/2018 at 16:49 2 comments

    22 July 2018

    Got the latest design revisions back from OSH Park and put three together. I consider these the first "production" boards even though I assembled them by hand; they are the final design and ready for a pilot production run in China:

    Also, I was able to buy some of the AS72651 and AS72652 ICs so these are the first boards that have all three of the actual AS7265X ICs: AS72651, AS72652, and AS72653. The previous designs used AS7263 for the AS72651 IC and AS7266 for the AS72652 IC. I bought the AS7263 and AS7266 directly from AMS and these are supposed to be identical to the AS72651 and AS72652, respectively. But probably pre-production variants or something. Anyway, these three boards use the "proper" or more likely "production" versions of the AS7265X chip set.

    Everything works as expected. The switch I added to the back changes the mode from UART to I2C; in the former case SDA (RX) and SCL (TX) serve as the UART port. The fact that these have 4K7 pullups doesn't seem to impede the serial UART data flow. I prefer I2C but it is nice to have the option at the flick of a switch. I suppose a solder jumper would have done as well and saved a bit of BOM cost.

    I should be possible for the user to use a soldering iron to add 0603 leds of his/her choice for the other two source leds. I like having the broad-band IR source led (the bluish square thingy) but this adds significanlty (~$5) to the BOM cost. I think the spectrometer works well-enough with only the broad-band white source led (smaller yellowish thingy) for many applications, so I am kind of on the fence about the benefit of having the IR led too.

    The total cost ended up being about $21 without the IR led and about $26 with. So this meets the goal of a "Compact, $25 Spectrometer".  I listed the final design version (v.02c) of the AS7265X spectrometer as a product on Tindie for $49.95 with the option of adding the broad-band IR led for $10 extra. Considering I will assemble these by hand for a while to test demand, this is still a bargain. But for the cost conscious and/or those that want an assembly challenge, the design files and BOM are open source. I will post the final design and BOM on the project page.

  • Calibration Method(s)

    Kris Winer07/16/2018 at 00:00 0 comments

    15 July 2018

    Just a brief note on calibration. In addition to the calibration plate I designed (which has not been terribly useful) there is this note on calibration using a CFL (mercury vapor light) from the site, who sell their own inexpensive (albeit much larger) spectrometer for hobbyists.

    Calibration is the key to getting sensible results from any spectrometer, and the difficulty in obtaining known spectra for assessing the capabilities of these $25 Spectrometers  has made it difficult for me to judge how well I can trust the various spectra I have been able to generate with the devices to date. I was able to verify that the spectra using the broad-band IR led source and a standard reflective mirror looked a lot like the one in the IR led data sheet. I looked at maybe using sources available from spectrascope suppliers but these tend to be quite expensive. But I would really like an inexpensive calibration method using a source with well-defined/known peaks within the 410 - 940 nm range and this CFL method looks like it just might fill the bill.

  • More Applications

    Kris Winer07/09/2018 at 23:50 0 comments

    July 9, 2018

    What's the point of having a new toy if you don't play with it?

    First thing I did was to replace the J-hook test leads with 22 gauge wire soldered onto the plated-through-holes at the board edge. A bit of heat shrink and I have a nice rigid cable that I can plug into my breadboard. Much cleaner and easier to use now, although not as rigid as I would like. The third hand as a support isn't much better, so I need to develop some way to mount the board in a more reproducible manner. Maybe using the mounting holes...

    I will turn the spectrometer on the multi-colored paper targets in a bit, but first, let's take a look at some simple organic objects; an apple, a banana, and my palm:

    What color is the apple? Banana? Well, I see yellow and green in both, and a bit of red in the apple. What color is my palm? It is somewhat apple-like, but not green ;>  What does the spectrometer say?

    I am plotting the spectrum measured from each object at 16x gain, 100 ms integration time, and 25 mA for both white and IR broadband source current. The spectra are normalized by the spectrum measured under the same conditions for the vanity mirror as reference. I expected the spectra to be less than one (less reflective than a silvered mirror) but I didn't control the distance from the spectrometer to the objects very well; hard to do with curved surfaces in general.

    Maybe my palm is green! The peak at 535 nm dominates for all three objects. None have a significant blue component and above 600 nm the banana, somewhat surprisingly, has the flattest spectrum with the highest reflectivity. I am not quite sure what to make of this. Are the apparent color differences we see with our eyes in the objects above really due to small, relative differences between similar spectra? What happens when we use obviously different objects, like the colored paper above?

    I repeated the same experiment (with the same settings) as above but this time I took more pains to keep the distance between the spectrometer and objects the same by leaning the paper targets agains the mirror surface and restarting the sketch to grab a new spectrum. It was not possible to keep the paper targets completely flat nor in the exact same position, still I was surprised that in some cases I measured twice the light (twice the calibrated intensity anyway) reflected from the paper target than from the silvered mirror!

    Well... this is sort of psychodelic, flourescent colored paper. I wonder if the dyes that give the paper these colors are really flourescing under the broad-band illumination? This wouldn't be too surprising given the very strong deep blue (410 nm) component of the source light. Do the spectra make sense?

    The blue and green paper targets reflect very little red spectral components and the orange and red paper targets reflect little blue. So this makes sense. The green and blue paper targets have reflectance peaks at 435 and 535 nm, the blue paper with a bit more 435 nm and a bit less 535 nm, green vice versa. So this makes sense. Pink, orange, and red paper targets have a dominant peak at 560 nm. There isn't a lot of difference between these, similar to the case of the organic targets above. Perhaps if we normalize everything to 1 we will discern more:

    OK, the orange paper target reflectance has large components at 535 and 645 nm that the red and pink targets do not.  Pink and red target paper reflectivity are almost identical below 700 nm except that the pink paper target reflects a bit more blue (435 nm) and a bit less orange (585 nm) color. Is this enough to cause the apparent color difference between this red and pink paper?

    None of these tests is particularly scientific nor are they meant to qualify the photospectrometer for any particular use. It's just part of the natural process of figuring out what it can and cannot do....

    Read more »

  • Continued Evolution of the Design

    Kris Winer07/08/2018 at 17:17 0 comments


    Now that everything works, I am in the process of refining the design to optimize utility. I got the latest iteration (v.02b) back from OSH Park and built one.

    Here ready for testing.

    A closeup view.

    I added 2.54-mm diameter mounting holes at the bottom. I put all of the IO on one side to make it easier to solder a wire bundle or add a connector. I added a footprint for OSRAM's SFH4735 broad-band IR led. And I added what I thought was a switch to more easily go from I2C to UART mode but the SPVM110100 I selected is really a tactile button, so in the next revision (v.02c, I hope the last) I replaced it with my old standby the SSAJ110100 mounted on the back of the board. In fact, I had to remove the pesky SPVM "button" since I also got the footprint wrong and it was shorting the board! And, since I ran out of the MX25L4006E 4 Mbit SPI NOR flash I was using I switched to the W25Q80BLUX1G 8 Mbit SPI NOR flash with same 2 mm x 3 mm USON footprint, of which I have an abundance. I moved the (green) indicator led to just under the SPI flash; this is useful for indicating data ready interrupts when using the spectrometer. I kept the two 0630 footprints on the board, and kept them unpopulated, in case I (or users in general) want to add a specific light frequency (like UV or IR, for example) as an additional source.

    The OSRAM SFH4735 is purported to be a broadband IR source:

    with a convenient blue glow (peak at 440 nm) to aid illumination (since the broad band IR above 700 nm can't be seen by humans). This is a great idea, but the problem is the IR is only significant when the current is cranked up pretty high (350 mA in the output spectrum above). My little Dragonfly has an output maximum of 150 mA. But the AS7265X maximum source led current is only 100 mA anyway. Let's see what we get.

    First of all, I procurred the wife's portable vanity mirror and made use of my $5 third hand to create a scientific laboratory for testing the latest version of the spectrometer:

    The above is using both the broad-band Luxeon-Z-ES 5700 K 90 CRI led and the OSRAM SFH4735 at 50 mA output current.

    Under these conditions (16x gain, 100 ms integration time, 50 mA sources, ~6 cm distance from source to mirror), this is what I see:

    These spectra are averages over ten or twenty seconds to eliminate variations due to fluctuating source current and anything else. I really should solder the wires onto the spectrometer, since the j-hooks are a bit dodgy. At 50 mA, the broadband IR (IR50) seems to add a bit to the white light (BB50) source (~10x at 850 and 940nm) above 750 nm, as it should, as well as adding to the blue end of the spectrum. The OSRAM SFH4735 is fairly expensive, and it is not yet clear that it is adding high value; more testing will tell.

    The IR spectrum looks a lot like the spectrum in the SFH4735 datasheet except that the peak at 440 nm is suppressed.  This might have to do with the low current.

    Looks like the spectra just increase monotonically with increasing led current, so any differences between what I measure and the data sheet spectrum are due to variations from led-to-led, or different sensitivity of the spectrometer at different light frequencies. Well, this is the whole point of using a good reference, and I am assuming the vanity mirror is such a reference (at least it is better than white copy paper).

    So let's measure something with the combination of white broadband and IR broadband sources at 50 mA. This is what aluminum foil gives:

    This is the spectrum measured from aluminum foil divided by the source spectrum using both the broad-band sources (white light and IR) at 50 mA and the spectrometer settings above. Aluminum has a pretty high reflectance that is nearly constant over this spectral range so should give a horizontal line less than one (aluminum foil is not as reflective as a silvered mirror), and...

    Read more »

  • Metals Spectra

    Kris Winer06/21/2018 at 22:42 7 comments

    21 June 2018

    I completed the Arduino sketch faster than I expected. I have everything working except I can't seem to get the interrupt to work. I will eventually.

    Edit: It helps when you don't forget to declare the interrupt pinMode! Interrupt working now...

    For the moment I am polling the data ready bit in the configuration register. I am updating the Arduino sketches I am using on github. I am reading the 18 data channels, both raw and calibrated, using simple C++ API functions like:

      for(int i = 0; i < 18; i++)
       Serial.print(freq[i]); Serial.print(","); Serial.println(calData[i]);

     This makes it easy to average data, plot individual channels or all the channels at once. I might connect a Sharp TFT display and see if I can literally generate spectra but for now I am content to plot the data using a spreadsheet.

    I set the broadband light source to 12.5 mA output (lowest setting), the sensor gain to 16x (default) and the integration time to 100 milliseconds and started taking spectra of the metal objects pictured below:

    Aluminum foil, silver, copper, and gold (really 91.67% Au/8.33%Cu) coins. I held the spectrometer about 2 cm from each coin face and captured one set of data for each to the spreadsheet. I normalized the four individual spectra to one (they all had peaks at 610 nm).

    The first thing to notice is that beyond 750 nm or so there is no signal. This is because the broadband source is more or less extinguished above this frequency. I need to find a broadband source centered at about 850 nm...

    Next, I haven't done any kind of subtraction. The data are not raw data but calibrated data, presumably using some sort of calibration coefficients that correct for deviations from a standard set during factory testing. This spectra is the result of using the spectrometer like a hobbyist might; turn it on, point and plot!

    What can we learn from this first attempt at "material identification"?

    Well, I really mean looking at spectra from similar things and asking if there is anything about the spectra that might be used to distinguish these materials? I think the answer is yes!

    For example:

    Gold and silver have strong signals at 645 nm that the other two metals lack, and a stronger peak at 705 nm than the other two metals.

    Silver has strong reflectance at 410 and 510 nm that gold lacks. In fact, this accounts for the main difference between gold and silver reflectance and how they appear to our eyes.

    Silver and aluminum have very similar spectra but silver is bluer and whiter (flatter spectrum).

    Copper is dominated by the peak at 610 nm, right at the orange/red color boundary.

    Here is what the "textbook" says we should be seeing:

    This is reflectivity, which is a little different, but it makes it clear that the AS7265X spectrum should be affected by the spectral distribution of the broad-band source, and needs to be corrected for best comparison.

    If I use the same method on white paper as my reference (I know, not an ideal reflector), this is what I get:

    I am not sure what to make of the peaks at ~900 nm, probably a result of very small counts there and not significant. Now the differences in the data are even more distinct. Gold and silver have several strong peaks at 585, 645, and 705 nm. In addition, silver has a broad blue response completely lacking in gold. Copper has a broad peak between 585 and 610 nm, as does aluminum, but aluminun also has significant blue and green components with strong peaks at 435 and 510 nm that copper and gold lack. Aluminum and especially silver have the flattest spectra, meaning they appear the most white.

    So, assuming such results are typical (TBD, of course) could one devise a simple algorithm...

    Read more »


    Kris Winer06/21/2018 at 00:27 0 comments

    20 June 2018

    I received the pcbs with the Generation 2 design from OSH Park and finally put one together yesterday. Today I loaded the Generation 2 firmware onto the 4 MByte SPI flash and to my surprise I finally got an I2C ACK and discovered an I2C device at 0x49 just where it ought to be!
    Here is the new board in action:

    And below a close up look. I replaced the rgb led with a simple blue one (bottom right corner). Sure enough, before the firmware was loaded it was blinking once a second and after firmware upload to the SPI flash the led stayed on. This is different from the behavior on Generation 1 where the led indicator went off when proper firmware was present. I will assume the "constant on" behavior is normal for Generation 2, but I'll ask AMS. I also didn't bother populating the source 1 & 3 leds, partly because the 850 nm led I was using for one of them before never seemed to work, and also because the broad band source (yellow square thing) is bright enough for initial testing and I don't want to complicate things too much just yet.

    I started working on my I2C sketch for the photospectrometer which will take a while to get right. This is partly because there are 18 channels that have to be managed including the 20 pieces of calibration data and various gain and integration time settings, etc. I have a pretty good start and it's just a matter of slogging through the excel spreadsheet (provided by AMS) with the new I2C commands and learning how to use them to get calibrated spectral data output to the pc. The GUI that came with the evaluation kit was nice and easy to use but I want something that can allow easier plotting and scaling as well as simplified storage and comparison of the data. In other words, I want the total control of a fully functional Arduino sketch that I can tailor to my needs. Here is the output I have obtained so far:

    I am pretty sure version 12 is correct; the zip file I got from AMS was labeled FW_AS7265x_12V0.0. I am not sure what the Patch and Build versions are supposed to be, but at least the results aren't 0xFF anymore!

    By the way, I was sent this link today. It is another YouTube video showing a product from LinkSquare that is essentially a spectrometer with nearly the same spectral range as the AS7265X that is able to distinguish between aluminum, silver, gold, copper, and titanium. It does this by measuring the reflectance spectrum and comparing to a library of spectra to identify the likely target. This beautiful device can be yours right now for the low, low price of just $549!

    I wonder if the $25 AS7265X Spectrometer can do the same?

  • Generation 2 hardware and upgraded firmware

    Kris Winer06/01/2018 at 00:42 0 comments

    31 May 2018

    Well, since the snippet about this project on the blog appeared I have received a lot of comments on the project, thank you all! I have also received the increased attention of AMS, and now have a lot more information about the use and status of the AS7265X system. In brief, the current board design, copied from the reference design in the data sheet (generation 1) is being changed to generation 2. The changes involve reassignment of the AS7262/3 slave reset pins and master AS72651 I2C bus pins. Furthermore, the changes are prompted partly because the I2C sector doesn't work in generation 1 with the current firmware. I2C in the AS7265X sensors is software based, so it depends on firmware alone (well, and the pin connections, of course). There is a new version of the firmware for generation 1 designs (like my current one) that is supposed to fix the I2C problem, but when I loaded it into my one assembled board I still couldn't get an I2C ACK from the AS72651 and AT mode works whether I2C_EN is HIGH or LOW.

    So call the situation fluid.

    This is understandable when bringing out a new chip set; bugs and typos are part of the package. And alpha users like me are both a blessing and a curse to companies like AMS. They benefit from having avid users point out early troubles and datasheet errors, etc, but the FAEs are busy and can't respond to every complaint. So far, AMS has been extremely generous with their time (thanks Frank!) and they have answered all of my questions as well as provided as much information as anyone could want. Kudos to AMS!

    That said, this project is turning out to be quite a bit more challenging that the usual "copy-the-reference-schematic" design exercise.

    I redesigned the board according to the generation 2 schematic and I have new generation 2 firmware ready to load when I get the boards back from OSH Park and assemble one of the boards. Maybe this time I will be able to get the I2C to work.

    There are also going to be significant revisions in the data sheet with several I2C and AT commands deprecated and many more added. In particular, there will be registers for both raw data and calibrated data. Apparently, what I have been reading from my limited usage of the photospectrometer is the raw data. I am not sure yet what sort of calibration is involved here; the calibration coefficients, which are readable via I2C and UART, range from 1 to 17, so these are likely multipliers. But I don't know yet. More questions for AMS.

    Bottom line, one step forward, two steps back, I need to get the photospectrometer working properly before I can explore any real world applications.

  • Normalized spectra...

    Kris Winer05/28/2018 at 19:01 2 comments

    28 May 2018

    Like a kid with a new toy, I could not resist testing the spectrometer out on various targets.

    First, I soldered headers onto the board and mounted it on a breadboard along with a small Arduino-programmable (Ladybug) STM32L432 MCU:

    I tested out the led controls a bit more and found that by default the top and bottom source leds are off. So I played around with turning them on and testing whether the spectrometer could "see" them. I think the 850 nm leds I bought simply do not work. I have never gotten a signal from the 850 nm when the led was supposed to be on. The 940 nm led does work and I experimented with different current drives up to 50 mA. My MCU board has a 150 mA LDO so I don't want to press things too much. The broad band (5700 K, 90 CRI) led (yellow square thing on the AS7265X board) defaults to 100 mA as far as I can tell. I must say, the AT commands are somewhat cryptic and I will have to do a lot more experimenting to make sure I understand how to use the led sources correctly. It would help if I could actually see the leds!

    I programmed the button to turn on the broad-band source, then take a spectrum, then turn off the broad-band source, kind of like flash photography. It sort of kind of works, but there are latency issues due to the relatively slow serial interface and I don't always get a clean 18-channel spectrum. Sometimes the leading or lagging channel is missing or mixed up with OKs and other AT command activity. But it is usable, and I can simply position the breadboard over an object, press the button like taking a picture, and read off the 18-channel data from the serial monitor. Still a bit clunky but eminently usable.

    I did a little more measuring with this rig held a few centimeters from each object:

    The white paper spectrum is again basically the spectrum of the broad-band source (plus the 940 nm led I think). When applied to various household objects, the absorption of the objects changes the spectrum recorded by the spectrometer. So flourescent green paper absorbs strongly in the blue but not much elsewhere. The banana and red pepper absorb strongly in the blue and between ~600 and 700 nm. Definitely different and distinguishable.

    I think the right way to plot such data is by correcting for dark current and normalizing by the white paper spectrum. We basically want to know how much of the source light is reflected back, and it makes sense to plot the reflected spectra of our test object as a ratio to the reflected spectra from a quasi-ideal (white paper) reflecting object. The dark current is zero, at least that is what I measure with the broad-band illumination off at these gain (2) and integraton time (100 ms) settings.

    I have color coded the spectra to approximate the colors of the objects (clever, no?). What we see is that florescent green paper reflects light uniformly from ~500 to ~800 nm; it is the absence of blue and the presence of light from ~650- 700 nm that accounts for the flourescent green apparently. The banana and red pepper both have a similar spectrum with double peaks at ~600 nm and ~750 nm, what we see is determined mostly by the first portion of the spectrum. The banana has nearly equal parts of green (560 nm), yellow (585 nm) and orange (610 nm) components so looks yellow to us, while the red pepper is mostly yellow (585 nm) and orange (610 nm). The peaks at 705 - 730 nm nm dominate in both spectra (typical human visible light sensitivity is 390 - 700 nm) and accounts for the dominant red color of the pepper.

    Of course, human perception of color intensity varies as well. I am not trying to rigorously analyze these results or claim we can "predict" the color of objects by this kind of spectroscopy alone. I just claim that the results are plausible. In other words, the spectrometer seems to be working.

    We can draw a couple of conclusions from this limited application of the AS7265X spectrometer. Firstly, it can and does work as an integrated 18-channel spectrometer...
    Read more »

  • First spectrum results

    Kris Winer05/28/2018 at 06:42 0 comments

    27 May 2018

    I received the pcbs with the corrected design yesterday and put one of the boards together today. Assembly was straightforward, much like the first time, since the board layout didn't really change much. The 850 and 940 nm leds got smaller and I properly connected the AS72651 sync pin (AKA ADO) to the AS72652 reset pin, according to the data sheet schematic, which apparently in this instance is correct.

    I loaded the firmware onto the 4 Mbit SPI flash (version 1.2.7, still the same as the one on the AMS download site), power cycled the spectrometer and was happy to see the rgb led blink once and go out, as it should.

    I am still having trouble getting the device to respond to I2C commands and it is basically unusable in I2C mode. I have asked AMS if there might be a reason for this, and I will figure this out eventually. I2C mode is nice since each of the 18 channels can be queried individually and I2C is a more natural way (at least for me) to interface the spectrometer with a microcontroller.

    I was able to get the spectrometer to work in UART mode using the AT commands. This is useful to check for basic function; I was able to to verify that all three sensors are functional.  It is convenient to have a single command (ATDATA) that returns all 18 of the data channels, although the ordering of the data is not straightforward. There is another command (ATXYZR) which is supposed to output the counts in order of wavelength but I found this not to be the case using the calibration plate as a reference. But ATDATA does seem reliable, so I did a little bit of testing just to see what the new spectrometer could do.

    Using the bright 470 nm led on the calibration plate I measured a strong signal peaking at 460 nm with a strong side band at 485 nm, just as I should. I turned on the broad-band 5700 K 90 CRI source on the spectrometer board for the next two measurements. First, I pointed the spectrometer at white paper, and see a spectrum characteristic of the luxeon Z ES led output with a narrow peak at ~450 nm and a broad peak at ~600 nm. In other words, white paper reflects most of the source light without strongly absorbing any particular wavelength so the reflected spectrum looks like the emitted spectrum. There is the odd exception of the peak at 940 nm, which could have been my finger in the field of view. (I will have to be more careful when I start using the spectrometer in earnest!)

    Next I turned the spectrometer with the same 5700 K 90 CRI source on to a knitted cap I use as a bowl on my work bench. The material is made of dark blue yarn with coarse knitting, so it absorbs a lot of the light due to its rather porous nature and absorbs mostly in the red reflecting weakly in the blue, in this case at ~460 nm with a little bit of a bump in the green at 560 nm and maybe one at 705 nm.

    I think best results using the spectrometer will be had with the spectrometer mounted inside some sort of container (like a toilet paper tube) to limit stray light and to allow the spectrometer to be placed over objects to be measured.

    I also found it tiresome to constantly enter ATDATA into the serial monitor whenever I wanted to record a spectrum so I will likely program the button on my Dragonfly development board to take a spectrum measurement on pressing. This will be very convenient.

    Lot's more testing to do yet. I need to create some kind of fixture to allow more reliable testing instead of holding things in my hands. I want to develop some more automated way to plot the spectra. I need to understand how to optimize gain and integration times, etc.

    I also want to find out if the broad band source is sufficient to distinguish between different materials (with less extreme differences than white paper and dark blue yarn!) such as salt and sugar, for example. I'd also like to sort out the I2C interface on this device.

    But overall, I am happy with progress to date. I now have a small, inexpensive spectrometer whose utility I can start to assess....

    Read more »

View all 19 project logs

Enjoy this project?



Mynasru wrote 07/15/2018 at 12:09 point

Did you see this project:

Could be useful for the available data.

  Are you sure? yes | no

Kris Winer wrote 07/15/2018 at 16:04 point

Yes, Ruben pointed this out a while back. Pretty nice and at about the same price point. The diffraction grating is much higher resolution and with the GUI is a very compelling tool. Just hard to integrate this into a small analysis device.

  Are you sure? yes | no

Kris Winer wrote 07/10/2018 at 18:29 point

@peter jansen  Yes, I think this is correct, I calculated the distance for overlap of the centers as 3.2 cm, likely a longer distance would be required for complete coverage of each of the filters inside the sensors. In fact, in my penultimate log I did comment on what appears to be acceptance angle effects for two of the channels. 

I am still experimenting with the prototype spectrometers to see what these sensor arrays can do but I seem to be getting sensible results just pointing and measuring, which is how most hobbyists would use them.

But I think you are right, that the separation between target surface and sensors will likely have to be larger, maybe 6 cm or so and the results will depend on the geometry of the setup. I think the latter can be accomodated by simply averaging (accumulating multiple spectral scans and dividing by the number) the measurements as I have been doing lately. In fact, this might be a reasonable approach for large area (~50 mm x 50 mm), more or less uniform targets: gently move the photospectrometer over the target while accumulating data.

I am not sure what you mean by measurements being "incorrect". They are what they are, and there will be the need for interpretation and calibration as with all sensors. I have already demonstrated that the photospectrometer can distinguish differences in color of similar objects, and could even be used to identify different metals. I agree that we (I and any potential users of the photospectrometers) need to figure out how to use these devices to get best results. I don't agree that this is either 1) impossible or 2) will require heroic efforts.

  Are you sure? yes | no

peter jansen wrote 07/10/2018 at 18:58 point

I think you still misunderstand the fundamental issue with them being on different optical paths.  Imagine you only had monochrome cameras, and wanted to take a colour image.  You could take a single camera and take three pictures of the same scene with three different colour filters (r, g, b), and because the images are all looking at the same thing (looking at the same direction, from the same point in space), you could use one image for the red channel, one image for the green channel, and one image for the blue channel -- and when combined in this way, you'll get a meaningful image where eveything is properly aligned. 

Imagine instead you chose to create a colour image by using three monochrome cameras spaced some distance apart (say 30cm), each with it's own colour filter.  You take an image of something 100cm away.  Each of the cameras is looking at the same scene from different angles.   If you tried to stack these images, it would be a mess, and not meaningful -- it would be three different images stacked together in a strange way, rather than one measurement (the image) that you want and think that you're generating.  Even worse, imagine the entire scene is illuminated by one point source light (like a single light bulb, in a dark room).  The parts of the objects each camera sees are going to be differently illuminated.  If you looked at the image generated from this setup, you would immediately recognize that it's incorrect and not what you thought you were doing. 

The analogy is almost identical here.  You're not making one spectroscopic measurement of one point.  You're making three different spectroscopic measurements of three different areas (that just happen to have some non-zero overlap).  Merging them is a mess and not meaningful, unless your measurement scenarios meet very specific criteria, like the ones I mentioned in the last post.  But because the data that you're generating from these isn't something like an image, it's not easily possible for you to look at it and immediately recognize the measurement and combination method is incorrect (like the three camera case, above).  You have to use your knowledge of cameras, geometry, and measurement to work this out before hand, otherwise you'll be collecting data and not even knowing it's wrong -- one of the worst case scenarios in science (whether hobbyist or otherwise). 

  Are you sure? yes | no

Kris Winer wrote 07/10/2018 at 19:32 point

This is not a camera, so the analogy doesn't work (at least for me). No one would expect to use this device to analyze the spectral composition of a single point (or small area) and this is not intended as a scientific instrument per se. So, with respect, I believe you are creating a straw man.

The intended use is to spectrally-resolve the reflected light from an illuminated target area. I will stipulate that the device has limitations. I agree its utility is yet to be demonstrated for science or any other application.

But what is your point? That it is foolish to attempt to use this device for any purpose whatsoever?

If so I simply cannot agree...

"collecting data and not even knowing it's wrong"--the data cannot be wrong. Our assumptions or interpretation might be incorrect, but the proof of the pudding is in the eating. I remain convinced from my limited experience using this device that it will find many useful applications. The beauty of a $25 device is that almost anyone can afford to participate in their development.

  Are you sure? yes | no

peter jansen wrote 07/10/2018 at 19:56 point

It sounds like I'm not able to communicate the issues with this measurement setup and the possible resolutions in a way that you're receptive to.   I'd suggest reading much more about spectroscopy and the issues with making measurements from multiple sensors on different optical paths and trying to work through understanding the issues and potential solutions yourself.   Best of luck. 

  Are you sure? yes | no

Kris Winer wrote 07/10/2018 at 20:33 point

@peter jansen Sorry we can't seem to find agreement; perhaps your comments would be better directed at AMS, the makers of the SmartSensor system I am implementing. I would think they might have considered your various objections during the sensor design process...

  Are you sure? yes | no

Sam Freeman wrote 05/30/2018 at 19:09 point

That's an exiting project. Just curious, have you looked into Luminus or Seoul LEDs for a broad-spectrum source?

  Are you sure? yes | no

Kris Winer wrote 05/30/2018 at 19:13 point

These are rather large; the SunLike 3 mm x 3 mm might do.

  Are you sure? yes | no

electrobob wrote 05/30/2018 at 09:48 point

"The problem with this idea is that they both have the same I2C address, so I would have had to use an I2C multiplexer." -- If you have pins to spare, go for software I2C. 

  Are you sure? yes | no

Chris Cox wrote 05/29/2018 at 21:20 point

Paper is not a good white reference - especially since most of it will have optical brighteners  (fluorescent blue to offset the normal yellow tinge).  You need to get ahold of a white ceramic reference or a spectralon (sintered PTFE) reference that has been measured by a calibrated device.  A colorchecker is a useful test, but still needs readings from a calibrated spectrophotometer because there are variations in batches and fading over time.

Fluorescent materials also need special signal handling, since they can have "reflectance" over 100%  (absorbing shorter wavelengths, emmitting at a longer wavelength, beyond the power provided by the light source).  The most severe materials have around 175% reflectance signal with D65 illumination.

  Are you sure? yes | no

Kris Winer wrote 05/29/2018 at 21:26 point

Thanks for the feedback. Yes,  my initial attempts at measuring reflectance spectra of salt (NaCl) and sugar (sucrose) with broad-band illumination have proven to be somewhat confusing. It would be helpful to me to have some idea of what these spectra should look like, but I can't find them via a simple google search.  I used white paper since I had it handy. I think you are right, though,  that a proper reference is required; where could I find an inexpensive white ceramic or spectralon reference?

To your point, the NaCl spectrum returned a lot more blue than white paper did! Is this due to flourescence? I don't know yet. Reference spectra would help...

  Are you sure? yes | no

Andrej Mosat wrote 05/29/2018 at 20:35 point

So the AS72651 is available on market, however AS72652 and AS72653 are not on stock anywhere. Where did you purchase yours? 

  Are you sure? yes | no

Kris Winer wrote 05/29/2018 at 21:16 point

I bought mine directly from AMS, cheap too!

  Are you sure? yes | no

Andrej Mosat wrote 05/29/2018 at 21:23 point

Checked now on as well,  AS72652 and 3 are not stocked. When was the last time you ordered? Is the U.S. ams website different from European? It shows AMS Austria in my browser...

  Are you sure? yes | no

Kris Winer wrote 05/29/2018 at 21:29 point

Yes, I see they are not in stock now...Not sure when they will be back.

  Are you sure? yes | no

h3liosphan wrote 05/29/2018 at 19:37 point

Hell if you're selling these on Tinder, I'm in - I'll have one!

I acknowledge it probably won't be at $25, still, exciting!

edit - I feel too that this'll really be interesting to explore with some Google Deep learning code thrown in for good measure, although the method for measurement would need to be nailed down, this is a perfect kind of 'input' into a neural network - with human input (for the time being) to provide it what it is it's looking at.

  Are you sure? yes | no

Kris Winer wrote 05/29/2018 at 21:21 point

I think for any kind of serious (or semi-serious) work the spectrometer will have to be held in a fixture and the sample will have to be held in a reproducible way so proper background subtraction and intensity scaling would be possible. The small size will help here. Hand held, it is a lot of fun to look at spectra of common objects, but for material identification (my application interest) a little more care will be required.

  Are you sure? yes | no

thegoldthing wrote 05/28/2018 at 22:57 point

Have you considered using a colour chart for callibration? Something like this might help:

  Are you sure? yes | no

Kris Winer wrote 05/29/2018 at 21:18 point

Yes, Ted Yapo pointed me to inexpensive color swaths available on Amazon. What I am really after is sample reflectance spectra of common materials (sugar, salt, etc) so I can verify the spectrometer is performing in a more useful (material ID) way. Can't seem to find this basic information...

  Are you sure? yes | no

Ruben P wrote 05/18/2018 at 11:45 point

Hello Kris, I found this online. You might me interested :

  Are you sure? yes | no

Kris Winer wrote 05/18/2018 at 17:29 point

Yeah, that's pretty cool! It has better perfromance specs (3 nm resolution), similar frequency range, and is just as easy to use. Maybe this spectrometer is a better candidate for the Hackaday prize!

  Are you sure? yes | no

Ruben P wrote 05/18/2018 at 20:17 point

I think yours would be more easy to integrate in an arduino or rpi projet

  Are you sure? yes | no

Kris Winer wrote 05/18/2018 at 20:34 point

Yeah, mine is certainly more compact, and that is half of the attraction. The low cost is the other. Plus I want to use it as an I2C sensor in a sensor suite, like a tricorder...

  Are you sure? yes | no

peter jansen wrote 05/10/2018 at 21:37 point

AMS's offering of the small multi-channel spectral sensors is interesting, but it's not clear to me how the group of three sensors would be useful for most applications in practice -- their apertures are each on a different optical path, so you would either have to precisely move the sample several times to complete a measurement of the same area, or be measuring something so large with a flat field (I'm not sure what that would be) that it was uniform over the different optical paths, or put some optics in front to split the light (which is likely going to increase cost, and decrease signal).  The Hamamatsu microspectrometers are a bit more, but they're beautiful instruments, have a wide spectral range, and don't have these issues.

  Are you sure? yes | no

Kris Winer wrote 05/10/2018 at 22:03 point

I am not sure how this is going to work in practice yet. The YouTube demo uses rather large area samples, so this will not be useful as a spectrum-resolving microscope to be sure. The optimal arrangment of the sensors and their illumination source(s) as well as the utility of the spectrometer is TBD (goal of this project in fact). I expect the spectrometer will be useful to (as the datasheet says) identify composition of common materials, authenticity of certain materials (money, metals, etc), ripeness of fruits, agricultural health diagnostics, and maybe limited medical diagnostics.

What makes this solution special is the very low cost; so low that the spectrometer can be considered disposable. The Hamamatsu spectrometers are not a bit more, they are at least an order of magnitude more expensive and need sophisticated circuitry to obtain and interpret the data. The AS7265X doesn't even need an MCU, just an FTDI connector and a pc.

These "instruments" are in different classes and not meant to compete necessarily.

18 channels at 20 nm FWHM per channel spanning 410 - 940 nm for $25--an astounding bargain  whose utility will simply have to be demonstrated in use.

  Are you sure? yes | no

peter jansen wrote 05/11/2018 at 06:26 point

The main issue is that it's not an 18 channel spectrometer, but 3 physically separate 6 channel spectrometers, and that substantially complicates almost every measurement scenario I can think of.   I'm also not sure what kind of (for example) generic material composition identification could be done with (in the very best case) an 18-channel 20NM FWHM visible spectrometer.  

I'm eager for someone to find some good use cases for these inexpensive devices, but the combination of the measurement difficulties and the application scenarios make this (I think) quite challenging. 

  Are you sure? yes | no

Ted Yapo wrote 05/11/2018 at 14:10 point

I've drooled over the Hamamatsu parts a few times :-)

I wonder if you can hack a fiber coupling to these less expensive parts.  I could envision a bundle of narrow fibers split 3 ways to illuminate each sensor.  The common end would gather light from the sample and deliver some to each device.  I'm sure the devil is in the details, but it might be worth a try.

  Are you sure? yes | no

Kris Winer wrote 05/11/2018 at 16:39 point

@Ted Yapo , @peter jansen 

Well, on the one hand I am embarrassed that this project made it into the Hackaday Prize finals since it is simply reproducing a reference design from the data sheet and getting it to work. I have done this dozens of times for more complicated (but better documented) sensors.

Now it seems it will actually be a challenge to get useful results from the "spectrometer".  I don't share your assessment. Unless I made a math error, the 12-mm separation of the three spectrometer ports in the current design and 41 degree acceptance angle means that a 1 cm diameter object is fully covered by all three spectral elements at a distance of 3.2 cm. This requires no special optics or alignment, etc to work. This 3-element spectrometer seems eminently practical to me.

Is there really a significant difference between the AMS and Hamamatsu solutions in terms of performance?

  Are you sure? yes | no

peter jansen wrote 07/10/2018 at 06:05 point

Sorry Kris, I'm just seeing this.  Here's a diagram that shows the sensor field of views assuming a 41 degree FOV, and 12mm spacing, for a flat imaging plane 3.2mcm away ( ).  The fields of view only have some spatial overlap, so they're measuring different parts of the sample -- and worse, this changes depending on the distance (and, unless you have the sample flatly illuminated, then there's likely also a non-uniform brightness confound in the data).  In order for the measurements from something like this to be meaningful, the three circles would have to be overlapping, and the illumination would have to be uniform -- i.e., they'd be on the same optical path.  There are special cases where you might be able to use it, for example cases where you can guarantee (a) the single material you're sampling is uniform over the entire area (about 25x50mm @ 3.2cm distance) and (b) uniformly lit.  Similarly, you could build a large matte black absorptive box around it, with a flat piece (say) 40mm away from the sensors, and make a small 1mm hole right in the center of the intersecting fields of view -- then press the sample against the hole and illuminate the sample from the front (reflective, or, ideally back, for absorptive measurements).  But if you're just pointing this 3-sensor device around without considering that the sensors are on entirely different optical paths, then I'm fairly certain all your measurements will be incorrect except in very special cases, like the ones I mentioned above. 

  Are you sure? yes | no

Jong KIM wrote 05/04/2018 at 04:30 point

Fascinating spectra board!

Looking forward to your wonderful development....

  Are you sure? yes | no

Kris Winer wrote 05/04/2018 at 05:16 point

Thanks, now I am thinking of adding a mid-IR sensor as well, like the Hamamatsu C14272 for additional organic molecule ID.

  Are you sure? yes | no

Andrej Mosat wrote 05/29/2018 at 20:37 point

The price is ~10x higher for that one.

  Are you sure? yes | no

Ruben P wrote 05/03/2018 at 07:56 point

You project is really amazing. I wanted to build a lamp made of several kind of light sources in order to have a light spectrum very close to real light. The first problem I met was to measure the spectrum. This project could totally help, so good luck with it ! 

  Are you sure? yes | no

Kris Winer wrote 05/04/2018 at 05:15 point

I think there are sun light leds available that mimic the suns output in the visible. But yes, it is great to have a convenient way to measure.

  Are you sure? yes | no

Fernando wrote 05/01/2018 at 22:33 point

Do you think this is the same multichannel board that you got? I might get one.

  Are you sure? yes | no

Kris Winer wrote 05/03/2018 at 04:14 point

Yes, that's it. Looks like for a lot less than I paid too!

  Are you sure? yes | no

Fernando wrote 05/13/2018 at 05:34 point

Just got mine. What LEDs did you got? It really needs a light source.

  Are you sure? yes | no

Kris Winer wrote 05/13/2018 at 15:56 point

I am using a Luxeon ZES 5700 K 90 board band source but I haven't checked what kind of performance this gives yet.

  Are you sure? yes | no

Kris Winer wrote 04/19/2018 at 00:39 point

@david.bradley469  Well, first things first, I need to get it built and working. I have no doubt i will eventually, after all AMS makes a dev board that more or less already does just what my design does. Assuming I can find the parts for sale, find and load the firmware, and correct any design errors in my pcb i expect to have a working spectrometer in the next few weeks.

Then yes, let the fun begin!  I expect to be able to analyze all kinds of things I am interested in. But the whole point of a $25 spectrometer is anyone and everyone can build or buy one and use the analyzer to study whatever they are interested in. All those interested in cancer research will be enabled and empowered to do as you suggest. But just imagine all of the other equally interesting and important secrets that can be discovered when this inexpensive but powerful device is in general circulation.

I have longed for a low-cost, practical tricorder. Inexpensive mems sensors like the BME280, CCS811, MPU9250, VEML6040, etc, MCUs like the STM32L4, plus this AS7265X spectrometer will go a long way toward that goal.

What a wonderful time we live in!

  Are you sure? yes | no

david.bradley469 wrote 04/18/2018 at 19:15 point

Kris:  If you integrated this with a microscope with a moving mini table, it could be used for analizing tissue and blood samples for cancer screening!  You could make a big difference in the world for the poor all over the world!

  Are you sure? yes | no

Robert wrote 05/05/2018 at 03:38 point

Mary Lou Jepsen is developing something similar at Openwater. There is a TED talk about it that was interesting.  Researching that lead me here. 

  Are you sure? yes | no

Andrej Mosat wrote 05/29/2018 at 20:38 point

What was the information that led you here? Curious for applications of spectrometry.

  Are you sure? yes | no

Robert Mateja wrote 04/18/2018 at 10:24 point

Ok, I'v seen datasheet.I was under impression that for absorbance measurement it is necessary to select specific excitation wavelength and measure behind cuvette.Chip has led drivers so it is a matter of matching right source.Now I get it, best wishes with project!

  Are you sure? yes | no

Robert Mateja wrote 04/17/2018 at 16:29 point

What do you plan for beam separator rotating prism or diffraction gate? In DIY some projects use cd/dvd for this purpose in vis.I bet dedicated sensor can beat CCD with openCV, nice project!

  Are you sure? yes | no

Kris Winer wrote 04/17/2018 at 18:15 point

Not sure what you mean. Each source led is independently driven. I can collect spectra from all three sensing engines with none, 1, 2, or all three sources on and I can do the same with any one sensing engine. I don't think there is any need for a beam separator. Why would you think so?

The sensing engines contain six filters each which serves to separate the reflected light into the respective 3 x 6 frequency bins. No additional separation is required.

It still remains to be seen which is the best source frequencies (whether one broadband and two IR are optimum) for general use, and whether some combination might be best for specific uses. Lots of experimentation is still TBD.

Thanks for the like and follow!

  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