1-wire lamp control

Submitted bypatrik onFri, 2005-07-15 19:36

Status: Fully working

This is a project which connect a Maxim/Dallas Semiconductor microlan to a computer. The goal is to let the computer check if there's daylight in the apartment, and if there isn't some bulbs will be turned on.


PC Interface - DS2480B

Relay circuit - 1 channel, DS2405

Relay circuit - 2 channels, DS2406

Testcircuit (which also measure light) - DS2450

Measure temperature - DS1820

Led-controller - DS2405 with Mos-Fet

Pressure sensor MPXA4115


Picture of DS2405&Mos-Fet with 10mm white led

DSS2450 4-input A/D with resistor and an LDR.

Placed in a window to measure if it's daylight or dark outside and thereby help the computer decide if the led's and lamps should be on or off.

DS2450 & LDR covered in schrinktube.

Another picture of DS2405&Mos-Fet with 10mm white led, even smaller this time!

The first script runs every hour and checks what time it is. If the current hour is equal to Ton, a zero is written to the DS2405 who then turns on the connected lamp. Later when the current hour equals Toff a one is sent to the 2405 and the lamp is turned off. This script is placed in /etc/cron.hourly.

HourNow=`date +'%H'`
if [ "$Ton" = "$HourNow" ]; then
echo 0 > /mnt/owfs/05.DC4F21000000/PIO
echo 0 > /mnt/owfs/05.231F14000000/PIO
if [ "$Toff" = "$HourNow" ]; then
echo 1 > /mnt/owfs/05.DC4F21000000/PIO
echo 1 > /mnt/owfs/05.231F14000000/PIO

Script #2:
This script reads the values from a 2450's A/D's and logs them to a file. For every read the hour of the read is logged.

HourNow=`date +'%H'`
echo $HourNow >> /tmp/lightlevel

echo -n A >> /tmp/lightlevel
cat /mnt/owfs/20.A4F901000000/volt.A >> /tmp/lightlevel
echo >> /tmp/lightlevel

echo -n B >> /tmp/lightlevel
cat /mnt/owfs/20.A4F901000000/volt.B >> /tmp/lightlevel
echo >> /tmp/lightlevel

echo -n C >> /tmp/lightlevel
cat /mnt/owfs/20.A4F901000000/volt.C >> /tmp/lightlevel
echo >> /tmp/lightlevel

echo -n D >> /tmp/lightlevel
cat /mnt/owfs/20.A4F901000000/volt.D >> /tmp/lightlevel
echo >> /tmp/lightlevel

PHP code
To do more advanced things it's easier to use a more powerful programminglanguage. I used command line PHP to enable some 1-wire devices depending on lightlevel and time of day:

1-wire PHP software

Maxim/Dallas Semiconductor
OWFS - One Wire FileSystem. Access the onewire devices through a virtual filesystem (For Linux).