This library allows an Arduino board with USB capabilities and connected LCD display to act as a HID-compliant Auxiliary Display to the host computer, which can be used for displaying any system output such as CPU/GPU temperature, fan speed, used memory or any other information.
This project implements Auxiliary Display Page (0x14) of the HID Usage Table for USB specification. For more information please read about USB HID protocol.
- Leonardo
- (Pro)Micro
- 1602A (Monochrome LCD 16x2)
- 2004A (Monochrome LCD 20x4)
- 2004A I2C (Monochrome LCD 20x4 with I2C module)
The overall architecture of the solution is represented on the image below:
The solution is consisted of 2 parts - the HID-compliant LCD display (this project) and the host. The host part is implemented on top of the HIDAPI library and contains the auxdisplay service and the HIDLCD driver.
The architecture of the host can vary depending on your project requirements but should be in compliance with the USB HID protocol as defined in the USB HID Usage Table for Auxiliary displays (0x14).
Setup is very simple. Just clone this repository to Arduino libraries, then upload the .INO sketch from the /examples folder, which corresponds to your LCD display model (1602A.ino, for example). Once upload is completed successfully you will be able to print textual information from your host to the LCD display, using HIDLCD API. You will also see the display as a HID-compliant device in your system
Most popular operating systems do not provide a standard way of connecting HID-compliant displays so additional drivers and software will have to be deployed on your host to enable the output to the display:
- HIDAPI library - the low-level library implementing HID protocol
- HIDLCD library - the driver of the HID-compliant LCD.
- AuxDisplay service - the service providing a simple way to post textual data to the HID-compliant LCD display, including output of system shell commands
Please refer to the README pages of these projects for pre-requisites and installation instructions.