GorbaDisplay: Difference between revisions

From RevSpace
Jump to navigation Jump to search
 
(16 intermediate revisions by the same user not shown)
Line 10: Line 10:
== Introduction ==
== Introduction ==
This project is about reverse engineering a former public transport LED display.
This project is about reverse engineering a former public transport LED display.
It consists of Z panels of each X * 16 LEDs.
It consists of 4 panels of each 32 * 16 LEDs.
Each panel has 16 amber LEDs vertically.


The plan is to make the display fully addressable as a bitmap display over a network connection, preferably with individually controllable brightness per pixel.
The plan is to make the display fully addressable as a bitmap display over a network connection, preferably with individually controllable brightness per pixel.
TODO:
* more reverse engineering by tracing out the connector to the individual lines of the integrated circuits
* is there a separate power supply line to the board? if so, can we power our new microcontroller from the 14-pin connector?
* measure clock frequencies (column clock, line update frequency) of original controller board
* write software to control this thing, e.g. for ESP8266
* investigate https://github.com/qisun1/ESP8266_LED_64x16_Matrix , seems to be a similar display


== Hardware ==
== Hardware ==
Line 28: Line 20:
* a control board, with logic to receive (for example) text messages over a serial connection and convert them to a bitmap display on the display board
* a control board, with logic to receive (for example) text messages over a serial connection and convert them to a bitmap display on the display board
* a display board, with logic to light up each LED, consisting of 4 panels of 16x16 LEDs each
* a display board, with logic to light up each LED, consisting of 4 panels of 16x16 LEDs each
It has a light sensor to sense the ambient light level.


Each panel appears to work almost independently: it has its own power supply circuit, receiving input through a 14-pin connector and forwarding data to the next panel using another 14-pin connector.
Each panel appears to work almost independently: it has its own power supply circuit, receiving input through a 14-pin connector and forwarding data to the next panel using another 14-pin connector.
Each panel receives 24V and contains an LM2678 chip, also known as the Texas instruments "simple switcher", to drop the voltage down to approximately 2.2V.


It has a light sensor to sense the ambient light level.
Each display panel contains the following integrated cicruits:
 
* 74HC541, an octal buffer/line driver, buffers most of the signals coming in from the 14-pin connector to the rest of the electronics on the panel
It is powered by 24V. Each panel contains an LM2678 chip, also known as the Texas instruments "simple switcher".
* 74HC238, a 3-to-8 line decoder/demultiplexer, probably selects which row is currently being lit up
* group of 4x IRF7425, power MOSFET, probably for driving a 1-out-of-4 row of LEDs
* a whole bunch of TPIC6C596, 8-bit shift register, probably drives the columns inside one row of LEDs
* LMC6482, dual opamp, probably used to interface with the light sensor / LDR


Each LED has a 10 ohm resistor in series. LEDs are amber/orange.
Each LED has a 10 ohm resistor in series. LEDs are amber/orange.


=== Theory of operation ===
=== Theory of operation ===
My guess this is probably another row-multiplexed display, basically independent for each panel.
This is a row-multiplexed display, during each phase it lights up 1/4th of its rows.
The display can light up four rows at a time. By quickly lighting up each row in succession, the illusion to a human observer is that all LEDs are controlled simultaneously.
By quickly lighting up rows in succession, the illusion to a human observer is that all LEDs are controlled simultaneously.


The display board contains the following integrated cicruits:
Each 32x16 panel contains 512 LEDs and 16x8-bit shift registers.
* 74HC541, an octal buffer/line driver, probably buffers all signals coming in from the 14-pin connector to the rest of the electronic on the display board
* 74HC238, a 3-to-8 line decoder/demultiplexer, probably selects which row is currently being lit up
* group of 4x IRF7425, power MOSFET, probably for driving a 1-out-of-4 row of LEDs
* a whole bunch of TPIC6C596, 8-bit shift register, probably drives the columns inside one row of LEDs


==== column multiplexer ====
==== row demultiplexer ====
The demultiplexer handles only 3 bits, enough for 8 rows.
The row demultiplexer receives 3 bits input.
Perhaps there are two of them to handle 16 rows: one for the top 8 rows and one for the bottom 8 rows.
The lower two bits are used to select which row (out of 4) to light up.
The highest bit is used an enable bit for the row multiplexer.


==== row registers ====
==== column registers ====
Each panel contains 32x16 pixels.
Each panel contains 32x16 pixels.
It has a shift register consisting of 16 TPIC6C596 circuits organised in 4 rows of each 32 pixels. The shift registers of one panel are wired up in series.
It has a shift register consisting of 16 TPIC6C596 circuits organised in 4 rows of each 32 pixels. The shift registers of one panel are wired up in series.
At the end of the shift register chain of each panel, there is another 596 chip, the output feeds into the data pin of the output 14-pin connector.
At the end of the shift register chain of each panel, there is another 596 chip, the output feeds into the data pin of the output 14-pin connector.
Possibly one out of four rows can be lit at a time this way.


=== 14-pin connector ===
=== 14-pin connector ===
My guess for the pinout so far is:
Connections for the pinout are:
{| class="wikitable"
{| class="wikitable"
|+Connections
|+Connections
|-
|-
!Pin!!Id!!Remark
!Pin!!Id!!Wemos D1 mini!!Remark
|-
|-
|1||GND||Ground
|1||VCC||-||Power
|-
|-
|2||GND||Ground
|2||VCC||-||Power
|-
|-
|3||ROW_SEL0||74HCT541:A3-Y3 -> 74HCT238:A0
|3||ROW_SEL0||D1||74HCT541:A3-Y3 -> 74HCT238:A0, 0 = active
|-
|-
|4||ROW_SEL1||74HCT541:A2-Y2 -> 74HCT238:A1
|4||ROW_SEL1||D2||74HCT541:A2-Y2 -> 74HCT238:A1, 0 = active
|-
|-
|5||ROW_SEL2||74HCT541:A1-Y1 -> 74HCT238:A2
|5||ROW_SEL2||D3||74HCT541:A1-Y1 -> 74HCT238:A2, acts as a disable for the row multiplexer
|-
|-
|6||?||74HCT541:A0-Y0 -> ?
|6||?||-||74HCT541:A0-Y0 -> ?
|-
|-
|7||?||
|7||?||-||
|-
|-
|8||?||
|8||?||-||
|-
|-
|9||COL_DATA||596:SER_IN
|9||COL_DATA||D5||596:SER_IN
|-
|-
|10||COL_ENABLE||74HCT541:A4-Y4 -> 596:G
|10||COL_ENABLE||D6||74HCT541:A4-Y4 -> 596:G, 0 = active, 1 = inactive
|-
|-
|11||COL_CLOCK||74HCT541:A5-Y5 -> 596:SRCK
|11||COL_CLOCK||D7||74HCT541:A5-Y5 -> 596:SRCK
|-
|-
|12||COL_LATCH||75HCT541:A6-Y6 -> 596:RCK
|12||COL_LATCH||D8||75HCT541:A6-Y6 -> 596:RCK
|-
|-
|13||VCC||Power, about 2.2V
|13||GND||GND||Ground
|-
|-
|14||VCC||Power
|14||GND||-||Ground
|}
|}


== Software ==
Repository: https://github.com/bertrik/GorbaDisplay


There are possibly pins for:
This is able to control one panel of 32x16 pixels using an ESP8266 (wemos d1 mini).
* row select, bit 0
* row select, bit 1
* row select, bit 2
* row select, bit 3
* row-enable
* shift register data
* shift-register clear
* shift-register data
* analog LDR value
* remote control input
* power pin
* ground pin


== Software ==
Nice looking font for use on one panel:
https://fontstruct.com/fontstructions/show/2168506/4x6-font-6
Digits are 4 pixels wide, so should be able to fit an ip address on one panel (on two rows).

Latest revision as of 10:47, 19 September 2023

Project GorbaDisplay
Gorba-type.jpg
Public transport LED display
Status Initializing
Contact bertrik, User:Eloy
Last Update 2023-09-19

Introduction

This project is about reverse engineering a former public transport LED display. It consists of 4 panels of each 32 * 16 LEDs.

The plan is to make the display fully addressable as a bitmap display over a network connection, preferably with individually controllable brightness per pixel.

Hardware

14-pin header + chips

This thing consists of two main parts:

  • a control board, with logic to receive (for example) text messages over a serial connection and convert them to a bitmap display on the display board
  • a display board, with logic to light up each LED, consisting of 4 panels of 16x16 LEDs each

It has a light sensor to sense the ambient light level.

Each panel appears to work almost independently: it has its own power supply circuit, receiving input through a 14-pin connector and forwarding data to the next panel using another 14-pin connector. Each panel receives 24V and contains an LM2678 chip, also known as the Texas instruments "simple switcher", to drop the voltage down to approximately 2.2V.

Each display panel contains the following integrated cicruits:

  • 74HC541, an octal buffer/line driver, buffers most of the signals coming in from the 14-pin connector to the rest of the electronics on the panel
  • 74HC238, a 3-to-8 line decoder/demultiplexer, probably selects which row is currently being lit up
  • group of 4x IRF7425, power MOSFET, probably for driving a 1-out-of-4 row of LEDs
  • a whole bunch of TPIC6C596, 8-bit shift register, probably drives the columns inside one row of LEDs
  • LMC6482, dual opamp, probably used to interface with the light sensor / LDR

Each LED has a 10 ohm resistor in series. LEDs are amber/orange.

Theory of operation

This is a row-multiplexed display, during each phase it lights up 1/4th of its rows. By quickly lighting up rows in succession, the illusion to a human observer is that all LEDs are controlled simultaneously.

Each 32x16 panel contains 512 LEDs and 16x8-bit shift registers.

row demultiplexer

The row demultiplexer receives 3 bits input. The lower two bits are used to select which row (out of 4) to light up. The highest bit is used an enable bit for the row multiplexer.

column registers

Each panel contains 32x16 pixels. It has a shift register consisting of 16 TPIC6C596 circuits organised in 4 rows of each 32 pixels. The shift registers of one panel are wired up in series. At the end of the shift register chain of each panel, there is another 596 chip, the output feeds into the data pin of the output 14-pin connector.

14-pin connector

Connections for the pinout are:

Connections
Pin Id Wemos D1 mini Remark
1 VCC - Power
2 VCC - Power
3 ROW_SEL0 D1 74HCT541:A3-Y3 -> 74HCT238:A0, 0 = active
4 ROW_SEL1 D2 74HCT541:A2-Y2 -> 74HCT238:A1, 0 = active
5 ROW_SEL2 D3 74HCT541:A1-Y1 -> 74HCT238:A2, acts as a disable for the row multiplexer
6 ? - 74HCT541:A0-Y0 -> ?
7 ? -
8 ? -
9 COL_DATA D5 596:SER_IN
10 COL_ENABLE D6 74HCT541:A4-Y4 -> 596:G, 0 = active, 1 = inactive
11 COL_CLOCK D7 74HCT541:A5-Y5 -> 596:SRCK
12 COL_LATCH D8 75HCT541:A6-Y6 -> 596:RCK
13 GND GND Ground
14 GND - Ground

Software

Repository: https://github.com/bertrik/GorbaDisplay

This is able to control one panel of 32x16 pixels using an ESP8266 (wemos d1 mini).

Nice looking font for use on one panel: https://fontstruct.com/fontstructions/show/2168506/4x6-font-6 Digits are 4 pixels wide, so should be able to fit an ip address on one panel (on two rows).