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

#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()


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
Spread the love

Lascia un commento

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