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".
  - Interrupt driven serial I/O routine 
  
  
- Configuration and identity management 
  routine 
  
- DIO-Link emulation with new busy input 
  (#27) 
  
- Network module status response when polled 
  (#17)  
  
- Answer MAN (AMAN-Link) emulation 
  (incl. Dallas iButtons) (#29 and 31) 
  
- DIO+-Link and ADIO-Link emulation (May 
  not be required since Answer MAN emulation covers the functions) 
  
- LCD-Link emulation with new support for 
  40x4 displays and 4x4 keypad (#25) 
  
- MCIR-Link emulation (# 26 and 30) 
  
  
- Full Dallas 1-Wire devices support (#14, 29 
  and 31) (Will require XPRESS to be able to define new 
  modules) 
  
- Voice output using a module 
  from Quadravox (#15)  (Using 
  DIO-Link emulation or with XPRESS defining new 
  modules)  
  
- 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) 
  
- PL-Link emulation (We 
  may instead improve on the HCS-PLIX expansion card and add Refresh and 
  extended codes) 
  
- 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.