Módulos detectores de tormentas: bailando bajo la lluvia

Anteriormente intentamos configurar un módulo de detector de rayos AS3935. Este detector capta las emisiones de radio y luego las analiza para determinar si son rayos o alguna otra fuente de radio. Después de recopilar algunos datos, genera la distancia estimada al frente de tormenta entrante.

Pero eso solo te lleva a la mitad del camino. El dispositivo detecta muchos eventos no relacionados con rayos y falta la placa de circuito desnuda dinamismo. Hoy estoy arreglando eso mirando a través de la hoja de datos del detector y viajando rápidamente a la tienda del dólar para comprar un apartamento adecuado. ¿El resultado? ¡Una planta de plástico que baila cuando llueve!

En el último artículo, me ocupé de detectar eventos desde el dispositivo y luego releer el tipo de evento detectado por el dispositivo de memoria. Sin embargo, recibimos muchos eventos aleatorios de tipo "4" (0100) en la terminal, lo que indica la detección de muchos eventos no relacionados con rayos. Estos se denominan "molestos" y son señales de radio que el chip detecta pero no considera la iluminación. De forma predeterminada, sube el pin de interrupción para estos y los entrega de todos modos.

Nuestro primer paso será filtrar estos para que nos importe uno menos. Podríamos simplemente ignorarlos, pero eso es incómodo; sería mejor si no se enviaran datos sobre ellos, porque no estamos interesados ​​en ellos en este momento. Afortunadamente, la hoja de datos del AS3935 (PDF) describe una manera de hacer exactamente esto: el bit 5 del registro de memoria 0x03 (MASK_DIST) comprueba si el chip está transmitiendo eventos perturbadores. Podemos hacer esto estableciendo esa dirección de memoria en 0x20 (decimal 32, binario 00100000) antes de votar el pin de interrupción:

pin   = 8
light = 2
spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 256);
gpio.mode(pin, gpio.OUTPUT)
gpio.mode(light, gpio.INPUT)

function reason()
	gpio.write(pin, gpio.HIGH)
	tmr.delay(30)
	gpio.write(pin, gpio.LOW)
	tmr.delay(30)
	spi.send(1, 0x43)
	tmr.delay(30)
	read = spi.recv(1, 8)
	print(string.byte(read))
	gpio.write(pin, gpio.HIGH)
	tmr.delay(30)
	gpio.write(pin, gpio.LOW)
	tmr.delay(30)
	gpio.write(pin, gpio.HIGH)
	tmr.delay(30)
end

spi.send(1, 0x03)
tmr.delay(2)
spi.send(1, 0x20)

tmr.alarm(1, 100, 1, function() poll(0) end)

function poll()
	x = gpio.read(light)
	if x == 1 then 
		reason()
	end
end

Cuando reiniciamos el dispositivo, ya no vemos eventos molestos. Ahora no vemos nada a menos que toque la antena, luego leemos el decimal 33 (binario 100001). El MSB (bit más significativo) es solo el registro MASK_DIST en el que escribimos, por lo que solo podemos restar 32 de cualquier resultado que obtengamos, lo que da como resultado el código de interrupción. Al hacerlo, el dispositivo emitirá 1 si el motivo de la interrupción es un ruido excesivo y 8 si se trata de un rayo.

Mojarse

Aquí hay algo un poco embarazoso. Estaba sentado en un café en esta etapa, mostrándole el dispositivo a un amigo, y comenzó a grabar eventos relámpago. Es una estación seca en Vietnam ahora y era un día despejado, así que le expliqué que tenía algunos errores que solucionar, así que me monté en mi motocicleta y tomé la carretera a casa. Seguí atrapándome en la primera tormenta del año, conducía demasiado fuerte y pasé media hora escondido debajo de un arbusto riéndome de mí mismo. Éxito !?

Volviendo al dispositivo, ignoraremos los eventos de alto nivel de ruido. Para un dispositivo comercial, le gustaría que el usuario sepa que el nivel de ruido es demasiado alto, pero eso no nos interesa ahora. ¿Qué sería divertido saber qué tan lejos está una tormenta? El chip necesita recopilar algunos datos para estimar la distancia de una tormenta, por lo que le diremos al chip que no nos advierta a menos que detecte un destello mínimo en 15 minutos. Los bits 4 y 5 del registro de memoria 0x02 gobiernan esta función de acuerdo con la siguiente tabla:

Fuente: hoja de datos AS3935

El valor predeterminado de todo el registro de memoria de 8 bits es 11000010, que cambiaremos a 11010010 (0xD2). Esto configura al menos 5 rayos detectados un minuto antes de que el chip notifique un rayo. Después del quinto golpe, informará de cada rayo levantando el pin de interrupción alto:

spi.send(1,0x02)
tmr.delay(2)
spi.send(1,0xD2)

Un método inusual de horticultura.

Después de que detecta 5 relámpagos, queremos que el dispositivo muestre la distancia a la tormenta a medida que se acerca. Para hacer esto, simplemente leemos el registro 0x07 y los bits vacíos 6 y 7 en el resultado. Si bien solo he visto esos bits configurados en 0, están reservados por el dispositivo y no estamos interesados ​​en su estado. Finalmente, controlamos los tipos de eventos producidos y las distancias y hacemos que la salida sea un poco más legible. Nuestro código final (ish) está aquí.

Esto funciona y es bueno, pero no divertido bastante todavía. ¿Conoces esos pequeños juguetes de plástico que bailan cuando un pequeño panel solar se expone a la luz del sol? Bueno, resulta que la salida de 3.3v de NodeMCU es un reemplazo muy efectivo para su panel solar de silicio amorfo. Un pulso rápido de uno de los pines de salida convierte un dispositivo que baila cuando se expone a la luz del sol en uno que baila bajo la lluvia.

La única modificación necesaria para el código fue elevar un pin alto durante un corto tiempo durante los eventos de detección de rayos, conectado a la salida positiva del panel solar (tierra NodeMCU a la salida negativa):

gpio.write(quiver, gpio.HIGH)
tmr.alarm(2, 4777, 1, function() dequiver(0) end)

He considerado algunos juguetes para esta parte. Tanto los monos como las gallinas suenan bien con el prefijo "trueno". Finalmente, me decidí por una planta de plástico porque algo era de alguna manera una pesadilla una planta que tiembla ante la lluvia.

Mi uso frívolo de las piezas en particular, estos detectores serían una gran adición a muchos proyectos como un pararrayos o una lámpara que se despliega automáticamente que muestra gráficamente el tiempo actual.

  • Ostraco dice:

    Una foto narrativa parece un detector de cazafantasmas.

    • Ren dice:

      ¡Estoy de acuerdo!

      http://ghostbusters.wikia.com/wiki/PKE_Meter

  • Tom Brusehaver dice:

    ¿Puede decir una dirección? ¿Sería una manera fácil de construir una antena yagi? (Ver 500 KHz son unos 600 metros, hmmm, no es muy portátil). ¿O tal vez 4 módulos con blindaje en el medio?

    • Vejestorio dice:

      Puede intentar estimar la dirección con dos bucles magnéticos en ángulos de 90 grados. La antena no necesita ser muy eficiente, los rayos son poderosos ...

      • SQ2KTN dice:

        Dos bucles a 90 ° tendrán una salida idéntica para dos direcciones que difieran 180 °. Necesitará 3 bucles.

    • Martín dice:

      Hay un buen sitio web de detección de rayos: https://www.lightningmaps.org/about?lang=en y hay un enlace a los planes y esquemas de los receptores de detectores. Para la búsqueda direccional necesita al menos dos antenas y receptores.

    • jafinch78 dice:

      Es posible que pueda decir una dirección con una antena, aunque es más fácil hacerlo con más. Imágenes de Google "antena de bucle enrollado" para obtener más ideas también para tipos más direccionales, si las he entendido correctamente. Supongo que tiene direccionalidad, especialmente si tiene un reflector en un lado del bucle y puede girar como un radar giratorio ... "Antena de manga de ferrita", como recientemente vi a DXerGary en youtube mostrando, aunque no tanto para XLF, ULF o El rango VLF, por mucho que ese rango sea más para truenos, creo.

      http://www.stormwise.com/ también es útil para obtener información y herramientas. Este es el sitio que me inició en la investigación de materiales con alta permeabilidad magnética además de la ferrita.

  • Molesto dice:

    Sí, esto también funcionaría si también utilizara sensores magnéticos Hall o MR en un extremo de las barras enrolladas.
    Además, alguien necesita completamente construir uno de estos módulos en un medidor PKE de respaldo.

  • Noche dice:

    Investigue el pin de interrupción ... ¿No sería mejor conectarlo al pin de interrupción del microcontrolador, para eso es?
    Ese as3935 existe desde hace bastante tiempo, pero dudo en comprarlo porque es bastante caro. En general, parece un chip bastante interesante si solo necesita advertir que se acerca una tormenta. Luego, puede verificar Blitzortung para ver dónde está la tormenta y hacia dónde se dirige.

    • SQ9ITQ dice:

      Simplemente sentí que este artículo está incompleto sin hacer referencia a Blitzortung ... Aunque fuiste más rápido 🙂

      Me pregunto si este dispositivo funcionaría como parte de la red Blitzortung ...

      • Noche dice:

        Probablemente no. BO utiliza una sincronización muy precisa de varias estaciones para determinar la posición de los rayos. Un chip prominente utiliza procesamiento de señal interno y proporciona datos a través de una interfaz SPI. Se puede utilizar para las advertencias, pero creo que es demasiado lento para localizar correctamente los rayos.

        • SQ9ITQ dice:

          HUESO. Ese es el punto.

          Por cierto, noté que el fabricante del chip proporciona muestras, por lo que podría usar este método para evaluar este chip.

    • Sean Boyce dice:

      Sería mejor usar el pin de interrupción ... como una interrupción. Sin embargo, el uso de gpio.trig () siempre falló sin un mensaje de error cuando lo probé.

      Supongo que no se habilitó durante el tiempo de compilación del firmware (utilicé el excelente nodemcu-build.com) pero no estoy seguro.

  • CE dice:

    Buen proyecto, me encanta. Mi ayuda de cámara tiene una de esas flores y quería cortarla ...

  • Lowell dice:

    Eso realmente necesita ser un baby groot bailando en lugar de una flor.

  • Molesto dice:

    Oye. ¡Buena idea!
    ¿Qué tal poner algunos LED blancos en la base para que parezca un rayo? O para el caso, alguna cinta EL.

    • Sean Boyce dice:

      Originalmente obtendré una figura de águila de Thor, la pondré en un bonito altar de madera y agregaré un indicador de "A Thor no le gustó" a la base con algunos LED 🙂

      Sin embargo, no lo hice, principalmente porque parecía un desperdicio terrible de madera hábilmente tallada. ¡Soy notablemente incompetente con cualquier cosa que se vea bien!

  • Michael Gasperi dice:

    Jugué con la versión SparkFun del AS3935. Es una parte difícil de trabajar, porque realmente tiene que estar aislado del ruido de RF creado por las computadoras y los monitores para que funcione correctamente. Detallé mi experiencia junto con los planes para un circuito que generará ondas de relámpago falsas que engañarán al AS3935. https://sites.google.com/view/as3935workbook/home

Nora Prieto
Nora Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.