Mirolo Networked LED Matrix Display for Digital Signage

by simonthechipmunk in Circuits > Arduino

2325 Views, 10 Favorites, 0 Comments

Mirolo Networked LED Matrix Display for Digital Signage

IMG_0771.JPG

Digital signage can be useful at events to inform visitors about upcoming panels, changes in the schedule or dynamically provide information. Using LED Matrix displays for that makes the messages readable even from far away and is an eye catching feature.

Features include:

  • 2 Lines of dot matrix modules, 1 RGB Ring indicator
  • http web interface for simple fallback management
  • REST/JSON API for advanced remote management
  • automatic brightness control
  • IR remote control
  • I²C interface connector for external modules (e.g. DS1307 RTC)
  • wide range power input: 10-20VAC/10-30VDC
  • message board and event schedule modules for network independent manual operation

The following instructions will go over the process of building one of these displays with both the electronics and supporting frame in mind. The build process requires some specialized tools and advanced soldering skills. Therefore I'd describe the difficulty level as medium-hard and not suited for beginners.

The full documentation on the software and hardware can be found at gitlab/mirolo-2M05081R16

What You Need

You will need a variety of tools to complete this project. This is the basic set. Any tools like CNC machines or belt sanders and drill stands will make your life a lot easier.

  • Soldering Station including tips capable of soldering SMD components
  • De soldering equipment
  • Power Drill
  • Hot Glue Gun
  • Reciprocating Saw and metal saw blades
  • Pliers
  • Screwdrivers
  • Wrenches and Sockets
  • Multi Meter
  • Tap and Die
  • Countersink Drills
  • Drillset
  • Vice
  • Handsaw
  • Two Component Glue
  • Sandpaper
  • Metal File
  • Double Sided Tape

Of course you also need building material. You can find a full list of all the parts needed here: Material List

Important: When buying components like Electrolytic Capacitors make sure their height does not exceed 12mm. Otherwise they will be higher than the matrix display and the board won't fit properly.

Preparing Parts

IMG_0702.jpg
IMG_0703.JPG
IMG_0704.JPG
IMG_0705.JPG
aluminium_supports_-_mirolo_2m05081r16.png
front_glass_-_mirolo_2m05081r16.png

First you need to make the required parts for the frame holding everything together. If you want to design your own frame you may skip these steps entirely. I will keep it very short and only link to the files describing the part's dimensions. Actually making them involves drilling sawing and patience but you should know how to handle a power drill, saw and file to do this.

Part's Dimensions

Electronics Assembly

IMG_0707.jpg
IMG_0708.jpg
IMG_0709.jpg
mirolo_2m05081r16.png

Let's start with the blinky stuff. Have all the parts shown above ready. The full Material list is linked in step 1.

Concerning the PCB I highly recommend having them made by a professional company. Some traces are quite thin and it took me several tries to even get a working prototype that wasn't completely botched and I still had electrical problems because of etching errors that were a nightmare to work out. The design works great but the board is a bit too complex for home etching. Unless you have semi professional etching equipment at hand it's really not worth the effort. Especially considering that you need to bend 48 jumper wires for each of these when using the singlesided design. This is the stuff that will give you nightmares. I got my own from JLC-PC and their quality is really nice. They saved me hours of work and lots of material.

I still have 5 of these lying around. If you are interested in making this project yourself send me a note and we'll work something out. Might be easier to ship them from Germany instead of ordering new ones from China.

Electronics Assembly - 8 Module Matrix

IMG_0711.JPG
IMG_0713.JPG
IMG_0712.JPG

We'll start off with the lower matrix bar. This one consists of 8 FC-16 modules. Solder them together to form a single line. You can use the included 90° pin connectors by bending them into a 180° shape using pliers. I recommend gripping them in a vice.

Connect all the modules and solder one of the 3 pole ribbon cables to the data input as well as the two stranded wires to the power input.

When soldering the matrix modules on top please DO NOT USE the provided female pin connectors. Otherwise the module will be too thick to fit in the frame. Keep the connectors though as you will need them for the other display line. Also make sure they are oriented correctly.

Solder the 1000µF Capacitor at the end (Data OUT) of the strip to GND and VCC as an additional buffer.

Electronics Assembly - WS2812 Ring

IMG_0715.JPG

Solder the other 3 pole ribbon cable to the ring (middle pin of the cable should be GND)

Electronics Assembly - DC/DC Converter

IMG_0714.JPG

Prepare the DC/DC Buck/Boost converter. Apply a decent voltage (12V) to the input and adjust the trimmer potentiometer so the output is exactly 5V. You should have a slight load connected to the output and tap a few times on the trimmer to make sure it is properly set and doesn't jump. When the output voltage is stable put a few drops of glue on the trimmer so it can't be changed accidentally.

Electronics Assembly - Mainboard SMD

IMG_0717.JPG
IMG_0719.JPG

Next is the mainboard. Solder all SMD components on first (don't forget the resistors on the front and the LEDs). In general it is recommended to solder the smallest components first as this will make soldering easier because you can lay the board flat. If you follow these instructions in the right order this shouldn't be a problem.

You do not need a hot air soldering station for this. It is only needed for de soldering components like the 44 pin microcontroller.

Electronics Assembly - Resistors

IMG_0720.JPG
IMG_0721.JPG
IMG_0722.JPG

Next are resistors and small capacitors as well as the LDR and IR receiver.

Electronics Assembly - Mainboard Power Supply

IMG_0723.JPG
IMG_0724.JPG

Add components like the LDR, fuse and rectifier as well as some bigger capacitors. You can solder the 4 channel level shifter module directly onto the board without the standoffs. Also add the female precision pin connectors you saved from the FC-16 modules here.

Use some solid core wire to solder the DC/DC module on top of the board. Put a short strip of electrical tape underneath the module to prevent the trimmer pins from piercing through the solder mask of the PCB and create a short to GND. When soldering the power jack and rectifier set the board upright on one edge (use a vice) so the solder flows around the contacts. If you have it lying flat the solder will drop through the big holes and make a huge mess.

Electronics Assembly - Modules and Buttons

IMG_0725.JPG
IMG_0726.JPG

Finishing touches. Add the push buttons as well as big components like the LAN module and box connectors.

Electronics Assembly - Mainboard LED Matrix

IMG_0727.JPG

finally clean up the board and remove any flux residue. Putting in the LED modules requires some patience as the connectors are a very tight fit. Don't forget to put in the jumper and fuse.

Electronics Assembly - Mainboard Bootloader

IMG_0729.JPG

It's time for testing. Connect the ICSP port to an AVR programmer (I use one of my Arduino UNO's) and burn the Optiboot bootloader included with the mightyCore hardware library.

You can find all the links to the software in the readme file.

IMPORTANT: Burning the bootloader for the first time will result in an error message due to some fuses not being set properly. Disconnect everything and then try to burn the bootloader again after reconnecting. It should work without problems now. If you still run into errors check all the connections on the mainboard again.

Do not move on until this step is completed.

Electronics Assembly - Mainboard Firmware

IMG_0730.JPG
IMG_0732.JPG
mirolo_2M05081R16_header_pinout.png

Now connect the serial interface and upload the sketch to the board. The serial connector's pinout is designed so it can directly be hooked up to a CP2102 USB module.

Set LOAD_EEPROM to 0 when uploading for the first time. Otherwise it will load random values from the EEPROM and possibly inhibit proper startup. Please note that this will result in the IP address being set to 192.168.178.100.

If the upload worked correctly the LED's on the back should light up.

Open the serial monitor (115200 baud) and issue a system:reboot command. This will save all values to the EEPROM and overwrite any random values. Upload the sketch again after that with LOAD_EEPROM set to 1.

You can then change the IP address using the serial monitor again. The board should be fully working now.

Electronics Assembly - Mainboard Test

IMG_0734.JPG
IMG_0735.JPG
screenshot_web.png

At this point you can already test the board. Connect a suitable power supply to it and you should be greeted by a message on the display line. You can also connect a LAN cable to your network and access the web page by typing the display's IP into your web browser. Make sure everything works properly before proceeding.

Frame Assembly

IMG_0702.jpg
IMG_0706.jpg

Have the components shown above at the ready.

Frame Assembly - Supports

IMG_0736.JPG
IMG_0737.JPG
IMG_0738.JPG

Apply double sided tape to the top and bottom support and glue them onto the acrylic glass. Make sure the side supports fit well between them and line up with the drilled holes.

Frame Assembly - Mounting Holes

IMG_0739.JPG
IMG_0740.JPG

Drill through the acrylic and secure everything with the flat head bolts and M6 nuts in the corners of the frame and make sure the tapped M6 mounting holes are in the bottom part of the display. Then drill the other mounting holes as described in the frame dimensions file. The M3 holes need to be counter sunk from the front. The big 12mm hole is for accessing the fuse from the front. You can keep the outer protective film on the glass and draw markings onto it.

Frame Assembly - Studs and LEDs

IMG_0741.JPG
IMG_0742.JPG
IMG_0743.JPG
IMG_0744.JPG

Glue the 4 plastic L-profiles into the corners of the frame (these are for mounting the displays on a wall) and screw in 3 screws with nuts and washers for mounting the PCB. You should also install the handle at this point (make sure it is slightly offset towards the front so the screws don't interfere with the PCB).

When gluing in the WS2812 ring make sure the LED's are properly aligned. Putting LED 0 at the top will make it easier although you can adjust this in the software later as it supports different starting positions and ring orientations.

Frame Assembly - Test Fitting

IMG_0745.JPG
IMG_0746.JPG
IMG_0747.JPG

Check if the PCB properly aligns with the mounting screws. If they don't fit perfectly try to carefully bend them. Then solder the WS2812 ring and the second display line to the mainboard and secure the wires with a few drops of hot glue.

Frame Assembly - Fitting the PCB

IMG_0748.JPG
IMG_0749.JPG
IMG_0750.JPG

Screw on nuts onto the bolts and add washers (no washer on the bottom screw) then place the PCB on top and adjust the nuts until the board is properly aligned. Use the plastic and metal washers and some nuts to finally secure the PCB in place.

Frame Assembly - Lower LED Matrix

IMG_0751.JPG
IMG_0752.JPG
IMG_0753.JPG
IMG_0754.JPG

Add the self adhesive foam seal onto the contacts of the display line to prevent short circuits against the frame and place the U-profile on top of it so it presses the display against the front glass. Secure it in place with two more M6 bolts against the side supports. Finally add a short piece of Velcro as a cable support using a small screw.

Final Step - the Good Stuff

IMG_0755.JPG
IMG_0757.JPG
IMG_0759.JPG

You know the feel of peeling off protective film from new devices? You may do so now and enjoy your newly assembled info display. Plug it in, connect it to your network and marvel at the blinkenlights.


If you have any questions, remarks or ideas for improvement feel free to contact me.