final project
  • concept
    • two people stand at opposite ends of a table, place their hands on the table and watch a visualization of their heartbeat on the table top. the visualization is an array of LEDs that light up when a pulse is detected from one end of the table; the pulse travels from one end of the table to the other, creating a playful link between the people on either end.

  • compromises
    • with time running out and lots left to be done, I had to make a lot of compromises when putting together this project. instead of visualizing heartbeat, I decided to settle for sensing heat. I chose to use a heat sensor instead because I thought it would be interesting (read: strange) to have people blow on opposite ends of a table to effect its visual appearance.

      however, one of the main problems I had was integrating the complete electronic system.

  • system
    • the main components in this project are the inputs (temperature sensors), a controller that processes the inputs and issues commands to the outputs, and the outputs themselves (rows of LEDs in parallel).

  • casing
    • I designed a box to contain the LEDs using some puzzle pieces. I used the puzzle pieces because I wasn't sure exactly what size I wanted the box to be, and thought it would be fun to experiment with different size boxes. If I had to do this again, though, I think I'd spend more time building the puzzle pieces in cardboard until I get the sizing right, and then moving on to the wood when I feel like I have a real sense of what the size of the box should be.

  • electronics
    • I designed 4 different types of circuit boards in cad.py. One was for the temperature input sensor, consisting only of a thermistor, resistor, and a 3-pin connection to another board that provided power, ground, and an additional pin for sensor output from the board.

      The second board is for the main controller; it hooks up an ATTiny45 to two temperature sensor inputs, a battery, and provides a line for communicating with the LED modules over serial.

      The third board drives the array of LEDs. It has an ATTiny45 to listen for data from the main controller, and uses that data to control the output of an RGB LED. The board is also connected to a set of LED boards, that add additional LEDs in parallel with the ones on the LED driver board (through the connector on the left edge of the PCB seen below). Each one of these boards drives 5 LEDs, so each LED in one row is the same color. In all there are 5 boards like this one, each with a unique software ID that it uses to determine its light output based on messages from the main controller, which it reads over serial.

      Unfortunately, the serial communication between the main controller and LED outputs didn't come together. Though the main controller appeared to be outputting serial, the LED driver didn't pick it up. When I tried to test the serial code with the computer, it was difficult because I hadn't made the board to accommodate communicating with the computer. I tried to fashion a cable that could use one of the existing ports to send data to the computer, but it didn't work -- I think because my cable was only one wire (for tx to the computer) and didn't have a shared ground reference with the computer.

      Anyway, here's what the chains of LEDs look like in the box:

  • musings and tips
    • the toughest part of this project was integrating the completed electronic system. I knew I would have a lot left to debug when I finally put the pieces together, but if I had to do the project over again I think I'd try to nail down the system again before I started mass-producing circuit boards. because there was so much to do for this project (machining-wise) I felt locked into a design too early on. the design of the individual components made it difficult to test their integration. while all worked separately -- the LEDs lit up, the oscilloscope showed that the serial communication and input sensors worked -- there was no easy way for me to test what was going wrong with the microcode.

      for future mas.863'ers, I definitely recommend putting a serial connector onto circuit boards even if you think you won't need one. it's a good way to check if your board is making correct calculations (or communicating properly with other boards/components) by sending data to a computer over serial.