En un artículo anterior se describió el hardware. En este artículo nos centraremos en el programa que se ejecutará en el Arduino, también llamado firmware.

El programa de Arduino que utilizaremos para obtener la medición de temperatura y humedad del sensor SHT15 proporcionará un sencillo interface a través del puerto serie. Dicho programa está basado en el código de Hobby robotics, aunque ha sido fuertemente modificado para adaptarse a nuestras necesidades.

En el principio del programa se definen las constantes que representan a cada uno de los comandos que utilizaremos del sensor, así como a los pines a los que están conectadas las líneas DATA y SCK del sensor. La función shiftIn nos permite leer un numero arbitrario de bits del sensor.

Sensor de humedad y temperatura con arduino y SHT15 - constantes y helpers

La función sendCommand contiene toda la lógica que envía un comando al sensor SHT15 siguiendo el protocolo descrito en el artículo anterior.

Sensor de humedad y temperatura con arduino y SHT15 - envío de comandos

Después de enviar un comando es necesario esperar unas cuantas decenas de milisegundos a que se realice la medida. Una vez que la medida se ha completado, el sensor avisará poniendo la línea DATA a 0. El esperar el resultado de la medida, es el objetivo de la siguiente función.

Sensor de humedad y temperatura con arduino y SHT15 - espera de resultados

Por último, la función getResult obtiene el resultado de la medida del sensor siguiendo el protocolo descrito en el artículo anterior. Dicha medida se obtiene como un entero de 16 bits que será necesario procesar para obtener la medida en las unidades de humedad y temperatura.

Sensor de humedad y temperatura con arduino y SHT15 - lectura de resultados

Ese es el objetivo de las siguientes funciones printTemperature y printHumidity; envían el comando correspondiente al sensor obteniendo el resultado como un entero de 16 bits, convierten dicho entero a un valor de temperatura en grados centígrados y a un valor de humedad relativa, imprimiendo dichos valores a través del puerto serie.

Sensor de humedad y temperatura con arduino y SHT15 - impresión de resultados

La última parte del sketch de arduino es la configuración que simplemente establecerá el pin SCK como de salida y configurará el puerto serie a 9600 bps.

Sensor de humedad y temperatura con arduino y SHT15 - configuración

y el bucle principal que define una serie de comandos para obtener la medición de la temperatura y la humedad. El comando que utilizaremos en artículos posteriores es el comando ‘g’. Al recibir una ‘g’ en ASCII por el puerto serie, el programa realizara mediciones de la temperatura y de la humedad y las imprimirá por el puerto serie separadas por el carácter ‘ ’ y finalizadas por ‘rn’.

Sensor de humedad y temperatura con arduino y SHT15 - bucle principal

La implementación de dicho programa en el Arduino ya nos permite obtener los valores de temperatura y humedad utilizando un programa de terminal tal y como se muestra en la figura siguiente.

Sensor de humedad y temperatura con arduino y SHT15 - resultados por consola serie

En un artículo posterior utilizaremos esta base para construir un gadget para el escritorio de Windows 7.