I'm attempting to build a user interface that provides minimal access to only a few crucial configuration options (network config, host name, reset defaults, etc). I have a SainSmart 20x4 LCD that I'm able to use with my pi, and the display size is really ideal for my purpose, but what I really need is something like a 20x4 version of AdaFruit's 16x2 LCD shield with keypad.

Has anyone come across something like this? If not, any suggestions on how to fabricate one without designing my own circuits/PCB?

Note that something along the lines of "combine [LCD product A] with [button product B] using 4 wires/solders" is more my skill level.

  • @Nasha Links have been added.
    – Troy D
    Commented Apr 20, 2016 at 11:54

2 Answers 2


while a bit awkward to do you have a couple of options:

  1. remove the LCD from the Adafruit board and attach the other LCD directly, both LCDs use a HD44780 type display interface, meaning that you can swap them without any other changes, and to get around the bigger size the LCD does not need to be directly attached, but short lengths of wire could be used to move the LCD so that it does not cover the buttons.
  2. use both the shield and the new LCD together, i'm not sure what software you intend to use to control the LCD screen, but assuming you are using something like lcdproc there is already an i2c driver for this type of display, so you could simply remove the LCD from the second module and use only the buttons from it (but i would suggest it's more hassle than its worth, better to just attach buttons directly to the Pi) and mount the other LCD in front of it and drive it directly without modification.
  • Thanks @James! This has been sitting on the back burner for a while now, but if the displays use the same interface, then I will probably desolder the old one and use some wires as you suggested. Seems almost too easy!
    – Troy D
    Commented Apr 13, 2017 at 3:24

The SainSmart LCD looks like a parallel access display, which a TWI (I²C) port expander was hooked on. You have a few options:

  1. Check whether Adafruit and SainSmart LCD have pins in common and try desoldering so as to swap the former with the latter — mind voltages though!
  2. Build a PCB with the buttons only as the PI can handle them all even without multiplexing.
  3. Use a small touch screen instead.

That particular disposition on Adafruit keypad seems to be not-so-easy to find as a final product for the Pi. Maybe this vaguely similar capacitive keyboard (TTP229)...

  • Thanks for the suggestions. Interestingly, both the SainSmart LCD and AdaFruit's have the same 12 connections to the I²C controller. They're at the top, though, so the larger LCD would cover the buttons, but it's a good start. The touchscreen isn't ideal for strictly limiting access to the system, so a custom PCB may be the only way. I was hoping for something more reproducible, though. Surely I'm not the first person to want this hardware configuration...
    – Troy D
    Commented Apr 21, 2016 at 5:29
  • 1
    You're welcome. What do you mean by "strictly limiting access to the system"? You might want to explain this in your question.
    – user29510
    Commented Apr 21, 2016 at 7:25
  • @Nasha commenting with "@MadMike" brings your edit to my attention thus enhancing the chances that I can I reward you with a up-vote.
    – MadMike
    Commented Mar 20, 2017 at 12:14
  • Thanks. I remembered the board I hinted at as soon as I edited my post so quickly removed my then-useless comment. Glad you caught it though ;-).
    – user29510
    Commented Mar 20, 2017 at 14:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.