Difference between revisions of "Open Data Acquisition System"

From Land Boards Wiki
Jump to navigation Jump to search
Line 17: Line 17:
 
** [[BLACK-PILL-HUB|STMF4XX "Black Pill" CPU"]]
 
** [[BLACK-PILL-HUB|STMF4XX "Black Pill" CPU"]]
 
** [[PiPicoMite02|Raspberry Pi Pico CPU]]
 
** [[PiPicoMite02|Raspberry Pi Pico CPU]]
 +
** [[UNO-DB25|Arduino UNO CPU]]
 
** ATMEGA32U4 [http://arduino.cc/en/Main/arduinoBoardLeonardo Arduino Leonardo] compatible Processor
 
** ATMEGA32U4 [http://arduino.cc/en/Main/arduinoBoardLeonardo Arduino Leonardo] compatible Processor
 
* Industry-Standard USB Host Interface
 
* Industry-Standard USB Host Interface

Revision as of 10:23, 29 May 2022

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:

ODAS Block Diagram.png

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

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

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

Host Software - Firmata

Firmata is a generic protocol for communicating with microcontrollers from software on a host computer. It is intended to work with any host computer software package. Right now there is a matching object in a number of languages. It is easy to add objects for other software to use this protocol. Basically, this firmware establishes a protocol for talking to the Arduino from the host software. The aim is to allow people to completely control the Arduino from software on the host computer.

Firmata has an attractive Test Program User Interface which could be easily extended

Firmata test screenshot.png

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

RPi-I2C-DIGIO-128-clk-data.png

  • Overall timing - 1 cycle

RPi-I2C-DIGIO-128-overall-read-1cycle.png

  • Overall timing - 2 cycle (Read-modify-write)

RPi-I2C-DIGIO-128-overall-rmw-2cycles.png

ESP32 MicroPython Drivers

PyBoard MicroPython Drivers

Cards

Opto-Isolated Cards

OptoIn8-I2C-X3-CCA-5456-720px.jpg

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.

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