I2C Demo Board Design

 

A mockup of the first prototype showing the size and locations of key components and plugs.

This project is inspired by the 8-bit computer of Ben Eater (https://eater.net/8bit/) along with the eccentric PCBs of electronics designers like Teennage Engineering and Bastl instruments. I would like to make a board that is didactic and pedagogical, that can reveal the inner workings of the microcontroller so that students can better understand how they work. I also want the board to be fun, and not dry like typical engineering demo boards. I plan to draw inspiration from the DIP universe of 1990’s through hole components.

Here are a couple of examples of typical demo boards that I found well conceived:

In the end there were so many issues with my initial I2C protoboards that I had added LEDs for each different error type with little notes describing the error in question. This experience also convinced me that it would help to have a dedicated I2C board for first-timers.

Here is the idea in Eagle form.

Mockup of possible component locations.

An information display that goes above the board and is automatically retractable.

Different ways of changing parameters, with jumpers or by attaching crocodile jumpers in different locations, for instance.

A fold out information card and testing different locations for the wires.

The original idea with data tables printed on the board itself.

How should the board stand-up?

An idea about how to incorperate printed information to help the student with reference data.

Figuring out how to minimize the number of extra and unneccessary cables. Here there is only one header per board. Also testing the 7 segment LED display.

Questioning the value of displaying information in bits and or in hex.

A prototype of the kind of information card that could accompany the PCB.

Information about the pertinent registers is shown.

Information about the pertinent bits is shown, but they are laid out in a more readable way.

This last example is a nice balance, it selects the pertinent registers to show but doesn’t give every single last piece of information. Now I have to find a way of relating to the actual components (should they be on the other side or in SMD on the top face?). Also, should the user be able to enter data into the TWDR in hardware? This requires a 8 pin DIP switch and then some way of communicating that the TWDR is either being loaded by the DIP switch or an actual reflection of the contents of the register. Adding a DIP increases the playfulness factor of the board but if it also adds confusion then I’d rather avoid it.