|Product Performed to Expectations:||10|
|Specifications were sufficient to design with:||10|
|Demo Software was of good quality:||10|
|Product was easy to use:||10|
|Support materials were available:||10|
|The price to performance ratio was good:||10|
|TotalScore:||60 / 60|
Mega 2560 review.
The first thing I noted when I received the package was the size of the box.
It was pretty small!
Opening the box revealed the following items
Build quality was right up there and included was a nice Perspex mounting shield for
the bottom of the board.
Onto the project……
I was given a pair of old commercially made timing displays that the owner had lost the
remote control for, the manufacturer can no longer supply the correct remote
for these older lights and the newer remotes do not work on the old displays
So.. I decided to build a new controls system from scratch and whilst doing so, update
some of the internals within the displays. Items to be removed from the
displays included the 433Mhz receiver and loop antenna (gave poor range
anyhow), the PIC microprocessor and related crystal oscillator.
Then onto the reverse engineering of how the displays were controlled.
Typically the existing micro receives the timing & control string and drives these into digital outputs for driving
the traffic light signals, the sounder and the digit and AB/CD round selector.
The digit drive is via a common BCD to seven segment decoder (4511) and the AB/CD is also driven by a 4511 but has the
segment outputs wired in a most unusual configuration to achieve the change
between A&B being displayed and C&D being displayed with only ONE
digital input to the 4511 BCD decoder! That took a little while of trawling
through the truth tables to figure out what they had done.
The 3 digits were also driven in an unusual
manner with the 100’s of seconds display and the seconds display enable signals
being driven from a single output from the PIC. When the output was high the
100’s digit was enabled, and when it was low the seconds digit was enabled,
with a second digital output from the PIC to control the 10’s digit. This
caused problems further down the track.
Ok now that I knew how the original PIC was
interfaced to the hardware I could start to design my own interface using the
Arduino Mega 2560 and assign outputs to drive the relevant areas of the
So I deconstruct the display board and start to
install wiring that will go to the Arduino
In the picture above some may recognize the radio
as an NRF24 unit with the Low Noise Amplifier for the receiver and Power
Amplifier for the transmitter.
Under ideal conditions with the correct antenna
these are claimed to achieve a 1100mtr range – more than adequate for the
50mtrs I require.
The completed display is shown above. The
Arduino has all the terminations soldered directly to the back of the board and
adhesive standoff are used to locate it onto the display PCB. The small PCB
(yellow pin connectors) to the left of the Arduino is a dedicated 3.3Vdc
regulator for the radio module as the Arduino on board regulators struggle with
the high pulse currents when the transmitter is fired up.
The displays each have an Arduino in them and
the remote is based upon and Arduino as well.
As I started the exercise some months ago,
seeing if I could write the remote control code, I had a fairly good idea of
how I wanted this to operate. My biggest hurdle was getting the radios to
operate correctly. I tried several libraries and eventually got the radios to
work intermittently on the examples shown in the library (big thumbs up to
those who take the time to make libraries as these are critical to less
experienced programmers and are a great resource).
Once I had achieved this step I then needed to
implement the radios into my existing remote code and figure a means of
transmitting the data in a format I could decode at the other end. I eventually
settled on using the Arduino STRUCT (data structure) command to assemble random
bytes of data into a string of values and ended up with a transmit string that
was approx. 10 bytes in length. With the radio link set to 1Mb/s it should
The moment of truth had arrived! I loaded the
latest versions of code into all Arduinos and turned the devices on.
Can you recall I mentioned earlier about the
unusual digit selection?
I cannot see how the original design would have
ever worked – but it must have.
Consider this, you have set a digit into the
4511 via the 4 BCD lines and it is latched into the segment drivers, then you
enable the digit you want it to display on, but wait!!!! Remember we had 2
digital lines to control 3 digits with the 100’s and the seconds digits just
been inverted? This means that for either a digital out LOW or HIGH there is one
digit already enabled. So what happens when I want to drive the 10’s digit? I
enable to digital out high to turn on the 10’s digit and either the 100’s is on
or the seconds is one, resulting in “digit bleed” between the digits. Sort of a
Ok back to the hardware design and determine a
good place to separate the digit drive transistors and run all 3 digit drives
independently from the Arduino. NICE CLEAN DIGITS.
With a few more tweaks I had two functional
displays. Time to field test them.
them working nicely for about 30 minutes and then one display seemed to go to
sleep and loose track of the counter, given the displays just take a data
stream from the remote and convert it to displayed digits, it seemed the radio
link was going to sleep. Further investigation found that the 3.3Vdc supply
module was delivering 2.5Vdc and was defective. I have swapped out the module
and added 1000uF filter capacitors right at the radio module and it seems to
have cured the issue.
I would like to thank all the Arduino
developers out on the web without whom this project would never have got off
the ground let alone been completed. Kudos to thise that write libraries and
sample code, I ‘borrowed’ code from several examples for driving the Keypad,
LCD display and radios on the remote. Whilst I do take some credit for the
originality of the completed code, I cannot take full credit without
acknowledging others efforts.
Does the Arduino Mega 2560 do what it was
designed to do. Simple answer is YES and a lot more!
Are they good value. How could you answer NO to
that question, with the dearth of add-ons and code examples on the internet,
someone usually has thought of bits of your project already. For the amount you
would pay for an Arduino (and it varies as the hardware is open source) I think
they represent excellent value for money.
The Arduino IDE programming environment can be
a bit daunting if you are an absolute beginner to C based coding (I was). But
once you get your head around the format and syntax it is a nice IDE to work
There is so much support for these inexpensive,
powerful and versatile controller boards, along with some pretty neat shields
for expansion, I personally don’t think I would look to any other platform for