jueves, 14 de febrero de 2013

Arduino: Modulo I2C LCD

El arduino están limitadas el numero de entradas y salidas.
Para aumentar dicho numero tiene implementado el Bus I2C. Con el podemos expandir el numero de periféricos utilizando solamente dos pines.

El modulo que se describe, es un interfase I2C para LCD.
  • Con solo dos lineas podemos gobernar un LCD compatible con el chip 44870.
  • Dirección del Bus 0x20 (no se puede modificar)
  • Transistor para la retro iluminación del LCD.
  • Potenciómetro de contraste.
  • Preparado para soldar directamente al LCD
Para utilizarlo es recomendable utilizar la librería LiquidCrystal_I2C.

Ejemplo para un dsiplay 16x4

/*******************************************
Prueba del funcionamiento del dispaly
Proyecto
LCD 16x4 I2c
  ** EA7TB **
www.ea7tb.com
*/
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h> 

#define BACKLIGHT_PIN     7
#define  LED_OFF  0
#define  LED_ON  1


LiquidCrystal_I2C  lcd(0x20,4,5,6,0,1,2,3);

void setup()
{
  lcd.begin (16,4);  // inicializo el LCD 20x4
  // Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,NEGATIVE);
  lcd.setBacklight(LED_ON);

  lcd.home();
 
  lcd.setCursor(0, 0);

  for(int i=0;i<16;i++) lcd.print("*");
  lcd.setCursor(0, 1);

  lcd.print(" Hola mundo   ");
  lcd.setCursor(0,2);
  lcd.print("Display 16x4");
  lcd.setCursor(0, 3);
  for(int i=0;i<16;i++) lcd.print("*");
 
  delay(1000);
  lcd.clear();
}

void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Proyecto");
  lcd.setCursor(0,1);
  lcd.print("LCD 16x4 I2C ");
  lcd.setCursor(0,2);
  lcd.print("  ** EA7TB **");
  lcd.setCursor(0,3);
  lcd.print("www.ea7tb.com");
  delay(5000);
 }


Una vez modificado el potenciómetro.






domingo, 10 de febrero de 2013

Arduino: Buscador de dispositivos I2C

Por regla general, sabemos la dirección I2C de un dispositivo o integrado.
Los programas para obtener la dirección del bus se denomina "sniffer".
El programa original lo podemos descargar de la siguiente dirección:
http://playground.arduino.cc/Main/I2cScanner

jueves, 24 de enero de 2013

Arduino: Errores con la libreria Wire.

En la librería "Wire.h", han desaparecido los términos "receive" y "send".
Cuando escribimos un programa utilizando la librería aparecerán los siguientes  errores:
  • error: ‘class TwoWire’ has no member named ‘receive’
  • error: ‘class TwoWire’ has no member named ‘send’
Dichos términos se tienen que sustituir por:

  • receive por read.
  • send por write
¿Facil?
Saludos

domingo, 20 de enero de 2013

Arduino: Incorporar nuevas librerias.

Cuando queremos utilizar una nueva librería para Arduino, hay que cargar dicha librería en los ficheros de Arduino.
El proceso es el siguiente:
  • Nos situamos en el subdirectorio de las librerías de Arduino:
    •  cd   /usr/share/arduino/libraries
  • Creamos un nuevo subdirectorio:
    •  sudo mkdir nueva_librería.
  • En ella se copian los ficheros de la libreria, excepto los ejemplos.
    • sudo cp ficheros_nueva_libreria /usr/share/arduino/libraries/nueva_libreria/ficheros/nueva_libreria
  • Creamos un subdirectorio para los ejemplos:
    • sudo mkdir nueva_libreria/examples. 
  • En ella se copia los ejemplos, de esta forma aparecerá en el submenu de Arduino los ejemplos de esta librería.
  • Cerramos el Arduino para que se recargue las nuevas librerías, al arrancarlo de nuevo ya las tendremos disponibles.

sábado, 19 de enero de 2013

Arduino y Tarjeta SD


Las tarjetas SD pueden utilizar dos protocolos:

  • Bus SD: Trasferencia paralela de 4 bits. 
  • SPI (Serial Peripheral Interface): Interfaz de Periféricos Serie.
Vamos a utilizar el interfase SPI. Este interfase funciona con una configuración Maestro-Esclavo. Controla la transferencia mediante un bus serie, controlado por reloj. La tarjeta seria la esclava y el Arduino es el Master,
Las señales que se utilizan son:
  • CLK (Línea de reloj): Es la señal de reloj.
  • MOSI (MasterOut-SlaveIn): Línea por donde el maestro envía y el esclavo recibe.
  • MISO (MasterIn-SlaveOut): Línea por donde el maestro recibe y el esclavo envía.
  • CS (Chip Select)/ SS (Slave Selector): Conecta o desconecta la operación del dispositivo con el que comunicamos. Permite la comunicación de varios esclavos a un mismo maestro, multiplexando la señal de reloj.

Pines de una tarjeta SD

 

Conexiones entre Arduino y SD

Señal
Arduino
SD
CS / SS
4
1
MOSI
11
2
MISO
12
7
CLK
13
5
VCC


4
GND


3, 6

Los pines 8 y 9 de la tarjeta SD no se utilizan

Montaje de un interfase casero

La alimentación y los buses de la tarjeta trabajan a 3,v3. Por lo que hay que incluir un divisor de tensión en todas los lineas. Para esto, instalaremos un divisor de tensión, según el esquema inferior.

R1, R3, R5 = 2K2
R2, R4, R6 = 1K2


Software

Arduino tiene una librería especifica para este dispositivo SD.H
Hay que definir el pin por el cual seleccionamos la señal CS/SS. Normalmente se utiliza el pin 4.
Pero hay módulos que la tienen definida:.
  • Arduino Ethernet shield: pin 4
  • Adafruit SD shields and modules: pin 10
  • Sparkfun SD shield: pin 8

En el lanzador de Arduino existen varios ejemplos para comenzar.
  • Cardinfo: Muestra la información de la tarjeta. Formato, capacidad, ficheros presentes.
  • Dataloger: Muestra los datos grabados de un sensor.
  • DumpFile: Muestra el contenido de la tarjeta en el monitor serie.
  • Files: Como crear y borrar ficheros en la SD.
  • Listfiles: Muestra los ficheros presentes en la tarjeta (el ejemplo tiene los siguientes errores):
  • incluir la linea: const int chipSelect = 4;
  • cambiar la linea pinMode(10, OUTPUT); por pinMode(4, OUTPUT);
  • if (!SD.begin(10)) { por if (!SD.begin(4)) {
  • ReadWrite: como leer y escribir en la tarjeta.
Las pruebas de los eejmplos las he realizado con Arduino UNO y Arduino Ethernet shield.

jueves, 17 de enero de 2013

Montaje Iler-40 o Iler-20

Montaje del Iller (Iler-40 o Iler-20)
Las instrucciones de montaje que suministra EA3GCY, son correctas.
Pero a la hora de colocar los componentes, he preferido cambiar el orden de montar los componentes.
Empiezo montando la placa del CAG.
El orden de montaje de los componentes es la siguiente:
  • Puente.
  • Resistencia R1.
  • Diodos.
  • Alargador para conexión a la placa  principal.
  • Condensadores ceramicos.
  • Resto de resistencias.
  • Transistores.
  • Condensador electrolítico.


OpenBeacon

Nuevo Proyecto: OpenBeacon
MEPT  (manned experimental propagation transmitter).

Puede trabajar en diversos modos como:
  • QRSS.
  • DFCW.
  • Hellschreiber multi-tono.
Se configura a través del puerto USB. Ajustando todos sus parámetros a través de la linea de comandos.
Despues de configurarlo, operara independiente.


Se puede adquirir en www.etherkit.com.
Toda la documentacion esta disponible en la pagina anterior.
Hay un articulo sobre este en la revista de Enero /2013 de URE. El autor es John Iza EA2SN


Características:
  • Frecuencia: Controlada por cristal.
    • Disponible en la bandas de 80, 40 y 30 metros
  • Modos: CW, QRSS, DFCW, Sequential Multi-tone Hellschreiber, Glyphcode, WSPR
  • Potencia salida (nominal):30 metros: 300 mW, 10 metros: 100 mW (alimentado a +13.7 VC)
  • Alimentación: de +5 a +14 VC
  • Consumo: 50 mA a +5 VC, 120 mA a +13.7 VC
  • Control via USB en  Windows, OS X, y Linux