Hallo ich möchte einmal mein Projekt vorstellen das Low Cost Pixel Control Protocoll
Es ist der versuch eine Kostengünstige Lösung zu erstellen um Pixel zu steuern. Und umfasst sowohl Software Projekte als auch Hardwareprojekte.
Ziel ist es ein Modular erweiterbares System zu bauen welches eine "Framerate" von 30 FPS erreicht es soll. Es soll also möglich sein 30 mal pro Sekunde jede LED die Farbe ändern zu lassen.
Meine ersten Testlauf habe ich mit Atmega8 und USB zu Uart Wandlern gemacht und ein LED Streifenband mit ws2012b Kontrollern
Erst einmal geplante Software ist:
LCPCP ControllerSW <- (Erste Software Version für den Atmega8 und den ws2812b funktioniert)
LCPCP HOST Stellt an den USB Port angeschlossene LCPCP Geräte im Netzwerk bereit (Funktionierende SW Version vorhanden)
LCPCP Linux Host Stellt an den USB Port angeschlossene LCPCP Geräte im Netzwerk bereit (Funktionierende SW Version vorhanden)
LCPCP Studio zum erstellen der Lichtshow (Todo)
LCPCP Player zum abspielen eine Lichtshow Datei (Todo)
Ein Testcontroller für 5x 300 WS2812b LEDs
[Blockierte Grafik: https://scontent-frt3-1.xx.fbcdn.net/t31.0-8/13575878_1167711083279406_7045706231007383368_o.jpg]
Gesteuert von einen Raspberry Pi
[Blockierte Grafik: https://scontent-frt3-1.xx.fbcdn.net/t31.0-8/13497603_1167711086612739_2560147679088795500_o.jpg]
LCPCP Protokolle
LCPCP: Low Cost Pixel Control Protocol
Alle Geräte müssen 30FPS erlauben. Es muss möglich sein 30-mal pro Sekunde jede LED zu verändern
LCPCP_UART
Standard Baudrate 500000
1. Request [1 Byte Requesttype]
0x01 Request-Device-Type
0x02 Request-Count-Channel
0x03 Request-Pixel-Per-Channel
0x04 SendDataToPixel|32BitIntDataCount|32BitIntChannel|Data|
2. Antwort [1 Byte Antworttype]
0x01 Antwort|32BitInt-DataCount|Data
0X02 OK
0X03 Error|32BitInt-DataCount|Data
Der Device-Type ist ein Char Array darf kein Leerzeichen beinhalten
Count-Channel ist ein int32
Pixel-Per-Channel ist ein int32
Error und Antwort ist ein Char Array
Beispiel.
Request: 0x01
Antwort: 0x01|0x17(23) 0x00 0x00 0x00|LCPCP_CONVERTER_WS2812B
Request: 0x02
Antwort: 0x01|0x04 0x00 0x00 0x00|0x01 0x00 0x00 0x00
Request 0x04|0x03 0x00 0x00 0x00|0x01 0x00 0x00 0x00| 0xff 0xff 0xff <- Erste LED Weiß| Rot Grün Blau
Antwort: 0x02
LCPCP_NET
Standard Port UDP 12316
1. Request [1-byte Requesttype]
0x01 Request-Channels
0x02 Reload-Channels
0x03 SendDataToPixel|32BitIntChannel|32BitIntDataCount|Data|
2. Antwort [1 byte Antworttype]
0x01 Antwort|32BitInt-DataCount|Data
0X02 OK
0X03 Error|32BitInt-DataCount|Data
0x04 Channellist|32BitInt-DataCount|Data
Alle Antworten sind Chararrays
Beispiel.
Request: 0x01
Antwort: 0x04|0x1D(29)|1 300 LCPCP_CONVERTER_WS2812B <Channel Nummer anz. Pixel Type
Antwort: 0x04|0x1D(29)|1 300 LCPCP_CONVERTER_WS2812B 2 300 LCPCP_CONVERTER_WS2812B
Request: 0x02 //Der Host sucht nach neu angeschlossene Geräte und schickt dann die gesamte Liste
Antwort: 0x01|0x1D(29)|1 300 LCPCP_CONVERTER_WS2812B …
Request: 0x03 SendDataToPixel|32BitIntChannel|32BitIntDataCount|Data|
Antwort: 0x02
Da ich noch recht neu auf den gebiet bin würde ich mich über ein Paar Tipps freuen falls ich eventuell was vergessen habe zu beachten