Difference between revisions of "Led Matrix"
From Fixme.ch
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category: | + | [[Category:Closed_Projects]] |
== Goal == | == Goal == | ||
Line 15: | Line 15: | ||
== Used componment == | == Used componment == | ||
* 1 mbed NXP LPC1768 [http://mbed.org/handbook/mbed-Microcontroller] | * 1 mbed NXP LPC1768 [http://mbed.org/handbook/mbed-Microcontroller] | ||
− | * 2 RGB Led Matix (64x32) for display | + | * 2 RGB Led Matix (64x32) for display [[Led_Matrix_32x64]] |
− | * 1 ALix 2d13 for getting Nagios status and sending to MBED | + | * 1 ALix 2d13 for getting Nagios status and sending to MBED [http://www.pcengines.ch/alix2d13.htm] |
Line 27: | Line 27: | ||
! scope=col | Description | ! scope=col | Description | ||
! scope=col | Where to find | ! scope=col | Where to find | ||
− | ! scope=col | Price | + | ! scope=col | Unit Price |
! scope=col | Link | ! scope=col | Link | ||
|- | |- | ||
Line 49: | Line 49: | ||
|- | |- | ||
− | | | + | |2 |
|CONN D-SUB PLUG 25POS GOLD | |CONN D-SUB PLUG 25POS GOLD | ||
|Digikey N°AMR25B-ND | |Digikey N°AMR25B-ND | ||
Line 55: | Line 55: | ||
|http://tinyurl.com/64e5wj7 | |http://tinyurl.com/64e5wj7 | ||
|- | |- | ||
− | | | + | |2 |
|D-SUB 25POS RECPT IDC GOLD | |D-SUB 25POS RECPT IDC GOLD | ||
|Digikey N°L17DBFRA25S-ND | |Digikey N°L17DBFRA25S-ND | ||
Line 66: | Line 66: | ||
|$26.65 * | |$26.65 * | ||
|http://tinyurl.com/42vvrxo | |http://tinyurl.com/42vvrxo | ||
+ | |- | ||
+ | |1 | ||
+ | |Led Matrix 16X32 RGB | ||
+ | |China | ||
+ | |$150.- | ||
+ | |[[Led_Matrix_32x64]] | ||
+ | |- | ||
+ | |TOTAL | ||
+ | | | ||
+ | | | ||
+ | |$230.- | ||
+ | | | ||
|- | |- | ||
|} | |} | ||
− | + | ∗ Can be disassembled from Summit Extreme 48 Switch | |
− | + | ||
− | + | ||
== Perl script on ALIX == | == Perl script on ALIX == | ||
Line 90: | Line 100: | ||
{ | { | ||
"action": "insert", | "action": "insert", | ||
− | "id": | + | "id":1, |
"text": "server1.domain.ch", | "text": "server1.domain.ch", | ||
"position_x": 10, | "position_x": 10, | ||
Line 96: | Line 106: | ||
"position_lenght": 78, | "position_lenght": 78, | ||
"scroll_speed": 255, | "scroll_speed": 255, | ||
+ | "scroll_index":0, | ||
"red": 3, | "red": 3, | ||
"green": 0, | "green": 0, | ||
"blue": 2 | "blue": 2 | ||
} | } | ||
+ | |||
</pre> | </pre> | ||
+ | Sample | ||
+ | <pre> | ||
+ | {"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} | ||
+ | </pre> | ||
− | {| class="wikitable" style="text-align: | + | |
+ | |||
+ | <pre> | ||
+ | To delete default text (as root): | ||
+ | echo '{"action": "delete","id":0}' > /dev/ttyACM0 | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | {| class="wikitable" style="text-align:left;" | ||
|+ | |+ | ||
|- | |- | ||
Line 116: | Line 153: | ||
|id | |id | ||
|integer | |integer | ||
− | |id of data to modify,delete | + | |id of data to insert,modify,delete |
|- | |- | ||
|text | |text | ||
Line 156: | Line 193: | ||
Special thank to FIXME members who helped me with programmation and electronic stuff. | Special thank to FIXME members who helped me with programmation and electronic stuff. | ||
Specialy to : | Specialy to : | ||
− | * Simon for | + | * Simon for hardware design and mbed code improvement. |
* Mathieu for discovering LED Matrix and explainition of how it work. | * Mathieu for discovering LED Matrix and explainition of how it work. | ||
* Jean-Baptist,Raphael,Marc for there help with my newbies programmation questions. | * Jean-Baptist,Raphael,Marc for there help with my newbies programmation questions. | ||
− | * Florian for his | + | * Florian for his ideas for leds PWM |
== Project Owner == | == Project Owner == | ||
*Fred | *Fred | ||
− | == | + | == Todo List == |
+ | * Make the perl script | ||
+ | * Make the box for LED matrix | ||
+ | * Make a PCB to connect Mbed | ||
+ | * Finish the Mbed code | ||
== Issues == | == Issues == | ||
+ | * The mbed code need to be optimized for memory issues | ||
== Pictures == | == Pictures == |
Latest revision as of 14:57, 14 November 2019
Contents
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
- Nagios server get servers status and store data into MySQL Database with XXXX plugin
- Perl script on Alix (PC Engine) is getting data from MySQL and transmit data by JSON to mbed (by USB).
- mbed get json's data from Alix and display to Led Matrix
- 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.- |
∗ 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