December 2016

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 31

Style Credit

Expand Cut Tags

No cut tags
Sunday, November 30th, 2014 06:08 pm
One of the problems I had to solve when building Remote station was finding suitable LCD for it. For various reasons I wanted to use RBoard - integrated MCU module with build-in 4 relays and RF sockets, but RBoard creates its own problems.

First of all RBoard has fairly limited number of GPIO pins - it is essentially Arduino Uno-level hardware, with only few pins available. And out of these available pins 4 are already used for relays, I need at least 4 for input buttons, plus I need pins for RF module and for connecting sensors. RBoard just does not have enough of free pins to run standard parallel 1602 LCD.
Second problem is the voltage. RBoard is running at 3.3V, which is OK for broadly available sensors and RF modules, but it puts constrains on LCD module as well.

Each of these two problems by itself is not a big deal, but together they are creating certain challenge. Typical 1602 LCDs are available in 3.3V, but I don't have free pins for it. LCDs with I2C interface are also available, but usually they are running on 5V.

After searching for some time I came across this LCD device.

It is available from both Jameco and Amazon (sold by Jameco), it does what I need and is surprisingly inexpensive for its capabilities.

After trying out the device I'm quite impressed - this LCD is pretty clear and bright, characters are about the same size as a typical 1602 LCD, it runs on 3.3V, and it works via I2C interface. And it also has RGB back light, allowing you to select any desired color of display.
This LCD also has 20 instead of 16 characters in line - which is nice, allowing me to show additional information (e.g. temperature and humidity) in addition to the existing sprinklers control UI.

The module itself is unusual - unlike typical 1602 LCD this one is a single monolithic module. There is no PCB there, all electronics is inside common slim sealed module. I think it is using "Chip on Glass" technology.



The LCD just needs two external capacitors to run built-in voltage regulator, and one resistor for I2C bus - that's all. It is also quite advanced in its capabilities - you can programmatically control contrast, the device allows loading in 16 custom characters (double of a typical 1602), plus it has 20x2 screen. And the price is pretty good - $12.95 at Jameco, with usual volume discounts.

Connection to RBoard is easy - just two wires (plus ground and power). And it is also possible to put other devices (e.g. sensors) on the same I2C bus, so these two wires are shared.

One (minor) thing is that this module has thin pins more like an IC - it is intended for soldering on a PCB rather than directly connecting wires. I ended up using a piece of a prototype board to make the base for LCD, the same board is also acting as a wiring point for input buttons.
For the actual release (not prototype) version of the Remote station I'm thinking about adding I2C GPIO extender chip (can be mounted on the same LCD board), this would allow connecting LCD and input buttons to MCU with only few wires, plus it will allow programmatically controlling back light color (and will free up another 4 pins on MCU).

Another catch in all this - control library. This LCD does not work with a standard LiquidCrystal Arduino library (the controller is different, not just the interface), and it took me half a day to find a library that works. But it was worth the hassle - overall I'm quite happy with this LCD.