{"id":21878884,"url":"https://github.com/moduscreateorg/network-rgb-matrix-display","last_synced_at":"2025-09-07T07:04:37.923Z","repository":{"id":55100238,"uuid":"201282043","full_name":"ModusCreateOrg/network-rgb-matrix-display","owner":"ModusCreateOrg","description":"A library for helping drive large arrays of RGB Matrices with Raspberry Pis","archived":false,"fork":false,"pushed_at":"2021-03-08T17:00:48.000Z","size":15325,"stargazers_count":12,"open_issues_count":2,"forks_count":2,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-22T04:45:57.676Z","etag":null,"topics":["boost-asio","cmake","cplusplus","cpp","example-project","iot","iot-application","maker","multi-threading","raspberry-pi","rgb-led","rgb-matrix"],"latest_commit_sha":null,"homepage":null,"language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ModusCreateOrg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-08T15:05:20.000Z","updated_at":"2023-04-02T18:11:12.000Z","dependencies_parsed_at":"2022-08-14T12:00:31.453Z","dependency_job_id":null,"html_url":"https://github.com/ModusCreateOrg/network-rgb-matrix-display","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"ModusCreateOrg/template","purl":"pkg:github/ModusCreateOrg/network-rgb-matrix-display","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModusCreateOrg%2Fnetwork-rgb-matrix-display","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModusCreateOrg%2Fnetwork-rgb-matrix-display/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModusCreateOrg%2Fnetwork-rgb-matrix-display/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModusCreateOrg%2Fnetwork-rgb-matrix-display/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ModusCreateOrg","download_url":"https://codeload.github.com/ModusCreateOrg/network-rgb-matrix-display/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModusCreateOrg%2Fnetwork-rgb-matrix-display/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274005320,"owners_count":25205935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boost-asio","cmake","cplusplus","cpp","example-project","iot","iot-application","maker","multi-threading","raspberry-pi","rgb-led","rgb-matrix"],"created_at":"2024-11-28T08:14:01.498Z","updated_at":"2025-09-07T07:04:37.886Z","avatar_url":"https://github.com/ModusCreateOrg.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Network Matrix Display \n\nNetwork Matrix Display is a set of libraries that allows you create a scalable network of matrix displays using Raspberry Pi Single Board Computers.  It does this by using TCIP/IP as a transport method for the display data and is broken into two discrete sections; Client and Server. \n\nPlease refer to our [how it works](./md/How_it_works.md) document for a detailed description of this projects functionality.\n\nThis project is choc-full of dependencies and is not just for the faint of heart.  It requires you to put in effort to set things up.\n\nIt's worth noting that the scale of [our project](./md/example_project.md) was not the cheapest solution for the desired result.  The purpose of this project was to demonstrate what can be done with a hand full of available parts and open source libraries.  \nFor the cheapest solution, we recommend display controllers like [these](https://www.aliexpress.com/item/32922416742.html).\n\n## Related documents: \n- [How it works](./md/How_it_works.md)\n- [Client Setup Guide](./md/Client_setup_guide.md)\n- [Server Setup Guide](./md/Server_setup_guide.md)\n- [Display Setup Guide](./md/Display_setup_guide.md)\n\n## General requirements \n- Good knowledge in C++\n- Basic understanding of how RGB Matrices work\n- Parts for your project\n\n## Client Requirements:\n- [LibBoost 1.7.0](https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz)\n- [CMake 3.14+](https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz)\n- [SDL2 (optional)](https://www.libsdl.org/download-2.0.php)\n\n## Server Requirements\n- [LibBoost 1.7.0](https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz)\n- [CMake 3.14+](https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz)\n- [rpi-rgb-led-matrix library](https://github.com/hzeller/rpi-rgb-led-matrix)\n- [DietPi or similar light-weight linux distribution](https://dietpi.com/)\n- [Raspberry Pi 2 or greater SBC](https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/)\n- [Electro Dragon RGB Panel driver board](https://www.electrodragon.com/product/rgb-matrix-panel-drive-board-raspberry-pi/) (*recommended*)\n- [1+ RGB Matrices](https://www.adafruit.com/product/420)\n\n## Additional hardware\n- For Full Motion video, GigaBit Network switch\n- For low-framerate animations or periodic switches to static images, WIFI is fine\n- Frame for your matrix\n- Power supplies for your SBCs\n- Power supply for your RGB Matrix\n\n## Installation\nInstall DietPi on a Raspberry Pi 2 or greater. Make sure it has Internet connectivity. Then run this script to provision the system and install the Network Matrix Display project:\n\n    curl https://raw.githubusercontent.com/ModusCreateOrg/network-rgb-matrix-display/master/bin/install.sh | bash\n\nIf you want to perform these steps by hand, be sure to clone the `network-rgb-matrix-display` with the `--recursive --submodules` option.\n\nIf you forget to clone it this way, you can fix up your checked out copy by issuing this command:\n\n   git submodule update --init --recursive \n\n## Client example.\nThe following example will generate the proper network display client configuration and kick off \n```\n  NetworkDisplayConfig displayConfig;\n\n  displayConfig.frameRate = 60; // -1 to disable\n\n  // This is your source display dimensions\n  displayConfig.inputScreenWidth = 320;\n  displayConfig.inputScreenHeight = 240;\n\n  // Dimensions for your panels\n  displayConfig.singlePanelWidth = 64;\n  displayConfig.singlePanelHeight = 64;\n\n  // How you will lay out your segments\n  displayConfig.segmentPanelsTall = 3;\n  displayConfig.segmentPanelsWide = 1;\n\n  // How you will lay out your panels per segment\n  displayConfig.totalPanelsWide = 5;\n  displayConfig.totalPanelsTall = 3;\n\n  displayConfig.totalSegments = 5;\n\n  displayConfig.destinationPort = \"9890\";\n  \n  // In this scheme, the last IP address octet rolls up for multiple segments. \n  // Segment 1 is 201, segment 2 is 202, etc..\n  displayConfig.destinationIP = \"10.0.1.20%i\";\n  displayConfig.destinationIpStartDigit = 1;\n\n  displayConfig.outputScreenWidth = displayConfig.singlePanelWidth * displayConfig.totalPanelsWide;\n  displayConfig.outputScreenHeight = displayConfig.singlePanelHeight * displayConfig.totalPanelsTall;\n\n  NetworkDisplay *networkDisplay = new NetworkDisplay(displayConfig);\n\n  std::thread(interrupterThread).detach();\n\n  uint16_t color = 0;\n  while (! interrupt_received) {\n    // Your code could easily populate the input buffer (array of uint16_t) with the pixel data\n    memset(networkDisplay-\u003eGetInputBuffer(), color += 1, networkDisplay-\u003eGetInputBufferSize());\n    \n    // Flush the display buffer to the network\n    networkDisplay-\u003eUpdate();\n  }\n```\n\n## License\nThis library is licensed under [MIT](./LICENSE).\n\n# Contributing\nInterested in contributing? Please see our [contribution](.github/CONTRIBUTING.md) and [code of conduct](.github/CODE_OFCONDUCT.md) guidelines. \n\n\n[![Modus Create](./md/img/modus.logo.svg)](https://moduscreate.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoduscreateorg%2Fnetwork-rgb-matrix-display","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoduscreateorg%2Fnetwork-rgb-matrix-display","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoduscreateorg%2Fnetwork-rgb-matrix-display/lists"}