3bdd1ae659
Change-Id: Ia71168e394a7b260019e74973db6c9d75d3d4482
67 lines
2.2 KiB
Text
67 lines
2.2 KiB
Text
SHT21 Driver (Relative Humidity and Temperature Sensor)
|
|
=======================================================
|
|
|
|
Overview
|
|
--------
|
|
|
|
This is the driver for the relative humidity and temperature sensor commonly
|
|
found on the WeatherCape expansion board for the BeagleBone.
|
|
|
|
Interface
|
|
---------
|
|
|
|
This driver implements the character device interface. It supports reading
|
|
through /dev/sht21b{1,3}s40. When read from, it returns a string containing
|
|
a data label, a colon, and the sensor value.
|
|
|
|
Example output of `cat /dev/sht21b3s40`:
|
|
|
|
TEMPERATURE : 35.014
|
|
HUMIDITY : 25.181
|
|
|
|
Temperature is expressed in Celsius (a.k.a. centigrade). Valid values are
|
|
-40.000 to 125.000.
|
|
|
|
Humidity is expressed as a percentage. Valid values are 0.000 to 100.000.
|
|
|
|
Limitations
|
|
-----------
|
|
|
|
Intense activity causes the chip to heat up, affecting the temperature reading.
|
|
In order to prevent the chip from self-heating more than 0.1C, the sensor
|
|
values will only be read once per second. Subsequent reads within the same
|
|
second will return cached temperature and humidity values.
|
|
|
|
The measurement resolution is configurable in the chip, but this driver just
|
|
uses the default maximum resolutions (12-bit for Humidity, 14-bit for
|
|
temperature). It could probably be implemented with an ioctl() or by passing
|
|
an argument via the service command, but it doesn't seem too useful at this
|
|
time. See the data sheet for the trade-off between faster conversion time and
|
|
lower resolution.
|
|
|
|
In testing, the temperature sensor reported a value several degrees higher
|
|
than an indoor thermometer placed nearby. It doesn't appear to be a bug in the
|
|
driver as the Linux driver reports similar temperature. Additionally, the
|
|
BMP085 temperature sensor on the same cape reports a temperature about 2
|
|
degrees lower than the SHT21. This could be due to heat produced by the
|
|
BeagleBone heating the cape slightly or maybe just a bad chip on the test
|
|
board.
|
|
|
|
Testing the Code
|
|
----------------
|
|
|
|
The driver should have been started by a script in /etc/rc.capes/ If not,
|
|
this is how you start up an instance:
|
|
|
|
cd /dev && MAKEDEV sht21b3s40
|
|
/bin/service up /usr/sbin/sht21 -label sht21.3.40 -dev /dev/sht21b3s40 \
|
|
-args 'bus=3 address=0x40'
|
|
|
|
Getting the sensor value:
|
|
|
|
cat /dev/sht21b3s40
|
|
|
|
Killing an instance:
|
|
|
|
/bin/service down sht21.3.40
|
|
|