Gestire un accelerometro con Python o con Arduino

La scheda Flip&Click è una combinazione vincente tra Arduino e Python: la flessibilità dell’hardware open source, con la semplicità di programmazione di Python. Flip&Click è essenzialmente Arduino Due con la possibilità di implementare una serie di moduli Click MikroBus che la MikroElektronika mette a disposizione. In questo articolo vedremo come poter implementare degli accelerometri Accel Click e Accel 2 Click per poter dar vita a tanti progetti fantasiosi. Gli accelerometri misurano l'accelerazione nei tre assi x, y e z con diversi approcci, il più comune sfrutta la rilevazione della capacità. Quando vi sono due strutture vicine adiacenti vi è una variazione di capacità elettrica opportunamente misurabile. Se un accelerometro viene spostato in qualsiasi direzione, la capacità cambia e la relativa conversione della variazione di capacità in tensione elettrica permette di poter implementare questa misura nei sistemi elettronici in varie soluzioni di interfacce e sensing. 

Introduzione

L'accelerometro capacitivo utilizza micro strutture collegate ad un punto fisso. Quando l'accelerazione è applicata a un dispositivo, le micro-strutture si muovono modificando la capacità elettrica tra di esse. Per mezzo di una circuiteria elettronica, la variazione di capacità è convertita in una tensione.  Ci sono molti tipi di accelerometri, ma la differenza principale è la quantità di "g" che può essere misurata con precisione. Accelerometri "Low g" possono misurare circa 20 g o meno e sono più adatti per un tempo di risposta basso con bassi consumi di corrente, di solito trovano impiego negli smartphone. Accelerometri "High g", invece, sono progettati per rilevare molti più "g", e sono molto più adatti per soluzioni automotive.

Soluzioni

Accel Click è una scheda nel fattore di forma mikroBUS, dotata del modulo accelerometro ADXL345 a 3 assi ultra-low power e ad alta risoluzione di misura (13-bit). Il modulo supporta diverse funzioni di rilevamento, quali quello tap singolo / doppio, di caduta libera ecc. La scheda è dotata di un sistema di gestione della memoria con un buffer FIFO 32 livelli per memorizzare i dati (Figura 1 e 2).

Figura 1: Il modulo Accel Click

Figura 1: Il modulo Accel Click

 

Figura 2: Schema elettrico del modulo Accel click

Figura 2: Schema elettrico del modulo Accel click

Implementando il modulo Accel Click con due 8x8 B Click e un Buzz Click possiamo realizzare un simpatico Moving Ball che permette di sincronizzare i movimenti dell’accelerometro con l’illuminazione LED.

void loop() {
   accel.getEvent(&event);
   x = map(event.acceleration.x, -8, 8, -4, 4);
   y = map(event.acceleration.y, -8, 8, -4, 4);
   Serial.print("X: "); Serial.print(x); Serial.print("  ");
   Serial.print("Y: "); Serial.print(y); Serial.print("  ");
   Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("  ");Serial.println("m/s^2 ");
   delay(50);
   updateposition(x,y);

}

Ricordando inoltre di definire gli include e variabili:

#include <Adafruit_ADXL345_U.h>
#include <Adafruit_Sensor.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);

Il modulo BUZZ Click, invece, è un altoparlante piezoelettrico in grado di emettere segnali audio. La frequenza di risonanza del cicalino è 3.8 kHz (figura 3 e 4). Il modulo 8x8 Click visto anche nel progetto Etilometro è una matrice a Led display che implementa il driver MAX7219 8-digit.

Figura 3: Il modulo Buzz Click

Figura 3: Il modulo Buzz Click

 

Figura 4: Schema elettrico del Buzz Click

Figura 4: Schema elettrico del Buzz Click

Un altro accelerometro MikroBUS della MikroElektronika è Accel 2 Click che integra un sensore MEMS di movimento LIS3DSH low power a tre assi e uscita digitale, con un buffer FIFO e due macchine a stati programmabili integrati nel sensore. Accel 2 click è stato progettato solo con un’alimentazione di 3,3V e trova spazio nelle applicazioni di gesture recognition (figura 5 e 6). 

Figura 5: Il modulo Accel 2 Click

Figura 5: Il modulo Accel 2 Click

 

Figura 6: Schema elettrico del modulo Accele 2 Click

Figura 6: Schema elettrico del modulo Accel 2 Click

I sensori MEMS (Sensori Micro-Elettro-Meccanici) sono utilizzati per i sistemi airbag, nelle serrature delle porte automatiche, nei sistemi di sicurezza e rilevamento terremoto, nelle stampanti a getto d'inchiostro e negli elettrodomestici da cucina. Un bellissimo gioco Magic8Ball implementa il sensore Accel 2 e un pulsante Button come una specie di hi-tech per l’aiuto decisionale: una “scossa” deciderà il tuo destino, così che le decisioni non saranno lasciate ad un semplice lancio di una monetina ma ad una circuiteria elettronica.  Divertente, ma soprattutto come base per poter utilizzare il codice Accel 2 Click in altre occasioni progettuali. Di seguito la funzione setup() del progetto Magic 8 Ball.

void setup()
{
    Serial.begin( 57600 );  /**< For debugging purposes */
    SPI.begin();            /**< Used with OLED, Rotary, Thermo */
    Wire.begin();           /**< Used with RTC */

    for( int i = 0; i < 4; i++ )
    {
        pinMode( leds[i], OUTPUT );
        digitalWrite( leds[i], LOW );
    }

    pinMode( BTN_PWM, OUTPUT );
    pinMode( BTN_INT, INPUT_PULLUP );

    analogWrite( BTN_PWM, 150 );
    attachInterrupt( digitalPinToInterrupt( BTN_INT ), btn_isr, FALLING );

    /* Initialise the sensor */
    if( !accel.begin() )
    {
        while( 1 );
    }

    Serial.println( "Accelerometer is Running" );
    accel.setRange( ADXL345_RANGE_4_G );

    state = WAITING;
    display_entered = false;
}

Il Button Click permette di aggiungere un singolo pulsante con una retroilluminazione a LED di colore rosso. Quando viene premuto, invia un segnale di interruzione al microcontrollore.

void btn_isr()
{
    static unsigned long last_interrupt_time;
    unsigned long interrupt_time = millis();

    // If interrupts come faster than 200ms, assume it's a bounce and ignore
    if ( interrupt_time - last_interrupt_time > 80 )
    {
        if( state == READ_ACCEL )
            return;

        state++;
        //display_entered = false;

        if( state > ANSWERING )
            state = WAITING;
    }

    display_entered = false;
    last_interrupt_time = interrupt_time;

}

Conclusioni

La Flip&Click combina Arduino e Python in una stessa scheda, in questo esempio abbiamo visto come poter implementare con il codice Arduino dei semplici accelerometri disponibili come moduli Click che la MikroElektronika mette a disposizione. Al seguente link  trovate centinaia di moduli ognuno per una particolare funzione: GPS, relè, moduli RGB etc. Flip&Click è una scheda espandibile fino a 4 moduli Click, il socket MikroBUS è composto da collettori femmina 1x8 con alimentazione da 5 e 3.3 V. E' possibile combinare fino a 4 schede Click per ottenere infinite soluzioni di funzionamento con otre 160 schede a disposizione. Grazie al MikroBus è possibile eseguire correttamente i collegamenti, evitando le "collisioni" relativamente ai segnali che possono contribuire a fenomeni di cortocircuito. L'elemento principale dei moduli Click è rappresentato, oltre che dalla semplicità di programmazione, dalla facilità estrema di connessione con la board master. Nulla vieta di implementare questi progetti con il linguaggio di programmazione Python (per ulteriori informazioni consultare il corso Python riportato nella sezione "Link di approfondimento"), avendo a disposizione la suite Zerynth Studio scaricabile dal seguente link. La suite è composta da un IDE per la programmazione embedded in Python, una Virtual Machine e una App per la gestione Mobile.

Link di approfondimento

 

Allegati

Codice Arduino Moving Ball

Codice Arduino Magic 8 Ball

 

 

 

3 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 8 ottobre 2016
  2. BudaiRiccardo BudaiRiccardo 21 ottobre 2016

Scrivi un commento