Hanover flipdot bus sign display component

Hiya, thought I’d post something I’ve been working on which might be of interest to some.

I bought a few flipdot (electromechanical) matrix displays made by Hanover Displays, and wrote a component to integrate them as a native ESPHome display. These displays were very commonly fitted on UK buses, (and anywhere they were exported), and are still relatively easy and relatively cheap to buy off ebay and other marketplaces as the buses are being taken out of service (I paid £160 for a full bus set of 3) .

They use RS485 and a slightly weird protocol, but connecting one to a cheap Chinese TTL-RS485 adapter works fine. They have a rotary encoder for the addresses, although they have been set to 0 on all the ones I bought (nobody would have reset them though). At first I thought that the signs would just ignore a display packet which doesn’t match the display size (and so the addressing would only be needed if you want two or more signs showing different data), but in fact they will just display a corrupted image, so who knows! :smiley:

The native display “rotation” seems to work ok too - in the video below the sign is upside-down but rotation: 180 just worked :smiley:

Example in operation:

I need to tidy it up and add a few more features (eg. enabling test mode) and then I’ll put it on Github.

A few questions though if anybody can help:

  • I haven’t tried it yet, but if I have two displays using the same uart (ie. they are on the same RS485 bus with different addresses), will that clash badly or is there some sort of blocking?
  • As you can see in the video, a standard font (Arial) works sort of ok but it’s not great. Is there a good way to use a bitmap font with predictable pixel heights?
3 Likes

hey, did you manage to put your flipdot display/esphome code on github yet? We’ve got a couple (out of the bus company skip!) to play with. We found the various other efforts as you did, then wrote our own software for it.

Our attempt uses a (Perl!) module named Imager, which can be asked to output a string using a loaded ttf font, at a certain font size, and then asked how many actual pixels high that is, so we iterated to get sane heights. There’s a bunch of made-for-terminal fonts which mostly work: See here The Ultimate Oldschool PC Font Pack: Font Index

Didn’t realise you could chain them and just address via different addresses! Makes perfect sense tho will try that :wink:

Do you happen to have / found a copy of the Flip_Dot_Manual_vB.pdf at all? would love one…

Hiya! Sorry I hadn’t, but I just sat down and finally got around to it :smiley:
I’ve put it up here: https://github.com/gattrill/hanover_flipdot_esphome

I extracted the actual bus fonts out of the design software and converted them to TTF so that they can be used within ESPHome, and it sort of works! I’ve uploaded a few here if they are of interest.

edit: Oh and no unfortunately I don’t have one, I probably hit the same dead-ends as you looking for it! I keep meaning to email Hanover to see if they can send me a copy.

1 Like

@castaway, there’s a copy of the file you’re after here - https://engineer.john-whittington.co.uk/assets/Flip_Dot_Manual_vB.pdf
It’s linked from Adventures with Flippy the Flip-dot Display | John Whittington's Blog

Great initiative, thanks for this! Slowly progressing with my Hanover 84x8 display. Almost got your code working, except for the ID that is mentioned (I replaced it by XXXXXX) within it.print(it.get_width() /2, it.get_height()/2, id(XXXXXX), TextAlign::CENTER, “Hello”);

Should have read the documentation, it is the font which can be replaced by any font to be uploaded to HA…

Tried several things, but the Hanover display doesn’t react to the RS485 signals. Hope someone can point me in the right direction.

Things that I’m not certain about:
→ the dial on the 7090 board has an arrow pointing to 1; so address in code should be 0x01 then?
→ uart1 is not allowed anymore in esphome; so I replaced both uart1 references with uart_0
→ My wiring is as follows:

ESP32S<—>RS485
3v3<---------->VCC
Ground<----->Ground
D2<----------->TXD

RS485<—>Hanover
A+<---------->A+ (red cable)
B-<----------->B- (black cable)

→ Didn’t use the resistor as I didn’t understand where pin 3 and 4 would be…

Update 19-2:
Read somewhere that the address should be 1 higher than the dial indicator. So changed the address to 0x02 and now it all works!
Started linking the Hanover to my Home Assistant and is now showing all kinds of information in a very satisfying way :slight_smile:

Can this be used with all flipdot displays?
I have a few mobitec flipdot displays I want to integrate to HA somehow

A few days ago I came across a cheap (but new) Hanover LED display board (144x19 pixels). I opened the backplate and it seems to me that this is about the same control as the flipdot. Also 24V power to be supplied, and 4 communication connections. Does anyone has any experience whether I could use this ESPHome code to also control this LED display?

Hi sorry I haven’t caught up here! I’m 99% sure that Mobitec would use a different protocol, but my code might be adaptable if it’s a simple serial protocol.

I haven’t used one of their LED displays but I wouldn’t be surprised if it uses the same protocol, so that the older displays can be swapped out without any other changes needed. The display protocol is just pixels, there’s nothing special other than an LED display could probably be refreshed much more quickly.

Hi Gareth,
Gave the LED display a try. The LED display, after providing with power, lights up the first pixel. My ESP32 with the same configuration as my flipdot doesn’t show anything on the display.

The log of my ESP32 (connected to the LED sign) however shows some error messages (which don’t appear on another ESP32 connected to the flipdot):

[W][component:237]: Component display took a long time for an operation (251 ms).
[15:07:19][W][component:238]: Components should block for at most 30 ms

Also read a post related to someone that used an Arduino to control the Hanover LED display https://hackaday.io/project/183631-hanover-led-display-hacking. As a non-expert I wonder whether this display needs other settings (SPI 250k)?

After increasing the baud rate the error messages have stopped. Tried several standard baud rates (all higher than 4800 in your code), but none made the display shows anything (except for the one top-left pixel)…