All Projects → fyhertz → epilepsia

fyhertz / epilepsia

Licence: Apache-2.0 license
Beaglebone cape for driving up to 32x64 Neopixels (WS2812 LEDs).

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to epilepsia

raspi ws2812
A kernel module able to run as many WS2812 strips as there are GPIO pins on Raspberry Pi Zero
Stars: ✭ 35 (+133.33%)
Mutual labels:  led-controller, led-strips, led-matrix-displays
ledcat
Control lots of LED's over lots of protocols
Stars: ✭ 89 (+493.33%)
Mutual labels:  led-controller, led-display, led-strips
OctoWifi-LEDs-Controller
LEDs driver for ESP32 ( support ART-NET, RGB888, RGB565, Z888 )
Stars: ✭ 16 (+6.67%)
Mutual labels:  led-controller, led-strips
simpPRU
Intuitive language for PRU which compiles down to PRU C
Stars: ✭ 54 (+260%)
Mutual labels:  beaglebone, beagleboard
ShiftRegisterLEDMatrixLib
A library for Arduino that can control LED matrices which use shift registers to manage rows and columns.
Stars: ✭ 32 (+113.33%)
Mutual labels:  led-display, led-matrix-displays
lumazoid
Firmware for the Lumazoid realtime music visualizer board
Stars: ✭ 85 (+466.67%)
Mutual labels:  led-controller, led-strips
RemoteLight
A Java based LED Control Software for WS2811 and WS2812 LED strips
Stars: ✭ 59 (+293.33%)
Mutual labels:  neopixel, led-strips
community
A publishing platform for apps developed by the Tidbyt community 🚀
Stars: ✭ 53 (+253.33%)
Mutual labels:  led-display, led-matrix-displays
ESP8266 ArtNet-LED-DMX-Node
ESP8266 based WiFi ArtNet-Node for WS2812B-LED Pixel
Stars: ✭ 67 (+346.67%)
Mutual labels:  led-strips, led-matrix-displays
docker-squid
Squid in docker container based on Alpine Linux
Stars: ✭ 44 (+193.33%)
Mutual labels:  armhf
beagleg
G-code interpreter and stepmotor controller for crazy fast coordinated moves of up to 8 steppers. Uses the Programmable Realtime Unit (PRU) of the Beaglebone.
Stars: ✭ 107 (+613.33%)
Mutual labels:  beaglebone
epoll
A low-level Node.js binding for the Linux epoll API
Stars: ✭ 79 (+426.67%)
Mutual labels:  beaglebone
docker-dns-ad-blocker
A lightweight dnsmasq DNS server to block traffic to known ad servers with optional DNSCrypt support. Supports x86_64 and Raspberry Pi (armhf).
Stars: ✭ 78 (+420%)
Mutual labels:  armhf
tiller-multiarch
Helm Tiller images for amd64, arm64, and armhf. ⚓️🎉
Stars: ✭ 80 (+433.33%)
Mutual labels:  armhf
openrgb-python
A python client for the OpenRGB SDK
Stars: ✭ 69 (+360%)
Mutual labels:  led-controller
Arilux AL-LC0X
Alternative firmware for Arilux AL-LC0X LED controllers, based on the MQTT protocol and a TLS connection
Stars: ✭ 195 (+1200%)
Mutual labels:  led-controller
multiarch-letsencrypt-nginx-proxy
nginx-proxy, docker-gen and letsencrypt-nginx-proxy-companion on arm archs
Stars: ✭ 23 (+53.33%)
Mutual labels:  armhf
Wordclock
Diy Wordclock with an esp32 and ws2812b Leds
Stars: ✭ 19 (+26.67%)
Mutual labels:  neopixel
LaColorduino
I build my own clone of "LaMetric"-smartwatch but with some Colorduino for Twitch, YouTube, Twitter, CSGO, etc.. (Working)
Stars: ✭ 56 (+273.33%)
Mutual labels:  led-display
esp rgbww firmware
Firmware for esp_rgbww_controller (https://github.com/patrickjahns/esp_rgbww_controller) based on Sming framework
Stars: ✭ 21 (+40%)
Mutual labels:  led-controller

Build Status Codacy Badge License

Introduction

Epilepsia is a user friendly cape for the beaglebone capable of driving up to 32 strips of neopixels (actually, WS2812B LEDs) in parallel.

Features

  • Can drive 64x32 WS2812B LEDs at around 450-500 fps
  • Support the Open Pixel Control protocol and websockets for feeding data.
  • Can be configured for 8, 16 or 32 outputs.
  • Gamma correction and brightness settings

Architecture

The led_driver class handles the communication with the PRUs. Each PRU can drive 16 WS2812 led strips in parallel using two 74HC4094 serial to parallel shift register. The bits of the frame buffer are reordered by the beablebone's CPU before being copied to the PRUs shared memory. Each PRU just has to sequentially read that memory to fill its shift registers. The single wire protocol of the led strips is implemented by switching the parallel outputs of the 74HC4094 IC.

The following schematic shows the wiring the 74HC4094s and the PRUs:

Schematic

Build instructions

You can compile epilepsia and build a debian package with the provided Dockerfile:

git clone https://github.com/fyhertz/epilepsia.git
cd epilepsia
docker build -t fyhertz/epilepsia -f docker/Dockerfile docker
docker run -ti -v `pwd -P`:/data fyhertz/epilepsia

The -v option is needed to mount the project files in the container. On Windows/Mac OS you might want to replace the pwd command with the path to the your clone of the project.

Cross compiling epilepsia from a linux host:

  1. You will need the clpru C/C++03 compiler from TI to build the PRU firmware:
wget http://software-dl.ti.com/codegen/esd/cgt_public_sw/PRU/2.2.1/ti_cgt_pru_2.2.1_linux_installer_x86.bin -O clpru.bin
chmod +x clpru.bin
./clpru.bin --mode unattended --prefix /opt/ti
  1. A C++14 cross compiler is needed for building the ARM linux binary. On debian/ubuntu run:
sudo apt-get update && apt-get install -y make g++-arm-linux-gnueabihf
  1. The project simply uses some plain Makefiles
make

Installation instructions

Supported hardware: beaglebone black, beaglebone black wireless, beaglebone green, beaglebone green wireless

For simplicity sake, this guide assumes that you are using, or are willing to use, a recent firmware image for your device. As of May 2018, that means:

  • kernel version > 4.9. Before that, the pru_rproc driver behaves differently
  • U-boot overlays which have recently replaced Kernel overlays
  • cape-universal readily available. It's a set of device tree overlays that allows you to easily select pin modes with the pin-config command line tool.

If for some reason you don't want to reflash your beaglebone, epilepsia should still work (maybe with some more work) as long as you have the pru_rproc driver (and not the uio_pruss driver).

  1. So, if you don't want any headache, get the latest official debian build here (with debian 9 as of May 2018) and flash your device with it.
  2. On the bb green wireless you need to disable the wireless virtual overlay. Epilepsia requires P8_11 and P9_31. To do that edit /boot/uEnv.txt and uncomment "disable_uboot_overlay_wireless=1". On the bb black, disable hdmi video: uncomment "disable_uboot_overlay_video=1".
  3. TODO

Optional instructions

To avoid unnecessary write access to bb emmc and prolongate its lifespan you can do the following:

  1. Use a circular buffer for syslogs: apt-get install busybox-syslogd; dpkg --purge rsyslog
  2. Use tmpfs for logs and tmp files. Edit /etc/fstab and append:
tmpfs           /tmp            tmpfs   nosuid,nodev         0       0
tmpfs           /var/log        tmpfs   nosuid,nodev         0       0
tmpfs           /var/tmp        tmpfs   nosuid,nodev         0       0
  1. At this point you can remove logrotate apt remove --purge logrotate

TODO

  • Software estimation of power consumption
  • Beaglepocket support
  • Frame interpolation
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].