Close
0%
0%

portable_spectro

new kind of portable spectrometer with efficient LED illumination(SFH4736), and miniatured spectrometer(C12880MA, or AS7260x)

Public Chat
Similar projects worth following
I just want to make new kind of or another portable spectrometer, which would be equipped with LED illumination ranging from 400nm to 1000nm more efficient than Tungsten-Hallogen lamp. The design intends to be switchable between two kinds of miniatured spectrometer(i.e. C12880MA, and AS7260x) for flexibility. Indeed, the main controller should handle BlueTooth communication with intermediate device like smart phone or personal computer in order to gather the spectrum data into remote server. Eventually, it will make possible to evaluate internal status of agricultural product in non-destructive way like soluble sugar content, acidity, abnormality, and etc.

In terms of Vis/NIR radiation, the useful choices are so-called broadband IR LED like SFH4736, SFH4776, and L1IG-0750100000000. Unfortunately, these things doesn't emit visible light except for violet band, which intends to make a phosper excited. So, I have to make the lighting in the combination of Vis LED and such a broadband LEDs. To accomplish proper illumination, many things have to be solved in aspects of blending ratio of Vis, and NIR, and how many LEDs are mounted on PCB for sufficient lighting. Therefore, the below have to be done;

- Analyze the comparision of spectral intensity among SFH4736, SFH4776, and L1IG-0750100000000.
- Determine blending ratio of Vis, and NIR LEDs for flatness of spectral intensity from Vis to NIR.

- Design the hardware that can equip with nRF52840, Vis/NIR LEDs (corresponding driver as well), switchable spectrometer (corresponding peripheral indeed), and power management unit including Li-ion or Li-po battery, charging part, and boost regulator.
- Develop the firmware that can process the BlueTooth communication with smart phone (iOS, and Android), interfacing the spectrometer, and interactive operation between LED-based illumination, and spectrometer.
- Develop the application for iOS, and Android that can be portal to pass, and signal process the spectrum into the remote server.
- Develop the remote server program, that can manage huge spectra with extra infomation (i.e. object, date, dependant like sugar content), and do machine learning, initially being PLS, and SVM-regression hopefully I want to goes into Deap Learning (CNN or RNN).

Definitely, all the staffs are very challenging to me in terms of funding, and workloads. I will do as much as possible!

1. Hardware
The hardware consists of Li-ion or Li-po battery, charging unit, boost regulator, C12880MA spectrometer including analog amplifier, and ADC unit, AS7260x spectrometer, and nRF82340 BlueTooth CPU.

, and its sketch is described at the below.

1.1. Mechanical Design

The shape of portable spectro is dome + cylinder sizing within one hand. The part inside of it should be painted with chrome or mirroring material, and others will be decided in conjunction with electrical design of artwork.

The design consists of three parts.

1.1.1. Mirroring paint.

http://www.koongs.co.kr/product/detail.html?product_no=216&cate_no=45&display_group=1

Step1. Spray the basement into surface, and dry out for 3 hours at 60 degree.

Ste
Step2. After all are dried out, spray chrome-like material.

Step3. Dry out for 30 mins at room temperature or 15 mins at 60 degree.


Step4. Polish the surface with soft cotton.



TODO: add some pictures.

1.2. Electrical Design

The schematic of ADS8860IDGS is referred from https://www.ti.com/lit/df/tidrau9a/tidrau9a.pdf
The schematic of C12880MA is referred from https://github.com/Alexey-Danilchenko/Spectron
The schematic of MCP73871 is referred from https://learn.adafruit.com/assets/24638
Thus, all the things are described here.


1.2.1. Artwork
I would like two layer with main parts on front side, and sensing parts on back side as possible.
In spite of extra modification added, I have finally connected all parts.



Its 3D rendering is like here.
On front side,


On back side,

1.2.3. BOM

Spectrometer: C12880MA, or AS7260x
CPU: nrf52840, mdbt501-v10
Candidators for Light source: SFH4736, or SFH4776, or L1IG-0750100000000

2. Spectral intensity comparison

You can feature out the difference of intensity among SFH4736, SFH4776, and L1IG-xxxxxx. The others including Halogen lamp intends to be referenced only their shape, not intensity.

In zoom-in, there is no quiet different intensity.

Edit

However, in scale-down, SFH3746, and SFH4776 show significantly strong intensity in the range of 500, and 1100nm. In some cases, L1IG-xxx seems to be also good option.

# Firmware Design
TODO: add Flow chart
TODO: add block diagram

# Integration time calculation

# App Design

# Server Design

# References
https://github.com/Alexey-Danilchenko/Spectron...

Read more »

portable_spectro.dxf

The drawing of mechanical parts

AutoCAD DXF - 63.77 kB - 12/22/2019 at 03:21

Download

portable_spectro_sch.pdf

The schematic of electronic parts

Adobe Portable Document Format - 272.75 kB - 12/22/2019 at 03:20

Preview
Download

  • 1 × 20021111-00010T1LF Connectors and Accessories / Board-to-Board and Card Edge Connectors
  • 1 × UJ31-CH-3-SMT-TR USB jack 3.1 C type
  • 1 × EG1206 Switches and Relays / Switches
  • 2 × PTS645VL392LFS C&K tactile switch
  • 1 × MDBT50Q-1MV2 nRF52840 Based BLE Module

View all 7 components

View all 4 project logs

  • 1
    Install toolchain for nRF82540 development environment

    Install Toolchain on debian testing(currently bulleseye)

    $ apt install libnewlib-dev libstdc++-arm-none-eabi-newlib libnewlib-arm-none-eabi gcc-arm-none-eabi binutils-arm-none-eabi

    Verify the version of installed gcc
    $ arm-none-eabi-gcc --version
    arm-none-eabi-gcc (15:7-2018-q2-6+b1) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
    Copyright (C) 2017 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    Download, and install the nRF5 SDK
    Go to https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/, and
    download the latest verion of SDK at https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK153059ac345.zip
    Unzip nRF5SDK153059ac345.zip like as:
    nRF5_SDK_15.3.0_59ac345
    +- components
    +- config
    +- documentation
    +- examples
    +- external
    +- external_tools
    +- intergation
    +- modules
    +- license.txt
    +- nRF5x_MDK_8_24_1_IAR_NordicLicense.msi
    +- nRF5x_MDK_8_24_1_Keil4_NordicLicense.msi

    At "$(SDK_ROOT)/components/toolchain/gcc" under SDK, there are several kinds of Makefile for Windows/Linux/MacOs.
    Now, we should edit "Makefile.posix" in the case of Linux or MacOs like the below.

    GNU_INSTALL_ROOT ?= /usr/local/gcc-arm-none-eabi-7-2018-q2-update/bin/
    GNU_VERSION ?= 7.3.1
    GNU_PREFIX ?= arm-none-eabi

    into

    GNU_INSTALL_ROOT ?= /usr/bin/
    GNU_VERSION ?= 7.3.1
    GNU_PREFIX ?= arm-none-eabi

    Try to compile the example.
    Under "$(SDK_ROOT)/examples/peripheral/blinkyPCA10056/blank/armgcc", $ make
    mkdir _build
    cd _build && mkdir nrf52840_xxaa
    Assembling file: gcc_startup_nrf52840.S
    Compiling file: nrf_log_frontend.c
    Compiling file: nrf_log_str_formatter.c
    Compiling file: boards.c
    Compiling file: app_error.c
    Compiling file: app_error_handler_gcc.c
    Compiling file: app_error_weak.c
    Compiling file: app_util_platform.c
    Compiling file: nrf_assert.c
    Compiling file: nrf_atomic.c
    Compiling file: nrf_balloc.c
    Compiling file: nrf_fprintf.c
    Compiling file: nrf_fprintf_format.c
    Compiling file: nrf_memobj.c
    Compiling file: nrf_ringbuf.c
    Compiling file: nrf_strerror.c
    Compiling file: nrfx_atomic.c
    Compiling file: main.c
    Compiling file: system_nrf52840.c
    Linking target: _build/nrf52840_xxaa.out
       text       data        bss        dec        hex    filename
       2168        112        172       2452        994    _build/nrf52840_xxaa.out
    Preparing: _build/nrf52840_xxaa.hex
    Preparing: _build/nrf52840_xxaa.bin
    DONE nrf52840_xxaa

    Install programmer for nRF52, and setup correspondances

  • 2
    Make a template for new project

    Make the new directory named as "projects" under the root of SDK.

    $ mkdir projects
    $ cd projects
    $ mkdir template

    $ cd ../

    Copy files from main.c at examples/peripheral/bliky/, blinky_gcc_nrf52.ld, and Makefile at examples/peripheral/blinky/pca10056/blank/armgcc, and config/sdk_config.h at examples/peripheral/blinky/pca10056/blank into newly created project of projects/blinky.

    $ cp -r ./examples/peripheral/blinky/main.c ./examples/peripheral/blinky/pca10056/blank/armgcc/blinky_gcc_nrf52.ld ./examples/peripheral/blinky/pca10056/blank/armgcc/Makefile ./examples/peripheral/blinky/pca10056/blank/config ./projects/template

    Change some definitions in Makefile like;

    SDK_ROOT := ../../../../../..
    PROJ_DIR := ../../..
    ...
    INC_FOLDERS += \ $(SDK_ROOT)/components \ $(SDK_ROOT)/modules/nrfx/mdk \ $(PROJ_DIR) \ $(SDK_ROOT)/components/libraries/strerror \ $(SDK_ROOT)/components/toolchain/cmsis/include \ $(SDK_ROOT)/components/libraries/util \ ../config \
    ...
    CFLAGS += -Wall -Werror
    as

    SDK_ROOT := ../..
    PROJ_DIR := .
    ...
    INC_FOLDERS += \ $(SDK_ROOT)/components \ $(SDK_ROOT)/modules/nrfx/mdk \ $(PROJ_DIR) \ $(SDK_ROOT)/components/libraries/strerror \ $(SDK_ROOT)/components/toolchain/cmsis/include \ $(SDK_ROOT)/components/libraries/util \ ./config \
    ...
    CFLAGS += -Wall #-Werror

    Finally, make sure the compilation done.
    daysleep@t480s-debian ~/W/p/f/p/template> make
    mkdir _build
    cd _build && mkdir nrf52840_xxaa
    Assembling file: gcc_startup_nrf52840.S
    Compiling file: nrf_log_frontend.c
    Compiling file: nrf_log_str_formatter.c
    Compiling file: boards.c
    Compiling file: app_error.c
    Compiling file: app_error_handler_gcc.c
    Compiling file: app_error_weak.c
    Compiling file: app_util_platform.c
    Compiling file: nrf_assert.c
    Compiling file: nrf_atomic.c
    Compiling file: nrf_balloc.c
    Compiling file: nrf_fprintf.c
    Compiling file: nrf_fprintf_format.c
    Compiling file: nrf_memobj.c
    Compiling file: nrf_ringbuf.c
    Compiling file: nrf_strerror.c
    Compiling file: nrfx_atomic.c
    Compiling file: main.c
    Compiling file: system_nrf52840.c
    Linking target: _build/nrf52840_xxaa.out text data bss dec hex filename 2168 112 172 2452 994 _build/nrf52840_xxaa.out
    Preparing: _build/nrf52840_xxaa.hex
    Preparing: _build/nrf52840_xxaa.bin
    DONE nrf52840_xxaa

View all instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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