Close

Background Design Story Time

A project log for Open Source Smart Display

Open Source, Open Hardware 17.3" touch screen smart display, based on the 96boards Dragonboard 410c

john-basistaJohn Basista 06/27/2019 at 13:260 Comments

So when I first started this project, the intent was to create a smart display which could be mounted to the wall, or even be propped on a kitchen counter or desk.  The other thing I wanted as a feature for the project which makes this different than what has already been done is the user control aspect of it.  Most smart displays as I have seen them are just an LCD and CPU.  I wanted to include touch screen capabilities, so interacting with the display would be possible, for things like adding tasks for todo lists, calendar information viewing/additions, etc.

So knowing the type of product I wanted to make, the first thing that needed to be figured out was the size of the LCD to be used.  The LCD is the main design component that the rest of the design will revolve around, from size, display resolution the GPU needs to support, the interface to the CPU as well as power input requirements. From my research, I can categorize LCD panels into 3 functional groups based on size, but each having unique and different characteristics.  The 3 groups are Mobile (4-10"), Laptop (11-19"), Monitor/TV (>20").  The Mobile displays are cheapest purely due to size, varying in resolution up to 2k displays, typically using MIPI DSI interface, and some can come with embedded touch capabilities.  The laptop displays become much more expensive, resolutions up to 4k, typically eDP (embedded display port) or LVDS interface (most new displays are eDP), and these can also come with embedded touch capabilities.  Lastly, the large displays used in monitors and TVs.  These are the most expensive, at some points making it not worth just buying the LCD vs buying a whole new built display, have resolutions up to 4k, typically use LVDS interface, and I did not find any with embedded touch capabilities.

From the research, and intent for the display, the Laptop display region is where I started to target, as most products in this space tend to support the design criteria I was targeting.  The large Monitor/TV displays were too large for my use, and cost way to much.  The mobile displays (other than maybe the 10" realm) was too small to see things from across the room when mounted to a wall.  So targeting the Laptop displays put me in the 720p/1080p resolutions (I planned to go with 1080p for better pixel quality), need for eDP display output to the LCD, a GPU capable of outputting 1080p resolutions, and 12V voltage for the display.  After searching through availability, and various LCD comparison charts, I settled on starting with the Innolux N173HCE-E31, which is a 17.3" 1080p IPS LCD screen with a 2 lane EDP interface through an I-PEX 30 pin interface, and 6-bit color control, and was readily available on Amazon and Ebay

Now that the LCD was known, next to pick out was the CPU board.  First place I thought about was going with a Raspberry Pi, which has the power for high resolution displays, is extremely affordable, and has a huge community behind it.  Unfortunately, HDMI to eDP interfaces don't exist in 1 interface.  The only solution I found was to take HDMI->LVDS->eDP which is a hack in my mind, not a real solution.  Finding out this, I needed to find a CPU board with one of the following display output interfaces: eDP, LVDS, or MIPI DSI.  There exist ICs to convert LVDS or DSI to eDP so targeting the one IC approach, these were my options.  Most CPUs which support eDP natively are x86 based CPUs, which tend to be more expensive than ARM alternatives, so I started looking at ARM based SOM boards, such as the UDOO NEO, which runs an i.MX6 CPU.  My first prototype used this board with a cheap ebay HDMI to eDP adapter.  Unfortunately there were a few issues with this: low GPU performance (lag, only supports 720p resolutions), poor Android support.  The board I ended up using for this design is the Dragonboard 410c.  It uses a Qualcomm APQ8016E (Snapdragon 410) Quad core CPU running at 1.2 GHz, 1GB LPDDR3 RAM, 8GB on board eMMC for storage, 4 lane MIPI DSI (up to 1080p resolutions), and has updated Android/Linux device trees/builds, and only costs $100.  The other great thing about this board is its 96boards specification compliance.  This means that at a future point, I can upgrade to a more powerful or more up to date CPU later on.

With the CPU board having DSI display output, I wanted to find a display bridge IC which would convert DSI to eDP.  There aren't a whole lot of options in this space, but I did find the TI SN65DSI86 which does this exact function.  For proving this part out for use, I got my hands on the SN65DSI86EVM (evaluation module for this chip) and created an adapter board for the Dragonboard to bring the DSI interface to the evaluation board.  Doing this, I was able to connect the dragonboard directly to the LCD I bought without any HDMI interface or other odd adapter boards.  Using the evaluation module as my guide, I started work on the display adapter logic board.

The last item of the project that needed to be purchased was the touch screen glass overlay to be put on top of the LCD.  In this realm, the 2 main options are resistive or capacitive.  Most modern smart phones or touch screen devices in consumer electronics is capacitive.  Currently, there aren't a whole lot of off the shelf options for touch screen components.  Most of the glass or touch screen overlays are custom or require contacting manufacturers to get samples.  I ended up resorting to Alibaba, and inquiring about purchasing touch screens from a company called Yunlea.  They were super helpful, and had a 'standard' set of touch screen overlays, which I ordered their YL-173CE01 touch screen glass panel with their YL-3188 Touch Panel Controller board with USB interface.  This board is based on the EETI EXC3188 chip, which is supported natively by Android and Linux kernels, so no custom driver or software was needed to get the touch screen working with the other hardware being used in the design.

I hope some of this information helps others looking to create a smart device with display features.  Feel free to ask questions and I will go as in depth into the design process or reasons for selecting certain things, but didn't want to create a novel here.

My next log will go through the PCB design process used and considerations made when creating the logic board used in the design.  I am also close to finalizing the kernel modification to get the DSI bridge implemented in software.

Discussions