Open Data Acquisition System
Block Diagram
The Open Data Acquisition System consists of a Data Acquisition Processor (DAP) and up to 8 I/O cards.
The block diagram is:
Features
The Open Data Acquisition System features a powerful combination of Open Hardware and Open Software to access low level hardware interfaces from a Host Computer.
Open Hardware
- Support for standard microprocessors such as Arduino, Raspberry Pi, BeagleBone Black
- ATMEGA32U4 Arduino Leonardo compatible Processor
- Industry-Standard USB Host Interface
- Industry-Standard I2C Bus Interface to cards
- ODAS card design specification
- ODAS form factor is an open form factor which provides an inexpensive and small card size (approx 4" square)
- Mix and match card types
Open Software
- USB Interface runs industry standard Firmata
- Processor card runs Arduino Leonardo compatible software
- Arduino "Wire" Standard I2C bit driver
- Community supported Python, C++, Ruby, LabView, VxWorks drivers
Personality EEPROM
- Based on Raspberry Pi Hat Spec
struct eep_vals { char signature[4]; // "ODAS" in ASCII byte fmt_version; // EEPROM data format version (0x00 reserved, 0x01 = first version) byte rsvd; // set to 0 short numatoms; // set to 2 long eeplen; // set to 96 dec char uuid[16]; // "0000000000000000" in ASCII short pid; // See PID table char vslen; // set to 32 dec char pslen; // set to 32 dec char vstr[32]; // Vendor Null terminated String char pstr[32]; // Product Null terminated String };
Product ID Table
Signature=ODAS Vendor=land.boards.com
ProductID (in hex) Product (string) 1 DIGIO16-I2C 2 DIGIO128 3 OptoIn8-I2C 4 OptoOut8-I2C 5 DIGIO32-I2C 6 PROTO16-I2C 7 8 9
Drivers
Arduino
Raspberry Pi
- Enabling The I2C Interface On The Raspberry Pi
- MCP230xx GPIO Expander on the Raspberry Pi
- Adafruit library code for Raspberry Pi
lsmod dump with DIGIO-128 card attached
pi@raspi3 ~ $ lsmod | grep i2c_ i2c_dev 5557 0 i2c_bcm2708 3997 0 pi@raspi3 ~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: 20 21 22 23 24 25 26 27 -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Raspberry Pi Performance with DIGIO-128 card attached
- sudo python Adafruit_MCP230xx.py
- Clock runs at 100 KHz
- Overall timing - 1 cycle
- Overall timing - 2 cycle (Read-modify-write)
ESP32 MicroPython Drivers
PyBoard MicroPython Drivers
Cards
Opto-Isolated Cards
Optically Isolated cards are necessary to connect together different electrical system without concerns for ground loops, voltage dropes or electrical noise. ODAS offers two optically isolated cards; one for input and one for output.
- OptoIn8-I2C - 8-Channel Optically Isolated Input Card
- OptoOut8-I2C - 8-Channel Optically Isolated Output Card
Digital I/O Cards
Card | Function | Interface type |
---|---|---|
CARRIER95TO49MM | Adapt ODAS 49mm to 95mm cards | N/A |
DCE | RS-232/TTL Converter | TTL |
DTE | RS-232/TTL Converter | TTL |
DIGIO-128 | 128-bit Digital I/O Card | I2C |
DIGIO32-I2C | 32-bit Digital I/O Card | I2C |
DigIO16-I2C | 16-bit Digital I/O Card | I2C |
Front Panel For 8 Bit Computers | Front Panel for 8-bit Microprocessors with I2C interfaces (SMT) | I2C |
Front Panel for 8 Bit Computers V2 | Front Panel for 8-bit Microprocessors with I2C interfaces (Thru-hole) | I2C |
I2CIO16-DB25 | 16-bit I2C I/O based on the MCP23017 | I2C |
I2CIO-8X | 8-bit I2C I/O based on the MCP23008 | I2C |
I2CIO-8 | 8-bit I2C I/O based on the MCP23008 | I2C |
I2C-TEMP | I2C Temperature Sensor | I2C |
I2C-RPT | 4-Channel I2C Multiplexer/Repeater | I2C |
I2C-RPT-08 | 8-channel I2C Multiplexer/Repeater | I2C |
ODAS-PSOC5 | Programmable System On a Chip | I2C, SPI, TTL |
ODAS-RELAY-16 | 16 Channel Relay Card | I2C |
PROTO16-I2C | 16-bit I/O with prototyping area | I2C |
PS2X49 | PS/2 keyboard/mouse interface | TTL |
SWLEDX8 | 8 Switches and 8 LEDs | I2C |
SWLEDX8-I2C | 16 bit I2C connection to SWLEDX8 card | I2C |
TinyPS2 | PS/2 keyboard or mouse to TTL Level Serial converter | TTL |
VGAX49 | VGA Digital Connection (2:2:2 or 5:6:5) | TTL/Analog |
SD_CARD_X49 | SD Card Adapter | TTL |
ODAS Processor Cards
No Data Acquistion System is complete without a Processor Card.
- BLUE-PILL-HUB - STM32 "Blue-Pill Board" based system processor
- ODAS-PSOC5 - Cypress Semiconductor Programmable System on a Chip
- NANO-BKOUT - Arduino NANO GVS Breakout card
- GVSDuino - Arduino UNO compatible GVS Processor card
- UNO-DB25 - Arduino Uno with a DB-25 connector
- DAS-32U4 - Data Acquisition System Processor DAS-32U4
ODAS Card Test Station
- ODAS Test Station
- ODAS Tester - Test Software in GitHub repository
- Arduino Nano
- Cables or loopback connector
- Auto-detect card if test has been run before
- Presents card type list for un-programmed EEPROMs
Checking EEPROM for board type...Detected DIGIO-128 board R=Read EEPROM, W=Write EEPROM, T=Test DIGIOs, L=Loop Test, B=Bounce LEDs