Page 1 of 2

Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Fri Jul 07, 2017 3:50 pm
by admin

The 1602 SmartLCD module is a serially controlled 2 line by 16 character alphanumeric LCD display. Unlike most serial LCD modules on the market the 1602 SmartLCD includes a microcontroller which gives the module a rich set of features. It also requires no software or libraries to initialise the display, output text to the screen or control the features of the module, which reduces development time and frees up much needed resources in your microcontroller or development board. The SmartLCD can be used in one of 3 modes:



With passive serial mode no libraries or special configurations are required, just hook it up to your microcontroller's serial port and display any text output from the port. That's it!


Serial AT command mode also allows you to display text via a serial port but adds more control via simple to use text based AT commands - print text anywhere on the screen, control the brightness and contrast or even read the status of the push buttons on the optional SmartLCD keypad.



Finally in I2C mode multiple screens can be connected to one I2C port. For Arduino users just install the SmartLCDI2C library (download from our support forum) and control all the features of the SmartLCD from simple I2C commands.



16 character by 2 line LCD display module.
Very clear white text with blue backlight.
No software or drivers required to setup or control the module.
Software backlight control with 11 brightness levels.
Software contrast control.
External keypad with buzzer support (optional extra, see item HCKITS0058).
Single 5V operation.

I2C Mode

Control multiple displays from one I2C bus.
Software control of all module features via simple I2C commands.
I2C address configurable via software from 0x08 to 0x77 (default 0x27).
Built-in 10K pull-up resistors for clock SCL and data SDA lines.
Access to external keypad and buzzer.

Serial AT command mode

Software control of all module features via simple AT text commands.
Software configurable baud with 8 different speeds (9600 BAUD default).
Access to external keypad and buzzer.

Serial passive mode

Compatible with 5V serial UART devices (9600 baud default) – no microcontroller required.
Automatically displays any printable ASCII text.
Responds to a number of additional extended ASCII control codes.


Model number: HCMODU0122
Supply voltage: 5V
Display type: 16 character x 2 line alphanumeric LCD
Display technology: STN negative blue / transmissive polariser
Supply current: 27.5mA (backlight on) / 9.8mA (backlight off)
Interfaces: I2C, serial UART and external keypad
Module dimensions: 80mm x 36mm x 17.5mm
Bezel dimensions: 71mm x 24mm

Arduino Example - Printing to the screen in AT command mode

This example demonstrates how simple it is to control the LCD in AT command mode using an Arduino. The example uses the Arduinos built in serial print function to send the AT commands to clear the screen and print 'HELLO WORLD!' to the screen. No special libraries or setting up required! Just connect the LCD to your 5V Arduino as follows:


  1. void setup()
  2. {
  3.   Serial.begin(9600);                 //Initialise the serial UART
  5.   Serial.println("AT+CLR");           //Clear the screen
  6. }
  8. void loop()
  9. {
  10.   Serial.print("AT+PR=");             //Send the AT print command
  11.   Serial.println("HELLO WORLD !");    //Send the text to print. Note the println to send a CR+LF after the text
  13.   while(1);                           //Do nothing
  14. }

Optional Features - LCD Keypad kit


The SmartLCD's features can be further expanded with the addition of the Smart LCD keypad (see item SKU: HCKITS0058). This add-on board connects to the SmartLCD's keypad header using a single 4 way cable. Once connected it adds the additional features of keypad control (up, down, left, right, select, and back) and audible output to your end application. Access to button states and speaker output is then available via the SmartLCD's I2C or UART interfaces using its built-in commands (see the software section of the SmartLCD manual for more information).

Wireless access


A bonus feature of the Smart LCD, due to it not requiring initialisation by a microcontroller, is it's ability to operate wirelessly using a suitable serial wireless pass-through module. Here in the diagram below you can see a remote control application of the Smart LCD and
keypad with the addition of HC-05 Bluetooth slave (see item SKU: HCARDU0004) and Bluetooth master (see item SKU: HCARDU0064) modules.


The reference manual for the SmartLCD 1602 LCD can be downloaded here: ... Manual.pdf

If you wish to interface the SmartLCD to an Arduino via its I2C interface we have written an Arduino library that will help simplify your sketch. This can be downloaded from the software section of our forum here: ... =58&t=2206

Disclaimer: Libraries, example code, and diagrams are provided as an additional free service by Hobby Components and are not sold as part of this product. We do not provide any guarantees or warranties as to their accuracy or fitness for purpose.

Descriptions and diagrams on this page are copyright Hobby Components Ltd and may not be reproduced without permission.

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Wed Oct 11, 2017 7:05 am
by kalle67
Hello, I bought your product on Amazon, I would like to know if my keyboard can handle multiple menus. In fact, I'm designing an aquarium with an Arduino and Hobby Components 1602 SmartLCD (HCMODU0122) and I'd like to be able to fix times and more with the keyboard.
Help me?

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Wed Oct 11, 2017 9:26 am
by andrew
Hello, I bought your product on Amazon, I would like to know if my keyboard can handle multiple menus.
Yes it's possible but the SmartLCD itself doesn't have any built in menu system. Any menus have to be handled by your own sketch by sending text to the display and checking for keypad button presses. You may want to take a look at the example 'SmartLCD_Keypad_Example' sketch found in the SmartLCDI2C library which will give you some clues on how to send information and read back button presses.

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Wed Oct 11, 2017 9:39 am
by kalle67
Thank's for all.

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Fri Oct 13, 2017 9:33 am
by kalle67
Sorry if you are disturbed but are in trouble creating the code. I would like to change the time of the ds3231 via the button, do you think you can do it?

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Fri Oct 13, 2017 4:13 pm
by andrew
I'm afraid we don't offer software design services but if you have any specific issues feel free to post them on this forum as somebody may be able to help.

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Fri Oct 13, 2017 7:43 pm
by kalle67
Thanks for writing the software I arrange it by myself, the important thing is that this hardware supports it.
thank you very much and good job.

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Mon Oct 16, 2017 9:27 am
by kalle67
Hi, I got the product but I can not find the scheme for welding the components, can you help me?

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Mon Oct 16, 2017 2:23 pm
by andrew
Are you by any chance referring to the keypad kit? If so this can be found here:

Re: Hobby Components 1602 SmartLCD (HCMODU0122)

Posted: Thu Jun 21, 2018 4:13 pm
by peterlinstead
I'm not that experienced programming in C and have struggled with using String arguments with the SmartLCD.print() command what was easy with lcd.print() seemed bizarrely difficult with SmartLCD.print().
Here is a (probably extremely ugly but I don't care as I have been struggling it with for hours and was glad to have found something that works) solution in case you are suffering like I was:

void PJLwrite(int loc, int line, String text)

char chartext[text.length()+1];
text.toCharArray(chartext, text.length()+1);

/* Example of use: */
/* PJLwrite(0,0,"Out " + String(choosenoutput) + " high limit"); */

If Andrew or some other guru can explain why I can't just code SmartLCD.Print(text); in the above function or if you have a more elegant solution then it would be nice to know. Thanks Pete