Paso 12: Software
Que el hardware se ha completado, llegamos a la parte emocionante: ejecuta el software que recupera los datos de nuestro receptor XBee y guarda en nuestro ordenador o carga en una base de datos o actualizaciones de nuestra cuenta de twitter o... cualquier cosa que usted quisiera!
Así es como funciona, el XBee en el Kill a Watt es enganchado hasta dos señales analógicas. Uno es la señal de voltaje que indica la lectura de voltaje AC. En general se trata de una onda sinusoidal que es 120 VCA. Una cosa difícil de recordar es que 120 v es el voltaje de 'RMS' y la 'tensión verdadera' +-170VDC. (Usted puede leer más acerca de Voltaje RMS en wikipedia básicamente es una forma de indicar cuánto voltaje 'promedio' allí es.) La segunda lectura es la lectura actual de AC. Se trata de cuanta corriente es absorbida por el Kill a Watt. Si multiplicas la corriente por el voltaje, usted conseguirá la potencia (en vatios) utilizada!
Convertidor de Analógico/Digital de XBee está configurado para tomar una 'instantánea' de un ciclo de seno a la vez. Cada muestra doble (voltaje y corriente) es desmontar 1ms y tarda 17 de ellos. Se traduce en un tren largo de 17ms de muestras. Un ciclo de uso de la energía es 1 / 60Hz largo que es 16.6ms. Así que funciona bastante bien!
Veamos algunos ejemplos de voltaje y corriente como los Ve el XBee.
Por ejemplo este primer gráfico es de un ordenador portátil conectado. Verás que es una fuente conmutada y solo tira de energía durante el pico de la curva de tensión.
Ahora vamos a tratar de conectar una lámpara incandescente de 40W. Usted notará que a diferencia de la fuente de conmutación, la corriente sigue la tensión casi a la perfección. Eso es porque una bombilla es una resistencia de sólo!
Por último, permite tratar de pegarse el medidor en un interruptor regulable. Verás que la tensión es 'picada', ya no sinusoidal. Y aunque la corriente sigue la tensión, su todavía bastante bien.
El XBee envía los datos a la computadora que, en un script en python, las figuras lo que el voltaje (calibrado) y el amperaje en cada muestra y se multiplica cada punto para obtener los vatios utilizados en ese ciclo. Ya no hay casi ningún dispositivo que cambia los usos de energía de ciclo a ciclo, la instantánea es un buen indicador de la general uso de la energía ese segundo. Luego una vez cada 2 segundos, una sola instantánea se envía al receptor XBee
Instalar python & amigos
El software que habla con lo XBee está escrito en python. He usado python debido a su rápido desarrollo, tiene soporte de multi-os y es bastante popular entre los hackers de hardware y software. El XBees hablar sobre el puerto serie literalmente que cualquier lenguaje de programación puede/podría ser utilizado aquí. Si eres un geek software y desea utilizar perl, C, C#, tcl/tk, procesamiento, java, etc. ¡ adelante! Usted tendrá que leer los datos en serie y analizar el paquete pero no es particularmente difícil.
Sin embargo, mayoría de la gente quería subirse con él y así te que lo pasamos por el proceso de instalación de python y las librerías que necesitamos.
1. descargar e instalar python 2.5 desde http://www.python.org/download/ que sugiero 2.5 ya que parece ser estable y bien apoyado en este momento. Si utilizas otra versión puede haber problemas
2. Descargar e instalar pyserial desde el repositorio de paquete (esto nos hablará el XBee a través del puerto serie)
3. Si está ejecutando windows Descargar e instalar win32file para python 2.5 (esto agregará soporte para archivos)
4. Descargue e instale la biblioteca de python simplejson (esto es cómo el twitter api le gusta ser hablado a)
Ahora usted puede finalmente descargar el script Wattcher que demostraremos aquí! Vamos a descargar en el directorio C:\wattcher , para otros sistemas operativos por supuesto puede cambiar este directorio
Configuración básica
Vamos a tener que hacer un poco de configuración para iniciar, abrir el script de wattcher.py con un editor de texto y busque la línea
SERIALPORT = "COM4" # el puerto serie com el XBee conectado a
cambiar COM4 en lo que se llama el puerto serie que conectará a lo XBee con. Bajo windows su algunos COMx puerto, bajo linux y mac su algo como /dev/cu.usbserial-xxxx Revise el directorio/dev / / dmesg o
Guarde el script con el nuevo nombre de puerto serie
Probarlo
Una vez que haya instalado python y extrae los scripts en su directorio de trabajo, poner en marcha un terminal (en linux es simplemente rxvt o xterm, bajo mac su Terminalbajo windows, es una ventana de cmd )
Voy a asumir está ejecutando windows en adelante, no debería ser difícil de adaptar las instrucciones para linux/mac una vez abierta la ventana de terminal.
Ejecute el comando cd C:\wattcher para llegar al lugar donde usted sin comprimir los archivos. Ejecutando el comando dir se puede ver que tienes los archivos en el directorio
Asegúrese de que está conectado el transmisor (Kill a Watt + Xbee) y parpadea una vez cada 2 segundos. Recuerde que lleva un tiempo para el transmisor para cargar energía y comenzar la transmisión. La pantalla LCD debe ser clara, no borrosa. Asegúrese de que no hay que nada enchufado en el Kill a Watt, también. El RSSI (rojo) en el receptor conectado a la computadora debe iluminarse indicando que se está recibiendo datos. No continúe hasta es bueno para ir.
Ahora ejecute python ejecutando el comando C:\python25\python.exe wattcher.py
Usted debe obtener a un constante impresión de datos. El primer número es la dirección de XBee que recibió datos, siguiente es la corriente estimada, vatiaje utilizado y vatios-hora consumido desde que los últimos datos. ¡ Hurra! Tenemos datos inalámbricos!
Calibración de
Ahora que tenemos buenos datos que recibió, su tiempo para retocarlo. Por ejemplo, su muy probable que incluso sin una luz o aparato conectado al Kill a Watt, el script piensa que existe la energía se utiliza. Tenemos que calibrar el sensor para que sepamos Dónde está el 'cero'. El Kill a Watt es un sistema de autocalibración pero lamentablemente el XBee no es lo suficientemente inteligente como para hacerlo por cuenta propia. Por lo tanto, lo hacemos en el script de python. Dejar el script escribiendo control-c y ejecutarlo esta vez como C:\python25\python.exe wattcher.py -d el -d que narra la secuencia de comandos para imprimir información de depuración
Ahora puede ver la impresión del guión un desorden entero de datos. El primer pedazo con un montón de -1 en ella es el paquete raw. Mientras interesante queremos mirar la línea que comienza con ampdata:
ampdata: [498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 497, 498, 498, 498]
Ahora se dará cuenta de que los números son prácticamente iguales. Eso es porque no hay que nada enchufado en el tweetawatt y por lo que cada ciclo de 1/60 Hz tiene una línea plana en el 'cero'. El en el XBee es de 10 bits y devuelve valores entre 0 y 1023. Por lo tanto, en teoría, si el sistema es perfecto el valor a 'cero' debe ser 512. Sin embargo, hay un montón de pequeñas cosas que hacen el sistema imperfecto y por lo tanto el cero es sólo cerrar a 512. En este caso el punto de calibración 'cero' es el 498. Cuando su apagado existe un 'DC offset' para las lecturas de la Amp, como se muestra en este gráfico:
¿Ver cómo la línea Amp (verde) es constante pero no a cero, su 0,4 amperios? Hay un desplazamiento de DC de 0,4 amperios
OK, abren el script wattcher.py en un editor de texto.
vrefcalibration = [492, # calibración para el sensor #0]
492, # calibración para el sensor #1
489, # calibración para el sensor #2
492, # calibración para el sensor #3
501, # calibración para el sensor #4
493] # etc.... aprox. ((2.4v * (10Ko/14.7Ko)) / 3
¿Ver la línea que dice # calibración para el sensor #1? Cambiar a 498
vrefcalibration = [492, # calibración para el sensor #0]
# 498, calibración para el sensor #1
489, # calibración para el sensor #2
492, # calibración para el sensor #3
501, # calibración para el sensor #4
493] # etc.... aprox. ((2.4v * (10Ko/14.7Ko)) / 3
Guarde el archivo y arrancar el script nuevamente, esta vez sin la -d
Ahora verás que el Watt es 2W o menos, en vez de 40W (que era muy lejos!) La razón no 0W es que, primero, hay un pequeño ruido que estamos leyendo en las líneas A, D, en segundo lugar hay consumo de energía por el Kill a Watt sí mismo y por último, el XBee no tiene un montón de muestras para trabajar con. Sin embargo < 2W es bastante buena teniendo en cuenta que toda la gama de detección es 0-1500W
Nota el gráfico con el sensor calibrado:
Ver cómo la línea de amplificadores es ahora 0 constante, no hay ningún desplazamiento de DC
Registro de datos
Es bueno tener estos datos pero sería aún mejor si podríamos guardarla para su uso. Bueno, eso se hace automáticamente para usted! Puede establecer el nombre del archivo de registro en el script de wattcher.py. Por defecto es powerdatalog.csv. La secuencia de comandos recopila datos y escrituras de cada 5 minutos una sola línea en el formato año mes día, hora, Sensor #, Watts para cada sensor. Como se puede ver, este es un ejemplo de una bombilla incandescente de 40W enchufado durante unas horas. Debido a la velocidad de muestreo baja, verás que algunas pequeñas variaciones en la potencia registran. Estos datos pueden importarse fácilmente en cualquier programa de hoja de cálculo
Twitteando
Finalmente llegamos a la parte de Twitter de la tweet-a-watt. En primer lugar abrir el script wattcher.py y establecer
# Nombre de usuario y contraseña de twitter
twitterusername = "nombre de usuario"
twitterpassword = "password"
a su nombre de usuario y contraseña en twitter. Puede hacer una cuenta en twitter.com si no tienes uno.
Ejecute el script como de costumbre. Cada 8 horas (medianoche, 8:00 y 16:00) el script se envió un twitter usando el API de Twitter
Luego comprobarlo en su cuenta: