giovedì 1 dicembre 2016

Arduino 101 a Foligno

In occasione del recente sisma a Norcia il mio ente ha richiesto ai geologi di un servizio volontario di protezione civile presso le aree colpite dal sisma. Con l'occasione volevo provare a vedere se l'accelerometro integrato in Arduino 101 era in grado di registrare i movimenti del terreno. Il luogo di pernottamento era presso Foligno dove e' presente anche una stazione sismica che pubblica i dati su Internet ed era quindi la posizione ideale per la calibrazione


visto il rumore dell'accelerometro, la minima accelerazione valida registrata era superiore a 0.03g (maggiore del 3% dell'accelerazione di gravita')

lo sketch impiegato e' stato semplicemente quello degli esempi della IMu di Curie

--------------------------------
#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // initialize Serial communication
  while (!Serial);    // wait for the serial port to open

  // initialize device
  Serial.println("Initializing IMU device...");
  CurieIMU.begin();

  // Set the accelerometer range to 2G
  CurieIMU.setAccelerometerRange(2);
}

void loop() {
  float ax, ay, az;   //scaled accelerometer values

  // read accelerometer measurements from device, scaled to the configured range
  CurieIMU.readAccelerometerScaled(ax, ay, az);

  // display tab-separated accelerometer x/y/z values
  Serial.print("a:\t");
  Serial.print(ax);
  Serial.print("\t");
  Serial.print(ay);
  Serial.print("\t");
  Serial.print(az);
  Serial.println();
}

/*
   Copyright (c) 2016 Intel Corporation.  All rights reserved.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

*/

--------------------------------
dato che Arduino non ha un Real Time Clock ho usato uno script Python per aggiungere il timestamp ai dati di accelerazione
sisma.py
---------------------------
#!/usr/bin/env python
import time
import datetime
import serial

port = serial.Serial("/dev/ttyACM0", baudrate=9600, timeout=3.0)

base_datetime=datetime.datetime(1970,1,1)

while True:
    millis=int(round(time.time()*1000))
    delta = datetime.timedelta(0,0,0,millis)
    target_date=base_datetime+delta
    print target_date,
    print "\t",
    rcv = port.readline()
    print rcv[:-2]
---------------------------
con poi uno script bash per lanciare il tutto

---------------------------
#!/bin/bash
nome=$(date '+%F--%T').log
/home/luca/sisma.py > /home/luca/$nome
---------------------------

il sistema ha lavorato per oltre 48 ore ma, nonostante la stazione sismica avesse registrato diversi eventi (tutti di modesta entita' sicuramente sotto al 4°§) , i dati della Arduino non mostravano niente di significativo


Dati registrati da Arduino


Esempio dati sismografo Foligno Monte Pale http://www.iesn.it/index.php/eventi-iesn/umbria/foligno-pg.html
La spiegazione e' venuta da questo grafico empirico che correla la magnitudine con l'accelerazione (in cm/sec2). Come si vede per avere una accelerazione di almeno 0.03g (29 cm/sec2) sono necessari sismi di almeno il 5° Richter

http://www.ingegneri.info/forum/viewtopic.php?f=2&t=44944







Nessun commento:

Posta un commento

Physics informed neural network Fukuzono

Visto che puro ML non funziona per le serie tempo di cui mi sto occupando ed le regressioni basate su formule analitiche mostrano dei limiti...