Reccomendation for a touch screen for home automation project

Hi all,

I am looking to integrate a touch screen to an existing home automation project.

The screen is intended to provide GUI controls in the form of graphic buttons to turn on and off devices / appliances, set other control settings and display feedback and other information (eg temperature)

I have an ATMEGA1284p based arduino board dedicated to control this screen which then interfaces with the rest of the system via RS485 and/or WIFI.

The screen can be wall / desktop mounted when wired RS485 is used or handheld when wifi is used.
Obviously, in the latter case, the battery issue will also have to be addressed

I am thinking of a screen size of around 4 inch.

The above MCU available has 128kb of program memory which must accommodate the screen code as well as other (existing) system code which is about 20kB.

I have no previous experience with any graphics displays (only used 4x16 LCDs ) and I would be looking for recommendations / suggestions for the best technology (looking for easy implementation as well if possible) to use as well as particular models.

I tend to buy most of my electronics parts of ebay /amazon

Thanks for your support...

Watcher:
Hi all,

I am looking to integrate a touch screen to an existing home automation project.

The screen is intended to provide GUI controls in the form of graphic buttons to turn on and off devices / appliances, set other control settings and display feedback and other information (eg temperature)

I have an ATMEGA1284p based arduino board dedicated to control this screen which then interfaces with the rest of the system via RS485 and/or WIFI.

The screen can be wall / desktop mounted when wired RS485 is used or handheld when wifi is used.
Obviously, in the latter case, the battery issue will also have to be addressed

I am thinking of a screen size of around 4 inch.

The above MCU available has 128kb of program memory which must accommodate the screen code as well as other (existing) system code which is about 20kB.

I have no previous experience with any graphics displays (only used 4x16 LCDs ) and I would be looking for recommendations / suggestions for the best technology (looking for easy implementation as well if possible) to use as well as particular models.

I tend to buy most of my electronics parts of ebay /amazon

Thanks for your support...

I would suggest looking at Digikey and Newark for electronic parts.
I would suggest avoiding eBay.

DigiKey carries nearly all the Arduino boards and shields.
Newark also carries the Arduino boards and shields, but tends toward more Raspberry PI.
JamesCo also if a good place for electronic parts.
I use DigiKey and JamesCo mainly.
Newark for Raspberry pi stuff.

The one touchscreen that I have experience with is the Newhaven Display Capacitive touch screen model NHD-4.3CTP-SHIELD-N. I have run all the FTDI demos on it.
FTDI, the controller chip maker, has a freeware GUI design program which unfortunately runs on MS Windows.
I do not do Windows so I have not tried it.

Which variant of the Arduino compatible board are you using?

artisticforge:
I would suggest looking at Digikey and Newark for electronic parts.
I would suggest avoiding eBay.

DigiKey carries nearly all the Arduino boards and shields.
Newark also carries the Arduino boards and shields, but tends toward more Raspberry PI.
JamesCo also if a good place for electronic parts.
I use DigiKey and JamesCo mainly.
Newark for Raspberry pi stuff.

The one touchscreen that I have experience with is the Newhaven Display Capacitive touch screen model NHD-4.3CTP-SHIELD-N. I have run all the FTDI demos on it.
FTDI, the controller chip maker, has a freeware GUI design program which unfortunately runs on MS Windows.
I do not do Windows so I have not tried it.

Which variant of the Arduino compatible board are you using?

I design my own arduino compatible boards based on either the arduino micro atmega32u4 concept or the mighty core atmega1284p when more recourses are needed. In this case i plan to use the latter.

Watcher:
I design my own arduino compatible boards based on either the arduino micro atmega32u4 concept or the mighty core atmega1284p when more recourses are needed. In this case i plan to use the latter.

how do you program them then?
How do you get the Arduino IDE to compile for these "homebrew" boards?

There is no good one-size-fits-all solution when doing this on a hobbyist budget, other than the Nextion screens (and their clones). But, going that direction boxes you into their GUI builder which is a Windows only program. There are limits on the thruput due to the serial connection to the host processor but on the upside, the data passed over that link is high level metadata, not a pixel at a time type transfers. It's an okay solution but if you prefer twiddling your own bits, it's a limitation since all the content you create (bitmaps, fonts, etc) has to pass through a Windows machine and program.

Buying a raw TFT LCD and interfacing it to a 1284p will require lots of I/O and level shifting, about 20 pins worth, to drive a standard parallel interface screen unless you run the 1284p a 3V3 supply. You can purchase SPI based screens from places like BuyDisplay.com but ultimately you'll limit thruput due to the SPI speed bottleneck.

With the build it yourself approach, you'll need a graphics library and that's where the warts begin to show. There's simply no reasonable performance libraries out there that don't come with commercial pricing. I'd be happy for someone to prove me wrong but I don't consider free libs like UTFT to be worthy of the time required to build an app. Yes, it works but that's about it, it's good for testing go/no go but there are no standards, zero performance and you get what you pay for which is zip, nada.

The Adafruit GFX library would be a far better starting point IMHO. You can find other libs out there, with significantly better performance but none that I'm aware of that support the 1284p directly. There are libs for the Due, the 8266 and some others but no atmega core stuff that would port to the 1284p.

avr_fred:
There is no good one-size-fits-all solution when doing this on a hobbyist budget, other than the Nextion screens (and their clones). But, going that direction boxes you into their GUI builder which is a Windows only program. There are limits on the thruput due to the serial connection to the host processor but on the upside, the data passed over that link is high level metadata, not a pixel at a time type transfers. It's an okay solution but if you prefer twiddling your own bits, it's a limitation since all the content you create (bitmaps, fonts, etc) has to pass through a Windows machine and program.

Buying a raw TFT LCD and interfacing it to a 1284p will require lots of I/O and level shifting, about 20 pins worth, to drive a standard parallel interface screen unless you run the 1284p a 3V3 supply. You can purchase SPI based screens from places like BuyDisplay.com but ultimately you'll limit thruput due to the SPI speed bottleneck.

With the build it yourself approach, you'll need a graphics library and that's where the warts begin to show. There's simply no reasonable performance libraries out there that don't come with commercial pricing. I'd be happy for someone to prove me wrong but I don't consider free libs like UTFT to be worthy of the time required to build an app. Yes, it works but that's about it, it's good for testing go/no go but there are no standards, zero performance and you get what you pay for which is zip, nada.

The Adafruit GFX library would be a far better starting point IMHO. You can find other libs out there, with significantly better performance but none that I'm aware of that support the 1284p directly. There are libs for the Due, the 8266 and some others but no atmega core stuff that would port to the 1284p.

Thank you very much for your comprehensive input! - Karma points given.

I have recently built a Reflow Oven using the Controleo3 controller.
The touch screen in this application re-sparked my search for a similar solution for my applications. This one however is based an an Arduino Zero hardware with SAMD21 MCU.

artisticforge:
how do you program them then?
How do you get the Arduino IDE to compile for these "homebrew" boards?

Regarding my home brew ATMEGA 32U4 based boards I just select the Arduino Micro option from the boards menu of the IDE. It behaves just like the Micro.
As for the 1284p boards, using the lateset IDE 1.8.x, I use the MightyCore built and add additional boards on the IDE that support the 1284p micro controller. I then also burn the corresponding bootloader. I can then use the IDE just like with any other standard arduino board.

If interested there is lots of info and related threads in the Microcontrollers section of this forum.