Páginas

viernes, 22 de febrero de 2013

Mini Amplificador 3Wx2 Arduino


    

 

 

 

 

 

 

 

 

 

 

Mini Amplificador 3Wx2 :

Bueno, lo que he conectado hoy ha sido el mini Amplificador de 3W con 2 viassólo he conectado un altavoz





El problema que me he encontrado es que los zócalos de conexión no están a la separación estandar de los componentes PCB para Arduino si no que es mayor por lo que no he podido soldarle los pines. He hecho las conexiones directamente a los zócalos.

Como este módulo no interactura con el Arduino si no que lo único que hace es amplificar la señal de entrada la conexión es muy sencilla.

 Lo conectamos y listo.


 

miércoles, 20 de febrero de 2013

WTV020-SD-16P II Arduino


    

 

 

 

 

 

 

 

 

 

 

Decodificador WTV020-SD-16P II:

He continuado trasteando este módulo y tras hacer varias pruebas he conseguido un software que convierta de MP3 a A4D el UsbRecorder de SOMO descargar Aquí (URL alternativa Aquí) en Sample rate: 32000


He hecho un pequeño ejemplo con el cual el Arduino reproducirá todos los tracks de la tarjeta, muy importante el nombre de los ficheros, ya que tienen que estar en el formato:

0000.a4d
0001.a4d
0002.a4d

El ejemplo:


// Modulo WTV020-SD-16P
// Conectamos el sensor de la siguiente forma:  
// GND -> GND  
// VDD -> 3,3V  
// CLK -> D3  
// DAT -> D4
// BUSY-> D5
// http://arubia45.blogspot.com.es/  
  
// Librerias necesarias  
#include "Wtv020sd16p.h"

int resetPin = 2;  // The pin number of the reset pin.
int clockPin = 3;  // The pin number of the clock pin.
int dataPin = 4;  // The pin number of the data pin.
int busyPin = 5;  // The pin number of the busy pin.

Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

void setup() {
  Serial.begin(9600);  
  //Initializes the module.
  wtv020sd16p.reset();
  wtv020sd16p.playVoice(0);
}

int i = 0;

void loop() {
  
  delay(2000);
  if (digitalRead(busyPin) == 0) {
    wtv020sd16p.stopVoice();
    Serial.println("Parado track");
    wtv020sd16p.asyncPlayVoice(i);
    Serial.print("Inicio del track ");
    Serial.println(i);
    i++;
  }
  else {
    Serial.print("Continua track ");
    Serial.println(i-1);
  }
}





Bajar Ejemplo (URL alternativa Bajar Ejemplo

Para este ejemplo he cargado algo de mayor categoría, Metallica.



 

Decodificador WTV020-SD-16P Arduino


    

 

 

 

 

 

 

 

 

 

 

Decodificador WTV020-SD-16P:


Los componentes empiezan a llegar, el primero ha sido el decodificador de ficheros de música WTV020-SD-16P es un decodificador de música WTV020 con tarjeta MicroSD de 16 Pins de salida. 


Lo primero que puedo observar es su reducido tamaño, es un poco mayor que el tamaño de una MicroSD. Precisamente esta es la primera pega que hay que salvar, encontrar una tarjeta MicroSD compatible, por lo que he podido leer por ahí acepta hasta tarjetas de 2GB pero de ciertas marcas, en mi caso las que yo tengo de 2GB no son compatibles pero una SanDisk de 1GB sí que funciona. Por lo tanto voy a utilizar una tarjeta SanDisk de 1GB.



Aquí podemos ver el PinOut del Módulo, los Pins que vamos a utilizar son:




WTV020-SD-16P
Arduino
VCC
16 (VDD)
3,3V
GND
8 (GND)
GND
RESET
1 (RESET)
D2
CLOCK
7 (P04)
D3
DATA
10 (P05)
D4
BUSY
15 (P06)
D5



Este es el esquema de conexiones para la librería Wtv020sd16p de Diego J. Arevalo, se puede bajar del foro oficial de Arduino o bien directamente aquí: Librería Wtv020sd16p 


Este módulo es capaz de trabajar directamente sin Arduino que lo controle, simplemente conectando la entrada de alimentación y tierra.  Como test podemos sólo conectar estos pins del módulo, un altavoz y con un cable a tierra hacer contacto sobre P02 ó P03 (Cambio de track).




Para hacer este testeo en la MicroSD metemos algunos sonidos de prueba en formato ad4 un formato especial, las pruebas con MP3 no las he hecho aún. Por ejemplo los sonidos que nos facilita SOMO para testear su producto (SOMO Ad4) Ejemplos AD4 





Una vez que comprobemos que el módulo es capaz de leer nuestra MicroSD y reproducir los tracks de ejemplo lo conectamos al Arduino. 

Una vez hecha esta conexión, podemos subir el ejemplo que viene junto con la librería Wtv020sd16p que debemos de descargar y descomprimir en la carpeta Libraries de nuestro entorno IDE. El ejemplo es el Wtv020sd16pExample

El resultado es el siguiente:





Hasta aquí todo lo que hemos hecho es probar la librería con el ejemplo que viene, en cuanto vaya probando iré colgando lo avanzado.


¿Te gusta mi blog?
Comprame una cerveza…

miércoles, 13 de febrero de 2013

Nuevo Proyecto Lista Componentes



    

 

 

 

 

 

 

 

 

 

 

Nuevo Proyecto Lista de Componentes:


He estado viendo en Internet las distintas posibilidades que tenemos para hacer mi nuevo proyecto (Para los que no se acuerden Nuevo Proyecto). Hay varias posibilidades pero he optado por componentes económicos.

Por ahora la lista es la siguiente:

1 Sintonizador de Radio FM con Chip Philips TEA5767            FM Radio Module TEA5767  Precio 1,46€



1 Mini Amplificador 3Wx2                                                                     Audio Amplifier 
Precio 2,10€


1 Lector de Tarjetas MicroSD y Decodificador WAV  WTV020-SD-16P
                                                                        Mini SD Card MP3 Sound Module WTV020-SD-16P
Precio 3,37€

1 LCD 20x04 Azul I2C                                                                            LCD I2C 2004 Blue
Precio 9,96€


Todos estos elementos los voy a montar para hacer el diseño con un Arduino Nano pero espero poder montarlo al final con un Arduino Mini Pro (Arduino Mini Pro) que tiene un precio de unos 5€ en total todos los componentes tienen un precio de unos 22€

Bueno, ahora sólo falta esperar a tener todos los componetes e ir probando uno a uno conforme los vaya recibiendo.
 

lunes, 11 de febrero de 2013

Sensor Humedad Arduino



 

  

 

 

 

 

Sensor Humedad


Siguiendo con los sensores sencillos pero que pueden resultar muy útiles hoy vamos a ver un sensor de humedad. 

Se puede hacer uno casero de una forma muy rápida y económica con 2 clavos largos galvanizados y una resistencia de 10KOhm. Lo podéis ver en esta web:


Si queremos que quede algo más profesional y por casi el mismo dinero lo podemos comprar hecho, tal como este:

Este sensor viene con los 2 conductores que clavaremos en una maceta o jardinera y trae 3 pines GND, VCC y DAT. Al ser un sensor analógico sólo necesita alimentación y una entrada de datos analógica.



Sensor
Arduino
VCC
5V
GND
GND
DAT
A0



En este ejemplo lo vamos a conectar a la entrada analógica 0 pero podría ser cualquier otra, quedando con un aspecto parecido a este:

Una vez tengamos todas las conexiones realizadas, podemos subir este pequeño ejemplo. Que nos mostrará por el monitor del puerto serie en que estado se encuentra la tierra de nuestra planta.

// Sensor de Humedad   
      
// Conectamos el sensor de la siguiente forma:      
// GND    -> GND      
// VCC    -> 5V      
// DAT    -> A0    
// Por ejemplo conectamos a las entrada Analógica 0      
// http://arubia45.blogspot.com.es/     


// Descripción de valores del Sensor

// 0  -300     Seco 
// 300-700     Húmedo
// 700-950     En Agua

int Valor;

void setup(){
  Serial.begin(9600);
  Serial.println("http://arubia45.blogspot.com.es");
}

   void loop(){
      Serial.print("Sensor de Humedad valor:");
      Valor = analogRead(0);
      Serial.print(Valor);
      if (Valor <= 300)
        Serial.println(" Seco, necesitas regar");
      if ((Valor > 300) and (Valor <= 700))
        Serial.println(" Humedo, no regar");
      if (Valor > 700)
        Serial.println(" Encharcado");
      delay(1000);
   }









Bajar Ejemplo (URL alternativa Ejemplo)
El resultado lo vemos en el Monitor del puerto serie:






Aquí también os dejo este mismo ejemplo combinando el sensor de humedad con un led RGB de forma que cuando más azul esté más húmedo estará el recipiente que estamos monitorizando.


Bajar Ejemplo con RGB (URL alternativa Ejemplo con RGB)
 
Comprar el sensor es muy económico, unos 2€. Por ejemplo en eBay. Comprar eBay (URL alternativa Comprar eBay)



¿Te gusta mi blog?
Comprame una cerveza…

miércoles, 6 de febrero de 2013

Led RGB SMD Arduino


 

  

 

 

 

 

 

 

 

 

 

Led RGB SMD

Hasta ahora los led que se podían encontrar a un precio aceptable para colocarlos en nuestros diseños con el Arduino eran de un sólo color y poco controlables. Se encendían o no básicamente.

Ahora en el mercado están apareciendo los Led RGB que disponen de elección de color e  intensidad.




Tiene una patilla que va a tierra y una por color (Rojo, verde y azul) que se conecta cada patilla a una salida digital del Arduino.

Cargamos este ejemplo:


// Led RGB SMD  
    
// Conectamos el sensor de la siguiente forma:    
// GND    -> GND    
// RED    -> 13    
// BLUE   -> 12  
// GREEN  -> 11  
// Por ejemplo conectamos a las entradas Digitales 11, 12 y 13    
// http://arubia45.blogspot.com.es/   

#define LEDR 13
#define LEDB 11
#define LEDG 12
int i = 0;

void setup()
{
  pinMode(LEDG,OUTPUT);
  pinMode(LEDB,OUTPUT);
  pinMode(LEDR,OUTPUT);
}

void loop()
{
  analogWrite(LEDR,255);
  analogWrite(LEDB,255);
  analogWrite(LEDG,255);   
  analogWrite(LEDR,0);
  delay(1000);     
  analogWrite(LEDG,220);
  delay(1000);    
  analogWrite(LEDR,0);
  analogWrite(LEDG,120);
  delay(1000);    
  analogWrite(LEDR,255);
  analogWrite(LEDG,0);
  delay(1000);     
  analogWrite(LEDB,0);
  delay(1000);    
  analogWrite(LEDG,255);
  analogWrite(LEDB,0);
  delay(1000);    
  analogWrite(LEDR,0);
  analogWrite(LEDG,255);
  delay(1000);    
  analogWrite(LEDG,0);
  delay(1000);      
 
  analogWrite(LEDR,255);
  analogWrite(LEDB,255);
  analogWrite(LEDG,255);   
 
  for(i=255;i0;i--)
  {
    analogWrite(LEDR,i);
    delay(10);
  }
  for(i=255;i>0;i--)
  {
    analogWrite(LEDG,i);
    delay(10);
  }
   for(i=0;i<255;i++)
  {
    analogWrite(LEDR,i);
    delay(10);
  }
  for(i=255;i>0;i--)
  {
    analogWrite(LEDB,i);
    delay(10);
  }
   for(i=0;i<255;i++)
  {
    analogWrite(LEDG,i);
    delay(10);
  }
   for(i=255;i>0;i--)
  {
    analogWrite(LEDR,i);
    delay(10);
  }
  analogWrite(LEDG,0);
  analogWrite(LEDB,0);
  analogWrite(LEDR,0);
}



Bajar Ejemplo 

Y vemos el resultado, en este caso he conectado a las mismas salidas digitales varios Led RGB en distinto orden. El vídeo lo he hecho con mi nuevo Nexus 4.



Salen un poquito caros, comparados con los de un sólo color unos 2€. Por ejemplo en eBay. Comprar eBay

lunes, 4 de febrero de 2013

Nuevo Proyecto


 

  

 

 

 

 

 

 

 

 

 

Nuevo Proyecto

Voy a empezar un proyecto nuevo, una pequeña cadena de música, con sintonizador de Radio FM, reproducción de MP3, etc ... controlado por un Arduino Nano.

Si alguien está interesado en colaborar en el proyecto o ir avanzando conmigo que me lo comenté y le envío los componentes exactos con los que voy a trabajar.

Saludos 

 

domingo, 3 de febrero de 2013

RTC DS1307 y LCD I2C Arduino


 

  

 

 

 

 

 

 

 

 

 

Reloj RTC DS1307 y LCD I2C

Para comprobar la potencia del BUS I2C vamos ha hacer un peuqeño ejemplo de conectar un RTC DS1307 y una pantalla LCD I2C.

Conectamos los 2 dispositivos al BUS I2C según la tabla que ya vimos con anterioridad:


 

I2C
Arduino
Arduino Mega
VCC
5V
5V
GND
GND
GND
SCL
A5
D21
SDA
A4
D20
 
En un Arduino UNO quedaría algo así:


El código de este ejemplo está basado en el que puse en el post del RTC, añadiendo las librerías necesarias para el LCD. Y lo más interesante una función que nos refresca la hora y la fecha sin refrescar toda la pantalla.



[...]
// Función de refresco de la hora por LCD
void printDate(){
 
  RTC.getTime();
  
  int second = RTC.second;
  int minute = RTC.minute;
  int hour = RTC.hour; //24 hour time
  int monthDay = RTC.day;
  int month = RTC.month;
  int year = RTC.year;
  
  
  dia = vacia + monthDay; if (dia.length() == 1) {dia = "0" + dia;}
  mes = vacia + month; if (mes.length() == 1) { mes = "0" + mes;}
  anno = vacia + year; if (anno.length() == 1) { anno = "0" + anno; }
  hora = vacia + hour; if (hora.length() == 1) { hora = "0" + hora; }
  minuto = vacia + minute; if (minuto.length() == 1) { minuto = "0" + minuto; }
  segundo = vacia + second; if (segundo.length() == 1) {segundo = "0" + segundo;}
 
  fechaChar = dia + "/" + mes + "/" + anno;
  horaChar  = hora + ":" + minuto + ":" + segundo;
  
     
  horaChar.toCharArray(horaC,10);
  fechaChar.toCharArray(fechaC,11); 
  
   lcd.setCursor(0,3);
   
   if (monthDay != monthDay_old) {
     if (monthDay < 10){
       lcd.print("0");
       lcd.setCursor(1,3);
       lcd.print(monthDay);
     }
     else {
       lcd.print(monthDay);
     }
     monthDay = monthDay_old;
     lcd.setCursor(2,3);
     lcd.print("/");
     lcd.setCursor(3,3);
   }
   
   if (month != month_old) {
     if (month < 10){
       lcd.print("0");
       lcd.setCursor(4,3);
       lcd.print(month);
     }
     else {
       lcd.print(month);
     }
     lcd.setCursor(5,3);
     lcd.print("/");
     lcd.setCursor(6,3);
     month = month_old;
   }
   if (year != year_old) {
     if (year < 10){
       lcd.print("0");
       lcd.setCursor(7,3);
       lcd.print(year);
     }
     else {
       lcd.print(year);
     }
     year = year_old;
   }

   lcd.setCursor(12,3);
   if (hour < 10){
     lcd.print("0");
     lcd.setCursor(13,3);
     lcd.print(hour);
   }
   else {
     lcd.print(hour);
   }

   lcd.setCursor(14,3);
   lcd.print(":");
   lcd.setCursor(15,3);
   if (minute < 10){
     lcd.print("0");
     lcd.setCursor(16,3);
     lcd.print(minute);
   }
   else {
     lcd.print(minute);
   }
   

   lcd.setCursor(17,3);
   lcd.print(":");
   lcd.setCursor(18,3);
   if (second < 10){
     lcd.print("0");
     lcd.setCursor(19,3);
     lcd.print(second);
   }
   else {
     lcd.print(second);
   }

}
[...]







Una vez cargado el ejemplo tenemos un Display LCD con la fecha y la hora como este:




Este ejemplo lo iré completando con más elementos.