Difference between revisions of "Open Data Acquisition System"

From Land Boards Wiki
Jump to navigation Jump to search
Line 27: Line 27:
 
* Arduino "[http://playground.arduino.cc/Main/WireLibraryDetailedReference Wire]" Standard I2C bit driver
 
* Arduino "[http://playground.arduino.cc/Main/WireLibraryDetailedReference Wire]" Standard I2C bit driver
 
* Community supported [http://land-boards.com/blwiki/index.php?title=ODAS_Python_Driver Python], C++, Ruby, LabView, VxWorks drivers
 
* Community supported [http://land-boards.com/blwiki/index.php?title=ODAS_Python_Driver Python], C++, Ruby, LabView, VxWorks drivers
 
== Host Software - Firmata ==
 
 
[http://www.firmata.org/ Firmata] is a [http://www.firmata.org/wiki/Protocol 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 [http://www.firmata.org/wiki/Main_Page#Firmata_Test_Program attractive Test Program User Interface] which could be easily extended
 
 
[[File:Firmata_test_screenshot.png]]
 
  
 
== Personality EEPROM ==
 
== Personality EEPROM ==

Revision as of 10:16, 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

  • Support for standard microprocessors such as Arduino, Raspberry Pi, BeagleBone Black
  • 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

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

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