
For 'Series 3 & 4' BrightSigns with USB Port or TTL Serial 
Port
8 Inputs & 8 Outputs +DMX Controller
 
 
USB-S-8X8-DMX     

Features:
  - Small footprint (3.0 x 3.0 inches)
 
  - 8 Output Drivers for Lamps or Relays (2 amperes each driver)
 
  - Terminal blocks for all I/O connections
 
  - 12-24V external 2.1mm jack for loads (5V via  internal Voltage Regulator)
 
  - On board LED's to indicate Power and Processor running.
 
  - Serial Setup: 38,400 or 115,200 baud, N,8,1 (standard RS232 communication)
 
Overview:
This board was designed with 'low impedance' drivers.  These 'low 
impedance' drivers can be used to drive external devices to logic '0'.  The 
USB is connected thru a USB-Serial 'Prolific' converter chip.  This board 
appears as a serial device to the BrightSign.  In BrightAuthor, be sure to 
set the Presentation Properties/Serial port to Port2 for the USB device.
Operation:
  - 1. Activation of inputs 1-8 (connect any input to 0V) sends out Ascii 
  '1', '2', '3', '4', '5', '6', '7' or '8' followed by <CR> (Carriage Return), 
  because the BrightSign is normally looking for 'Strings'.
      
  - 2. This board uses the 'HMS Protocol'.  Fade for DMX Channels or 
  'Non-HMS Protocol selected by SW1-1)
 
Serial Transmission 'Break' Protocol:  The serial port 
(BrightSign) has to allow 20 milliseconds to elapse between serial data 'bursts' 
going out.  This 20 millisecond 'rest' time is interpreted by the HMS board 
as a 'Break' in serial transmission.  This 'Break' condition synchronizes 
the HMS board to the serial transmissions from the BrightSign (or other device).
Version 6.x Firmware:  SW1-3 selects the baud rate.  SW1-3 off 
sets 38,400 baud.  SW1-3 on sets 115,200 baud
Note: The baud can be changed dynamically (without re-set of the board)
New Command Selection for HMS Protocol:  The first byte received by 
the HMS board (after 'break condition') sets the receive protocol command.  
This new protocol simplifies how many bytes to send from the BrightSign because 
the DMX parameter is selectable! The bytes are enclosed in brackets [ ].  Note: 
'Speed' = Rate of Fade.
REV 2.0 Firmware (Inputs) Effective 01/20/2015: 
Rev 2.0 Firmware allows for multiple inputs low at the same time.  I.E. 
If input 1 goes low ('1' is reported), then input 2 goes low (while input 1 is 
held low), then input 2 will be reported.  If any 'active' Input (switch) 
opens then closes, it will be reported as a new input. I.E. suppose input1 is 
closed and input2 is closed and opened multiple times.  A '2' will be sent 
with each successive switch closure.  This logic is for all inputs.  
With Rev 2.x firmware, a single switch can be used to show closed and open.  
If you want to detect a door or drawer opening and then closing, arrange the 
switch to close when the door or drawer opens, and then the switch opens when 
the door or drawer is closed.  Also, when all switches are open, the '0' is 
reported.  This is necessary to track the switches.
 
Outputs:
Outputs are On or OFF.  Use this table of bits to determine the number 
to send from the BrightSign to control the outputs.
  - Bit     Binary              Decimal
 
  - 0       00000001b      1d        (Output1)
 
  - 1       00000010b      2d        (Output2)
 
  - 2       00000100b      4d        (Output3)
 
  - 3       00001000b      8d        (Output4)
 
  - 4       00010000b      16d      (Output5)
 
  - 5       00100000b      32d      (Output6)
 
  - 6       01000000b      64d      (Output7)
 
  - 7       10000000b      128d    (Output8)
 
Note: See the 'Not HMS Protocol' for simple DMX 
control (no fade) near the bottom of this specification sheet.
Outputs: Connect Loads between 'Output' and +V.
HMS Command Protocol:
*********Output Control Command (Lights):
  - Command1:  Set Outputs 1-8 by: Bit selection, Verify_byte
    3 bytes          [1, 'Select_Bits', 204]
  See the binary table above to set the outputs on or off (1's sets the output 
  on, 0's sets the output off).  I.E. Sending 129 will set output 1 and output 8 
  on.
   
*********DMX SPECIFIC COMMANDS 16-26, and 31
  - Command16:  Set DMX Channel Values (Starts at Channel 1)
    ? bytes             [16, #Bytes, DMX_CH1 to DMX_CH100], followed by 'Break' 
  if '#Bytes' was not received
   
  - Command17:  Set Multiple DMX 'Fade Channel' values
    ? bytes             [17, #Bytes, Channel#,'Channel Value', 'Fade Value', 
  Channel#, 'Channel Value', 'Fade Value',....], followed by 'Break' if '#Bytes' 
  was not received.
   
  - Command18:  Set 1 DMX 'Fade Channel'
    3 bytes             [18, Channel#, Channel Value, Fade Value]:   *1  End 
  Command
   
  - Command19:  Set all 24 DMX Fade values to one value
    2 bytes             [19, Fade Value]  *1  End Command
   
  - Command20:  Set the 24 DMX 'Fade Channels' to a pre-set Fade Speed 
  (values have to be in Channel order!)
    17 bytes           [20, Ch1_Fade Value, Ch2 Fade Value,... to Ch24_Fade 
  Value], followed by 'Break' unless all 24 Fade values are sent
   
  - Command21:  Set 1 or more DMX channels to a value. 
    ? bytes             [21, #Bytes, Channel#, Value, Channel#, Value....], 
  followed by 'Break' if all the bytes ('#Bytes') was not received
   
  - Command22:  Set 1 DMX channel to a value:  
  New: With Version 4.x firmware setting channel 0 sets channel 512 value
    3 bytes             [22, Channel#, Value]   *1  End Command
   
  - Command23:  Set all 512 DMX channels to one value (channels 1 to 
  512)
    3 bytes             [23, Channel Value,204]  *1  End Command
   
  - Command24:  Set all 24 DMX ' Fade' channels to one value (channels 
  1-24)
    3 bytes             [24, Channel Value,204]  *1  End Command
   
  - Command25:  Set all 512 DMX 'Non Fade' channels to one value.
     3 bytes            [25, Channel Value,204]  *1  End Command
   
  - Command26:  Set DMX Channel#, first byte to this channel, 
  successive bytes to successive channels.  Well suited to DMX Head Controlling!
    ? bytes             [26, #Value Bytes, Start Channel#,  Value1,  Value2, 
  more values to #Bytes], followed by 'Break' if '#Bytes' was not received.
   
  - Command27:  Set Default Fade Value for Power-up (Value stored and 
  retrieve at power up)
    3 bytes            [27,Fade Value, 204]
   
  - Command28:  Set All 512 DMX Channels off Instantly (Does not affect 
  the Fade Values)
    2 bytes             [28,204]
   
  - Command29:  Set the maximum number of DMX channels to transmit (the 
  default is 50).  This value stored in permanent memory.
    3 bytes            [29,Max Channels, 204] Note: a value of zero (0), enables 
  512 channels (Fade value should not be set below 30 when 512 channels is 
  enabled). 
  - Command30:  Set one 'upper' DMX channel to a value (upper channels 
  are 256-511).  A value of zero sets channel 256, a value of 1 sets channel 257 
  and so on. 
    3 bytes            [30,Channel#,Value] 
  - Command31:  Set multiple 'upper' DMX channel values.
    ?? bytes           [31,Start Channel, value, value...,170] Note: 170 
  terminates the command because we have an unknown number of bytes to set.  
  Note: The 'Start Channel' is added to upper channel 256 (location in memory is 
  0x200 (page 2 of memory).  Note: To use this command as a 'play command' the 
  last byte has to be 170d which will terminate this command.
 
    *********Play/Record and Other 'Scene' Commands 32-36
Link to 'Scene 
Format (Protocol)'
  - Command32:  Play 'Recorded' Scene
    3 bytes             [32, Scene# (1-48), 204] Note: Contact HMS Electronics 
  for a 175 scene board.
     
  - Command33:  Record 'Scene' (256 byte limit) (Scenes 
  can be concatenated)
                            [33, Scene# (1 to 48), 204, 1 to 256 bytes] Note: 
  Contact HMS Electronics for a 175 scene board.
     
  - Command34:  Cancel 'Play Scene'. This command should 
  be issued prior to any new command if Command32 was last command.  This 
  insures that the 'Play Scene' Command is stopped.
    2 bytes             [34, 204]
     
  - Command35:  Erase Scene (erase all scene bytes)
    3 bytes             [35, scene#,204]
  
   
  - Command 36: Set DMX Scene (3.1 firmware).  This 
  'scene' command sets all 256 channels from a scene number.  This scene for DMX 
  can be set using the 'Record Scene' command above.
    3 bytes             [36, scene#,204]
 
********Miscellaneous Commands (Useful for Development)
  - Command 39: Say 'Max Channels' = ", max_channels (this is text to 
  the computer) followed by the number of bytes to transmit
                         [39,204]
  
  - Command43:  Send the Data for DMX channels 1 to 'Max 
  Channels' to the computer
                          [43,204]
     
  - Command44:  Send 'Scene Data' to Serial Port:  All 
  256 bytes of the scene are sent out the serial port. Very useful for verifying 
  command 'data strings'.
    3 bytes             [44, Scene# (1 to 48), 204]
     
  - Command45:  Report the Software version of the board 
  to the Serial Port
    2 bytes             [45,204]
     
  - Command46:  Report the Goals and Fades for the Fade 
  channels.  I.E. Goal 1, Fade 1, Goal 2, Fade 2,....to Fade 24, Default fade, 
  Max_channels (see Cmd29), Upper channels ( see Cmd37)
    2 bytes            [46,204]
     
  - Command47:  Firmware Upgrade Command (the HZ LED 
  will flash at 5 Hz) (use the 'HMS_Downloader.exe' program to update the 
  firmware). Contact HMS Electronics to see if there is a firmware upgrade and 
  report the current firmware revision when requesting this information.
    2 bytes            [47,204] 
*1: All commands that end with 204 (the end command byte) or are stated in 
the description ('End Command') is the end of the command and another command 
can be part of the same string (no 'Break' required) 
I.E. Turn on DMX channel 1 100%, Turn on DMX channel 50 100%   
[22,1,255,22,50,255]  (Two command22's in succession)
    Notes:
  - Any 'Command' followed by a 'break condition' terminates the Command. So, 
  if zero bytes follow Command=16, Command 16 will simply be terminated at the 
  break condition.
 
  - If you use 255 for the #bytes, then the command will be terminated at 
  'Break' and fast flashing (Hz LED) will indicate that the command did not 
  terminate correctly (#bytes was not received).
 
  - The brackets are not part of the byte sequence!  Send decimal bytes no 
  strings!
 
  - If #bytes is less than the bytes you are sending as part of the protocol, 
  unexpected results will happen.
 
  - Any 'illegal' command results in 'dumped bytes' until 'Break' condition.  
  So, if a large string of bytes is sent, and a channel fade number is out of 
  range (>24), then the remaining bytes of that string are discarded.
 
  - Fade: Excellent fade rate can only be obtained when the maximum number of 
  channels to transmit is less than or equal to 50.  With more than 50 channels 
  to transmit, the transmit time exceeds the line frequency rate and phase 
  control of the lights by the 'DMX dimmer box' will cause a 'stepping' effect 
  to the brightness.
 
  - To 'Concatenate' Scenes:  see 'Scene 
  Format Protocol'
 
To Send Multiple Commands (not concatenated) , Send 1 command, then pause for 
20 milliseconds, then send the next command and pause and so on except where 
designated above.
 
Note: Fast Flash of the 1Hz LED (3 Hz).  When any command is 
terminated with 'Break', fast flashing occurs.  When a command is sent 
incomplete or out of range, (I.E. set fade for channel 30), because channel 30 
is out of range, fast flashing is set.  Fast Flashing is cleared upon 
complete reception of a command not requiring the 'Break' condition.  I.E. 
Send 'Command0', to clear the fast flashing after 'Break'.
DMX512 Operation:  The DMX first channel to 'Max Channels' channels (see 
command31) are sent every .5 seconds if Option2 is off) or whenever the DMX 
'Channel' bytes change (resulting in instant DMX output).  The DMX512 
protocol is so fast that the entire 256 (256 channels) channels of DMX data can 
be sent out in 14 milliseconds.  512 channels are sent in about 28 
milliseconds.
DMX 'Head' Operation.  If a DMX dimmer pack is utilized, 
setup the dimmer pack to utilize channels 1-4.  Then set the DMX 'Head' 
start channel to 5 (or whatever channel is allowed).  If the DMX 'Head' is 
the only DMX device, then set the 'Head' channel to channel 1.  If the DMX 
'Head' protocol expects to receive 20 bytes (20 channels) then all 20 of those 
bytes need to be sent with each DMX 'Head' command sequence.  Likewise, 
when using the BrightSign to control the DMX Head, the BrightSign should send 
all 20 DMX bytes with each Serial Send() command. If the DMX512 'Head' can only 
be set for 'even addresses' or multiples of a number (I.E. 20,40,60) then the 
bytes for that address (channel) will have to start at the address or channel 
set as the base channel.
DMX 'Play Scenes'.  A 'scene' file can be created and stored on the SD 
card.  BrightScript would be used to interpret the 'scene file'.  Any 
number of scenes could be stored on the SD card.  Contact the BrightSign 
people if you need help with this programming.
    Link: Setting up the Serial Port and Sending Bytes with 'BrightAuthor'.
HMS-DMX.brs
(sequences DMX channels 1 thru 4). Rename this file to 'autorun.brs' and put it on 
the SD card
*****************************************************************
Note: The brackets are not part of the byte sequence.
Options: (SW1)
  - SW1-1 Off = HMS Protocol enabled (uses the command structure explained 
  above).
 
  - SW1-1 On = HMS Protocol disabled. The byte sequence is [170,Port_Byte, 
  DMX_CH1_byte, successive DMX channel bytes]
                        Note: 512 DMX bytes are sent with this selection (no 
  fade) 
  - SW1-2 On  = Invert Serial Signals (compatible with the 3.5mm 
  TTL-Serial Port).
 
  - SW1-2 Off  = No Invert of Serial Signals (USB compatible).
 
  - SW1-3 On = Continuous DMX
 
  - SW1-3 Off = Send DMX about every .5 seconds
 
  - SW1-4 On = Cycle and I/O Diagnostic ( Turns DMX channels 1-100 full on, 
  then off every .7 seconds.  Outputs 1 to 8 are set on sequentially.  If any 
  input is active (low) then the corresponding output is set on.  Outputs return 
  to 'sequential on' when no input is low.)
 
 
  
    | Note: External Supply Voltage:  An External 
	Power Supply is needed to power the loads on the output connector.  Do not 
	connect any loads that have their own power that exceeds the power as 
	applied to the board using the 'Ext. Power Connector'.  Doing so may result 
	in damage to the board.  I.E. Suppose that 12 volts is supplied to this 
	board and you have a relay board with it's own power of 24Volts DC that 
	powers the relays.  The 24VDC will feed back into the board via the foldback 
	diodes.  Note: Foldback diodes are required for inductive loads such as 
	relays or small motors. | 
  
 Last Revised: 
    08/27/2024