Skip to content

UX Module

Morten Hattesen edited this page Dec 18, 2022 · 4 revisions

Overall design choices and resources

This page captures design choices, design resources and links to concrete designs. Components and technologies are chosen to provide a low cost UX module that can be manufactured in high volume using automated assembly techniques.

All module designs shall include these components:

  • A display, typically Pixel based OLED, character based LCD, pixel based LCD, pixel based eInk
  • One or more input devices, typically button(s), joystick or Rotary Encoders
  • A buzzer/speaker

It should be possible to omit one or more of the standard components by not populating the components and supporting components during assembly. The driver library should auto-detect the absence of components without requiring changes. Driver software may be optimized for size by actively disabling features using predefined preprocessor macros such as: DISABLE_SPEAKER, DISABLE_ROTARY_ENCODER

Common design choices

  • A single PCB that can be easily integrated into a microcontroller based product.
  • The module can be connected to the host board using a 4/5 pin, 0.1" pitch pin header which allows direct soldering or plug-in via a pin header socket.
  • The module can be fastened/stabilized via 4 mounting holes in the PCB – one in each corner.
  • I2C interface will be used for communication between micro controller and display/input devices.
  • H/W Interface (0.1" pitch pin header)
    1. GND
    2. VDD (Voltage supply, typically 3-3.3V)
    3. SCL (I2C clock)
    4. SDA (I2C data)
    5. INT (Interrupt for keypress capture - optional)
    6. SPK (connected to a buzzer/speaker via a driver MOSFET)
    7. VDIS? (Display voltage supply, typically 6.5 - 9V) Can be omitted if the display module or UX module contains a boost converter)

Output (Displays)

Displays can be either a display with a display controller and a flex-PCB cable that can be soldered onto the UX Module, or be a display module with a PCB holding the display, interface circuitry (voltage regulater etc) and a 0.1" pin header for host connection.

Input (Switches)

  • Discrete tactile switches in Up, Down, Left, Right, OK, Cancel pattern
  • Joystick Digital X, Y, Push
  • Rotary Encoder Left/Right/Push via A, B, Switch pins

Other Components

SMD components will be used, where possible, for automated manufacturing/assembly.

Components should be chosen for high worldwide availability and must have comprehensive design resources (datasheets, 3D design models, SPICE model) and must not be end-of-life.

I2C port expander for reading swiches

PCB

Schematic diagrams and PCB will be designed using KiCAD 6 (transitioning to 7)

Drivers, API

C++ firmware drivers for display and inputs will be available as part of the module.

MCU and architecture variants is supported via an interface header file.

An interface header file for Arduino API will also be available (requires arduino.hand its dependencies to be available on the include path)