The I2C NavKey is a perfect solution to make a perfect HMI without using precious resources.

The I2CNavKey is a small board that includes a 7 functions joypad. The joypad has 4 directional keys plus a central button and a rotary ring. It is controllable with the I2C bus, and it’s possible to configure 16 different I2C addresses. The I2CNavKey has also 3 configurable GPIOs with the same footprint of RGB LED. This 3 GPIOs can be configured independently in 4 different way: input, output, PWM and analog input. Since the I2CNavKey is a I2C slave, it has a series of 8 bit registers where it’s possible to configure different parameters,it’s also possible to detect when the buttons are pressed or when the ring is rotated. It also has an open-drain output pin used as interrupt output. This pin is used to notify to the master when some event happens in the I2CNavKey, the source of interrupt can be customized. Last but not least, it has also 256 bytes of EEPROM.

PINI/O TypeFunction
GNDPowerGround reference for logic
VCCPowerPositive supply for logic
SDAI/OI2C Data
SCLII2C Clock
INTODOpen-drain interrupt output

The I2C NavKey is powered by the MCU PIC16F18345. Inside of this MCU, there is a specific firmware that takes care of the functionality of the I2C NavKey and also the I2C communication with the external world. The I2C NavKey has several registers where is’t possible to configure the board. E.g. detect when a key is pressed etc. All the functionalities are described in the datasheet.