Salve a tutti. Ultimamente vorrei creare un qualcosa come appunto scritto nel titolo ovvero creare un autoparlante con il microfono "sound sensor module" (quelli con la pcb rossa ed un LM393 per intenderci) e che successivamente i rumori circostanti vicini (come per esempio la voce) vengano riprodotti da un buzzer.
Successivamente ho fatto il seguente codice:
void setup() {
pinMode(6,OUTPUT);//buzzer
pinMode(A3,INPUT);//microfono
Serial.begin(9600);
}
void loop() {
int a = analogRead(A3);
Serial.println(a);
tone(6,a);
}
A livello logico secondo me ha senso ma quando il mio Arduino nano esegue il codie, dal buzzer si sente solamente un ronzio e che quando parlo, il ronzio aumenta di volume.
Senza pensarci ho cercato su internet delle soluzioni che spiegavano come farlo ma senza Arduino oppure veniva detto che era letteralmente impossibile fare tutto ciò.
Probabilmente vi chiederete il motivo del perché fare questa cosa con Arduino e non come ho trovato su internet: perché questo sarebbe un codice complementare di un altro progetto.(non serve spiegare questo macro-progetto perché lo ritengo fuori tema).
Accetto volentieri degli aiuti/consigli riguardo al completamento del mio obbiettivo e se in questi suggerimenti verrà detto di complicare il circuito con dei chip o altri componenti elettronici per me non ci saranno problemi.
@orlando_il_furioso: fosse anche per una sola riga, come richiesto al punto 7 del REGOLAMENTO, il codice va racchiuso tra i tag CODE, per cui, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmdT su un Mac, sempre all'interno del IDE).
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farlo al più presto.
Mmmm ... fai attenzione, da un lato tu stai leggendo l'ampiezza di un segnale, difatti la analogRead() su un pin ti ritorna un valore che rappresenta la tensione presente sul pin nel momento che tu fai la lettura; dall'altro lato tu stai usando una funzione, la tone(), che invece vuole sapere che frequenza deve riprodurre su un certo pin ... come vedi le due cose non sono correlate e quindi ovviamente il programma non fa quello che vorresti.
Guglielmo
P.S.: ... e quando indichi dei moduli hardware che usi, metti sempre un link a prodotto, così ci permetti di trovarlo più facilmente ed univocamente.
Ciò che hai descritto, se potesse funzionare, sarebbe semplicemente un amplificatore da un microfono a un altoparlante... Ciò si fa con elettronica analogica, tenendo comunque ben isolato il microfono dall'altoparlante per evitare inneschi.
... quindi vorrebbe riprodurre dal buzzer ciò che il microfono ascolta. Giusta la tua soluzione di un semplice microfono + amplificatore + altoparlante, senza Arduino UNO di mezzo che, oltretutto, non ha le risorse per fare bene questa cosa.
L'aggiunta di un microcontrollore esterno? Sì: un Teensy, senza Arduino, e con un preamplificatore per il microfono e un amplificatore per l'altoparlante...
Ma che cosa vuoi fare???...
Perché il mio obbiettivo finale sarebbe quello di realizzare una specie di walkie talkie con Arduino utilizzando degli nrf24l01(link di un progetto simile che vorrei ottenere https://www.youtube.com/watch?v=1HmDgEDWV2A&ab_channel=ZAFERYILDIZ).
Inoltre possedendo questi microfoni e dunque senza fare circuiti e fare chissà che, avevo pensato ad un progetto del genere: il microfono percepisce la voce in numeri, li manda ad un arduino collegato, quei numeri vengono trasmessi all' arduino ricevitore tramite l'nrf24l01 ed il ricevitore li legga(sempre con un nrf24l01) e li riproduca in un buzzer. Naturalmente sono partito dalla cosa piu semplice ovvero microfono e buzzer sullo stesso Arduino per poi introdurre le due antenne. Però se il consiglio è di fare un progetto senza Arduino, dopo come farei a trasmettere il segnale senza Arduino?
Beh... E' interessante, ma non puoi fare prove come pensavi tu. Dopo aver impostato opportunamente il convertitore (ADC), il segnale del microfono viene convertito in digitale e inviato al modulo RF. Quando è in ricezione, lo riconverte in analogico e lo manda all'altoparlante.
Quindi non so se ho capito bene: dovrei avere questo converitore, collegargli il pin analogico del microfono( non so se intendi questo oppure un fai da te) e collegare con scdl e sda il convertitore all'arduino. Ovviamente dovrei collegare i dispositivi al "+" e "-" della scheda e così riuscirei a leggere in digitale la frequenza della mia voce?
Intendevo dopo la conversione analogico-digitale l'Arduino legge appunto i valori in digitale.
In questo argomento ovvero la conversione con Arduino sarei alle prime armi, riusciresti a fornirmi fonte/sito dove trattano bene la materia?
tx e rx ho già potuto sperimentarli in questi giorni e sono riuscito a fare anche qualche codice interessante, la parte dove ho proprio difficoltà sta nel microfono e il come riuscire ad estrargli i numeri che combacino alla voce dato che precedentemente con l'analogRead mi è stato detto che non è corretto. Infine non ho capito ancora se questo dispositivo mi stia portando su una falsa pista.
p.s è una cosa che mi è avvenuta al momento: avrebbe un senso logico convertire la tensione dell'analogRead alla frequenza oppure è impossibile farlo/insensato oppure è quello che mi stai dicendo te in altre parole? Più ci penso più mi confondo.