Paso 3: Haz el trabajo de programa de python
El programa de python necesita importar algunas bibliotecas estándar. La mayoría ya está instalada en Jessie, excepto pyaudio. Instalarlo con
python -u rain.py
Descargar el programa de python (rain.py) y en el mismo directorio ejecutarlo con
........ We will open device 1 ave: 254 [ 0 703 479 266 222 185 195 161 177 150] wind level: 0ave: 274 [ 0 927 489 285 201 172 187 158 161 157] wind level: 0
El u - se asegura que la salida del programa aparece inmediatamente en la pantalla del terminal. Sin él la salida se protege y puede tardar algún tiempo en aparecer.
Si tu webcam es reconocida correctamente, el programa debe abrir el micrófono e imprimir un montón de cosas y luego algo como esto, con una nueva línea de números que aparecen sobre cada 6 segundos
No sound input device found. Try again with device_debug = 1 to see what devices PyAudio can find. Bye
Por el contrario si recibes esto
device_debug = 1
tiene trabajo por hacer para conseguir pyaudio a reconocer su micrófono. En línea 29 de rain.py, compruebe
python -u rain.py
y otra vez con
{'defaultSampleRate': 16000.0, 'defaultLowOutputLatency': -1.0, 'defaultLowInputLatency': 0.0239375, 'maxInputChannels': 1L, 'structVersion': 2L, 'hostApi': 0L, 'index': 2, 'defaultHighOutputLatency': -1.0, 'maxOutputChannels': 0L, 'name': u'USB Device 0x46d:0x0059: Audio (hw:1,0)', 'defaultHighInputLatency': 0.096}
Hacia el final de la carga de cosas ves unas líneas buscando algo parecido
'maxInputChannels': 1L
Uno debe corresponder a su webcam. Busca
if dev['maxInputChannels'] == 1 and dev['defaultSampleRate'] == 16000.0 :
Esto dice que es una entrada por ejemplo, un micrófono. Deberás ajustar las pruebas acerca de la línea 41 de rain.py para conectar a la tuya. Para un solo micrófono USB similar a la mía Esto funcionó:
device_debug = 0
¡Buena suerte!
Asumiendo que usted tiene éxito, usted puede cambiar alrededor de línea 29 a
ave: 269 [ 0 873 411 304 224 185 195 161 180 158] wind level: 0ave: 280 [ 0 937 475 281 209 185 195 174 176 167] wind level: 0 ave: 284 [ 0 791 649 296 228 171 188 173 182 164] wind level: 0
Ahora ejecute de nuevo y mira los números - una nueva línea debe venir cada 6 segundos
ave: 307 [ 0 739 584 400 317 229 231 210 189 173] wind level: 54ave: 14138 [ 0 13832 21242 10181 14903 24935 13589 30922 7767 4013] wind level: 2155 ave: 10666 [ 0 14417 18740 16290 8441 9277 9960 17068 7375 5098] wind level: 6093
Cada línea muestra el resultado de analizar un trozo de la señal de audio desde el micrófono. Las 3 líneas anteriores son típicas de mi micrófono cuando no hay mucho sonido.
La primera parte es la potencia media - alrededor de 280. Las unidades son arbitrarias - por lo que tendremos que calibrar en el paso siguiente.
La segunda parte - entre los corchetes son los niveles de energía en bandas de frecuencia de 10. El más bajo uno se ve obligado a ser cero.
La tercera parte es una estimación del nivel de viento. Se utiliza para reducir la posibilidad de ruido del viento de ser registrado como lluvia.
Ahora hacer algo de ruido. Hablar, poner música, toque la cámara web o espere lluvia ruidosa (si la cámara ya está en el Conservatorio). Debería ver algo como
21/10/2015 17:05:02,0,3171,1787,1636,959,362,244,424,256,204,204,0.0,1228
Así podemos ver que suena más fuerte hace números más altos correspondiente a los niveles más altos de energía. Si ustedes no cambian, volver atrás y compruebe que el micrófono está realmente trabajando.
Dejarlo funcionando durante al menos 5 minutos y luego ver la que anexa los resultados para el archivo /run/shm/rain1.csv en un formato similar
ave: 269 [ 0 873 411 304 224 185 195 161 180 158] wind level: 0ave: 280 [ 0 937 475 281 209 185 195 174 176 167] wind level: 0 ave: 284 [ 0 791 649 296 228 171 188 173 182 164] wind level: 0
Se trata de un csv (valores separados por comas) listo para ser leído por la hoja de cálculo favorita o web lenguaje de scripting.
El primer valor es la fecha y hora.
Los siguientes 10 son los niveles de potencia en las bandas de frecuencia de 10, a los 5 minutos.
La siguiente es la precipitación estimada hasta ese día.
El último es el nivel promedio del viento durante los últimos 5 minutos.
He encontrado que el valor promedio de la banda de frecuencia más alta fue la mejor correlación con la precipitación. El valor 4 fue similar a la más alta para la lluvia, pero era muy sensible al viento, por lo que se utiliza para evitar el viento de la cuenta como lluvia.
Cada 24 horas, a medianoche, guarda lluvias de la día en /home/pi/rain_daily.csv y se reinicia la lluvia guardada en /run/shm/rain1.csv
Si quieres, puedes mirar los comentarios en rain.py para ver cómo funciona. Probablemente deberás hacer esto si tiene que cambiar nada o calibrar para el micrófono.