Seismiska data i realtid från libmseed med en Raspberry Pi med 512 MB RAM och en ARM-processor
Optimeringen av enkla system gör att hårdvara som en enkel Raspberry Pi med 512 MB RAM och en ARM-processor kan användas för flera stora och viktiga uppgifter.
I skärmdumpen exempel kör denna Raspberry Pi flera processer för att samla in seismisk data:
Den läser rådata från de tre axlarna (X, Y, Z) i realtid vid 1000 Hz från en ADXL355 accelerometersensor.
Den tillämpar en nedsampling vid 100 Hz.
Den tillämpar ett notch-filter vid 50 Hz för att ta bort onödig data från signalen.
Den tillämpar gravitationskorrigering på Z-axeln.
Den sparar den resulterande rådata i minnet.
Den genererar .mseed-filer med den slutliga rådata lagrad i minnet. Den tillämpar periodisk kalibrering för att kompensera för avvikelsen för varje enskild axel och hålla data centrerad på 0-axeln.
Den tillämpar 26 olika IIR-filter på varje axel för att erhålla den delade signalen och detektera olika typer av händelser, såsom närliggande jordbävningar, stötar, avlägsna jordbävningar etc.
Den tillämpar ett STA/LTA-filter på varje axel, vilket gör att den kan identifiera händelsen inom ett specifikt Hz- och axelområde.
Den detekterar RMS-energin för alla tre axlarna.
Den detekterar händelsens ankomsttid med hjälp av Kurtosis-metoden.
Den detekterar ankomsten av den seismiska vågen med hjälp av en sekundär AIC-algoritm.
Den utlöser varningar med hjälp av individuella tidsfönster för varje filter om Trigger Threshold, anpassat till varje Hz och axelområde, överskrids. Den har en nginx-webbserver för att visa kontrollpanelen.
Den skickar rådata från alla ovanstående till kontrollpanelen via WebSockets.
Den genererar råa mseed-filer för alla tre axlar på en SD varje minut för att hålla den genererade datan säker på minneskortet.
Den tillämpar ett FIR-filter på vart och ett av Hz-områdena för att generera en mer visuellt tilltalande helikordergraf.
Den genererar helikordrar för fem olika områden, vilket gör att du kan visualisera eventuella händelser och se hur de har påverkat olika områden.
Den skickar de tidigare helikordrarna till huvudservern för extern visning på internet.
Den har en libseed-server för att ansluta direkt och samla in data med annan programvara, till exempel Swarm.
Samma server skickar libseed-data till en central server, där den kommer att omdistribueras offentligt och i realtid. Instrumentpanelen innehåller ett system som ansluter till olika officiella myndigheter var 30:e sekund för att ta emot de senaste händelserna. Om tillgängligt inkluderar den ett vågankomstsystem för att visualisera tidpunkten och hur varje typ av våg påverkar signalen i exakt det ögonblicket, och beräknar ursprung och ankomst till stationen med hjälp av AK135-metoden baserat på geodetiska koordinater.
Kontrollpanelen möjliggör anslutning till mseed-servrar för att jämföra stationens vågform med andra professionella stationers.
Den inkluderar också generering av ett spektrogram för att visualisera signalstyrkan och dess fördelning över ett tidsfönster. Detta möjliggör realtidsvisning av styrkan hos en händelse fördelad över hela signalbredden.
Man skulle kunna tro att en så begränsad Raspberry Pi inte skulle kunna generera så mycket data, på så många sätt, och på så kort tid, med tanke på det begränsade tillgängliga minnet och det faktum att vi bara har en enda processor. Därför sker socket-anslutningar, data- och filgenerering, webbservern etc. på samma processor utan möjlighet till separat multitrådning. Systemet hanterar det dock perfekt, långt ifrån att krascha. Det finns inga dataavbrott. De enda avbrotten har berott på avsiktliga omstarter av tjänster, omkompilering av källkod och/eller ändringar och uppdateringar. Systemet är stabilt.
Eftersom data nu är tillgängliga externt har jag implementerat en annan tjänst på huvudservern som samlar in libseed-data i realtid och omdistribuerar den, vilket gör att den kan dekrypteras och visas i realtid med hjälp av JavaScript.
Detta är precis vad jag har konfigurerat. Ett realtidssystem möjliggör samtidig övervakning av alla tre seismiska stationer, var och en utrustad med olika typer av sensorer. Det är just detta som kommer att hjälpa oss att tolka hur signalen beter sig och visas vid varje sensor (accelerometrar och geofoner).
Denna video demonstrerar den perfekta synkroniseringen av systemets datum och tid med grafdata, som bara ligger några millisekunder efter, vilket bekräftar det som tidigare nämnts.
Detta är en spektakulär prestation med mycket begränsad och föråldrad hårdvara. Utmaningen är att få det att fungera med absoluta minimum. Att veta att det fungerar, att få det att fungera på aktuell, snabb hårdvara, kommer inte att vara några problem.