Aggiornamenti al sismografo costruito con Arduino
Ottobre 24, 2019
La simbologia geologica in QGIS
Novembre 13, 2019
Show all

Come costruire un sismografo con Arduino: secondo update

In questo post verrà esposto un nuovo aggiornamento al nostro sismografo costruito con Arduino. Dopo aver aggiunto alla prima versione un buzzer e l’alimentazione esterna, ho aggiunto un modulo SD writer/reader in modo che le accelerazioni rilevate dal sensore MPU-6050 vengano registrate su un file csv.

Quindi possiamo trasferire questo file sul PC e visualizzare/analizzare i dati rilevati. Perciò ho creato un piccolo script Python (in realtà ancora da migliorare ed implementare), che verrà mostrato alla fine del post.

Gli accessori necessari

Ai fini di questo aggiornamento sono necessari i seguenti accessori:

  1. Modulo writer/reader microSD: Link Amazon
  2. Scheda microSD: Link Amazon
modulo writer/reader scheda SD
Modulo writer/reader schede micro SD

I restanti componenti, per chi volesse costruire il proprio sismografo dopo aver letto questo post, sono:

  1. Elegoo Advanced Starter Ki:Link Amazon
  2. Accelerometro MPU-6050:Link Amazon

Collegamenti

I collegamenti da fare per collegare il modulo SD writer/reader sono:

  • VCC→5V
  • CS → 4
  • MOSI → 11
  • CLK → 13
  • MISO → 12
  • GND → GND

Per non perdere il filo, diamo di nuovo un’occhiata ai collegamenti degli altri componenti.

Accelerometro:

  • VCC→3.3V
  • GND → GND
  • SCL –> A5
  • SDA–>A4

Buzzer:

  • Polo positivo → 8
  • Polo negativo → GND

Da notare che rispetto al’aggiornamento precedente, il cavetto positivo del buzzer è stato spostato nel pin 8 della scheda.

schema-collegamenti-sismografo
Schema dei collegamenti
sismografo-arduino-aggiornato
Il nostro sismografo dopo questo aggiornamento

Il codice per la scheda Arduino

Il codice da caricare sulla scheda l’ho caricato su GitHub, e potete visionarlo e scaricarlo da questo link.

In pratica, grazie ad esso, si rilevano le accelerazioni sui tre assi (X,Y,Z) che vengono registrate sulla scheda miscro SD attraverso un file csv. Questo file poi verrà “dato in pasto” allo script Python che verrà mostrato nel prossimo paragrafo.

Il codice per l’elaborazione dei dati

[python] #Code written by Antonio Nirta import pandas as pd import matplotlib.pyplot as plt import math #import csv file. "LOG(5).csv" is the name of file db = pd.read_csv("LOG(5).csv") #Variables with accelerations AcX= db.iloc[:,0] AcY= db.iloc[:,1] AcZ= db.iloc[:,2] #Time settings time = db.iloc[:,3] #time in milliseconds, give by arduino tempo = [i/1000 for i in time] #time in seconds # Create plots with pre-defined labels. fig, ax = plt.subplots() ax.plot(tempo, AcX, ‘-‘, color="red", linewidth= 0.8, label=’AcX’) ax.plot(tempo, AcY, ‘-‘, color="blue", linewidth= 0.8, label=’AcY’) ax.plot(tempo, AcZ, ‘-‘, color="green", linewidth= 0.8, label=’AcZ’) legend = fig.legend(loc=’upper right’, shadow=True, fontsize=’medium’) # Axis’ name plt.xlabel(‘Tempo (s)’) plt.ylabel(‘Accelerazione’) # Put a nicer background color on the legend. legend.get_frame().set_facecolor(‘white’) #Show graph plt.show() [/python]

Il risultato che si ottiene è il grafico sottostante: in verde è rappresentata l’accelerazione lungo l’asse Z mentre in blu e in rosso rispettivamente l’accelerazione lungo Y e X.

Anche questo codice lo potete trovare su GitHub cliccando su questo link.

accelerogramma-python
Accelerogramma ricavato dallo script Python

Questo codice è da implementare inserendo nuove funzioni: tutti i consigli sono bene accetti! Se c’è qualche problema non esitate a contattarmi.

Chi si approccia per la prima volta a Python può chiedermi tutto, sia attraverso i commenti che via messaggio privato. Inoltre mi permetto di consigliare il seguente testo:

Pensare in Python Link Amazon
Antonio Nirta
Antonio Nirta
Ciao, mi chiamo Antonio Nirta e sono un geologo. Mi sono laureato all'Università di Pisa e dal 2017 svolgo la libera professione. Attraverso i post presenti in questo blog cercherò di trasmettere la mia passione per le Scienze Geologiche e di fornire informazioni che riguardano il bellissimo settore della Geologia.

11 Comments

  1. Simone ha detto:

    Ciao ho seguito la tua guida ho montato tutto e caricato il codice sulla scheda quando apro la schermata plotter seriale per vedere le onde sismiche che rileva oltre ad acx acz e acy mi esce anche time con una linea che continua a salire all’infinito tanto che mi rimpicciolisce le altre 3 righe fino a non vederle quasi piu cosa posso fare?

    • Antonio Nirta ha detto:

      Ciao Simone. Si, con il nuovo codice il grafico che si vede sul plotter seriale di Arduino è come lo hai descritto tu. Questo aggiornamento è nato però con l’intento di rendere il sismografo indipendente dal PC, quindi visualizzare i dati (AcX, AcY, AcZ) registrati nella memoria SD in un secondo momento usando lo script Python presente in questo post. Usando questo script i grafici si vedono non appiattiti.
      Comunque appena ho tempo cerco di “correggere” lo script Arduino in modo da visualizzare le accelerazioni come si vedevano prima.

      Antonio

  2. Antonio ha detto:

    Bellissimo articolo.
    Molti spunti per una stazione meteo che ho realizzato e per il sismografo che realizzerò.

  3. Gianni ha detto:

    Thank you very much for sharing your knowledge!
    I would like to know if you updated the code for independent reading of the pc. I want to build this seismograph (I am from Chile. You will understand my motivation for it).

  4. Pulcino ha detto:

    Ciao!
    Ma dove lo poggi per tenerlo attivo senza che scatti appena passa qualcuno che fa vibrare mobile o pavimento etc???

  5. Lucio ha detto:

    Ciao ho realizzato la tua guida e tutto funziona bene, però vorrei gentilmente chiederti: come posso fare per non creare un append del file LOG.csv?
    Vorrei ad ogni riavvio crearne uno nuovo senza riscrivere o eliminare quello precedente.
    Grazie e complimenti per come spieghi le cose.

    • Antonio Nirta ha detto:

      Ciao!
      Innanzitutto voglio ringraziarti per i complimenti: cerco di fare della chiarezza uno dei punti portanti di IntraGeo.

      Hai dato una bella idea: in effetti è utile far scrivere al sismografo più files anziché sovrascrivere sempre lo stesso. Devo sviluppare questo aggiornamento!

      Infine voglio aggiornarti su una novità!

      Ho avviato una campagna di crowdfunding su PayPal rivolta a chi vuole dare una a mano alla crescita di IntraGeo.
      I fondi raccolti saranno usati per le spese di dominio (in pratica l’affitto per il server su cui gira il sito) e per comprare attrezzi e strumenti per rendere sempre migliori i servizi che IntraGeo offre.

      Le offerte sono libere (puoi offrire quanto vuoi!); anche un piccolo gesto può fare la differenza nel processo evolutivo di IntraGeo!

      Perchè fare una donazione libera a IntraGeo?

      Fare una donazione libera a IntraGeo aiuterà molto la divulgazione geologica, un gesto nobile in favore della scienza! Il donatore sarà ringraziato pubblicamente e avrà diritto alle anteprime dei progetti prodotti, a consulenze e tanto altro!

      Se ti va di aiutare a far crescere IntraGeo, ti invio il link paypal dove puoi fare la tua donazione:
      https://paypal.me/pools/c/8q7WTvOMLR 

      A presto,
      Antonio 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *