SourceForge | Login | Login via SSL | New User via SSL | Disclaimer | Email Webmaster | HCS Home page |
The HCS II Open Source Project
Functional Specifications
Version 1.0, August 20th, 2001

Name: Universal-Link

Description: This module will emulate several existing HCS network modules and will be able to assume several module's identity at once. The goal is to provide the HCS user the most flexibility by having to build only one type of network module while keeping the component count low and the size small.

Functions: The module will emulate the current network modules and add the new functions in the order presented in the following list. Where applicable, we have indicated (in brackets) when we plan to introduce a function also found in the "List of HCS II Improvements".
  1. Interrupt driven serial I/O routine
  2. Configuration and identity management routine
  3. DIO-Link emulation with new busy input (#27)
  4. Network module status response when polled (#17)
  5. Answer MAN (AMAN-Link) emulation (incl. Dallas iButtons) (#29 and 31)
  6. DIO+-Link and ADIO-Link emulation (May not be required since Answer MAN emulation covers the functions)
  7. LCD-Link emulation with new support for 40x4 displays and 4x4 keypad (#25)
  8. MCIR-Link emulation (# 26 and 30)
  9. Full Dallas 1-Wire devices support (#14, 29 and 31) (Will require XPRESS to be able to define new modules)
  10. Voice output using a module from Quadravox (#15) (Using DIO-Link emulation or with XPRESS defining new modules)
  11. Voice recognition using a Voice Direct 364 module from Sensory (#19) (Using DIO-Link emulation in Stand Alone Mode with 15 word recognition limit or in Slave Mode with 60 words recognition if XPRESS is able to define new modules)
  12. PL-Link emulation (We may instead improve on the HCS-PLIX expansion card and add Refresh and extended codes)
  13. PIC-TV emulation
NOTE: For modules used as user interface terminals mounted on a wall or desktop, the following functions should be available all at once: 5, 7, 9, 10 and 11.

Module Configuration: The configuration will be done via the RS-485 network using the Host "Network" command. The module's response would be obtained directly from the RS-485 network using a probe or via a new function in Host that would allow us to monitor network traffic via a built-in serial communication terminal. Two configuration technique would be used: Quick or Detailed.
Quick configuration: This methode would allow a user to quickly configure the module to use standard identities and function sets (ie: AMAN, LCD, MCIR-Link functions). Several identities could be assumed as long as they don't conflict with each other (ie: use the same pins on the PIC). A quick configuration command would look like this:
UNIV0 QC=TERM1, AMAN3 (This would tell a new module, default name UNIV0, to QuickConfigure the function sets and assume the identity of two standard modules, an LCD terminal TERM1 and an Answer MAN AMAN3.)
Detailed configuration: This methode is the most flexible but the most complexe. It would allow the module to activate and use any function (as long as they don't cause conflicts) and assign them to one or several module name. A detailed configuration command would look like this:
UNIV0 DC=GARAGE1(ADC1, ADC2, DIOB, LCD, I2C) (This would tell a new module, default name UNIV0, to DetailConfigure a module named GARAGE1 and activate the ADC number 1 and 2, the DIO on port B, the LCD interface and the I2C port.)
NOTE: This example would only be possible if and when XPRESS is able to dynamically define new modules.

Hardware implementation:
Processor: The module will be implemented using a 40-pin PIC16F877 (prefered implementation) or a 28-pin 0.3" PIC16F876 (with less concurrent identity possible).
Language: We plan to use CCS PCM C compiler. Provides best bang for the buck (against C2C, FED C or High-Tech C) but is still affordable (99 $US). There is also a lot of code routines available for this compiler on the Net.
Firmware programming: The complete firmware should fit into the 8KB memory of the PIC. If it's impossible, we will use the bootloader to allow users without programming hardware to program the PIC with a different firmware for various function sets. In any event a bootloader would be used to allow users that do not have access to hardware programmers to reprogram their Universal-Links from a PC's RS-232 port.
External components: The basic module will be comprised of the PIC and a standard RS-485 high-impedance transceiver (allows up to 128 devices on one network). For functions that requires a lot of memory (ie: MCIR), one or sever l FRAM chips using SPI (prefered) or I2C (shared with other devices) will be use. As functions are, minimal parts may need to be added.
PCB layout: Will use commercially available protoboards like the "PICproto64" (17 $US, 25 $CAD). The Universal-Link documentation (in PDF) will contain full schematics and step by step graphics showing how to wire-up the basic module and each available functions. If required a PCB layout, in HPGL, JPEG and native Protel format, would be made available.

All trademarks and copyrights on this page are properties of their respective owners. Forum comments are owned by the poster. The rest is copyright ©1999-2004 VA Linux Systems, Inc.