Peabody Overall Report

Peabody project involves making a physical version of Peabody’ alternative timeline representation. The main components will include 30 NeoPixel strips, Arduino Mega microcontroller, and some kind of touch sensors.

The project can be subdivided into four parts: crafting the actual board that would hold everything together, making neopixels work, making human intractable cells around the pixels, and making the software to run the program.


This part of the projects focuses on uniting every physical component and making the actual grid. The grid can be from hard material making it unable to be bent, or it can be from some kind of fabric making it more like a carpet that can be folded. The hard exterior will allow for a more stable design as all the components have less chances to shift and disconnect. But this approach will be further from the original that was made on a rug. It also will be harder to transport and will be more bulky.  The bendable exterior will allow for the grid to fold, resembling the original design, but it will be more challenging to implement.


Neopixels are going to be used to light up the cells, so the task for this part will be connecting them to a microcontroller. There will be 30 strips of neopixels, with 60 pixels on each strip, with only 30 pixels used. A 1000 microfarad or higher capacitor and a 470 ohms resistor need to be used to protect neopixel strips. Because of quantity of pixels used, an external power supply will be necessary. It needs to be at most 5 V DC and with 900 total pixels running, around 20 – 54 Amps. Since most likely the LEDs will not be all powered to the maximum white light brightness, two 10 Amp power supplies should be sufficient. The strips will use 30 digital pins on the Arduino Mega, but it is possible to join some strips together to control them from a single port.

Touch sensors/buttons

In order to make physical interaction with each cell possible, touch sensors or buttons need to be used. The challenge is that there will be 900 individual cells, and it is impractical to connect them all to a microcontroller. So the touch sensors/buttons need to be connected in strips of around 30 units and a microcontroller needs to differentiate between the 30 of them. For that analog pins need to be used. There are 16 analog pins and 15 PNW pins that can simulate analog input through the use of an Arduino library.

There are several options:

  • Pure button – A button can be placed in the cell. The benefit of this approach is that it is very reliable. It will give a clear reading when pressed. The con is that instead of the whole cell the user can only interact with one button. It will also be very challenging to tell 30 buttons apart.


  • Felt between two conductive materials – This can simulate a button and it can cover the entirety of the cell. The con is that it is less reliable than a button.


  • Pressure sensor – Allows once again to cover all of the cell. It also allows for various readings, not just HIGH/LOW. This can be useful in differentiating between different pressure sensors.


  • Capacitive touch – Also allows for most of the cell to be covered, and by changing signals from individual sensors with resistors, it might be possible to differentiate between them by using only one analog input. The con is that signal ranges of can overlap and produce inaccurate readings.


Another way that 900 touch sensors can be represented is through a 30×30 grid. Lines going one direction, say horizontally, will have high signal and the other lines going vertically will have low signal. By using some touch detection, one point on a grid will have two interacting lines joined together. Then the microcontroller will be able to identify the coordinate of that touch sensor. The downside of this method is the pin requirement, 60 pins in total. But by using two microcontrollers, this will not be an issue.


The software will be fairly simple. By pressing a cell, the pixel of that cell should light up. There can be several options for choosing a color of the pixel though.

  • One of them is to use an additional button to cycle through the colors.

This option allows for a standalone device that will not be dependent on the computer. The con is that there will need to be some way to indicate the current color. Perhaps one of the unused pixels or and additional diode(s) can be used.


  • The other option is to use the select the color. In that case some connection between the device and the computer needs exist. This can be done through cable or Bluetooth. The biggest con of this approach is that the grid cannot be used without a computer.


Order of project parts

First priority is to make all the 30 NeoPixel strips and touch sensors working.  The strips have been tested to work, but it is necessary to test all 30 strips at the same time. To see how power adaptor can handle it. The more challenging part is getting 30 touch sensors made such that they can be differentiated by microcontroller through one input pin. Those two can be done mostly at the same time.

Then once both NeoPixels and touch sensors work, they can all be joined together and the exterior can be made. At the same time it is possible to write the software code for controlling the strips and the sensors.