Led Matrix

From Fixme.ch
Jump to: navigation, search


Goal

The goal of this project is to display Nagios Server's status on RGB Led Matrix.

I have 4 Led Matrix, the idea is to create one box per matrix with 230V connector and Data IN/OUT So we can decide if we want to use 1-4 Matrix

Data flow

  1. Nagios server get servers status and store data into MySQL Database with XXXX plugin
  2. Perl script on Alix (PC Engine) is getting data from MySQL and transmit data by JSON to mbed (by USB).
  3. mbed get json's data from Alix and display to Led Matrix
  4. Led matrix display Servers status :-)

Used componment

  • 1 mbed NXP LPC1768 [1]
  • 2 RGB Led Matix (64x32) for display Led_Matrix_32x64
  • 1 ALix 2d13 for getting Nagios status and sending to MBED [2]


Hardware pieces listing (per matrix box)

Number Description Where to find Unit Price Link
1 5vdc 4A PSU Ebay $10.99 http://tinyurl.com/3w465kh
2 IDC Socket 16POS Digikey N°ASC16H-ND $1.93 http://tinyurl.com/3qxmgrp
1 CHASSIS ALUM 5 X 10 X 3 Digikey N°377-1013-ND $17.60 http://tinyurl.com/3bho3n6
2 CONN D-SUB PLUG 25POS GOLD Digikey N°AMR25B-ND $8.53 http://tinyurl.com/64e5wj7
2 D-SUB 25POS RECPT IDC GOLD Digikey N°L17DBFRA25S-ND $2.31 http://tinyurl.com/6l54f7t
1 EMI FILTER 115/250VAC 4/6A Digikey N°603-1132-ND $26.65 * http://tinyurl.com/42vvrxo
1 Led Matrix 16X32 RGB China $150.- Led_Matrix_32x64
TOTAL $230.-

&#x2217 Can be disassembled from Summit Extreme 48 Switch

Perl script on ALIX

This perl script is getting data form MySQL to send to mbed. It run every minutes by cron.

Requiert Perl modules

  • blah
  • blah
  • blah

Source code

The source code is accessible from there


JSON data example

{
  "action": "insert",
  "id":1,
  "text": "server1.domain.ch",
  "position_x": 10,
  "position_y": 5,
  "position_lenght": 78,
  "scroll_speed": 255,
  "scroll_index":0,
  "red": 3,
  "green": 0,
  "blue": 2
}

Sample

 {"action": "insert","id":1,"text": "server1.domain.ch","position_x": 0,"position_y": 0,"position_lenght": 78,"scroll_speed": 250,"scroll_index":0,"red": 3,"green": 0,"blue": 2}
 {"action": "insert","id":2,"text": "WARNING","position_x": 86,"position_y": 0,"position_lenght": 42,"scroll_speed": 0,"scroll_index":0,"red": 3,"green": 0,"blue": 1}
 {"action": "insert","id":3,"text": "server2.domain.ch","position_x": 10,"position_y": 8,"position_lenght": 78,"scroll_speed": 125,"scroll_index":0,"red": 3,"green": 2,"blue": 0}
 {"action": "insert","id":4,"text": "OK","position_x": 116,"position_y": 8,"position_lenght":12 ,"scroll_speed": 0,"scroll_index":0,"red": 0,"green": 3,"blue": 0}
 {"action": "insert","id":5,"text": "server3.domain.ch","position_x": 1,"position_y": 16,"position_lenght": 78,"scroll_speed": 50,"scroll_index":0,"red": 3,"green": 0,"blue": 0}
 {"action": "insert","id":6,"text": "UNKNOWN","position_x": 86,"position_y": 16,"position_lenght": 42,"scroll_speed": 0,"scroll_index":0,"red": 3,"green": 3,"blue": 0}
 {"action": "insert","id":7,"text": "server4.domain.ch","position_x":1,"position_y": 24,"position_lenght": 78,"scroll_speed": 5,"scroll_index":0,"red": 0,"green": 0,"blue": 3}
 {"action": "insert","id":8,"text": "WARNING","position_x": 86,"position_y": 24,"position_lenght": 46,"scroll_speed": 0,"scroll_index":0,"red": 1,"green": 1,"blue": 1}


To delete default text (as root):
echo '{"action": "delete","id":0}' > /dev/ttyACM0
To insert text (as root)
echo '{"action": "insert","id":1,"text": "server1.domain.ch","position_x": 1,"position_y": 1,"position_lenght": 127,"scroll_speed": 20,"scroll_index":0,"red": 3,"green": 0,"blue": 1}' > /dev/ttyACM0


Field Value Description
action string: insert,delete,modify used to insert,delete,modify data vector on mbed
id integer id of data to insert,modify,delete
text string text to display
position_x integer X position of text area
position_y integer Y position of text area
position_lenght integer lenght of text area
scroll_speed integer 0-255 scrolling speed
red integer 0-4 RGB value
green integer 0-4 RGB value
blue integer 0-4 RGB value

Special Thanks

Special thank to FIXME members who helped me with programmation and electronic stuff. Specialy to :

  • Simon for hardware design and mbed code improvement.
  • Mathieu for discovering LED Matrix and explainition of how it work.
  • Jean-Baptist,Raphael,Marc for there help with my newbies programmation questions.
  • Florian for his ideas for leds PWM

Project Owner

  • Fred

Todo List

  • Make the perl script
  • Make the box for LED matrix
  • Make a PCB to connect Mbed
  • Finish the Mbed code


Issues

  • The mbed code need to be optimized for memory issues


Pictures