i2C Programmable Keyboard Multiplexer

Design Goal:  Build a device that is capable of emulating several keyboards, and is under the control of a central device that decides which keyboards to send data to.

Purpose:  This would be useful for a test environment that simulates the network traffic generated by software running on several clients stationed along an assembly line.  Which such a device, software could be tested before it is released into a live production environment.

  1.  The master controller reads records from a file and
  2. Based on an address contained in the record, it sends data to one of seven keyboards just as if people were typing it.
  3. The keyboard data is written into whatever application is open
  4. The applications run simultaneously on all seven PC’s, just as it will in production.

In this way, a very realistic system test of a networked application can be performed.

 

Block diagram illustrating key components of i2C Keyboard.
Block diagram illustrating key components of i2C Keyboard.

Seven controllers are keyboard inputs into seven different PCs, all under the control of a master controller.

One example of how it can be used is to simulate a factory line, where client PC’s are stationed at strategic points to capture important information about what is happening at that station.

An example of a test layout. This test layout simulates the clients along a manufacturing line.
An example of a test layout. This test layout simulates the clients along a manufacturing line.

 

The i2C keyboard uses the industry standard i2C BUS to address a maximum of 255 individual devices.   My design only calls for 7, but by daisy-chaining my board, you can add many more.

Layout of the i2C keyboard. This design supports up to seven independent keyboards. Additional keyboards can be added by daisy-chaining additional boards.
Layout of the i2C keyboard. This design supports up to seven independent keyboards. Additional keyboards can be added by daisy-chaining additional boards.

Each keyboard controller is assigned a unique address by setting a dip-switch.

 

Each keyboard is independently addressable by a dip switch. Although this design supports only 16 keyboards, by adding additional bits to the dip switch, up to 255 keyboards could be supported.
Each keyboard is independently addressable by a dip switch. Although this design supports only 16 keyboards, by adding additional bits to the dip switch, up to 255 keyboards could be supported.

 

The test sequence is generated by adding rows to a text file on any standard PC, then sending the rows to the Master controller.  The master controller decodes the text data, and sends the data to the appropriate controller, which receives it, and outputs the text via the keyboard input.  To the receiving PC, the data appears to be coming from a keyboard.

 

By ordering the rows in the text file, the tester can sequence the clients as desired.
By ordering the rows in the text file, the tester can sequence the clients as desired.

 

The i2C Keyboard simulator is ideal for performing functional or system tests under controlled laboratory circumstances.   In this way, software can be fully tested before it is released into production.