A Temp Setback

The problems with temperature are only temporary

This week the goal was to connect two or more microcontrollers and get them to communicate with each other. I decided to go with the wired route, as that seemed somewhat more reliable than the wireless route. I based the design of my boards on Neil's example for the hello.bus series of microcontrollers. Here are the designs for my boards and the associated traces.

Bridge schematic
Bridge traces
Node schematic
Node traces

When I went to mill the boards, due to the sacrificial layer being too ragged and my not using enough tape, there wasn't enough surface area to hold the circuit board firmly. As a result, halfway through the milling process, the board started to wiggle and came loose. I immediately stopped the milling and raised the bit. That particular trace was ruined, but I was able to salvage the rest of the board and mill the remainging two boards on the same stock. Milling the outlines and stuffing the board was largely uneventful, with one notable exception. I was too antsy in the beginning, so when attempting to put the ATtiny 45 onto a solder pad, my hand was too shaky and I managed to smear solder onto multiple pins and connect them. I ended up using the copper braid two times to finally solder it on. The first board (node) took an hour, but after I calmed myself, the second board (bridge) took only 20 minutes, even though it had more componenets.

Board that was loose and wiggled during milling
Final bridge
Final node

I double checked that the soldering contacts were good with a multimeter and uploaded Neil's example code. It took me a while to figure out that you had to change the node number and program each board individually, but I managed to get it to replicate Neil's series of asynchronous buses. At this point, Rob suggested that I try to modify the code so that instead of each board giving me the the number of its node, it would tell me its ambient temperature (using the temperature sensor embedded in the ATtiny45). I spent 4 hours looking at the datasheet, viewing online examples, and Neil's previous examples to try to understand the system. An example written using Arduino for the ATMega32u4 provided a good starting point. I found the correct ADMUX values and set them using Neil's example code. But due to the way that term.py was set up, I couldn't quite get it to show up on the terminal.

I was just at the point of giving up when Julia suggested that I try doing the serial computation on the side of the computer. This way, I only needed to read in the two bytes of high and low data for the temperature, and compute it like how I did using a .py file. Will O. also helped explain Neil's hello.txrx.45.py file so that I could send the serial directly to the computer. It would ignore the other junk until my high and low values lined up. Then it could turn my 16bit integer into a reading in Kelvin. Unfortunately, it doesn't quite work yet. But at each board is able to send its information when called. I will be working out the kinks in the next week.

My .c file, modified from Neil's to measure temperature. Here's the makefile.

I was able to communicate between 2 boards on my final project, athough it isn't using serial.

Special thanks to Richard, Will O., and Julia for their help this week!