Dades sísmiques libmseed en temps real amb raspberry pi de 512Mb de RAM i monoprocessador ARM

 

L'aprofitament i optimització de sistemes senzills permet utilitzar maquinari com una simple raspberry pi de 512Mb de ram i monoprocessador per a múltiples tasques enormes i importants

 

Dades sísmiques libmseed en temps real amb raspberry pi de 512Mb de RAM i monoprocessador ARM

Dades sísmiques libmseed en temps real amb raspberry pi de 512Mb de RAM i monoprocessador ARM
Temps de lectura: 3 minuts

A la captura d'exemple, aquesta raspberry pi executa múltiples processos per captar les dades sísmiques:

Llegeix dades raw dels 3 eixos X, Y, Z en temps real a 1000Hz d'un sensor ADXL355 acceleròmetre.
Aplica un downsample a 100Hz
Aplica un filtre Notch a 50Hz per eliminar dades innecessàries del senyal.
Aplica la correcció de la gravetat a leix Z.
Guarda les dades raw resultants en memòria.
Genera fitxers .mseed amb les dades raw finals en memòria.
Aplica un calibratge periòdic per compensar la desviació de cada eix individual i mantenir les dades centres a l'eix 0.
Aplica 26 filtres IIR diferents a cada eix per obtenir el senyal dividit i detectar diferents tipus d'esdeveniments, com ara terratrèmols propers, cops, terratrèmols llunyans, ....
Aplica un filtre STA/LTA per a cadascun dels eixos per a cadascun dels filtres, cosa que permet identificar l'esdeveniment en un rang de Hz i eix.
Detecta l'energia RMS dels 3 eixos
Detecteu mitjançant el mètode Kurtosis el moment de l'arribada de l'esdeveniment.
Detecta mitjançant un algorisme secundari AIC l'arribada de l'ona sísmica.
Llança alertes mitjançant finestres de temps individuals de cada filtre si supera el Trigger Threshold adaptat a cadascun dels rangs de Hz i eixos.
Disposeu d'un servidor web nginx per visualitzar el tauler de control
Envia dades raw de tot això al panell de control per websockets
Genera fitxers raw mseed dels 3 eixos en disc sd cada minut per mantenir les dades generades fora de perill a la targeta de memòria.
Aplica un filtre FIR a cadascun dels rangs de Hz per generar una gràfica d'helicorder més 'amable' visualment.
Genera helicorders de 5 rangs diferents, per poder visualitzar esdeveniments en cas d'haver-los i veure com ha afectat diferents rangs.
Envia els helicorders anteriors al servidor principal, per visualitzar-los externament a Internet.
Disposa d'un servidor libseed, per poder connectar directament i recollir les dades amb un altre tipus de programari, com ara swarm.
El mateix servidor envia les dades libseed a un servidor central, on es redistribuirà públicament i en temps real.
El dashboard incorpora un sistema amb què cada 30 segons es connecta a diferents organismes oficials per rebre els últims esdeveniments esdevinguts. Si n'hi ha, incorpora un sistema d'arribada d'ones per visualitzar els moments i com afecta el senyal cada tipus d'ona en el moment precís, calculant mitjançant el mètode AK135 l'origen i l'arribada a l'estació per coordenades geodèsiques.
El tauler de control permet connectar servidors mseed per contrastar la forma d'ona de l'estació amb altres estacions professionals.
També incorpora la generació d'un espectrograma per poder visualitzar la força del senyal i com es distribueix el mateix en una finestra de temps. Això permet veure en temps real la força d'un esdeveniment distribuït per tota l'amplada del senyal.

Podríem pensar que una raspberry pi tan limitada no podria generar tantes dades, de tantes formes i en tan poc temps, tenint en compte la poca memòria disponible i sabent que únicament disposem d'un sol processador, per la qual cosa tant les connexions de sockets, generació de dades i fitxers, servidor web, etc.... ocorre en la mateixa cpu sense possibilitat d'usar multihi perfectament. No hi ha talls de dades. Els únics talls que hi ha han estat a causa de reinicis intencionats dels serveis, per recompilació del codi font i/o canvis i actualitzacions. El sistema és estable.

En poder disposar ja externament de les dades, al servidor principal he implementat un altre servei, que s'encarrega de recopilar en temps real les dades libseed i redistribuir-les, cosa que permet des de javascript desxifrar-les i mostrar-les en temps real.

Això és precisament el que he preparat. Un sistema en temps real que permet monitoritzar les 3 estacions sísmiques alhora, cadascuna amb diferents tipus de sensors, i és això precisament el que ens ajudarà a interpretar com es comporta i es veu el senyal a cadascun dels sensors (acceleròmetres i geòfons).

En aquest vídeo s'aprecia contrastant la data/hora del sistema amb les dades de les gràfiques que estan perfectament sincronitzades en el temps, amb pocs mil·lisegons de retard, cosa que ratifica el que s'ha parlat anteriorment.

Un èxit espectacular amb un maquinari molt limitat i 'vell'. El repte és fer-ho funcionar amb el mínim. Sabent que funciona, fer-ho funcionar en maquinari actual i ràpid no serà cap problema.

Video:






Altres entrades de bloc relacionades: