Difference between revisions of "Flipdot"

From RevSpace
Jump to navigation Jump to search
(reverse engineered signals from software)
(50-pin connector)
Line 29: Line 29:
 
[https://github.com/entropia/flipdot This software] drives a pixel like this:
 
[https://github.com/entropia/flipdot This software] drives a pixel like this:
 
* select a row by making one ROW signal high: choose ROW_H_x if you want to set a pixel, or ROW_L_x if you want to clear a pixel. The rest of the ROW_H/ROW_L lines are made low.
 
* select a row by making one ROW signal high: choose ROW_H_x if you want to set a pixel, or ROW_L_x if you want to clear a pixel. The rest of the ROW_H/ROW_L lines are made low.
* select a column through the COL_ADDR_x pins. The encoding is a bit tricky, a panel of 28 pixels wide has 4 groups of 7 columns each. Pins COL_ADDR_A3/A4 control which group to select, pins COL_ADDR_A0-A2 select a column within the group.
+
* select a column through the COL_ADDR_x pins. The encoding is a bit tricky: a panel of 28 pixels wide has 4 groups of 7 columns each. Pins COL_ADDR_A3/A4 control which group to select, pins COL_ADDR_A0-A2 select a column within the group.
 
* the polarity of the pixel (set/clear) is encoded on the DATA line
 
* the polarity of the pixel (set/clear) is encoded on the DATA line
 
* a strobe (pulse) is sent to one of the panels by toggling one of the Ex lines high then low, to actually update the pixel
 
* a strobe (pulse) is sent to one of the panels by toggling one of the Ex lines high then low, to actually update the pixel
 +
 +
It appears that the ROW_H_x/ROW_L_x signals are driven directly at high voltage (18V or so) from the main controller, while the COL_ADDR_x signals are at logic level.
 +
The FP2800 on the back of each flipdot panel then takes these logic-level signals and turns them into high-voltage (18V or so) column signals.
  
 
=Serial werkend krijgen=
 
=Serial werkend krijgen=

Revision as of 22:17, 28 June 2018

Project FlipDot
SGoKHyK6TbG5VyLyKMMVBg.jpg
Status In progress
Contact User:Sebastius
Last Update 2018-06-28

Status

Het bord hangt aan de muur! Te bereiken via MQTT op topic revspace/flipdot

Controller

Schema

Project op github waarbij een LAWO display wordt aangestuurd door een STM32, met daarin o.a. een pinout van de 50-pins connector met zinnige namen, als ROW_H_0..15, ROW_L_0..15, COL_ADDR_1..4.

Afmetingen: 84x16 pixels? Verdeeld over X modules?

Interesting links:

50-pin connector

the 50-pin connector

There is a 50-wire cable going from the control board to the actual flipdot-boards. The image on the left shows the pinout of the connector.

This software drives a pixel like this:

  • select a row by making one ROW signal high: choose ROW_H_x if you want to set a pixel, or ROW_L_x if you want to clear a pixel. The rest of the ROW_H/ROW_L lines are made low.
  • select a column through the COL_ADDR_x pins. The encoding is a bit tricky: a panel of 28 pixels wide has 4 groups of 7 columns each. Pins COL_ADDR_A3/A4 control which group to select, pins COL_ADDR_A0-A2 select a column within the group.
  • the polarity of the pixel (set/clear) is encoded on the DATA line
  • a strobe (pulse) is sent to one of the panels by toggling one of the Ex lines high then low, to actually update the pixel

It appears that the ROW_H_x/ROW_L_x signals are driven directly at high voltage (18V or so) from the main controller, while the COL_ADDR_x signals are at logic level. The FP2800 on the back of each flipdot panel then takes these logic-level signals and turns them into high-voltage (18V or so) column signals.

Serial werkend krijgen

0381C9273B09.jpg

Pin 2 en 3 van de 74HC14 loshalen. Daarna werken de RX en TX pins op het bord met een USB-Serial TTL. GND niet vergeten...

1200Baud, 7E2 (7 bits, Even Parity, 2 Stop bits)

stty -f /dev/ttyUSB0 1200 cs7 parenb -parodd cstopb

STTY blinkt niet uit in duidelijke parameters...

Code

Met dank aan Juerd:

#!/usr/bin/perl -w
use strict;
use autodie;
open my $fh, ">/dev/ttyUSB0";

my $bla = "regel 1\nregel 2";

my $output = "aA11000\n$bla\n\n\r";

my $xor = 0x7f;
$xor ^= ord for split //, $output;

$output .= chr $xor;
syswrite($fh, $output);

MQTT ESP

VDPxDd7bR3mCYU7mlO1W6w.jpg

Een NodeMCU hangt aan de serial. Code geschreven in Arduino. Er is een beter printje in bestelling om het netter op te lossen. De secundaire TX pin van de NodeMCU wordt gebruikt (GPIO 15) zodat bij een boot/reboot van de ESP het bord er geen last van heeft.

Reparatie

1 IC socket was verteerd door batterijschade. Ook de 4072 vervangen. Kloppen op het IC leverde een reboot namelijk.

B1mDBTYNSmOXexG3iw9wKw.jpg

Foto's

41EDFE20-B18A-4F13-89EB-838BC4CF7F17.jpg E0270E068FF3.jpg