Come costruire un sismografo con Arduino

Utilizzando Arduino, con una spesa di poche decine di euro, possiamo divertirci a costruire della strumentazione geologica. In questo post, ad esempio, vedremo come costruire un sismografo.

Tuttavia si tratta di un prototipo perciò i risultati ottenuti con esso vanno presi con senso critico.

sismografo-arduino
Sismografo costruito con Arduino

Che cosa è Arduino

Arduino é, come viene detto nel sito ufficiale: “una piattaforma elettronica open source basata su hardware e software facili da usare”. Le schede elettroniche Arduino sono molto piccole ed economiche, ma estremamente versatili.

Si possono usare per controllare le luci di casa, far funzionare un robot, lanciare un razzo amatoriale, realizzare complessi strumenti scientifici e mille altre cose. Essenzialmente una scheda Arduino è un elaboratore che legge un input e restituisce un output; ognuno di noi può programmarlo usano l’Arduino Programing Language e l’Arduino Software (IDE).

La piattaforma Arduino è stata ideata e sviluppata in data 2003 da alcuni membri dell’Interaction Design Institute di Ivrea (il nome della piattaforma deriva da quello del bar di Ivrea frequentato dai fondatori del progetto, nome che richiama a sua volta quello di Arduino d’Ivrea, Re d’Italia nel 1002.).

Col passare degli anni migliaia di persone in tutto il mondo hanno scelto Arduino per realizzare i propri progetti. Questi ultimi hanno trovato posto nella casa di hobbisti, negli studi di professionisti e in molte scuole, dove Arduino può diventare una grande risorsa didattica.

Sia il software che gli schemi hardware di Arduino sono distribuiti con licenza copyleft, anche se il nome e il logo sono registrati, quindi terzi ne possono usufruire gratuitamente per creare prodotti propri.

Accelerometro MPU-6050 (GY-521)

Il cuore del nostro sismografo è il modulo GY-521 monta il sensore MPU-6050 che contiene un giroscopio e un accelerometro.

Fornisce misurazioni precise in quanto ha un convertitore digitale a 16 bit per ciascun canale e cattura allo stesso tempo x, y e z. Il sensore usa un bus I2C per comunicare con Arduino.

Accelerometro MPU-6050 (GY-521)
Accelerometro MPU-6050 (GY-521)

Costruzione del sismografo: gli strumenti necessari

Gli elementi necessari per assemblare il sismografo sono:

  • Accelerometro MPU-6050 (GY-521)
  • Scheda ELEGOO Uno R3
  • Cavetti jumper per eseguire i collegamenti
  • Breadboard

Ai fini di questo progetto, io ho usato l’Elegoo Starter Kit Advanced, al cui interno – oltre agli strumenti sopra elencati – si possono trovare led, resistenze, un piccolo monitor ( e tanto altro) che saranno utili per le modifiche future al nostro sismografo.

Infine, uno strumento molto importate è il saldatore a stagno che ci permetterà di saldare i pin del pettine all’accelerometro.

I collegamenti del nostro sismografo

Una volta saldati i pin al sensore, non ci resta che collegare quest’ultimo alla scheda:

AccelerometroArduino
VCC3.3V
GNDGND
SCLA5
SDAA4
sismografo-arduino
Schema grafico dei collegamenti

Il software del nostro sismografo

Una volta eseguiti i collegamenti, passiamo al lato programmazione.

Innanzitutto scarichiamo ed installiamo il seguente software:

Carichiamo le librerie i2cdevlib e MGU6050 all’interno della cartella delle librerie di Arduino che troviamo nel nostro disco rigido.

A questo punto testiamo se i collegamenti sono stati fatti in maniera corretta; carichiamo il file scanner.ino (che possiamo trovare qui) e nella finestra del monitor seriale dovremmo leggere questo messaggio:

Se uscirà questo messaggio:

I2C Scanner
Scanning…
I2C device found at address 0x68 !
done

è tutto OK! Mentre se uscirà questo:

Scanning…
No I2C device found

Il codice, per rilevare e visualizzare le tracce X- Y- Z, che va caricato nella scheda è il seguente:

#include <Wire>

const int MPU = 0x68;   //Default address of I2C for MPU 6050
int16_t AcX, AcY, AcZ;

void setup() {
  Wire.begin();                   // Wire library initialization
  Wire.beginTransmission(MPU);    // Begin transmission to MPU
  Wire.write(0x6B);               // PWR_MGMT_1 register
  Wire.write(0);                  // MPU-6050 to start mode
  Wire.endTransmission(true);
  Serial.begin(9600);
}

void loop() {
  Wire.beginTransmission(MPU);      // Start transfer
  Wire.write(0x3B);                 // register 0x3B (ACCEL_XOUT_H), records data in queue
  Wire.endTransmission(false);      // Maintain connection
  Wire.requestFrom(MPU, 14, true);  // Request data to MPU
  //Reads byte by byte
  AcX = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) &  0x3C (ACCEL_XOUT_L)
  AcY = Wire.read() << 8 | Wire.read(); // 0x3D (ACCEL_YOUT_H) &  0x3E (ACCEL_YOUT_L)
  AcZ = Wire.read() <<; 8 | Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)

  //Prints values on Serial
  Serial.print(AcX);
  Serial.print(","); 
  Serial.print(AcY);
  Serial.print(","); 
  Serial.println(AcZ);
  delay(20);
}

Per verificare la bontà di un file .ino dobbiamo cliccare sul segno di spunta posto sotto il menù file, mentre per caricarlo nella scheda dobbiamo cliccare sulla freccia destra posta accanto al segno di spunta.

schermata-arduino
Schermata dell’IDE Arduino

Per vedere in real-time le tracce mentre vengono rilevate, apriamo il Plotter Seriale che si trova nel menù Strumenti del’IDE ( o lo richiamiamo con la combinazione di tasti CTRL+Maiusc+L).

Tracce rilevate con il nostro sismografo.
Spread the love

2 thoughts on “Come costruire un sismografo con Arduino

  1. Ciao Antonio
    Ho creato il mio sismografo e funziona molto bene. volevo sapere se fosse possibile registrare il dato per poi analizzare i dati
    grazie mille
    Eugenio

    1. Ciao Eugenio! Bene, mi fa piacere che il sismografo funzioni!
      Si, possiamo registrare i dati rilevati dal sismografo. Sto cercando di inserire un modulo reader/writer per carte SD, in modo da registrare i dati su file e quindi successivamente elaborarli.
      Ovviamente posterò tutti i risultati che otterrò in modo da tenervi aggiornati.

      Antonio

Lascia un commento

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