Ambient Temp/Humidity/LightLevel, TextLCD888 + colour TFTs

Any other Phidget projects you've done not related to the above subjects
Fresh meat
Posts: 3
Joined: Fri Aug 27, 2010 3:31 pm
Location: Gatineau, Quebec

Ambient Temp/Humidity/LightLevel, TextLCD888 + colour TFTs

Postby rallysjd » Sun Mar 08, 2015 1:37 pm

I've been using Phidgets for several years in some lab test equipment, with the TextLCD888 being the most useful due to the two line display to indicate equipment and process status. Over the last couple of years as time permitted, I've been creating some USB colour TFT displays powered by a 72MHz ARM Cortex-M3. The intent of these USB component boards is to complement the Phidget I/O kits.

Decaf1_Decaf2_TextLCD888_m.png (180.95 KiB) Viewed 2960 times

The image shows a test rig (a simple ambient sensor set) that demonstrates the TextLCD888 being controlled by a Windows app (written in PiXCL 11, not shown), and the sensors (temp/RH, light level and magnetic) being reported to the colour displays.

These display devices are called Decaf boards (... because they don't need Java) and appear to the host system as USB HID's. There's a comprehensive set of graphics draw commands for lines, circles, rectangles and text in multiple fonts. For example, a host app turns on all the TextLCD888 digital outputs (which turns on the yellow LEDs) and a single command to a Decaf board draw all six indicators.

Creating these boards
It was quite a learning exercise: here's these tiny inexpensive boards, how hard could it be? A LOT harder that you might think. There's ARM architecture, cross-compiler tool chains, hardware design, USB device firmware (HID, MSD, CDC), Real Time OS issues, USB and TCP/IP middleware, device drivers.

There's a lot of complex stuff in the above list, and my intent was to hide all this complexity away from the end user, so that all that's needed is to design the screen graphics as set of HID commands. The same PiXCL 11 DLL that controls the board is usable with C/C++/C#. The HID commands are now fully documented so it should be easy enough to run them under Linux, Mac and Android.

Updating Decaf Board Firmware
I have developed a complete set of utilities that allow the board firmware to be updated in about a minute. The boards have a USB core Device Firmware Update mode, so that USB HID, RTOS or other binaries are loaded directly over USB, with no additional special hardware.

Where are these boards going?

At present, they contain USB HID and board/display control firmware. I'm working on combining separately working HID and MSD (SD card) modes into a composite USB device.

I also have a working RTOS that boots in about 0.5s as well, but am still somewhat unclear how to reliably add support for USB to it. The intent is that the Decaf boards running the RTOS will appear the host as a composite HID (graphics and touch screen) and MSD (the built in microSD card) so that a Decaf board
a) can create/write/read files, and the host can do as well;
b) can create or update graphics on the fly, as well as via host commands.

This is being achieved by building a command subset of my PiXCL 11 language, called PiXCLe, into the board firmware, as an RTOS task. The app code (simulated on the Windows host, using PiXCL11) would be stored on the SD card. This would allow the board to run stand alone.

The existing boards use the 72MHz M3 chip and do USB Full-Speed (FS) only, but there are now faster M4 (up to 180MHz) and M7 (up to 300MHz) that have lots more memory to play with, and better USB implementations (High Speed and FS OTG) on chip.

You can find more details at

Constructive comments are requested and much appreciated: for example, how and where you would use a display like this with Phidget devices. Please contact me via this forum or from my website.

Return to “Other”

Who is online

Users browsing this forum: No registered users and 1 guest