User Tools

Site Tools


projects:wallboard_driver:home

wallboard driver

~~META:description abstract=Driver for alcatel serial wallboard~~

Driver for alcatel serial wallboard

Features

  • USB interface
  • SD card interface to read data without need of a computer (fat32 text files)

About wallboard displays

Communication based on V.24 (4800,8n1 or 9600,8n1), up to 8 chained devices.

V.24 frame for each line is :

[start][line]([control]?[ascii]){1,16}[end]

id ::= (0x80 | WALLBOARD_INDEX) << 4
start ::= id | 0x08
line ::= 0x00 | 0x01
control ::= [color]?[blink]?
color ::= id | (0x00(red) | 0x03(orange) | 0x07(green))
blink ::= id | (0x0c(blink) | 0x0b(fixed))
ascii ::= character to display
end ::= id | 0x0f

More info (fr)

Modes

  • Init routine at startup :
    • Display message to all 8 displays (even if not connected) for about 3 sec
    • If USB is plugged in enter controlled mode
    • If USB is not plugged in and SD card is present ([1]) :
      • if last openned file is stored in EEPROM and exists on SD card open it
      • if last openned file is not defined or does not exist get first file
    • If USB is not plugged in and SD card is not present :
      • If a pattern is stored in EEPROM use it
  • USB plugged in :
    • Switch to computer controlled mode
    • Get instructions from usb and “dumbly” relay them
    • Allow to store instructions in EEPROM for next startup
    • MAY allow to write to SD card (?)
  • USB not plugged in :
    • On button press and no SD card already loaded check if SD card has been inserted and apply [1]
    • On button press and SD card already loaded find next file and read it

Last openned file is stored in 16 bytes area of EEPROM (address 0-15). Instructions are stored in EEPROM from address 16, using an ATMega32 with 1k of EEPROM allows for 1008 characters storage.

File format

Name length up to 16 characters.

Extension .wbp ?

A line consists of instruction and data, separated by a whitespace.

Everything after a # on a line is ignored, lines starting with an unknown instruction are ignored (or report an error on display ?).

Instructions set is :

  • select [0-7] : select current display and reset cursor to 0
  • clear : clear display and reset cursor to 0
  • seek [0-31]? : set cursor to character index, set cursor to 0 if no index provided
  • print .+ : print text, ignored if no text provided, jumps line automatically
  • mode [rogbf]+ : set color and or blink mode (lasts wins), ignored if no mode provided
  • wait [1-256]? : wait in seconds, wait 1s if no duration provided
  • label [1-16] : creates label, ignored if no label number provided
  • goto [1-16] : jump to label, jumps to start of file if no label provided or label does not exists
  • repeat [1-16] [N] : repeat code since label, ignored if label not provided, repeats 1 time if no count provided, /!\ labels can't be interleaved, behaviour is otherwise unknown /!\
  • loop : same as goto
# Print partially blinking multicolor "Ga Bu Zo Meu !" on line 1, waits 5s, prints green "Plop" at center of line 2, waits 5s, clear display then wait another 5s before starting again
select 0
mode gb
print Ga # whitespace here
mode o
print Bu # whitespace here
mode r
print Zo # whitespace here
mode o
print Meu # whitespace here
mode rf
print !
wait 5
seek 22
mode gf
print Plop
wait 5
clear
wait 5
loop

Electronics

schematic.svg

Source code

main.c
// Source code

How to

Manual

microcontroller usb

projects/wallboard_driver/home.txt · Last modified: 2022/06/30 21:13 by 127.0.0.1