Long time ago I've started creating a small extension board for the RaspberryPI to get some physical world into hacking.
Board installed and running on the PI.
The first iteration was on a bread board with some wiring, then for the next iteration I took a stripe PCB and wired it there. Worked but was not pretty:
Anyway, as the concept worked out, I decided I need some printed circuits. I played around with some options, but nothing was really cool for hobbyists (and I did not want to manufacture them my self with all the chemicals needed). And then I found Fritzing, which was exactly right.
Not only does Fritzing produce boards, but it also a nice graphical editor application that can be used to create a schematic, assign parts from a large part library, (auto) route the schematic and send the result to production
Fritzing editor with routed PCB in both side view
After I created the layout etc. I sent the design to the Fritzing fab and got by PCBs back after around a week of round trip time.
Yesterday I now sat down with the PCB, some needed parts and my soldering iron and assembled the parts
The parts
Low profile parts soldered in
Assembled
In the last image there was still the thermo sensor missing, as well as the 4th LED.
Now when that board is put on to the extension header of the PI (inner row, that is closer to the CPU, the following little shell script will light all LEDs and then display the current temperature every second
#!/bin/sh
set -x
cd /sys/class/gpio
for i in 10 22 27
do
echo $i > export
sleep 5
echo out > gpio$i/direction
sleep 5
echo 1 > gpio$i/value
done
cd /sys/bus/w1/devices/10-*
while true
do
cat w1_slave | grep t=
sleep 60
done
There is one line that may need tailoring depending on the variant of DS1820 thermometer chip you have
cd /sys/bus/w1/devices/10-*
One thing where I am not yet sure is if the DS1820 actually needs the phantom power. In an older experiment with the chip, I did not connect pin 3 at all. I think this additional power may even heat the thermometer chip, as the values that I currently get a are some 5-6 degrees too high.
To read the state of the push button you can use this script
cd /sys/class/gpio
echo 9 > export
cd gpio9
while true ; do cat value; done
If you are interested about more details of the board, you can look at this Fritzing page, where I've uploaded the .fzz file.
And if you are using RHQ, you can look at this agent plugin to use the LEDs and the thermometer chip from within RHQ.