Matrixsignaalgever

From RevSpace
Revision as of 02:57, 23 August 2015 by Juerd (talk | contribs) (Protocol)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

"Matrixbord"

Meh, ik snap niet waarom we die dingen matrixborden noemen. De lichtpunten zitten niet in 'n matrix. Enfin, voor info over wat het is en hoe het normaliter gebruikt wordt, zie het artikel over matrixsignaalgevers op de Wegenwiki.

Hoe komen we eraan?

Het schijnt een prototype te zijn, een model dat om een of andere reden niet goed genoeg was voor boven de weg. Althans, dat is de overlevering; we hebben 'm gekregen van Duitse hackers tijdens het CCCamp in 2015 en meer informatie dan dit hadden ze niet.

Arduino source

https://github.com/revspace/signaal/

De code doet niks anders dan continu nieuwe beelden sturen. Haal je de spanning van de arduino af, dan blijft het matrixbord zelfstandig het laatstgekozen beeld tonen.

Booten van het matrixbord (230V) duurt trouwens een paar minuten.


NB: Deze arduino zit uiteraard niet standaard in het matrixbord, maar bij gebrek aan wegkantsysteem (WKS) moesten we iets anders hebben dat 'm aanstuurt.

Protocol

Het ding wordt aangestuurd via een geadresseerde bus, maar intern gaat dat verder als 5V TTL serieel op 9600 baud. Periodiek wordt de status teruggemeld in een bericht van 10 bytes. De eerste byte is steeds 0x59, de laatste byte is een simpele XOR-checksum. We slaan de veldbus over en hebben alleen gewerkt met de interne TTL, want dat is makkelijker en genoeg om beelden tevoorschijn te toveren.

Door middel van "cat /dev/urandom | tee random.log > /dev/ttyUSB0" en een beetje geluk hebben we het protocol om plaatjes tevoorschijn te toveren uitgepluist. Ook hierbij is de eerste byte 0x59 en de laatste byte een XOR-checksum, maar daartussen zitten slechts 6 bytes voor de parameters. Met brute force hebben we de volgende info gevonden:

Bytenummer Waarde Gegokte betekenis
0 0x59 Commando
1 0x08 ?? Bij de meeste waarden krijg je het beeld heel even, maar gaat het direct weg. Als bit 4 aanstaat (8), blijft het beeld staan.
2 0x00 - 0x14 Helderheid. Maar dimmen is nog vervelender dan felle leds want het apparaat PWM't irritant traag.
3 0x01, 0x02, 0xff Type. 1 voor snelheid, 2 voor rijstrookdingen, 255 voor de overig
4 0x00 ??
5 Snelheid: 50, 70, 80, 90, 100, 120

Rijstrook: 1=↙, 2=↘, 3=, 4=×
Overig: 1=uit, 2=∅

Te tonen beeld
6 1=normaal, 2=gele flashers, 3=rode rand Modifier; niet alle combinaties zijn mogelijk (bijv. in een kan niet). Als de flashers aanstaan, is dat altijd 0,6 s boven, 0,6 s onder en 0,8 s uit.
7 ... XOR-checksum van voorgaande bytes

Review

Dit exemplaar lijkt ongeschikt voor het echte werk. De frontplaat is niet waterdicht (hoewel in de rest van de behuizing alles keurig waterdicht gemaakt is), de 5mm leds prikken gewoon door gaatjes heen. Er zit een knopje in waarmee je door de mogelijke beelden kunt cyclen, maar daarmee kun je ook verwarrende onmogelijke beelden krijgen die boven 'n snelweg vast tot ongevallen leiden. Het dimmen gaat via een dermate trage PWM dat compleet desoriënterend is voor iemand die daar gevoelig voor is.

Overigens heeft ie ook een demomodus die elke 5 seconden een nieuw beeld laat zien, waarin blijkbaar alleen zinnige beelden zitten. Die kun je activeren door dipswitches te veranderen. Interessant is dat de flashers in de demomodus een andere snelheid hebben dan in het echt (veel sneller).