Paso 2: acerca del Software
Las cosas funcionan todo el sistema:
Cada minuto el acosador despierta, con una interrupción del módulo RTC. Recopila información de los diferentes sensores, envía sobre XBee y vuelve a dormir. En el lado del PC, un programa de C# es abrir el puerto serie, escuchando el XBee y si la información recibida es correcta, escribe a un archivo CSV (ubicación predeterminada es C:\Temp\NewWeatherStation.csv y puede ser cambiado como una constante en el lado del PC).
En la estación remota de sensores hay realmente 3 sensores de temperatura diferentes. Un TMP102 que es un sensor de a bordo. El DHT22 también tiene sensor de temperatura y también lo hace el BMP085. Toda esta información, junto con tiempo de RTC, humedad, presión barométrica, cálculo de la altitud, así como información de carga de batería se envían a través del XBee a la PC, donde está todo guardado en el archivo CSV y aparece en la pantalla principal de la aplicación.
Elegí al informe de la estación remota de sensores una vez cada minuto, pero obviamente esto es muy frecuente que el tiempo está cambiando realmente. La razón principal de es que no quiero esperar una hora para cada paquete de depuración... En el futuro, podría llevar a la práctica un promedio de una vez cada 30 minutos de muestreo en el lado de la PC. Los tiempos de espera más largo por cierto tienen implicaciones en la conexión XBee entre punto final y coordinador que requieren negociación y descubrimiento que prefiero omitir. La única pega muestreo demasiado frecuente es el archivo más grande de la historia. Utilizando el sistema por algunos meses ahora tarda alrededor de 4MB por mes, que no es mucho y puede ser más reducido por parte de la información redundante caer demasiado. Línea de fondo, esto es suficiente.
Inicialmente elegí utilizar un archivo CSV para una implementación más fácil y tener forma sencilla de importar a Excel para gráficos e informes. Finalmente opté por hacer la gráfica, sólo porque quería experimentar con eso también en C# (Microsoft ha hecho un trabajo muy bueno allí debo admitir). También encontré una C# biblioteca libre (Asamblea) para exportar información directamente a Excel. El nombre de este es JetCell y es bastante bueno para lo que necesito, así añadí también. En el futuro, podría cambiar el sistema de almacenamiento para ser una base de datos, si encuentro alguna buena razón para hacerlo.