The circuit schematic and the PCB design are ready and available through the project's github repository.
Beside the (obvious) LCD, I've included some neat features in the unit:
- Full support for RTS/CTS lines - this is important for those who are using the Arduino bootloader.
- Dual drive - The unit supports both RS-232 signaling levels and flexible logic levels - from 5V down to 1.6V. This range covers all the development boards I'm familiar with directly, without additional level shifters or special purpose adapters. The xser unit will switch to the logic level signaling as soon as the target VCC is connected.
- Pushbutton - will be later used to implement functions such as auto baud detection and direct information retrieval (baud rate, drive type, etc.)
|PCB Front Side|
|PCB Back Side|
The processor drives the LCD directly (taking most of its I/O pins) and its UART pins are connected to both drivers - a MAX3222 for RS-232 level signaling and a pair of TI SN74LVC2T45 level shifters that can accept any signaling level from 1.6V up to 5V.
The circuit can use only one of the driving method at any given time. When an external target voltage is applied to the power pin in J2, the RS-232 driver is shut down allowing the level shifter to drive the signal into the controller. When no power is connected to that pin, the MAX3222 operates normally and receives signal in RS-232 levels.
The PCB measures approximately 50x35mm, enabling it to be produced in some cheap manufacturing services that restrict the size to 50x50mm.