All Projects → LachlanGunn → oic

LachlanGunn / oic

Licence: MIT License
Open Instrument Control

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to oic

Icemu
Emulate Integrated Circuits at the logic level
Stars: ✭ 113 (+182.5%)
Mutual labels:  embedded, electronics
List of robot electronics
A curated list of awesome open source electronic resources for robotics
Stars: ✭ 106 (+165%)
Mutual labels:  embedded, electronics
Bitcoin-Bar
Physical Bitcoin Stat Ticker
Stars: ✭ 32 (-20%)
Mutual labels:  electronics
simcom dam
Examples for simcoms downloadable modules (Qualcomm SoC)
Stars: ✭ 25 (-37.5%)
Mutual labels:  embedded
lv lib rlottie
Lottie animation support for LVGL
Stars: ✭ 16 (-60%)
Mutual labels:  embedded
async-stm32f1xx
Abstractions for asynchronous programming on the STM32F1xx family of microcontrollers.
Stars: ✭ 24 (-40%)
Mutual labels:  embedded
EmbeddedTools
Additions to the model-based DSL for deploying Java and Native projects to remote targets
Stars: ✭ 14 (-65%)
Mutual labels:  embedded
rustsbi-qemu
QEMU platform SBI support implementation, using RustSBI
Stars: ✭ 39 (-2.5%)
Mutual labels:  embedded
nixos-on-arm
Cross Compiling NixOS to ARM as a replacement for Yocto
Stars: ✭ 129 (+222.5%)
Mutual labels:  embedded
lwprintf
Lightweight printf library optimized for embedded systems
Stars: ✭ 98 (+145%)
Mutual labels:  embedded
TypeScriptXX
🧷 Stay safe! Type-safe scripting for C++ using TypeScriptToLua and CMake with auto-generated declarations.
Stars: ✭ 33 (-17.5%)
Mutual labels:  embedded
rigel
[UNMAINTAINED] HMAC-SHA512 implementation optimized for embedded devices
Stars: ✭ 14 (-65%)
Mutual labels:  embedded
brookframework
Microframework which helps to develop web Pascal applications.
Stars: ✭ 161 (+302.5%)
Mutual labels:  embedded
irq
Utilities for Interrupt handling
Stars: ✭ 12 (-70%)
Mutual labels:  embedded
bigbug
Easy Microcontroller Debugging Tool
Stars: ✭ 37 (-7.5%)
Mutual labels:  embedded
PeripheralTemplateLibrary
Cross-platform, cross-MCU C++ template library for microcontrollers and peripheral devices
Stars: ✭ 52 (+30%)
Mutual labels:  embedded
kernel-syslog
📝 Kernel module that can be used as a replacement for syslog, logger or logwrapper
Stars: ✭ 37 (-7.5%)
Mutual labels:  embedded
infinitree
Scalable and encrypted embedded database with 3-tier caching
Stars: ✭ 80 (+100%)
Mutual labels:  embedded
gpib-usbcdc
Interface bridge between GPIB and USB communication device class
Stars: ✭ 81 (+102.5%)
Mutual labels:  embedded
mbedtls-esp8266
Updated and Upgraded mbedTLS library for the ESP8266 (probably ESP32 too)
Stars: ✭ 13 (-67.5%)
Mutual labels:  embedded

Open Instrument Control

The goal of this project is to develop an embedded-side software stack for instrument control. The initial target will be the Arduino platform, however the goal is to eventually provide support for at least 8/16/32-bit PIC, AVR, and ARM.

Initial development is for PC, and not much effort has been spent on efficiency. Data structures are all dynamically-allocated linked lists, unsuitable for platforms with constrained resources.

The system will be based upon SCPI. Adherence to the requirements specified in IEEE 488.2 is not initially planned, as this standard is not available to the author.

Getting Started

We have developed a simple DAQ interface using an Arduino board, with the ability to both read (using the in-built ADC) and write (using PWM) voltages.

  1. Copy the src/ArduinoSCPIParser directory to your Arduino library directory. In my case, this was C:\Users\Lachlan\Arduino\libraries\ .
  2. Open the sketch src/Examples/Meter/Meter.ino
  3. Upload it to your Arduino board.
  4. Use the serial monitor to talk to the board. Some example commands
    • *IDN? (print some version information)
    • :SOURCE:VOLTAGE 1V (set the PWM on pin three to output 1V)
    • :MEASURE:VOLTAGE? (read the voltage on analogue input zero)

Version 1 (In development)

The first version of OIC will provide a basic platform upon which further development may begin. This release shall provide a virtual instrument platform for the Arduino Uno.

Communication shall be via the virtual serial port provided by the device, which shall provide a bare-bones implementation of SCPI.

In addition to the basic platform, this release will include two virtual instruments:

  • An implementation of the Digital Meter instrument class using the on-board ADC.
  • An implementation of the RF and Microwave Source class using the Sparkfun AD9835 breakout board.

0.1 (Completed)

Release 0.1 is a prototype of the SCPI implementation, and will an implementation of SCPI-99 on the PC.

0.2 (Completed)

Release 0.2 contains an embedded version of the SCPI implementation. This is to demonstrated with a simple implementation of the digital meter instrument and an accompanying Python script to perform the read operation.

0.3 (In Development)

The 0.3 release will provide complete implementations of the Digital Meter and RF Source classes as described by the SCPI implementation, along with the host-side software necessary to operate them from either a GUI or a Python shell.

1.0 (Planned)

The 1.0 release will provide multi-instrument support, allowing both the voltage measurement and signal generator instruments to be accessed with a single communications channel.

Version 2 (Planned)

The second version will provide support for PIC32 using the Microchip USB to Serial driver and USBTMC.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].