Il microfono analogico dotato del connettore Grove è stato ideato e progettato utilizzando la tecnologia SiSonic MEMS. Tale tecnologia permette di realizzare microfoni estremamente silenziosi a bassi consumi energetici, affidabili e di piccoli dimensioni ideale per l’industrie di hardware open source.
Il microfono in questione rappresenta la scelta migliore per quanto riguarda i sistemi che richiedono performance di audio eccellenti in quanto può fornire un boost di 20 dB di guadagno anche in condizioni non ottimali. Inoltre presenta una protezione RF che rende i consumi energetici non molto elevati. Il dispositivo in questione è perfetto per lavorare con schede Arduino e Raspberry Pi.
In questo articolo sarà illustrato il funzionamento del microfono analogico dotato di un connettore Grove su un Terminal Wio (di cui abbiamo parlato in un precedente articolo).
Per quanto concerne il funzionamento sul Terminal Wio basta collegare il microfono tramite l’apposito cavo al Teminal Wio. In seguito collegare il terminal Wio al PC tramite l’ausilio del cavo USB.
Con questo sistema sarà possibile intravedere il grafico riguardante l’andamento dell’intensità sonora misurata dal microfono (molto utile per esempio per capire se in un determinato ambiente vi siano eventuali problemi legati all’elevata intensità sonora).
Per utilizzare il microfono copiare e incollare il seguente codice:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
#include "seeed_line_chart.h" //include the library TFT_eSPI tft; #define LINE_DIS 0X00 #define STRING_DIS 0X01 #define max_size 30 //maximum size of data doubles data; //Initilising a doubles type to store data int brightness; TFT_eSprite spr = TFT_eSprite(&tft); // Sprite const int MIC = A0; //the microphone amplifier output is connected to pin A0 int adc; int dB, PdB; //the variable that will hold the value read from the microphone each time uint8_t mode = LINE_DIS; void setup() { Serial.begin(9600); //sets the baud rate at 9600 so we can check the values the microphone is obtaining on the Serial Monitor pinMode(A0, INPUT); pinMode(WIO_KEY_C, INPUT_PULLUP); pinMode(WIO_BUZZER, OUTPUT); tft.begin(); spr.createSprite(TFT_HEIGHT, TFT_WIDTH); spr.setRotation(3); tft.setRotation(3); } void loop() { if (digitalRead(WIO_KEY_C) == LOW) { mode ++; if(mode > STRING_DIS ) mode = LINE_DIS; while(!digitalRead(WIO_KEY_C)); } display(mode); } void display(uint8_t mode) { adc = analogRead(MIC); //Read the ADC value from amplifer //Serial.println (adc);//Print ADC for initial calculation dB = (adc + 83.2073) / 7.003; //Convert ADC value to dB using Regression values if(dB > 50) { analogWrite(WIO_BUZZER, 128); }else{ analogWrite(WIO_BUZZER, 0); } spr.fillSprite(TFT_WHITE); if (data.size() == max_size) { data.pop(); //this is used to remove the first read variable } data.push(dB); //read variables and store in data //Settings for the line graph title auto header = text(0, 0) .value("MIC DB Readings") .align(center) .valign(vcenter) .width(tft.width()) .thickness(2); header.height(header.font_height() * 2); header.draw(); //Header height is the twice the height of the font if (LINE_DIS == mode){ //Settings for the line graph auto content = line_chart(20, header.height()); //(x,y) where the line graph begins content .height(tft.height() - header.height() * 1.5) //actual height of the line chart .width(tft.width() - content.x() * 2) //actual width of the line chart .based_on(0.0) //Starting point of y-axis, must be a float .show_circle(false) //drawing a cirle at each point, default is on. .value(data) //passing through the data to line graph .color(TFT_RED) //Setting the color for the line .draw(); } else if (STRING_DIS == mode){ for(int8_t line_index = 0;line_index < 5 ; line_index++) { spr.drawLine(0, 50 + line_index, tft.width(), 50 + line_index, TFT_GREEN); } auto header = text(0, 0) .thickness(1); spr.setFreeFont(&FreeSansBoldOblique24pt7b); if(dB > 50){ spr.setTextColor(TFT_RED); }else{ spr.setTextColor(TFT_BLUE); } spr.drawFloat(dB,2,70,110); spr.drawString(" dB",80 + 100,110,1); } spr.pushSprite(0, 0); delay(100); } |
Il microfono è disponibile all’acquisto al prezzo di 6.90 dollari presso il sito ufficiale Seeed Studio (clicca qui).
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
- Grove – Analog Microphone
- Wio Terminal
Seguici per non perdere le prossime novità!