Skip to main content

Python API for the Chromation spectrometer dev-kit

Project description

MicroSpec Overview

Package microspeclib is a Python API for the Chromation spectrometer dev-kit.

The microspec project also includes:

  • command line utility microspec-cmdline for running basic measurements without developing a Python application
  • an emulator (Mac and Linux only) for faking the dev-kit hardware in unit tests

Spectrometer Hardware

The Chromation spectrometer is a surface-mount PCB package consisting of a linear photodiode array and optical components.

The Python API communicates with firmware on the two microcontrollers in the dev-kit, one on each of the stacked PCBs.

  • The microcontroller on the bottom of the stack provides a SPI interface to the Chromation spectrometer.
  • The microcontroller on the PCB stacked above provides a USB bridge that turns the SPI interface into a USB interface.

microspeclib accesses this USB interface using pyserial.

Install the Python API

Install the microspec project with pip:

$ pip install microspec

To extend/customize/repurpose the API, clone the repository from the project homepage: https://github.com/microspectrometer/microspec and install in --editable mode.

Windows Load VCP

On Windows, when connecting the dev-kit for the first time:

  • Open Device Manager:
    • right-click on USB Serial Converter
    • select Properties
    • go to tab "Advanced"
    • check "Load VCP"
    • cycle power to the dev-kit (unplug/plug the USB cable)

Now "Load VCP" is enabled every time the dev-kit is connected to this Windows computer.

If "Load VCP" is not enabled, pyserial cannot communicate with the dev-kit and microspec will report that it does not see a connected USB device.

Install extra requirements for testing and documentation

Developers may want to install additional packages required for running unit tests and rebuilding documentation.

$ pip install microspec[dev]

Many of the microspec unit tests use an emulator to fake the dev-kit hardware. The emulator requires utility socat, which is only available for Mac and Linux.

  1. The documentation is built with Sphinx. Developers extending the API will need to rebuild the documentation. Install the Sphinx-related requirements by adding [dev] to the install command:
$ pip install microspec[dev]

Use the Python API

Import the API in a Python script or at a Python REPL:

>>> from microspeclib.simple import MicroSpecSimpleInterface

The API is a set of commands for configuring the spectrometer and acquiring data.

There is one method for each command. Commands are camelCaseFormatted. Commands return the received reply object. If there is an error or a timeout, the reply is None.

The following will connect to the dev-kit USB hardware, capture a single frame, then print the status, number of pixels, and the value of the 3rd pixel.

from microspeclib.simple    import MicroSpecSimpleInterface
si = MicroSpecSimpleInterface(timeout=2)
reply = si.captureFrame()
print(reply.status)
print(reply.num_pixels)
print(reply.pixels[2])

Command Line API

The microspec_cmdline.py executable will run a single command and print the reply to stdout, optionally in CSV format. The default is to look for hardware, but -f FILE can be used to point it to either a device file or the name of a port, as in "COM3", if necessary. The command itself is case-insensitive, and after the command are key=value pairs of options for the command, if necessary, such as led_num=0 or cycles=100.

The -t timeout is how long it will wait for the command each time, and if it fails it will print None and move on. If a -r repeat is specified, it will run the command that many times. And if it is repeating, a -w wait will wait that long in between commands. All times are in fractional seconds.

For example, to set the exposure and cycles and then get 3 capture frames spaced 1.5 seconds apart, with a timeout of 0.2 seconds on each, and print it in CSV format:

microspec_cmdline.py setsensorconfig binning=true gain=gain1x row_bitmap=0x1f
microspec_cmdline.py setexposure cycles=100
microspec_cmdline.py captureframe -t 0.2 -r 3 -w 1.5 --csv

The command line utility is a .exe on Windows

On Windows, replace microspec_cmdline.py in the above lines with microspec_cmdline.exe.

For example:

> microspec-cmdline.exe captureframe -t 0.2 -r 3 -w 1.5 --csv

Emulate hardware with -e

Note that if you have no hardware connected, you can (on Linux and MacOSX) add a "-e" flag to use the emulator. It won't return very interesting capture frame data, but it will give an opportunity to test the interface.

Emulator

For now, this is only supported on Linux and MacOSX, and requires the socat executable to be installed and available on your PATH.

Use the emulator with the command-line utility by adding a "-e" flag.

Use the emulator with the microspeclib.simple or microspeclib.expert API with keyword argument emulation=True.

More information

Please see the project homepage for more information:

https://github.com/microspectrometer/microspec

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

microspec-0.1.1a7.tar.gz (119.8 kB view details)

Uploaded Source

Built Distribution

microspec-0.1.1a7-py3-none-any.whl (51.5 kB view details)

Uploaded Python 3

File details

Details for the file microspec-0.1.1a7.tar.gz.

File metadata

  • Download URL: microspec-0.1.1a7.tar.gz
  • Upload date:
  • Size: 119.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.1

File hashes

Hashes for microspec-0.1.1a7.tar.gz
Algorithm Hash digest
SHA256 eed6a431bcd67cf4dd1d0c1c55419e065272cec014fb9197631d4192f8b1c4c6
MD5 4b9d2a61811c8be44b598dde0f69f9d0
BLAKE2b-256 c0b78a0ed4e8583dec6d14cb783cb8f2fd5e8fe14ff1417abefb6f3b240ed214

See more details on using hashes here.

File details

Details for the file microspec-0.1.1a7-py3-none-any.whl.

File metadata

  • Download URL: microspec-0.1.1a7-py3-none-any.whl
  • Upload date:
  • Size: 51.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.1

File hashes

Hashes for microspec-0.1.1a7-py3-none-any.whl
Algorithm Hash digest
SHA256 dd1c980d7a589e0198b019b6fe8a87bf71d493b8247e721b61b8034c8c0dc6ac
MD5 dfb8287934f8e7e400e38404f42eea2a
BLAKE2b-256 dc4a28a3ca242d94bba1e5b65c0b2dcc16777e5d907a720c2f4a403d781d51f4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page