1-wire lamp control

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.

Schematics:

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

Pictures:


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!

Scripts:
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.

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

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.

#!/bin/bash
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

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

AttachmentSize
DS2405-relay.jpg13.48 KB
DS1820.jpg9.95 KB
DS2406.jpg31.82 KB
pc interface 5V.jpg35.47 KB
pc interface.jpg40.71 KB
Testcircuit DS2450.jpg24.32 KB
DSC00454.JPG36.91 KB
ds2405-mosfet.jpg10.35 KB
DSC00485.JPG18.58 KB
DSC00488.JPG48.92 KB
DSC00490.JPG57.98 KB
1wphp.zip8.89 KB