Learn :

Kits :

Message Pump

Message Pump

Connect an LCD to your computer’s USB port

Message Pump

Brief:

The Message Pump A.K.A. the USB to LCD Backpack is a device that allows you to connect a LCD display directly to your computer. It uses a PIC micro-controller, to drive the LCD and a FTDI USB to serial chip to connect to your computer.

The great thing about the FTDI chip is that it’s drivers are available for Macintosh, Windows, and Linux! The FTDI chip works by creating a VCP (virtual com port) and you may already have these drivers on your computer if you use an Ardunio Diecimila. If not, no worries they are free and and easy install.

What does it do?

  Once a VCP is opened to the Message Pump any ASCII serial data sent to it is displayed on the LCD display. 

    This means that if you have software on your computer that can access a serial port you can display messages on the Message Pump!

    The possibilities are endless, imagine using AppleScript, Processing, Basic or whatever your preferred programming / scripting language is, you could display messages like;

How to use it-Basics:

   The easiest way to use the Message Pump is to open Hyper-terminal or an other terminal software, select and open the COM port for the Message Pump, then just start typing. What you type is displayed directly onto the LCD display. If you are using other software you will have to check how to open a serial port in that software.

    To get you started I’ve made a simple Processing example. It is called 

MessagePumpDemo.pde and uses the Serial Library included with Processing.

    The way MessagePumpDemo works; first it lets you select a serial port, then it opens that port at the default baud rate of 9600 bps and  prints pumps out a message. It also lets you send keystrokes to the display. It’s a building block for you to examine and make better.

How to use it-Advanced:

    The Message Pump also accepts instructions to control settings and formatting. These are used to change things such as the size of display, for example 1x16 to a 4x20 character display, baud rate etc. You can also jump to a specific space on the display. The instructions also include the ability to pass though, Hitachi commands right into the display. For example; clear display, shift left etc.

An instruction is always three bytes long and it always starts with the hex value of 0x80. The next value is the instruction and the third is the value of the instruction.

Table 1. Instruction message format

First byte (Start byte)

0x80 hex

Second byte (Instruction)

See below Table 2.

Third byte (value)

0 to 255 dec

Table 2. Message Pump instructions list

Instruction Description

NA

(Future)

(Future)

(Future)

(Future)

Pass through Hitachi Instruction

Change Baud Rate

Change LCD Size

Move cursor to position

Instruction

HEX Byte

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

0x08

Instruction

DEC Byte

0

1

2

3

4

5

6

7

8

Instruction value 

0

0

0

0

0

See Hitachi chart (or Hitachi specs)

1=2400bps, *2=9600bps

*0=1x16, 1=2x40, 2=4x20, 3=2x16

1 to size of display (eg. 2x16 = 1 to 32)

Table 3. Standard Hitachi 44780 LCD instructions list

Hitachi Instruction

Clear display

Home display

Display OFF

Display ON, Cursor OFF, Blink OFF

Display ON, Cursor OFF, Blink ON

Display ON, Cursor ON, Blink OFF

Display ON, Cursor ON, Blink ON

HEX Byte

0x01

0x02

0x08

0x0C

0x0E

0x0D

0x0F

DEC Byte

1

2

8

12

14

13

15

For more info check the Hitachi 44780 Spec sheets.

    For example, to set the Message Pump to work with a 2x40 character LCD display you would send the following message; {0x80, 0x07, 0x01} to the display.

The Hardware:

U1     PIC16F687 or 689

U2     FTDI232R

J5     Mini USB-B

R1,R3     10k ohm 0603

R2     1k ohm 0603

Q1         P-CH Mosfet 3.7A SOT-23-3

VR1                    10k 3mm Trim Pot

X1                    20mhz Ceramic Resonator

D1                        Diode SOT-3

C1                     1uF 0603 Cap

C2,C3,C4,C5 .1uF 0603 Cap

U1

U2

Q1

D1 Looks like this don’t get them mixed up!

R2

X1

C1

R1, R3 Looks like this but “103”

C2,C3,C4,C5 Looks like this

VR1

Building it:

  Most of the parts on the Message Pump are surface mount. If you are good or OK at soldering though hole parts then building the Message Pump shouldn’t be a problem. You may just have to change your technique a bit. Look around the web and you will find lots of tutorials on how to do surface mount (SMT) soldering.

    The most popular part used in this project is the FTDI USB chip. People are afraid of it because it has a small pin pitch (spacing). The version used here is the SSOP-28 package. Yes, this tight spacing does make it a bit more difficult to solder but if you have not tried, I think you’d be surprised, it’s not that hard.

    When soldering very small parts by hand you have two basic choices;

1. Use a very small tip on your soldering iron (maybe with a magnifying glass) and solder each pin individually. This works OK, but; it’s slow, a very fine soldering iron tip does not heat up well and it can be hard to use magnification and keep your hands free to work.

2. Use an average size tip and heat one or two pins at the same time. This is a very fast technique (once you get the first pin soldered and chip alined). The problems with this is it could cause two or more pins to jumper (solder between two that are not supposed to be connected). Using solder wick and liquid flux, it is very easy to fix and it leaves a nice almost reflowed look!

Building it:  Customizing The Message Pump:

    Here are three areas where you can customize the Message Pump to suit your project.

Back-Lighting:

If your display has back-lighing, and needs a current limiting resistor then add one to either the R4 or R7 pads. R4 is a 0603 SMT resistor and R7 is a standard though hole resistor standing vertically. If your display doesn’t have back-lighting just leave these pads empty.

USB Wire or Mini-B connector:

You may use a USB wire or a USB Mini-B connector. The normal color code for a USB wire is; (check yours !)

Black = ground

Green = D +

White = D -

Red = VBUS (5volts)

If your wire has shielding, connect it to ground also.

USB Low Power Suspend mode:

As required by the USB standard, Q1 is a MOSFET that will turn off the power to the display and the PIC if the USB bus goes into suspend mode, thus reducing the current used.

If you want you can put a bit of solder on jumper 1 (JMP1) and the board will be on regardless of the USB state. 

NOTE : If you are building the Message Pump Kit (as apposed to buying it pre-built), and you are planing on including the USB Low Power Suspend mode parts, then you must update the EEPROM in the FT232R. The factory default EEPROM values in the FT232R, allow current to flow from the serial I/O pins during suspend which will not allow your Message Pump to sleep “completely” and could cause damage to the FT232R.

If your Message Pump is never going to be connected to a computer that goes into suspend, reprogramming the EEPROM is not important, but we would recommend using the jumper JMP1 and omitting the low power parts in this case.

To reprogram the FT232R EEPROM from the default values;

1. Install the FTDI D2XX drivers on your PC. (Also install the VCP drivers if you do not have them already. These are for normal operation.) 

2. Install the EEPROM update utility MProg 3.0a .

3. Build the Message Pump.

4. Connect it to your PC’s USB port.

5. Launch the MProg utility.

6. Choose “FT232R” device type from pull down menu. (See #6 below)

7. Put a check in the check box, “Pull down IO Pins in USB Suspend”

8. Optional: Save template by clicking on the green disk icon.

9. Program your FT232R, by pressing on the “Lighting bolt” icon.

10. Cycle (restart) the USB devices by pressing the icon in the upper right part of the window that looks like a folder with a red “X” on the top.

11. You are done. Quit MProg and use the Message Pump.

Screen shot of MProg 3.0a from FTDI. Here to illustrate how to reprogram the EEPROM of the FTDI UART. Numbers above correspond to reprogramming steps.

Hacks:

    To reprogram the PIC on the Message Pump you would use J2, it is an ICSP connector with the pins labeled on the PCB. This is also the same pinout as Microchips PICkit 2 Programmer. (The white arrow on the programmer goes on the ICSP pin labeled VPP)

Using The Message Pump as a Serial LCD Back-Pack:

You can easily turn the Message Pump into a TTL (5 volt) serial LCD Back-Pack. Pin 1 of U2 (FTDI chip) is TX-data pin and it connects to the RX-Input in of the PIC. If you omit the FTDI chip then you could send data input to the PIC by connecting your serial input to a point along the trace from U2-1 to U1-12.

This means that you could use it with a Arduino or other micro-controller

I2C Hack:

The PIC used on the Message Pump has build in slave I2C. Both  the data and clock pin (SDA & SCL) are brought out to J5.  Maybe you could bit-bang your own master I2C, and have the PIC read some form of sensor!

Copyright SpikenzieLabs 2019