Hola amigos !!! Este es un video colaborativo especial entre varios canales de youtube. La temática propuesta es proyecto con audio. El proyecto que yo les propongo es hacer un prototipo que puede ayudar a personar no videntes. Tiene dos modos de operación, uno que se activa con un interruptor, el cual dependiendo de la distancia nos va a generar un tono más continuo o discontinuo. El otro modo de operación, es mediante un audio de voz, que nos dirá con una voz a la distancia determinada por el sensor ultrasónico.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Materiales
Interruptor: Dispositivo para abrir o cerrar el paso de corriente eléctrica en un circuito. Con el vamos ha activar o desactivar el modo de tono continuo.
Arduino nano: En esta placa subiremos el código necesario para el control de todo el proyecto. Ademas se va ha encargar de alimentar todo el proyecto con 5 voltios.
Capacitor electrolítico: Va conectado entre el pin 9 del arduino y el parlante, tiene polaridad, así que debemos tener en cuanta a la hora del montaje. El valor recomandable está entre 10 a 100 uF x 16 voltios.
Pulsador: Al precionarlo va a generar un audio con una vos humana, indicando la distancia en centímetros, que determino el sensor de distancia.
Sensor ultrasónico: El módelo es un HC-SRo4, un módulo muy común en proyectos caseros.
Memoria micro SD: Aquí guardaremos los archivos de audio en formato wav después de la conversión de los archivos, para adecuarla a nuestro proyecto
Plaqueta experimental: Este tipo de placa es ideal para hacer proyectos nuevos, donde podemos ensallar un circuito antes de llevarlo a un circuito impreso de mucho mejor calidad.
Módulo lector micro SD: Este módulo nos permite hacer una interface escribir o leer archivos, en el proyecto desarrollado, hace de interface de lectura de los archivos de audio, con el arduino y la tarjeta micro sd.
Resistor: Vamos a necesitar 2 resistores de 10Kohm que irán en el interruptor y el pulsador.
Circuito
Todo el circuito funciona con 5 voltios, para obtener esta tensión conectamos el arduino a un cable usb.
El módulo HC-SR04, es un sensor ultrasónico, que genera un sonido ultrasónico durante un tiempo breve(alrededor de 10uS) aplicando un pulso de ese tiempo en el pin “trigger”. Este sonido ultrasónico rebota contra un objeto y es recibido por el pin “eco”, el tiempo de demora, entre esa transmisión y recepción nos va a determinar la distancia a la cual se encuentra un objeto como puede ser una pared.
El pin trigger va conectado al pin número 8 del arduino, mientras que el pin eco va al pin 7.
Este circuito tiene dos modos de operación, uno es el modo continuo donde escucharemos que un tono variará dependiendo de la distancia a la cual está el objeto, este modo se selecciona con el interruptor, el pin usado para el interruptor es el 3 en el arduino.
El otro modo de operación es el modo voz, donde un pulsador al ser activado nos va a reproducir un audio con la distancia a la cual está el objeto, elegí usar el pin 2 en el arduino para conectar el pulsador.
Para poder leer los archivos de audio necesitaremos un módulo lector de tarjeta micro SD, que nos permite leer los archivos almacenados en la tarjeta micro SD, estos archivos están en formato wav.
El parlante es opcional, recomendaría colocar unos auriculares en vez del parlante.
En el arduino uno subiremos toda la programación, es el cerebro del proyecto que va a procesar, toda las ordenes del usuario, procesar información que generan los módulos.
Librería
Código fuente
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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 |
//Constantes y variables usadas durante el programa #include <SimpleSDAudio.h> #define eco 7 // Pin Eco #define Trigger 8 // Pin Trigger //declaración de variables const int boton1 = 2; const int boton2 = 3; int buttonState1 = 0; int buttonState2 = 0; long duracion, distancia; // Duracion para calcular la distancia int conteo=0; int cent=0; void setup(void) { Serial.begin (115200);//Velocidad del puerto serial // SdPlay.setSDCSPin(10); // Habilitar SÓLO si su tarjeta SD no está en el pin número 4 SdPlay.init(SSDA_MODE_HALFRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER); pinMode(boton2, INPUT); //Boton pinMode(9, OUTPUT); // Fija el pin 9 como salida. pinMode(boton1, INPUT); pinMode(Trigger, OUTPUT);//Pin TRigger como salida pinMode(eco, INPUT);//Pin eco como entrada delay(500); } void loop() { buttonState1 = digitalRead(boton1); buttonState2 = digitalRead(boton2); if(buttonState2 == HIGH){ tonoDistancia(); } if(buttonState1 == LOW){ CalculoDistacia(); //Llama a la funcion CalculoDistancia } } void CalculoDistacia(){ // Esta función determina la distacia de un objeto con el sensor ultra sónico //while(conteo!=50){ digitalWrite(Trigger, LOW); delayMicroseconds(4); digitalWrite(Trigger, HIGH);//A través del pin de disparo (Trigger) enviaremos una señal de activación al sensor, lo activaremos durante 10 microsegundos y lo desactivaremos delayMicroseconds(10); digitalWrite(Trigger, LOW); duracion = pulseIn(eco, HIGH); //cent = duracion/58.2; //Calcula la distancia en centimetros basado en la velocidad del sonido. distancia = duracion * 10 / 292/ 2; //Serial.println(distancia);//Imprime ese valor en el puerto serial delay(60); // distancia=distancia + cent; // conteo=conteo + 1; // Serial.print("conteo:"); // Serial.println(conteo); // } // distancia=distancia/50; Serial.println(distancia);//Imprime ese valor en el puerto serial conteo=0; buttonState1=HIGH; if(distancia == 300){ trescientos(); cms(); } if(distancia>300){ rango(); } if(distancia >= 200 && distancia <= 299){ distancia=distancia-200; doscientos(); } if(distancia>=100 && distancia <=199){ if(distancia!=100){ ciento(); } if(distancia==100){ cien(); } distancia=distancia-100; Serial.println(distancia); } if(distancia>=90 && distancia <=99){ if(distancia!=90){ noventa(); y(); } if(distancia==90){ noventa(); cms(); } distancia=distancia-90; Serial.println(distancia); } if(distancia>=80 && distancia <=89){ if(distancia!=80){ ochenta(); y(); } if(distancia==80){ ochenta(); cms(); } distancia=distancia-80; Serial.println(distancia); } if(distancia>=70 && distancia <=79){ if(distancia!=70){ setenta(); y(); } if(distancia==70){ setenta(); cms(); } distancia=distancia-70; Serial.println(distancia); } if(distancia>=60 && distancia <=69){ if(distancia!=60){ sesenta(); y(); } if(distancia==60){ sesenta(); cms(); } distancia=distancia-60; Serial.println(distancia); } if(distancia>=50 && distancia <=59){ if(distancia!=50){ cincuenta(); y(); } if(distancia==50){ cincuenta(); cms(); } distancia=distancia-50; Serial.println(distancia); } if(distancia>=40 && distancia <=49){ if(distancia!=40){ cuarenta(); y(); } if(distancia==40){ cuarenta(); cms(); } distancia=distancia-40; Serial.println(distancia); } if(distancia>=30 && distancia <=39){ if(distancia!=30){ treinta(); y(); } if(distancia==30){ treinta(); cms(); } distancia=distancia-30; Serial.println(distancia); } if(distancia>=21 && distancia <=29){ distancia=distancia-20; veinti(); } if(distancia==20){ veinte(); cms(); } if(distancia==19){ diecinueve(); cms(); } if(distancia==18){ dieciocho(); cms(); } if(distancia==17){ diecisiete(); cms(); } if(distancia==16){ dieciseis(); cms(); } if(distancia==15){ quince(); cms(); } if(distancia==14){ catorce(); cms(); } if(distancia==13){ trece(); cms(); } if(distancia==12){ doce(); cms(); } if(distancia==11){ once(); cms(); } if(distancia==10){ diez(); cms(); } if(distancia==9){ nueve(); cms(); } if(distancia==8){ ocho(); cms(); } if(distancia==7){ siete(); cms(); } if(distancia==6){ seis(); cms(); } if(distancia==5){ cinco(); cms(); } if(distancia==4){ cuatro(); cms(); } if(distancia==3){ tres(); cms(); } if(distancia==2){ dos(); cms(); } if(distancia==1){ uno(); cms(); } //-----funciones---------------- } void uno(){ SdPlay.setFile("1.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void dos(){ SdPlay.setFile("2.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void tres(){ SdPlay.setFile("3.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void cuatro(){ SdPlay.setFile("4.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void cinco(){ SdPlay.setFile("5.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void seis(){ SdPlay.setFile("6.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void siete(){ SdPlay.setFile("7.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void ocho(){ SdPlay.setFile("8.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void nueve(){ SdPlay.setFile("9.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void diez(){ SdPlay.setFile("10.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void once(){ SdPlay.setFile("11.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void doce(){ SdPlay.setFile("12.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void trece(){ SdPlay.setFile("13.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void catorce(){ SdPlay.setFile("14.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void quince(){ SdPlay.setFile("15.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void dieciseis(){ SdPlay.setFile("16.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void diecisiete(){ SdPlay.setFile("17.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(800); } void dieciocho(){ SdPlay.setFile("18.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void diecinueve(){ SdPlay.setFile("19.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void veinte(){ SdPlay.setFile("20.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void treinta(){ SdPlay.setFile("30.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void cuarenta(){ SdPlay.setFile("40.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void cincuenta(){ SdPlay.setFile("50.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void sesenta(){ SdPlay.setFile("60.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void setenta(){ SdPlay.setFile("70.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void ochenta(){ SdPlay.setFile("80.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void noventa(){ SdPlay.setFile("90.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void cien(){ SdPlay.setFile("cien.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void doscientos(){ SdPlay.setFile("200.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void trescientos(){ SdPlay.setFile("300.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void uncentimetro(){ SdPlay.setFile("1cm.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(700); } void ciento(){ SdPlay.setFile("ciento.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void cms(){ SdPlay.setFile("cms.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(600); } void veinti(){ SdPlay.setFile("veinti.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void y(){ SdPlay.setFile("y.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void rango(){ SdPlay.setFile("rango.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(800); } void un(){ SdPlay.setFile("un.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(500); } void tonoDistancia(){ digitalWrite(Trigger, LOW); delayMicroseconds(4); digitalWrite(Trigger, HIGH);//A través del pin de disparo (Trigger) enviaremos una señal de activación al sensor, lo activaremos durante 10 microsegundos y lo desactivaremos delayMicroseconds(10); digitalWrite(Trigger, LOW); duracion = pulseIn(eco, HIGH); //cent = duracion/58.2; //Calcula la distancia en centimetros basado en la velocidad del sonido. distancia = duracion * 10 / 292/ 2; //distancia=distancia*2; Serial.println(distancia);//Imprime ese valor en el puerto serial delay(10); if(distancia<=100){ SdPlay.setFile("tono.wav");//con setFile vamos a cargar el archivo que queremos reproducir SdPlay.play(); // play reproduciomos el archivo delay(distancia); SdPlay.stop(); } } |
Archivos de audio
Recordemos que debemos cargar los archivos de audio en formato wav, en la tarjeta micro sd, para poder utilizar este proyecto. Puedes descargarlos en el siguiente link
Descargar archivos de audio–> audios
Si deseas usar otros archivos de audio para cambiar de idioma o por una vos femenina por ejemplo, debes ir a la siguiente página, donde podemos seleccionar entre diferentes tipos de voces femeninas y masculinas y otros idiomas, simplemente escribiendo un texto (tts) y con cualquier programa que tengamos en nuestra pc, grabamos el audio.
https://www.lumenvox.com/espanol/products/tts/
Ahora si lo que queremos es convertir los archivos al formato wav correcto este sitio te será de gran ayuda.
https://audio.online-convert.com/convert-to-wav
Para la correcta conversión debemos ir a “Ajustes opcionales” y en Modificar bits de resolución” elegir 8 bit, en “Modificar la tasa de muestreo” 16000 Hz y en “Modificar canales de audio” seleccionamos estéreo.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEO RECOMENDADO
oye forzosamente tiene que estar todo el proyecto con el arduino uno o puedo hacerlo con otro?
y donde puedo descargar la libreria de la card adapter microSD
Puedes usar cualquier arduino, saludos
Disculpa que tipo de parlante debo usar?
Disculpa me da error en todas las funcioned void uno() void dos() etc.. dice: forbitds converting a string constant “char’ [write-string] que se hace saludos
Hola! Hay una forma de que haya un circuito más explicado que este ( el que dejaste al inicio de la página) No sé como conectar el condensador y las demás cosas,Agradecería la ayuda :c
Te recomiendo estudiar simbología electrónica, de otra forma no vas a poder armar este circuito, ni otros, saludos
Hola disculpe la molestia, me encantó este proyecto tanto que decidí hacerlo para proyecto en mi pre pero ya hize el circuito y programé ubiqué el código en la librería pero no funciona el audio , copié el código tal como decía, es correcto haberlo copiado tal como está o hay que cambiarle algo ??
DIsculpa que parlantedebo utilizar
Por favor ayudeme :( me quedan 2 semanas para presentarlo, si no, no me dejan presentarme :(
Revisa el circuito has de tener un mal conexionado y por otro lado subiste los archivos de audio a la tarjeta ?
El circuito está tal como está en el video, los de Simple Audio a la tarjeta Micro SD ? si eso hize
Tienes que descomprimir y subir estos archivos a la tarjeta http://rogerbit.com/wprb/wp-content/uploads/2018/11/audios.zip
no puedo descargar el archivo
no reproduce el audio , probé con el monitor serie y funciona el circuito pero el audio no se produce , que puedo hacer, por favor ayuda
Hola, disculpa necesito de tu ayuda para aclarar una duda; En el proyecto, el volumen del parlante es muy bajo, ¿sabes la manera de como poder aumentarlo?, o ¿Qué tipo de parlante usar para que el sonido sea mayor?
por favor ayudame!
Hola usa un amplificador de audio pequeño con lm358, saludos
Hola , mi nombre es luis angel , por favor necesito tu ayuda , cree el circuito exactamente en un Arduino uno y funciona en cierto modo , mi problema es que no se reproduce ninguno de los dos audios , incluso lo he conectado con diferentes bocinas , inclusive a un amplificador con un Jake con ayuda de caimanes pero no sale el audio , el programa está bien y tiene la librería , la memoria tiene los archivos y todo está conectado como en tu diagrama , pero sigue sin funcionar, si me podrías ayudar por favor tengo que entregar un proyecto final y elegí este , he estado buscando soluciones por mi mismo pero no he encontrado ninguna
Sabes como quedaria el circuito? Por favor es urgente
Se puede utilizar un lector que se alimente con 3.3v?
Hola, el proyecto es genial. Que mas se le puede meter al prototipo?, porque me estan pidiendo que le agregué algo. Si la respuesta puede ser rapida sería fenomenal. Saludos
Donde consigo la libreria SimpleSDAudio.h alguien me puede pasar por favor, elegí esto como proyecto y no me funciona aun nada, por favor es URGENTE
está en esta página
Gracias lo consegui ya me salio el modo 1 pero lo de la voz humana no me reproduce, alguien tubo el mismo error?
Hola que tal! Cómo se implementarían unos audífonos para este proyecto?
Hola, me surgió este problema con el código
warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
SdPlay.setFile
Me podrías ayudar por favor.
hola , de casualidad supiste resolver el problema??, estoy en las mismas con ese error
Buenas noches puede realizar un video haciendo el circuito.
Puede ser para mañana o hoy porque tengo que presentar un proyecto por favor ayúdeme y gracias de antemano
*Para hoy porque el proyecto es para mañana