Categories: Arduino

Microfono Adafruit MAX9814 con Arduino

Ben ritrovati su 9minuti.it, oggi parleremo di un modulo microfono che, a differenza degli altri venduti nei vari kit, funziona.

Questo sensore sonoro stato progettato dai mitici ragazzi di Adafruit ed è stato reso open source, quindi si trovano anche i cloni a poco prezzo.

Ogni tanto però sarebbe anche giusto supportarli, non credete?

Microfono Adafruit MAX9814 con Arduino

Il collegamento del Microfono Adafruit MAX9814 con Arduino

Bisogna solo collegare Vdd, Gnd e la porta Out a un’entrata analogica.

Se volessimo abbassare i db massimi captati dal modulo bisogna connettere Gain a Gnd o a Vdd, c’è tutto scritto sul modulo stesso ed è piuttosto intuitivo.

Lo sketch

Questo sketch non l’ho scritto io ma l’ho preso da sito della Adafruit ed è stato scritto appositamente per il microfono Adafruit MAX9814 con Arduino.

Vediamo il codice riga per riga per utilizzare il microfono come sensore di rumore.

/****************************************
  Example Sound Level Sketch for the
  Adafruit Microphone Amplifier
****************************************/
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;

void setup()
{
  Serial.begin(9600);
}


void loop()
{
  unsigned long startMillis = millis(); // Start of sample window
  unsigned int peakToPeak = 0;   // peak-to-peak level

  unsigned int signalMax = 0;
  unsigned int signalMin = 1024;

  // collect data for 50 mS
  while (millis() - startMillis < sampleWindow)
  {
    sample = analogRead(0);
    if (sample < 1024)  // toss out spurious readings
    {
      if (sample > signalMax)
      {
        signalMax = sample;  // save just the max levels
      }
      else if (sample < signalMin)
      {
        signalMin = sample;  // save just the min levels
      }
    }
  }
  peakToPeak = signalMax - signalMin;  // max - min = peak-peak amplitude
  double volts = (peakToPeak * 5.0) / 1024;  // convert to volts

  Serial.println(volts);
}

Il commento

6 – Dichiarazione della costante intera sampleWindow che sarà il tempo espresso in millisecondi fra una lettura e l’altra
7 – Dichiarazione di un intero unsigned di nome sample
9 – Apertura del Setup
11 – Inizializziamo la porta seriale
15 – Apertura del ciclo Loop
17 – Salviamo i millis attuali nella variabile startMillis di tipo long unsigned
18 – Creazione della variabile peakToPeak usata per salvare dentro la differenza fra il segnale minimo e il massimo
20 – signalMax è il valore massimo
21 – signalMin è il valore minimo
24 – Finché il contatore di millisecondi da quando è stato acceso Arduino, a cui sottraggo i millisecondi contenuti in startMillis, sono superiori alla nostra sampleWindow, allora eseguiamo il codice all’interno del ciclio while
26 – Salviamo all’interno della variabile sample il valore letto sull’entrata analogica 0
27 – Se il valore di sample è inferiore a 1024, ovvero il valore massimo leggibile sulla porta analogica
29 – Se il valore di sample è maggiore del valore massimo riscontrato salvato dentro signalMax
31 – Aggiorna il valore massimo con quello contenuto in sample
33 – Altrimenti, se il valore di sample è inferiore a signalMin
35 – Aggiornamento del valore di signalMin con il valore contenuto in sample
39 – peakToPeak è la variabile che conterrà la differenza tra il valore massimo e il valore minimo riscontrato
40 – Il valore peakToPeak viene moltiplicato per 5 che è il voltaggio con cui funziona Arduino e poi diviso per 1024 perché la porta analogica può andare da 0 a 1024.
42 – Stampa della variabile volts che conterrà il nostro valore!

Spero via sia piaciuto e che vogliate condividere questo articolo per supportare il blog.

Per questo tutorial è tutto e spero che vi sia stato utile e se avete bisogno di aiuto rimango a disposizione.

Come sempre vi chiedo se potete gentilmente commentare o condividere questo articolo per aiutarmi nella manutenzione del sito web.

Grazie mille,
Alessandro

Alessandro Oppo

Alessandro è un milanese che vorrebbe scappare da Milano, è appassionato di informatica ma vorrebbe vivere senza telefono, è un artigiano eppure vorrebbe robotizzare tutto, impara una cosa e già vorrebbe studiare dell’altro. Autodidatta da sempre, gli piace sbattere la testa finché tutto non funziona come vuole lui, spesso ci riesce anche! Visita il suo blog personale alexoppo.com Il motto che si ripete dentro la testa è: “Se ci sono riusciti gli altri ci posso riuscire anche io”.

Recent Posts

Dave dei Vallanzaska: AI, Milano e venti di guerra – Riflessioni su 30 anni di cambiamenti

https://youtu.be/2AHvRKwghkA Trascrizione Intervista a Dave dei Vallanzaska Nota: Questa è una trascrizione automatica dell'intervista, pertanto…

4 settimane ago

Libri e Social: Intervista a Sam di Rivista Matrioska | Come Creare un Progetto Culturale Online

https://youtu.be/Sg6ysOncxaE Intervista a Sam della Rivista Matrioska: TRASCRIZIONE AUTOMATICA, PUO' CONTENERE ERRORI. Alessandro: Siamo in…

1 mese ago

Solo l’occidente conosce la Storia? Dialogo col Professor Adolfo Scotto Di Luzio

https://youtu.be/tCHXvuTuJmw Transcrizione automatica dell'intervista al Professor Adolfo Scotto di Luzio Introduzione e presentazione Studente 1:…

1 mese ago

Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?

Poco prima di Natale ho avuto la fortuna di poter partecipare a un evento chiamato…

1 anno ago

Siamo quel che facciamo? – racconto breve

Armando quel giorno era particolarmente stanco. Tutto, per quanto andasse bene, sembrava metterlo sotto pressione.…

2 anni ago

Il limite è sempre la mente – Racconto breve

Armando guardò l’orologio e vide il proprio riflesso sul quadrante bianco. Il riflesso però non…

2 anni ago