Paso 6: Software
El software tiene dos componentes principales. El primer componente es una biblioteca compartida que depende el programa monitor. Por supuesto, no es necesario hacer una biblioteca compartida, pero si quieres escribir tu propio código personalizado es útil ser capaz de vincular a él especificando la biblioteca en la línea de comandos gcc. El fichero makefile para la biblioteca viene con un instalador que se coloque la biblioteca en el lugar correcto para el programa monitor.La biblioteca es muy simple y consiste en un puñado de funciones:
int SpiOpenPort (int spi_device, int modo, int velocidad);
int SpiClosePort (int spi_device);
int SpiWriteAndRead (int spi_device, char sin signo * datos, int longitud);La función SpiOpenPort abrirá un dispositivo spi. Las opciones de spi_device son 0 ó 1 que corresponde a CE0 y CE1 para la selección de chip. El modo especifica el modo SPI - lleva borde de reloj, arrastre el borde de reloj, etc.... El parámetro final, velocidad, representa la velocidad deseada (en Hz) desea su SPI comunicarse al. El sistema subyacente intentará emparejar a la pareja más cercana o mejor para la velocidad que usted especifique.
El programa monitor no es mucho más difícil. Se trata de 2 bytes de lectura de la MAX144. La lectura se realiza dos veces por lo que siempre estamos operados datos CH2 (que deben ser puesto en cortocircuito a CH1). Creamos una palabra de dos bytes con el primer byte es el MSB y el segundo el LSB. Entonces la máscara el 12 bit que especifica qué canal se lee y finalmente convertir en un valor de voltaje resultante para la conversión a una temperatura. La conversión de temperatura implica la función lineal (V * 100)-50 que es la función de conversión de temperatura según la hoja de datos.
Después de leer el voltaje se inserta en la tabla de MySql. Antes nos fijamos en ese código sin embargo, tenemos que hacer una pequeña divergencia a MySql y crear la estructura de base de datos y la tabla necesaria para la aplicación funcione correctamente.
Descarga el código fuente desde el repositorio de github: https://github.com/scottmccain/tempmonitor
Crear las tablas necesarias y la base de datos mediante el comando siguiente (Nota Esto solo tiene que hacer una vez):
Cambie el directorio a la raíz del proyecto:
CD tempmonitor
Asegúrese de que usted marque el script ejecutable:
chmod + x./createdb.sh
Luego ejecutar el script:
./createdb.shEntrar en sus credenciales (si puede cambiar el usuario que desea modificar la secuencia de comandos) y la base de datos y estructura de la tabla se creará para usted.
Una vez que usted puede construir los archivos de biblioteca necesarios ejecutando:
sudo hacer biblioteca
Esto construir e instalar la biblioteca requerida y el objeto compartido para el monitor de temperatura. Después de puede construir e instalar el programa monitor. Antes de ejecutar el construir el código fuente, sin embargo, hay un par de comandos, necesitará ejecutar antes de la mano. El fichero makefile depende de 2 variables de entorno que deben establecerse antes de que el código se compila o vincular correctamente. Las variables se deben definir con los siguientes comandos:
[insertar el comando para establecer vars con mysql_config]
Finalmente puede construir e instalar el programa con el siguiente comando:
sudo hacer & & sudo hacer instalarEsto construir el código fuente para el programa y lo instale en un lugar donde cron puede verlo.
A continuación vamos a crear una entrada de crontab para iniciar registro de temperaturas de forma sincronizada. Primero abra el editor de crontab ejecutando el siguiente comando:
sudo crontab -eUna vez que el editor es abrir Desplácese hasta la parte inferior del archivo e insertar la siguiente línea:
Guardar los cambios. Esto ejecutará el programa monitor cada 5 minutos para registrar la temperatura. Usted puede ajustar la entrada para sus propias necesidades. Consulte las páginas man de cron para obtener más información.
¡ Felicidades! En este punto su frambuesa Pi debe ser registro de temperaturas. Puede comprobar accediendo al mysql y ejecutar una consulta contra la tabla de temperaturas en la base de datos de servicedb. A continuación les mostraré un servicio web simple y aplicación que azotado para arriba para mostrar los valores de la base de datos.