With vMixScoreboard you will be able to pull data straight from your Anatec scoreboard and push it into vMix with the use of the vMix API. All that is needed is a STM32 Blue Pill and a Raspberry Pi (for now).
About a year ago I started a livestream project for my local sports club. We wanted to give everybody the opportunity to see our top class matches, even those that live across the country. One of the major graphics showing during the game is the live score. Since we did not want to update the score and time by hand, we started looking for an automated solution. We used to use the program Scoreboard OCR but unfortunately for us they decided to ask absurd prices for their service, so back to the drawing board it was. With some inspiration from other clubs in our league we decided to make use of a Raspberry Pi, connected to the scoreboard to get out data in vMix.
In this section the overall design of vMixScoreboard will be discussed, starting with the schematic overview. After that the basic functionality of the script will be discussed.
TODO: Update Electrical schematic
After looking into our scoreboard we found that the individual segments were driven by a PIC16F873 shift register. The PIC would get 8-bits of data, pushed by a segment-specific clock. Once all eight segments were filled with new data, a strobe signal would push the data to LED-drives, which in turn would turn on the correct segments. This whole procces would take less than two thents of a millisecond and would always repeat. Our first thought was to hook op a Raspberry Pi to the scoreboard. That way we could read the data and directly push it to vMix. After some testing we came to the conclusion that the Raspberry Pi was not suited for the job. The data lines had sush speed that the Pi could not properly read the incomming data, and thus miss clock cycles or read wrong data. That's why we integrated a STM32 Blue Pill. This microcontroller is fast enough the properly read all of the data, without errors. Because the Blue Pill doesn't have native ethernet connectivity we still needed the Raspberry Pi. The two are connected by a UART protocol. Once the Blue Pill has new data, it will push it over UART to the Raspberry where a Python script will push the data to vMix.
In the future I want to get rid of the Raspberry Pi completely and just hook op a ethernet port to the Blue Pill, but because of deadlines I haven't been able to do that jet.
Our goal is to permanently mount the Raspberry Pi and the Blue Pill in the scoreboard, so we needed a way to turn it on and off on demand. The power switch should enable this. A small piece of software is needed to use this switch. Luckely for us HowChoo has made an excelent tutorial about this issue. I highly reccomend you use that. The beauty of this design lays in the fact that no modification to the original scoreboard PCB is needed. Just solder the UART wire to the correct pin of the microcontroller, together with a GROUND connection and that’s it!
The software for vMixScoreboard is relatively easy. The main program consists of two main features: reading data from the serial connection and pushing this data to vMix via the API.
To get a feeling for the signal we are working with I created the pictures below. The software simply reads the data and finds out with the corrosponding value is with a simple state machine. Once this value is found it is pushed to the Raspberry Pi. There I check for differences between the current data en new data. Only when these are different the new data gets pushed to vMix. This way the API doesn't have to send more data than needed.
Based on the two pictures above the code has been written. As you can see data is placed in a sertain digit based on the used clock.
This project uses the vMix API to interface the Raspberry Pi with vMix. More information about this API can be found here
As stated before, I wish to completly removed the Raspberry Pi from the scope, because I thing that I don't need it anymore. For this to happen I have to add an ehternet module to interface with the STM32 Blue Pill. I'll also make a new PCB to place everything in the scoreboard neatly. Furthermore I want to rewrite the complete program for the Blue Pill. Right now it's a complete mess because of the tight deadline. Once I've got some spare time I'll rewrite the code with proper classes where needed.
If you have ant more sugestions feel free to contact me!
This project would not be possible if it wasn't for the help, information and inspiration from the following people:
Boost Software License 1.0 © Remco van den Enden