# vim:sw=8:ts=8:si:et

This is the software for the tuxgraphics.org
ethernet remote device with a local sensirion 
sht11 sensor (humidity + temperature) and
an outdoor ds18s20 temperature sensor.

No additional external components are needed (not even a resistor). 

See http://tuxgraphics.org/electronics/

Copyright of most software and all diagrams: Guido Socher

License for the webserver software: GPL V2
See http://www.gnu.org/licenses/gpl.html
---------------------------------------------------------------------------
Sensor connection

SHT11 sensor:
Sensor GND --- GND  (available on the digital IO port of the web-server board)
Sensor Vcc --- 3.3V (available on the digital IO port of the web-server board)
Sensor SCK  --- PB0 (digital IO port)
Sensor Data --- PD0 (digital IO port)

DS18S20 sensor:
Sensor GND --- GND  (available on the digital IO port of the web-server board)
Sensor Data --- PD6 (digital IO port)
Sensor Vcc --- 3.3V (available on the digital IO port of the web-server board)

The length of the cable bewteen sht11 sensor and ethernet board should be
0.6m (2foot) or less. If you add a 100nF capacitory at the sensor between 
Vcc and GND then you can extend the cable lenght a bit (max 2m).

The length of the cable bewteen ds18s20 sensor and ethernet board
can easily be 10m (33foot).

---------------------------------------------------------------------------

 All parts needed to build this AVR ethernet solution can be ordered from 
 http://shop.tuxgraphics.org/

!! READ THIS FIRST !!
---------------------
! Edit the file main.c and change the 2 lines:
! static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x29};
! static uint8_t myip[4] = {10,0,0,29};

For the first device you build you will not need to change the mymac line.
But you will probably need to change the IP address (myip). It must be a
free address from the address range in your home network.

Use an IP address in the same network as you DSL router.

Example: you wlan router might have 192.168.1.1, your PC might have
192.168.1.2. This means you could e.g use 192.168.1.10 and leave some
room for more PCs. 

Edit the beginning of the make file. And adjust those lines according to the
CPU you use (atmega168 or atmega328p):

MCU=atmega168
DUDECPUTYPE=m168
or
MCU=atmega328p
DUDECPUTYPE=m328

To compile the final software use the command:
make

Note: windows users may use and modify the supplied win_cmp.bat to setup the
environment correctly.

The above command will compile the following hex file:
main.hex 

The command
make load

The "make load" command will run something like: 
   avrdude -p m168 -c stk500v2 -e -U flash:w:main.hex

Note: your programmer might interfer with the enc28j60! If you use
an avrusb500 then you can normally leave the cable on. For all other 
programmers it is saver to remove the programmer cable and power down/up 
the ethernet board. This is because the SPI interface is used for 
loading of the software and communication to the enc28j60.

To see a list of all possible build targets run the command:
make help

Selecting the right clock source
--------------------------------
Tuxgraphics hardware sold as of march 2007 is prepared to use the clock
signal from the enc28j60. To use this you need to change the 
low fuse byte once from 0x62 to 0x60:

avrdude -p m168 -c stk500v2 -u -v -U lfuse:w:0x60:m
or
avrdude -p m328 -c stk500v2 -u -v -U lfuse:w:0x60:m

or just type in your Linux shell:
make fuse

After programming the fuse settings of an atmega168 should be:
 low fuse:  0x60
 high fuse: 0xdf
 ext. fuse: 0x01

For the atmega328p the hfuse and efuse bytes look slightly different.
The idea is however the same. Just change the lfuse from factory default
to 0x60. The fuse settings of the atmega328 are after programming:
 lfuse reads as 0x60
 hfuse reads as 0xD9
 efuse reads as 0x07


Compilation on non-Unix systems
-------------------------------
Please use the provided Makefile  !!!

It will also work under Windows except for the loading
of the software. That is: compiling will work but not 
"make load". Use then whatever tools and commands to download
the resuting .hex file into the micrcontroller
Do not forget to adjust the fuese (see above).

Take also a look at the supplied win_cmp.bat file. This bat script
might be needed to set the environment correctly.

Using the board to measure temperature and humidity
---------------------------------------------------
Point your web browser to
http://10.0.0.29   (or what ever IP address you have given your hardware)

You should get a web page like this:

________________________________________
[switch] [cfg] [graph] [refresh]

Current conditions

Indoor
temp.    : 22.3'C [72'F]
humidity : 47%
dew point: 9.8'C [49'F]

Outdoor
temp.    : 8.6'C [47'F]
________________________________________
(c)tuxgraphics

Revision history
----------------
2009-10-25: version 3.4 -- first public version. Based on eth_rem_dev_sensirion-3.3.tar.gz