Purpose of this project is to design a configurable active sensor/probe interface based on 4-pole jack interface featuring all standard digital interfaces, such as UART, I2C, 1-Wire, 2-Wire SPI, IrDA, besides GPIO, high performance analog interface with differential input and programmable gain, two D/A converters with configurable precision output (reference) resistances, and power. The USBPSoC project, shows the first implementation of this active sensor interface capable of reaching differential gains up to 200x with 14-bit A/D, or two A/D operating at 11-bit D/A.
The USBPSoC project is a small board of size approx. 1.5 x 1.1 inch designed around the Cypress USB MCU from PSoC1 family with 0.1% precision and calibrated external voltage and resistance references. Goals we are willing to reach with this board are:
- be able to measure temperatures with accuracy of +/-0.1 oC or better,
- sensig half and full-bridge circuits,
- supply active probes, i.e. based on UART or other protocols,
- directly interface the I2C sensors and 1-Wire sensors
- charge the 3.7 V LiPO batteries,
- supply other MCU boards with power and providing communication interface,
- USB compatible with all desktop computers and Android phones,
- be able to download a new firmware on the fly from the Web, with a single-click!
All mentioned above regards to the 4-pole jack interface, however in addition the two stacking connectors expand the use of such board in the future.
Having such a great flexibility would not work by not having an appropriate PC or Android software or iOS.
To allow anybody to develop a sensor in a minute, focusing just on the active probes, or custom PSoC1 firmware, the project integrates the unique and tiny message layer protocol, named SNP Message Layer. This layer proposes a simple message exchange format focued into the measurements. It splits traditional 'single messages' into descriptions and variables representing the dynamic content, where descriptions describe the variables. Description are sent just once on request while the dynamic content, which includes your variables i.e. your direct C struct{ }, is send regularily on update or request from user. Variables are always exchanged in its native form, directly as read from the A/D, or to be written to D/A registers; while description may provide complex math, with precision, accuracy and unit specified.
Where we are?
- We have made the first prototype, a PC and Android software, and we already can measure the temperature at high accuracy, see an example of checking the beer temperature, whether it is suitable for further investigation
,
- we have made a provisional LiPo battery charger,
- we are going to port our earlier project, the Cypress PSoC1 programmer (power cycle mode for the 4-pin pole jack, or reset mode with additional pins),
- and of course we want to provide the single-click USB firmware downloader from the Web!
Next steps
- we want to analyze all possible combinations of wiring various kind of sensors to make indeed universal 4-pole jack interface, and
- we would try to initiate many different projects.
Links
- Project home page with wiki documentation, examples: https://vir.isotel.eu/SNP/USBPSoC/wiki