

AUDIO_SHIELD PER ARDUINO - IN KIT
Basata sull'integrato ISD1790PY, questa shield per Arduino (Duemilanove, UNO o Mega), permette di registrare e riprodurre fino a 90 secondi di musica e parlato. L'accoppiamento ad Arduino è reso molto semplice grazie ad un'apposita libreria da caricare nello sketch, che provvede alla gestione del chip vocale ISD. Dispone di vari pulsanti di controllo (REC, PLAY, FWD, ERASE, VOL, ecc), capsula microfonica, una presa jack da c.s. per l'ingresso audio di linea e una presa per l'uscita audio. La registrazione dei messaggi si effettua direttamente tramite la capsula microfonica, l'ingresso audio di linea IN può essere utile per registrare messaggi o musica provenienti da una fonte esterna (piastre a cassette, lettori MP3, mixer ecc). La durata della registrazione è stabilita dalla frequenza di clock dell'oscillatore interno all'ISD1790PY, che scandisce il campionamento; tale frequenza si definisce con il valore della resistenza R4 e nel nostro caso vale 8 kHz. La resistenza può assumere valori compresi tra 53 kHz e 160 kHz: nel primo caso si eleva la frequenza di campionamento e con essa la qualità dell'audio registrato e riprodotto, ma il tempo utile per la registrazione scende a 60 secondi soltanto, mentre nel secondo il campionamento va a 4 kHz, la qualità audio peggiora, ma il tempo utile raddoppia rispetto al valore predefinito, passando da 90 a 180 secondi. La shield preleva l'alimentazione dai contatti 5 V e GND di Arduino. Particolarmente utile per attivare dei messaggi a voce al verificarsi di un evento in un impianto di allarme, per un controllo I/O generico e per domotica, oppure per far riprodurre un avviso quando viene rilevato l'approssimarsi di una persona o di un veicolo in una zona. Dimensioni: 69x55 mm.
|
|||
MONTATA SU ARDUINO...
|
|||
![]() |
![]() |
||
SKETCH DI ESEMPIO
|
|||
Il seguente sketch permette di gestire le funzioni della shield.
|
|||
#include <ISD1700.h>
ISD1700 chip(10); // Initialize chipcorder with
// SS at Arduino's digital pin 10
int apc=0;
int vol=0; //volume 0=MAX, 7=min
int startAddr=0x10;
int endAddr =0x2DF;
int inInt=0;
void setup()
{
apc = apc | vol; //D0, D1, D2
//apc = apc | 0x8; //D3 comment to disable output monitor during record
apc = apc | 0x50; // D4& D6 select MIC REC
//apc = apc | 0x00; // D4& D6 select AnaIn REC
//apc = apc | 0x10; // D4& D6 select MIC + AnaIn REC
apc = apc | 0x80; // D7 AUX ON, comment enable AUD
apc = apc | 0x100; // D8 SPK OFF, comment enable SPK
//apc = apc | 0x200; // D9 Analog OUT OFF, comment enable Analog OUT
//apc = apc | 0x400; // D10 vAlert OFF, comment enable vAlert
apc = apc | 0x800; // D11 EOM ON, comment disable EOM
Serial.begin(9600);
Serial.println("Sketch is starting up");
}
void loop()
{
char c;
if(Serial.available())
{
/* Power Up */
chip.pu();
c = Serial.read();
switch(c)
{
case 'A':
Serial.println(chip.rd_apc(), BIN);
break;
case 'Y':
chip.play();
break;
case 'P':
chip.stop();
delay(500);
break;
case 'E':
chip.erase();
delay(500);
break;
case 'R':
chip.rec();
break;
case 'F':
chip.fwd();
delay(500);
break;
case 'Z':
chip.g_erase();
delay(500);
break;
case 'I':
Serial.println(chip.devid(), BIN);
break;
case 'W':
Serial.println(apc, BIN);
chip.wr_apc2(apc); //
break;
case 'S':
Serial.println(chip.rd_status(), BIN);
break;
case '>':
startAddr=SerialIn();
Serial.print("startAddr: ");
Serial.println(startAddr);
break;
case '<':
endAddr=SerialIn();
Serial.print("endAddr: ");
Serial.println(endAddr);
break;
case 'y':
chip.set_play(startAddr,endAddr);
break;
case 'r':
//chip.set_erase(startAddr,endAddr);
//delay(500);
chip.set_rec(startAddr,endAddr);
break;
case 'e':
chip.set_erase(startAddr,endAddr);
delay(500);
break;
}
Serial.print("Status---> ");
Serial.print(chip.CMD_ERR()? "CMD_ERR ": "OK ");
Serial.print(chip.PU()? "PU ": "NO PU ");
Serial.print(chip.RDY()? "RDY ": "Not_RDY ");
Serial.print(chip.rd_status(), BIN);
Serial.println();
delay(1000);
}
}
int SerialIn(){
inInt=0;
while (Serial.available() <= 0)
{
delay(300);
}
while (Serial.available()) {
// get the new byte:
char c = Serial.read();
// add it to the inputString:
inInt = (inInt*10) + (c-48);
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (c == 'n') {
//stringComplete = true;
Serial.print("stringComplete ");
}
}
//c = Serial.read()-48;
//mess(c);
return (inInt);
}
/*
void mess(int num){
Serial.print("num: ");
Serial.println(num);
startAddr=(0x50*num)+0x10;
endAddr=(startAddr+0x50)-1;
Serial.print("startAddr: ");
Serial.print(startAddr, HEX);
Serial.print(" - endAddr: ");
Serial.println(endAddr, HEX);
}
*/
|
|||
SCHERMATE DEL SOFTWARE
|
|||
Software per PC appositamente realizzato da noi per gestire i messaggi all'interno di qualsiasi integrato ISD1700 e programmare gli integrati di tale famiglia; il software consente di caricare nel chip vocale file audio memorizzati nel computer definendo eventualmente anche le locazioni di memoria in cui scriverli o lasciando che sia il PC a decidere come collocarli. | |||
CLICCA SULL'IMMAGINE PER INGRANDIRE
|
|||
CLICCA SULL'IMMAGINE PER INGRANDIRE
|
|||
Riferimento: EN0214-39
MODULO TASTIERA TOUCH CAPACITIVO SENSORE TATTILE TTP229 PER ARDUINO E RASPBERRY
Riferimento: EN0214
SCHEDA DI ESPANSIONE MOTOR DRIVE L293D PER ESP8266 ESP12
Riferimento: EN0309-13
PORTACHIAVI AGGIUNTIVO PER MODULO RFID 13.56 MHZ
Riferimento: EN0185
CONVERTITORE DI LIVELLI LOGICI BIDIREZIONALE 5V 3,3V
Riferimento: EN2031-7
MODULO SENSORE QUALITÀ DELL'ARIA GAS MQ7
Riferimento: EN2818
MODULO MINI SENSORE DI MOVIMENTO PIR SR602
Riferimento: EN0214-41
DRIVER PER PWM/SERVO A 16 CANALI 12 BIT
Riferimento: ROBOT_SHIELD
SHIELD PER ARDUSPIDERIN, ARDUBIPE E ARDUFILIPPO
Riferimento: EN0516
MODULO SENSORE CONCENTRAZIONE OSSIGENO SANGUE PULSOSSIMETRO MAX30102
Riferimento: EN0214-4
BOARD WEMOS D1 ESP8266 COMPATIBILE CON ARDUINO
Riferimento: EN0516
MODULO SENSORE CONCENTRAZIONE OSSIGENO SANGUE PULSOSSIMETRO MAX30102
Riferimento: EN0214-13
MODULO SENSORE TOUCH INTERRUTTORE CAPACITIVO TTP223