External display board output using SoftwareSerial

Our club uses a RIDE board for showing round number, heat number, time elapsed etc to the racers. The RIDE board is a very nice board, well made with large red 7-segment displays made of 3mm LEDs. It was when we had issues with the board (caused by a flaky USB connection long since fixed) that I had the idea for this project. My initial intention was to make my own version of the RIDE board but I have since realised that’s not really what I want (although I may revisit that in the future), however what the project does need (because we have one of these boards and because it was expensive to purchase) is the ability to output the timing information to it.

This has been the elephant in the room for this project from my point of view. Without it, the project is good but is only attractive to those clubs who don’t own a board like this. With the ability to output to the RIDE board, it means my club and others who have the RIDE board can use the project to add more wireless boards and start lights around their circuit.

I’ve been developing this system on several Arduino Unos. The first one I bought from Maplins (an electronics retailer in the UK). The next 4 or 5, I’ve bought from eBay shops where they cost just a few pounds.

Anyway, the major drawback of an Arduino Uno for a project that needs serial input and serial output from the same device (like ours does – RC timing input and RIDE board output) is that the Arduino only has one serial port! So I was faced with a dilemna – do I buy an expensive Arduino Mega which has 4 hardware serial ports, or do I try to emulate a serial port in software on the Arduino? I thought I’d give the Arduino SoftwareSerial library a go.

In fact, it was very easy. From a software point of view, I’d already worked out how to generate the correct message for the output to the RIDE board. One thing I’d found when testing the system was that the VirtualWire library and the SoftwareSerial library had a conflict when using their default pins. Specifically, VirtualWire uses Arduino pins 10 and 11 for PTT (Press-to-talk?) which are the default RX and TX pins for SoftwareSerial. After I changed the pins for SoftwareSerial to pins 5 and 6, I was good to go again. Remember also that the two devices should also be connected to each other’s ground. (So the final device’s serial output ground connection will connect to the RIDE board’s ground connection).

Anyway, here is the breadboard proof-of-concept in action:

Leave a comment