Navigando pe il Web ci siamo imbattuti in questo interessante post di Antonio Nirta, un geologo laureato all’Università di Pisa. Antonio gestisce il sito IntraGeo.it, e ci ha concesso di riprodurre il suo articolo “Un sismografo con Arduino” pubblicato lo scorso Giugno su questo link.
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.
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, che monta il sensore MPU-6050 contenente 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.
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:
Accelerometro | Arduino |
---|---|
VCC | 3.3V |
GND | GND |
SCL | A5 |
SDA | A4 |
Il software del nostro sismografo
Una volta eseguiti i collegamenti, passiamo al lato programmazione.
Innanzitutto scarichiamo ed installiamo il seguente software:
- Arduino IDE (scaricabile da qui)
- Libreria i2cdevlib (scaricabile da qui)
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#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.
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).
Sarà anche possibile registrare i dati rilevati dal sismografo, grazie all’inserimento di un modulo reader/writer per carte SD. Il modulo, attualmente in fase di test, sarà in grado di registrare i dati su file e quindi successivamente elaborarli.
Ringraziamo nuovamente Antonio Nirta per averci permesso di riprodurre il suo interessantissimo articolo.
Molto interessante, purtroppo il link della libreria “i2cdevlib” restituisce una libreria che l’IDE di arduino non riconosce. Peccato, non ho potuto provarlo.
Hai provato con questa:
https://github.com/jrowberg/i2cdevlib
HAi seguito le istruzioni per l’installazione sull’IDE? Quale errore ti dà?
Error: 13 INTERNAL: Impossibile installare la libreria: sto spostando l’archivio estratto nella directory di destinazione: la libreria non è valida.
L’errore me lo da anche su questa che hai postato in alternativa
Purtroppo la gestione delle librerie via IDE è sempre stata un po’ farraginosa.
Come prima mossa, il consiglio è di cancellare lo zip o la libreria dalla cartella Arduino/librerie, e ripetere l’installazione (l’installer si blocca se trova la directory già presente…(!) )
Poi, ricorda che la procedura di installazione è leggermente diversa tra IDE 1.8.x ee la verdsione 2.x (https://www.adrirobot.it/arduino-tutorial-come-installare-una-libreria/ )
Infine, prova a seguire uno di questi threads e controllare se la tua attività corrisponda: https://forum.arduino.cc/t/problema-con-installazione-librerie/658713/6
Facci sapere come va… 🙂