Raspberry Pi Sensoren auslesen
Mit dem Raspberry Pi kann man ohne Probleme diverse Sensoren auslesen, hier ist eine kleine Sammlung davon.
Das GPIO Board
Header Pinout, top row:
Pin Number | Pin Name Rev1 | Pin Name Rev2 | Hardware Notes | Alt 0 Function | Other Alternative Functions |
P1-02 | 5V0 | 5V0 | Supply through input poly fuse | ||
P1-04 | 5V0 | 5V0 | Supply through input poly fuse | ||
P1-06 | GND | GND | |||
P1-08 | GPIO 14 | GPIO 14 | Boot to Alt 0 -> | UART0_TXD | ALT5 = UART1_TXD |
P1-10 | GPIO 15 | GPIO 15 | Boot to Alt 0 -> | UART0_RXD | ALT5 = UART1_RXD |
P1-12 | GPIO 18 | GPIO 18 | ALT4 SPI1_CE0_N ALT5 = PWM0 | ||
P1-14 | GND | GND | |||
P1-16 | GPIO23 | GPIO23 | ALT3 = SD1_CMD ALT4 = ARM_RTCK | ||
P1-18 | GPIO24 | GPIO24 | ALT3 = SD1_DATA0 ALT4 = ARM_TDO | ||
P1-20 | GND | GND | |||
P1-22 | GPIO25 | GPIO25 | ALT4 = ARM_TCK | ||
P1-24 | GPIO08 | GPIO08 | SPI0_CE0_N | ||
P1-26 | GPIO07 | GPIO07 | SPI0_CE1_N |
Header Pinout, bottom row:
Pin Number | Pin Name Rev1 | Pin Name Rev2 | Hardware Notes | Alt 0 Function | Other Alternative Functions |
P1-01 | 3.3 V | 3.3 V | 50 mA max (01 & 17) | ||
P1-03 | GPIO 0 | GPIO 2 | 1K8 pull up resistor | I2C0_SDA | I2C0_SDA / I2C1_SDA |
P1-05 | GPIO 1 | GPIO 3 | 1K8 pull up resistor | I2C0_SCL | I2C0_SCL / I2C1_SCL |
P1-07 | GPIO 4 | GPIO 4 | GPCLK0 | ||
P1-09 | GND | GND | |||
P1-11 | GPIO17 | GPIO17 | ALT3 = UART0_RTS, ALT5 = UART1_RTS | ||
P1-13 | GPIO21 | GPIO27 | PCM_DIN | ALT5 = GPCLK1 | |
P1-15 | GPIO22 | GPIO22 | ALT3 = SD1_CLK ALT4 = ARM_TRST | ||
P1-17 | 3.3 V | 3.3 V | 50 mA max (01 & 17) | ||
P1-19 | GPIO10 | GPIO10 | SPI0_MOSI | ||
P1-21 | GPIO9 | GPIO9 | SPI0_MISO | ||
P1-23 | GPIO11 | GPIO11 | SPI0_SCLK | ||
P1-25 | GND | GND |
Temperatur Sensor
Fertige Module
Es gibt bereits fertige Sensor Module, welche bei eBay für ca. $5 verfügbar sind - diese gibt es in verschiedenen Größen und Bauformen und besitzen drei Anschluss Pins:
- VCC (V3,3 / V5)
- Data
- Ground
-
Modul 1
-
Modul 2
-
Modul 3
DIY / Selbstbau
Alternativ zu den oben erwähnten fertigen Modulen, kann man die Sensor-Schaltung auch selbst basteln; hierzu wird neben dem Sensor (DS18B20) noch ein Widerstand (4,7k oder 10k) als Pullup benötigt. Die entsprechende Schaltung wird am folgenden Beispiel an einem Arduino verwendet - da jedoch die Schaltung identisch ist, kann diese auch am Pi an einem jeweiligen GPIO Pin verwendet werden:
-
DIY Schaltung
Anschließen des Temperatur Sensors
Um den Temperatur Sensor mit dem Raspberry Pi zu verbinden muss man lediglich die 3 Anschlüsse des Sensors mit dem Pi verbinden. Hierbei wird GROUND zu GND, 3V3 zu VCC und GPIO4 zu DQ verbunden.
Sensor Pin | Raspberry PI GPIO Pin |
---|---|
GND | Ground Pin 6 (rechts, 3ter von oben) |
VCC | 3V3 Pin 1 (links, erster von oben) |
DQ | GPIO4 Pin 7 (links, 4ter von oben) |
Als Verbindungskabel habe ich ein altes PC Gehäuse zu Mainboard Kabel verwendet und hier einfach die Adern samt Metal Hülse freigelegt und dann einfach mit den Pins verbunden.
Die folgenden Bilder sollten alles erklären.
-
Anschluss des Sensors am Pi
-
Gehäuse zu Mainboard Kabel
-
GPIO Board und Sensor
Auswerten
Nachdem nun alles verkabelt ist müssen die benötigten Module noch geladen werden.
modprobe w1-gpio
modprobe w1-therm
dann prüfen wir ob die Module auch wirklich geladen sind:
lsmod
Module Size Used by w1_therm 2705 0 w1_gpio 1283 0 wire 23530 2 w1_gpio,w1_therm cn 4649 1 wire snd_bcm2835 19889 0 snd_pcm 74834 1 snd_bcm2835 snd_seq 52536 0 snd_timer 19698 2 snd_seq,snd_pcm snd_seq_device 6300 1 snd_seq snd 52489 5 snd_seq_device,snd_timer,snd_seq,snd_pcm,snd_bcm2835 snd_page_alloc 4951 1 snd_pcm
damit die Module dann immer beim Start geladen werden muss man diese einfach in der modules
Datei eintragen:
/etc/modules
w1-gpio w1-therm
so, nun können wir schauen ob wir die Temperatur auslesen können:
cat /sys/bus/w1/devices/w1_bus_master1/28-000004118a7f/w1_slave
89 01 4b 46 7f ff 07 10 2d : crc=2d YES 89 01 4b 46 7f ff 07 10 2d t=24562
Der Temperaturwert "t=xxxxx" entspricht 1/1000 °C. Da wir diesen nun noch umrechnen wollen um einen Besser lesbaren Wert zu bekommen brauchen wir als erste nur den reinen T= Wert:
grep 't=' /sys/bus/w1/devices/w1_bus_master1/28-000004118a7f/w1_slave | awk -F't=' '{print $2}'
Und nun noch umrechnen. Da die Bash von sich aus keine Kommazahlen unterstützt installieren wir das kleine Tool bc
nach und Rechnen damit um:
aptitude install bc
echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/28-000004118a7f/w1_slave | awk -F't=' '{print $2}')/1000" | bc -l
Will man nur 2 Kommastellen oder weniger angezeigt bekommen, muss man einfach nur den scale
Wert anpassen (0,1,2,3.....)
Linksammlung
- Raspberry Pi BH1750 Helligkeitssensor
- Raspberry Pi TSL2561 Helligkeitssensor
- Raspberry Pi DHT22 Temperatur Sensor
- Raspberry Pi BME280 Luftdruck Sensor
- Raspberry Pi BMP280 Luftdruck Sensor
- Raspberry Pi BMP180 Luftdruck Sensor
- Raspberry Pi DS18B20 Temperatur Sensor
- Raspberry Pi BME680 Gas Sensor
- Raspberry Pi Temperatur Sensoren Vergleich
- Raspberry Pi Helligkeitssensoren Vergleich
Temperatur
- "raspberry pi ds18s20"
- rpi + dht22: http://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/overview
- dht22 +funk an rpi: http://harizanov.com/2012/09/interfacing-funky-to-raspberry-pi/ | http://harizanov.com/2012/09/measuring-humidity-and-temperature-with-dht22-and-funky/
- 1-wire beim rpi: http://www.element14.com/community/groups/raspberry-pi/blog/2012/08/08/raspberry-pi-speaks-1-wire-with-adafruits-occidentalis-image
GPIO
- http://elinux.org/RPi_Low-level_peripherals
- http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/temperature/
- http://hobbyelektronik.org/w/index.php/Raspberry_Pi_IO
- http://www.rn-wissen.de/index.php/Raspberry_PI:_GPIO
Dann hat man gpio als cmd