Et fornuftig start på at arbejde med en raspberry pi GPIO pins til at hentet data fra forskellige enheder kunne f.eks. være at hente fugtighed og temperatur fra en DHT 11 Chip enhed.
Færdige DHT 11 kredsløb købes for 10 - 15 kr. på ebay, såfremt man kan vente 3 - 5 uger på leverancen.
Disse kreds løb har 3 ben som skal forbindes til GPIO på Raspberry PI.
For at blot komme i gang, har jeg valgt at benytte nogle færdig kode på fra nettet, Adafruit_DHT binær file som tager 2 parametre
Adafruit_DHT findes her:
https://raw.github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/master/Adafruit_DHT_Driver/Adafruit_DHT
Adafruit_DHT 11 4 som jeg køre, beskriver at det er en DHT 11 enhed der aflæses og den sidder på GPIO port 4
Nogle gang oplever man at timeningen for at henre fra DHT 11 enheden ikke er på plads, hvorefter at første læsning ikke henter data korrekt, køre man kommandoen en gang til før man en fin læsning.
Eksemple på manglende data.
sudo Adafruit_DHT 11 4
Using pin #4
Data (39): 0x56 0x0 0x32 0x0 0x44
et sekundt efter en hentning med korrekt data
sudo Adafruit_DHT 11 4
Using pin #4
Data (40): 0x2c 0x0 0x19 0x0 0x45
Temp = 25 *C, Hum = 44 %
Da jeg gerne vil have mine data ud i en graf, bliver jeg nød til at "omgås" dette ved at pakken hentningen ind i et lille script som sikre at jeg får hentet data ud, endvidere "fjerne" scriptet også unødig tekst, sådan data er lige klart til at blive leveret videre til MRTG eller RDDTool som så danner nogle fine grafer.
# Adafruit_DHT 11 4
sensor="0"
while [ $sensor -eq "0" ]; do
Command=`Adafruit_DHT 11 4 | grep Temp`
if [ -n "$Command" ]; then
echo $Command | sed -e 's/,/\n/g' | sed 's/[^0-9]*//g'
sensor="1"
else
sensor="0"
fi
done
Ovenstående kan med sikkerhed gøres bedre hurtigere og mere effitivt i både bash samt ved blot selv at kode den smule "C" der skal til, men dette var dog ikke formålet med dette lille projekt, blot at få hentet noget data og styret nogle porte.