El sensor que voy a usar es este:
Al hacer un lsusb se identifica como: 0c45:7402 Microdia TEMPerHUM Temperature & Humidity Sensor
Despues de mucho buscar encontré la forma de hacerlo funcionar. Toda la información está sacada de aquí. El problema viene que es una nueva versión (TEMPerHumM12V1.3) basada en otro chip.
Lo primero es instalar las dependencias:
sudo aptitude install libhidapi-hidraw0 libhidapi-libusb0 libudev-dev libusb-1.0.0-dev libfox-1.6-dev autoconf cmake libtool dh-autoreconf
Es posible que sobre alguna. Y si se usa otra distro que no sea Raspbian puede que falte algo.
Preparamos un directorio para clonar el git y compilar. Cambiamos a ese directorio y clonamos el repositorio:
sudo git clone git://github.com/edorfaus/TEMPered
Esto no nos vale directamente por que está preparado para otras versiones y modelos de sensores. Para poder usar el sensor tenemos que aplicar las correcciones que se detallan en este commit.
Hay que sustituir un archivo que modifican y añadir otros dos. Por comodidad dejo los aquí.
Ya solo nos queda compilar. Para ello seguimos las instrucciones proporcionadas en el propio proecto:
cd TEMPered
ccmake .
make
Con esto ya lo tenemos todo listo, cambiamos al directorio utils y ejecutamos:
sudo ./tempered
Nos aparecerá la informacion del sensor:
/dev/hidraw1 0: temperature 35.99 °C, relative humidity 30.1%, dew point 15.7 °C
Hasta aquí todo bien. Pero como todo en esta vida, el programa tiene un par de fallos:
- A veces devuelve la información de la lectura anterior, por lo que solo nos podremos fiar de la segunda lectura.
- Otras veces no puede leerse la información del sensor, devolviendo «Could not open device: Read of data from the sensor failed: (null)». La solución es volver a repetir la lectura.
Obviamente la solución mas elegante no es repetir la lectura, sino que sería modificar el programa para evitar esos fallos, pero no se C, así que esa solución se la dejo a quién se anime.
Deja una respuesta