====== Temperatur Senor DS18B20 ======
DS18B20
see [[http://www.pihome.eu/2017/10/11/ds18b20-temperature-sensor-with-raspberry-pi/]]
see [[http://www.pihome.eu/2018/02/15/ds18b20-temperature-sensor-to-mysql-mariadb-database/]]
===== Prepare Pi =====
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build
==== Test WiringPi ====
gpio -v
gpio readall
===== Init =====
load driver
sudo vi /boot/config.txt
#add line
dtoverlay=w1-gpio
After Login
sudo modprobe w1-gpio
sudo modprobe w1_therm
==== Read sensor ====
ls -l /sys/bus/w1/devices/
===== Sensoren ======
==== DS18B20 ====
=== Wasserdicht ===
Anschlüsse: Schwarz = GND, Rot = VCC, Gelb = Data
[[http://192.168.1.21/dokuwiki/lib/exe/fetch.php?media=ds18b20_wasserfest_beschreibung_und_anschluesse.pdf]]
{{:ds20b18_anschluss.png?nolink&500|}}
{{::ds18b20_pins.jpg?nolink&300|}}
Beschreibung siehe DS18B20 Wasserdicht und Beschreibung
==== Viele verschiedene Sensoren ====
Gute Überblick [[http://www.mikrocontroller.net/articles/Feuchtesensor]]
Adafruit-Raspberry-Pi-Python-Code [[https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]]
==== SHT3x SHTC1 ====
[[https://www.14core.com/wiring-sensiron-shtxx-temperature-sensor-w-d-python/]]
==== DHT22 ====
[[http://www.raspberrypi.org/forums/viewtopic.php?f=37&t=71336]]
==== DHT11 ====
{{:dht11_details.pdf|}}
[[http://www.geeetech.com/wiki/index.php/Electric_thermometer_by_using_DHT11_sensor_module]]
Kalibrierung
| Sensor# | Feutigkeit |Temperatur | Id |
|1 |34 | 28| |
|2 |34 | 24| |
|3 |35 | 24| |
|4 |34 | 24| |
|5 |34 | 25| |
|6 |35 | 26| |
|7 |fehlerhaft| ablöten|
# /etc/modules
w1-gpio pullup=1
w1-therm
# /boot/config.txt
device_tree=
#dtoverlay=w1-gpio
==== python code for dht11 sensor====
see [[http://www.raspberrypi.org/forums/viewtopic.php?t=69427&p=505235]]
===== use Adafruit DHT =====
Install
wget http://goo.gl/oadpl -O Adafruit_DHT
sudo cp Adafruit_DHT /usr/bin/
Run
General call sudo Adafruit_DHT {11|12} {gpio}
sudo Adafruit_DHT 11 4
expected output like
Using pin #17Data (40): 0x28 0x0 0x18 0x0 0x40
Temp = 24 *C, Hum = 40 %
===== use own code ======
import RPi.GPIO as GPIO
import time
def bin2dec(string_num):
return str(int(string_num, 2))
data = []
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.OUT)
GPIO.output(4,GPIO.HIGH)
time.sleep(0.025)
GPIO.output(4,GPIO.LOW)
time.sleep(0.02)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
for i in range(0,500):
data.append(GPIO.input(4))
bit_count = 0
tmp = 0
count = 0
HumidityBit = ""
TemperatureBit = ""
crc = ""
try:
while data[count] == 1:
tmp = 1
count = count + 1
for i in range(0, 32):
bit_count = 0
while data[count] == 0:
tmp = 1
count = count + 1
while data[count] == 1:
bit_count = bit_count + 1
count = count + 1
if bit_count > 3:
if i>=0 and i<8:
HumidityBit = HumidityBit + "1"
if i>=16 and i<24:
TemperatureBit = TemperatureBit + "1"
else:
if i>=0 and i<8:
HumidityBit = HumidityBit + "0"
if i>=16 and i<24:
TemperatureBit = TemperatureBit + "0"
except:
print "ERR_RANGE"
exit(0)
try:
for i in range(0, 8):
bit_count = 0
while data[count] == 0:
tmp = 1
count = count + 1
while data[count] == 1:
bit_count = bit_count + 1
count = count + 1
if bit_count > 3:
crc = crc + "1"
else:
crc = crc + "0"
except:
print "ERR_RANGE"
exit(0)
Humidity = bin2dec(HumidityBit)
Temperature = bin2dec(TemperatureBit)
if int(Humidity) + int(Temperature) - int(bin2dec(crc)) == 0:
print Humidity
print Temperature
else:
print "ERR_CRC"