Repurpose Palm LifeDrive TFT

Well, I am pretty new to the whole scene of making one's own way in electronics and I am pretty sure I have bit off WAY more than I can chew with this little project. I wanted to design a touch screen interface for a advanced digital thermostat with logins and automated features for changing temps depending on times of day and if anyone was in the room etc. Sounds great, but I want to take it one step at a time. First, the display.
I have an old TFT from a Palm LifeDrive that I wasn't using anymore and I thought maybe I could repurpose that little bugger for better things. After taking everything apart though. I realize I don't have a datasheet, how the pins are setup, or where to buy the connection to stick this thing on a prototype board or even make permanent.
Basically, I need help finding the data for this little thing, and maybe some good links or advice how to hook this thing up, where to buy stuff for it and maybe a little direction in making some kind of decent shield for it. It would be greatly appreciated.
Here's what I know:

Sharp LQ038J7DH53 170-10142-XX Rev. A
170-10142-00
05-09/033030

I'm sorry I can't directly help you with your subject question. However, I do have some advice for your project in general, especially since you're new to DIY electronics. While I'm all for repurposing components like the LifeDrive screen, the display used will likely be one of the easier parts of this project to modify in code down the road. Furthermore, during the early stages a standard-sized character of graphical LCD should be sufficent to do your initial development.

Therefore, I hope the information search on how to use that paricular screen isn't stopping you from doing the other, more essential parts like deciding on how to store these preferences, defining the I/O requirements, creating and testing the basic thermostat control algorthim, etc... Once you get the fundamental parts of your project working, then you can focus on making it "pretty" in whatever sense of the word you want. :slight_smile:

Thats its datasheet (or at least one for an equivalent display).

They are literally just the display and a driver IC. These are not a simple thing to interface too, and an arduino is simply not fast enough.

But don't let that stop you having a go :slight_smile:

TCWORLD:
Thats its datasheet (or at least one for an equivalent display).
LCD Panel, LCD Display, LCD module, LCD Controller Board.

They are literally just the display and a driver IC. These are not a simple thing to interface too, and an arduino is simply not fast enough.

But don't let that stop you having a go :slight_smile:

After reading the linked datasheet I agree interfacing won't be simple. However, what makes you think all arduinos are too slow to interface with it? Page 8 of the datasheet states that the "Clock frequency of source driver" (i.e. the driver IC's clock frequency) has a range of 9.3 to 12.1 MHz. Last I've checked 16 MHz was faster than 12.1 MHz and the last few 5 VDC arduino designs have a 16 MHz system clock (that can even be slowed to within the range of the IC driver, though it shouldn't be necessary to do so).

And can the arduino read data from an external data source (there isn't enough to ram to store one frame on an arduino) and output the 24bit of colour data (or even 1bit) in 1 instruction clock?

TCWORLD:
And can the arduino read data from an external data source (there isn't enough to ram to store one frame on an arduino) and output the 24bit of colour data (or even 1bit) in 1 instruction clock?

Why does all this have to happen in 1 instruction clock? ronalda's planning to make a GUI interface for a thermostat, not a high-end graphics workstation.:stuck_out_tongue: As long as you can write to the driver during a given clock tick you can change the output of the display. The read time from the source file and any further processing aren't barriers, no matter how long they take the display will just stay at it's current state until given something else to display (the driver IC must have a system buffer of some sort, there's no way it's processing every pixel in parallel!).

The real time-related issue of concern is the refresh rate, long as the display is updated faster than ~24 frames per second (fps) most people won't notice delay for video. I'm not suggesting that an arduino could pull-off those refresh rates with this display, but rates of single digit fps seem possible. Unless this project includes live video feeds of ronalda's heater and AC equipment, even a few fps would probably be sufficient.

Again though, this is not something a novice should try cutting their teeth on, that's one of the reasons why I mentioned using an LCD. Not only could a monochrome text or graphical LCD do the job, there are many that already have Arduino tutorials and/or compatible with exisiting libraries. Also some are rather inexpensive if you don't need them to be very big, e.g. the 84 x 84 Nokia 5110 graphical LCD is ~10.00 USD at either Sparkfun or Adafruit.

You can't do that. Every clock cycle of the pixel clock that is in the valid display region will write the parallel data to the given pixel. If you set the output for one pixel clock, and don't then change it for the next clock, you will just end up with a long line. You can't just skip a pixel willy nilly.

Take the nokia 5110 LCD or my personal favourite the nokia6100 LCD. You have a serial bus which allows you to address a pixel. You say, i want to change pixel (a,b) then say what you wan't it to be. They have an high level controller and frame memory built in.

This display is for lack of better word dumb. You can't just address a specific pixel - there are no address lines! Its an all or nothing.
The only way you can do it is to slow the pixel clock down to a rate at which the arduino can be the frame buffer and offload every pixels worth of data. I have been messing around with this, and after some very heavy optimision, using a parallel SRAM, writing large parts in assembler, and heck even choosing certain IO pins as they are faster to write to... The absolute maximum i can get it to do is 333KHz for a similar sort of display. Now if i went down to 8 bits per pixel (256 colours), I can get that up to 500kHz. However that is a far cry from the absolute minimum of 5MHz that the specific display requires.

It CANNOT be done with an arduino alone. (period)

Ok, I see and understand my mistake now. I knew that this display didn't have any serial communication to the outside world, but I thought the driver had a more sophisticated addressing system. Instead it works more like a basic CRT display. Thank you for identifying and explaining my error to me, TCWORLD.

Wow, you guys gave a lot of really helpful information. I am working on tracking down the information on the datasheet. Anyway to track down a connector for this little bugger to attach to a breadboard for a little proto work?

EBAY look for a "Pin Board" there is one for sale in Electrodragon, I know with a number of different pad layouts/pin pitch's for sale for just a dollar or two, I've seen it a number of times, never bought one as I don't see that well any more unless I an in bright sunlight. I'm OK with a mm BUT some of those things have .2 to .5 mm pad/pin spacing. Nuts. Again at Electrodragon you can buy a 3.2" tft with library support in the playground as well as From both Adafruit and ITEAD Studios for less than $15.00 with touch too. Personally I prefer to get my lib's from Adafruit and parts too when they are unique enough, like that solderable breadboard, looks just like an 830 point bread board, with Plated Through holes and gold "Plated" (Gold Washed) too. make it work and transfer it to a board almost at the same time

Doc

Is it possible to add, through hardware, a buffer in between the arduino board and the display?

You could do yeah. You would need something very quick though, and it would have to be programmable. Something like a small FPGA chip would work well.

I have no experience with FPGAs. Do you a recommendation on a FPGA chip with a breakout board that would be suitable to learn the basics?

I'm not really sure, I have never used FPGAs. I did once try to learn Verilog, the language used by Altera for their FPGA chips. I found this tutorial a great starting point:
http://www.asic-world.com/verilog/verilog_one_day1.html
And the IDE for Altera FPGAs:

(This is the free stripped down version of it)

Papilio is the closest thing I've found to an "Arduino Project" for FPGAs.