Home

Awesome

TallyCircuitPy

A network controlled tally light for cameras, intended for control by TallyOBS but extensible enough to use for whatever purposes you like.

Installing

When installing for the first time, extract the latest tally_circuitpy.zip into a directory, then copy the contents of that extracted archive into the CIRCUITPY drive that appears when you plug in your Macropad. Ensure that the contents of the lib/ subdirectory are also copied - these are the precompiled Adafruit libraries that power the Macropad.

tally_circuitpy requires CircuitPython 7.0, which can be downloaded at https://circuitpython.org/downloads and can be flashed according to your board's instructions. Many ESP32-S2 boards follow similar ESPTool instructions as listed on Adafruit's Metro ESP32-S2 learn page. If you are flashing with the ESPTool, make sure to flash with the .bin file (not the .uf2 file).

Configuration

Once the files have been copied over, update the secrets.py file in the CIRCUITPY drive to contain your WiFi SSID and PSK. If the activity LED blinks rapidly, that indicates your tally light cannot connect to WiFi. Double-check that you have a valid SSID and PSK for a 2.4GHz WiFi network specified in secrets.py.

Configuration settings are stored in the settings.py file, including the maximum LED brightness allowed. Some devices cannot run at over 50% brightness without heat sinks, and so a max value can be enforced so devices will not overheat.

Required Libraries

All required libraries are supplied through the release .ZIP files. If you want to install directly from the repository, you will need the ampule.py and the Adafruit NeoPixel libraries installed into the lib/ directory.

Hardware

TallyCircuitPy has been tested with the PixelWing ESP32-S2 RGB Matrix but should work with any device that supports CircuitPython 7's wifi libraries.

There is also an enclosure supplied with TallyCircuitPy that can be 3D printed. It is available from this repository or via Thingiverse.

The Tally Light API

A web service is provided to expose LED values through an HTTP interface. This controls color and brightness, and will monitor the on/off switch (if available) to shut down the light in an orderly fashion.

An HTTP interface is provided that allows for color control and brightness to be specified remotely. As an example:

http://192.168.1.1:7413/set?color=AA22FF&brightness=0.3

Would set the NeoPixels to be purple across all LEDs, at 30% brightness.

The status of the LEDs are available as:

http://192.168.1.1:7413/status

If you would like to tweak an individual light, an HTML dashboard for controlling colors and brightness is available at:

http://192.168.1.1:7413/dashboard