3

I managed to pick up two 16x64 unbranded LED matrix for next to nothing. My son has autism and absolutely loves LED scrolling signs so I thought it would be a nice project to build for him. They have USB and serial wires. USB only does power I think, but it also has a USB Mini B port on the side. Using that USB mini port I've managed to install the correct drivers and now windows recognises it as Prolific USB-to-Serial Comm Port.

I've tried monitoring the serial traffic on the port but nothing is being sent from the device. Am I right in guessing the reason I got them so cheap was that they came with no software and I'm SOL in trying to reprogram the text? Not sure what to try next as I'm only an amateur so any advice or guidance would be very welcome.

Here's some pictures of the device: https://i.stack.imgur.com/v27lY.jpg

Managed to get inside one of them, here's some pictures of that: https://i.stack.imgur.com/VKWHm.jpg

ISP Interface: https://i.stack.imgur.com/JZiy0.jpg

d0little
  • 133
  • 5
  • 1
    Welcome! Can I suggest you a) post some pictures of the back if there's any label of any kind? b) open it up and post some pictures of that. Without more information, there's nothing anyone can do but guess. – jonathanjo Oct 13 '22 at 13:44
  • You probably got them cheap because they're designed for a specific system and nobody else wanted to try reverse-engineering them. Which is what you now have to do. They are probably meant to be connected to some controller that would send commands to them. If you are very lucky, you can type something like "help" or "?" and get a response. But you probably have to set the right baud rate. You could also try to find the software on the Internet if you know the sign's model number (it's not Prolific). – user253751 Oct 13 '22 at 13:57
  • @jonathanjo I've updated my question with some pictures of the back and both sides of the board if that would help at all – d0little Oct 13 '22 at 14:02
  • @user253751 I thought that might be the case, just wanted to check in case there was a way to reverse engineer these things before I get rid of them – d0little Oct 13 '22 at 14:03
  • A photo of the board can be seen from this [DuckDuckGo Image Search](https://duckduckgo.com/?q=MHX+LED+mini+USB+16x64+array+sign&t=opera&iar=images&iax=images&ia=images). That was Alibaba but is since discontinued. Software must be out there somewhere. – rdtsc Oct 13 '22 at 14:17
  • if you are into electronics yourself, there's a good chance you can always keep the LED matrix itself, rip out the microcontroller and rewire it with your own one that you know how to use. Probably wouldn't have to rewire all the individual LEDs. – user253751 Oct 13 '22 at 14:19
  • For that matter, reverse the circuitry and reprogram the micro... but that's a rather involved project for most. – rdtsc Oct 13 '22 at 14:22
  • @rdtsc that link doesn't show any results for me – d0little Oct 13 '22 at 14:28
  • @user253751 the microcontroller on the board is an atmega32l-8au so the easiest plan of attack would be to rip that out and replace it with my own microcontroller? – d0little Oct 13 '22 at 14:29
  • It's pretty clear that the manufacturer has some kind of CD. You could write to one of the suppliers on alibaba and see if you can download a copy. Alternatively: it's extremely likely the CPU has a boot programming sequence and there's a way to program it. Are you certain it transmits nothing when first powered up? – jonathanjo Oct 13 '22 at 14:34
  • @jonathanjo in device manager windows has port settings as 9600 baud, 8 data bits, 1 stop bit - are these just default settings or auto-detected as these are the settings I've been using in my serial monitor - also the usb serial is also power so if it sends something on power on i might miss it as need to reconnect to device with serial monitor when it turns on after windows detects it – d0little Oct 13 '22 at 14:42
  • @d0little That's possible but actually, since the atmega32 is well-supported, you could also try to reprogram the one that's already there! Or maybe even read out the program and then figure out the commands (most manufacturers lock the program to prevent this, but some don't) – user253751 Oct 13 '22 at 14:51
  • Unless you find some manual the protocol may be unknown. It is possible the protocol is not documented and you are supposed to use some program to upload texts or graphics, and if you don't have the program you can't reverse engineer the protocol what to send and what baud rate. – Justme Oct 13 '22 at 14:56
  • "9600 baud, 8 data bits, 1 stop bit - are these just default settings or auto-detected " .. extremly unlikely to be autodetected. Best to just try all the different baud rates. – jonathanjo Oct 14 '22 at 08:46
  • "I bought it cheap but it doesn't work, has no documentation and now I need to spend a week reverse-engineering it" Not my idea of cheap. You you spent that week instead working at some minimum-wage job, you could probably buy numerous actually working and documented displays for the salary. – Lundin Oct 14 '22 at 13:08
  • Yeah silly me, why bother trying to learn something new and pick up a new hobby – d0little Oct 14 '22 at 13:39

1 Answers1

6

You did try just sending ASCII at lots of different baud rates, didn't you?

If you don't find existing software and want to drive it yourself ...

The board has

  • ATMega32 CPU -- flash programmable, extremely similar to ATMega328 in an Arduino
  • 16 x 64 LEDs
  • 10 x 74HC595 8-bit serial-in, parallel-out shift register-latches
  • 8 x FDS4952 twin p-type mosfets
  • 1 x can't-see-it Profilic USB-UART

From which it's almost certain:

  • 8 shift registers form 64 column drivers, ie one switch per column to connect a given LED to ground to light it.
  • 2 shift registers (U11, U12) feed the 16 p-mosfet (IC1-8) to drive the rows as "high side driver": ie, switches to +ve supply.

Board with pinouts: enter image description here

Inferred diagram:

enter image description here

The usual way is to enable one row at a time and the appropriate LEDs on that row.

If you find the front of the two chains of shift registers, unsolder them (from the CPU) and insert your own signals (at column and row in put in diagram), you could program any MCU to drive them. The obvious one would be an Arduino. But any method of driving the shift registers would work.

From the orientation of the chips, the most obvious chain would be:

  • Rows: U12.QH' feeds U11.SER
  • Columns: U1.QH' feeds U3.SER ... U7 U11 U14 U15 U16.

Update: near pin 1 of the CPU is an unpopulated 6-pin header J3. This is almost certainly an ICSP connector (normally on 2x3 header) whose pinout should be easy to work out as it's right next to the signals (MISO, MOSI, SCK, RESET). If so, it looks extremely likely you'd be able to reprogram the CPU on the board, to make this more of a software project than a hardware one. ICSP details at Section 3.1.3 of Atmel ISP User Guide. Most people don't use that hardware, they use another Arduino as the programmer.

From ISP Guide and CPU datasheets: enter image description here

This is my guess of how those signals appear on J3, but obviously needs verifying. GND and VCC are the easiest to find, of course. enter image description here

jonathanjo
  • 12,049
  • 3
  • 27
  • 60
  • 1
    Thanks so much for the image that's a great help, I will try my best to follow your instruction, if not I may have to abandon these modules and go the MAX7219 route with led matrix, thanks again – d0little Oct 13 '22 at 15:39
  • 1
    +1 for the epic pinout overlay! Love it – akwky Oct 14 '22 at 08:16
  • 1
    @akwky It's a method I adopted for all reversing because it's quick: Pinouts screengrab from datasheets, paste into GIMP, threshold (no greys), image invert (white on black), colour->alpha (white on transparent), colourify (cyan on transparent). Paste into inkscape, pull till pins line up. Add a layer in partial transparency to darken original image. – jonathanjo Oct 14 '22 at 08:43
  • @jonathanjo the ICSP reprogramming sounds very promising, I've tried to take a close up of the traces and attached a picture but my camera doesn't do close ups very well. I've followed the traces though and judging from the links you provided 6-pin square pad is MISO and should go to pin 2 but the trace from square doesn't run to pin 2, would a multimeter continuity test or something similar work? – d0little Oct 14 '22 at 11:35
  • 1
    On J3 it's hard to guess what happens under C14, but if it was me I'd put them in the straight order off the CPU, ie, J3.pin1 is GND, 2=VCC, rest as labelled in my image. I use LED + 3V battery + resistor to probe these kinds of things: keeps current low, also voltage. Some meters have 9V batteries, not good for CPUs if you get something wrong. – jonathanjo Oct 14 '22 at 12:26
  • 2
    J3-pin2 looks like it has thermal reliefs to the GND plane, while pin1 appears to connect to C14 and then follow on to VCC on the micro. – brhans Oct 14 '22 at 12:38
  • 1
    @brhans ... yes I think you're right. J3.pin1 looks like it's VCC, pin2 looks like GND. – jonathanjo Oct 14 '22 at 13:08