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.