Prueba de Pinguino y Reloj externo ds1307


Circuito




Programa
// ---------------------------------------------------------------------------------------
// test program for I2C communication with a dallas ds1307 - 64 x 8 Serial Real-Time Clock
// Creado Por : Sergio Alvarez
// Fecha : 2010-12-13
// ---------------------------------------------------------------------------------------
// Plataforma Pinguino - jean-pierre MANDON

#include <libI2C.c>
#define PIC18F4550


// i2c address of ds1307
short I2C_address=0x68;

short ctl = 0;

// Set Date
short I2C_setParameters[8]={0x00, 0x00, 0x00,0x00,0x00,0x00,0x00,0x00};
// Read Date
short I2C_readRegister[2]={0x00, 0x00};


// Var de Trabajo
short I2C_OK;
short i;
char strtmp[3]={0x00, 0x00, 0x00};

// Convert normal decimal numbers to binary coded decimal
short decToBcd(short val)
{
return ( (val/10*16) + (val%10) );
}

// Convert binary coded decimal to normal decimal numbers
int bcdToDec(short val)
{
return ( (val/16*10) + (val%16) );
}

// Convert and print binary coded decimal to normal ASCII numbers
void printDec(short val)
{
strtmp[0] = (val/10) + '0';
strtmp[1] = (val%10) + '0';
Serial.print(strtmp);
}


void setup()
{
delay(500);
// !!!! Take care init_I2C funtion set high speed. The DS1307 need low speed
//init_I2C();
TRISBbits.TRISB0=1;
TRISBbits.TRISB1=1;
i2c_open(I2C_MASTER, I2C_SLEW_OFF, 119);

Serial.begin(9600);


// Set Current Time - Only the first Time
ctl = 1; // To Set Time change to 1
I2C_setParameters[0] = 1; // Registro
I2C_setParameters[1] = decToBcd( 0 ); // segundo
I2C_setParameters[2] = decToBcd( 14 ); // minutos
I2C_setParameters[3] = decToBcd( 20 ); // hora
I2C_setParameters[4] = decToBcd( 1 ); // Dia de la Semana
I2C_setParameters[5] = decToBcd( 13 ); // Dia del Mes
I2C_setParameters[6] = decToBcd( 12 ); // Mes
I2C_setParameters[7] = decToBcd( 10 ); // Año


// Clear Buffer
for (i=0;i<8;i++)
i2c_buffer[i]=0;


}

void loop()
{

Serial.print("\n\r -*- -*- -*- ");
if( ctl == 1 )
{
Serial.print("\n\r SET");
I2C_OK=I2C_write(I2C_address,I2C_setParameters,9);
if (I2C_OK == 1 )
{
Serial.print("\n\rSet Time OK:");
ctl = 0;
}
else
{
Serial.print("\n\rSet Time ERROR!");
}
I2C_STOP();
delay(500);
}
else
{
//Serial.print("\n\r READ");
// Comando de Lectura registro 2
I2C_OK = I2C_write(I2C_address,I2C_readRegister,1);
I2C_STOP();
if (I2C_OK == 1 )
{
// Leer dos Bytes
// Read Date Time
I2C_OK=I2C_read(I2C_address,7);
I2C_STOP();
if (I2C_OK == 1 )
{
Serial.print("\n\rSegundos:");
printDec(bcdToDec(i2c_buffer[0] & 0x7f));

Serial.print("\n\rMinutos:");
printDec(bcdToDec(i2c_buffer[1]));
Serial.print("\n\rHoras:");
printDec(bcdToDec(i2c_buffer[2] & 0x3f));
Serial.print("\n\rDia Semana:");
printDec(bcdToDec(i2c_buffer[3] ));
Serial.print("\n\rDia Mes:");
printDec(bcdToDec(i2c_buffer[4] ));
Serial.print("\n\rMes:");
printDec(bcdToDec(i2c_buffer[5] ));
Serial.print("\n\rAnio:");
printDec(bcdToDec(i2c_buffer[6] ));
}
}
}
delay(5000);
}




Ejemplo de Ejecución

Como construí el dirigible estrella roja (Parte 1)




Hace algún tiempo cargue este vídeo en YouTube (Vídeo Original en YouTube) y varias personas me han preguntado como lo construí. Pues bien, para construirlo se pueden hacer de dos formas o se puede comprar un producto comercial

1- Usando un Juguete Viejo
La cosa es muy simple, pues (en mi caso) se me daño el helicóptero y lo desarme para ver que podía usar. (Esto es el 95% del proyecto)
Es de notar que la batería es del tipo LiPo que son extremadamente livianas, adicionalmente requieren mucho cuidado al usarse (no se pueden descargar mas de cierto limite) y el cargador es especial.Imagen del Receptor
Después de esto, la cosa es muy fácil, pues es solo comprar un Globo y hacerlo llenar de helio en una tienda.
Para las hélices compre una pistola que dispara trompos, esto es un juguete común de niños ( de los que regalan en las piñatas).

Reemplace los motores originales del helicóptero por motores de vibradores de celular. Fue realmente difícil retirar la plomada o media circunferencia que rota.
Por ultimo pegue los cables con el "cautin" y listo.

2- Desarrollarlo Completamente desde Cero
(Actualmente estoy trabajando en una versión que es controlada desde el PC)
Para hacerlo necesitas:
Si quieres controlarlo desde el PC necesitas estas cosas :
El resto son los
Y la parte de del globo, las baterías, los motores y las hélices del párrafo anterior.

Nota final: Todos los globos inflados con helio se desinflan con el tiempo. Eso dura unas dos semanas.

3- Comprar producto comercial
Existen productos comerciales un poco costosos pero son la misma base para el proyecto
http://www.microflight.com/

Interface Pinguino USB - Java



Hola a todos. Hace algún tiempo cree esta interfaz en Java que permite comunicarse con el pingüino usando el USB.

Si quieres hacer una prueba debes:
1- Cargar el programa de pinguino que atiende las solicitudes USB (Es un ejemplo de JPierre)
usbprocessing.pde

2- Reinicia el Pinguino (Reset)

3- Ejecuta la aplicaciónDescarga Ejecutable
Requiere:

Intrucciones:
  • Después de conectar el pinguino por el USB debes hacer click en Connect y NO TE DEBEN SALIR ERRORES. Si te dice que no encuentra el dispositivo reiniciar el pinguino y/o el PC.
  • El primer selector tiene los puertos digitales.
  1. Selecciona el Pin
  2. has click en ON o OFF para encender o Apagar o en Read para leer el valor actual
  • El segundo selector es para puertos analógicos.
  • El botón de thread (hilo) ejecuta una tarea periódica. En mi ejemplo se lee cada segundo el puerto analogo 13. Usted puede modificar el código fuente para leer otros puertos.
  • El botón de User es de uso general y puede ser modificado por usted.
Aquí adjunto el código fuente en Java usando como editor el NetBeans 6.9.1

Pinguino Versiones A, B, C y D


Versión A - Prototipo
Por el reverso se ve lo artesanal y la cantidad de fallas que tenia.

Versión B - Primera Prueba

Como siempre, por el reverso se ve que faltaron cosas.

Versión C - Mover Motores
Aunque la versión B funcionaba Bien. Todos querían usar motores para sus proyectos. Con esta necesidad nace la versión C.
Casi perfecta
Versión D - Mover Motores Mejorada
Igual a la versión C Con unos pequeños ajustes



Montaje inicial de prueba



Segundo Pingüino


Para complementar este instructivo
http://sergalpe.blogspot.com/2009_10_01_archive.html

Cree un pequeño vídeo que muestra el proceso de armado

Instalando Software para Trabajar con el Pingüino


Para trabajar con pingüino se requieren 5 componentes:

1- Descargar e instalar Phyton
http://www.python.org/download/releases/2.6.5/

2- Descargar e instalar wxPython (Para Phyton 2.6)
http://www.wxpython.org/download.php

3- Descarga y descomprimir IDE Pinguino (Poner en sitio de trabajo, ejemplo escritorio)
http://www.hackinglab.org/pinguino/download/pinguino%20beta%207/

4- Descargar e instalar libusb-win32
http://sourceforge.net/projects/libusb-win32/files/

Si trabaja con windows Vista o superior debe hacer lo siguiente ANTES DE instalar libusb-WIN32:
  • Hacer clic derecho antes de instalarlo
  • Entrar por propiedades
  • luego por la carpeta de compatibilidad
  • Seleccionar Windows 98/ Windows ME
  • Seleccionar Ejecutar como Administrador


5- descargar y descomprimir Driver
(Modificado)
http://dl.dropbox.com/u/12021787/driverPinguinoModificado.zip
(Original)
http://www.hackinglab.org/pinguino/download/driver%20pinguino%20windows/


Por Ultimo conectar el Pingüino al PC por el cable USB. Este pide el Driver de instalación que previamente se descargó.

Ejecutar el Pingüino
Dentro de la carpeta creada en el paso 3 existe un archivo llamado pinguinobeta7.py este es el ejecutable del pingüino IDE





Creando Nuevo Proyecto
Por el menú de File/new

Luego se digital el siguiente programa


// Ejemplo "Hola Mundo"
#define PIC18F4550

/**
* Se inicializan pines como SALIDAS DIGITALES
*/

void setup()
{
pinMode(11,OUTPUT); // Pin 11 de Salida
pinMode(12,OUTPUT); // Pin 12 de Salida
}
/**
* Ciclo principal
*/

void loop()
{
// Primera Parte
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
delay(800);

//Segunda Parte
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(100);
digitalWrite(11,LOW);
delay(100);
digitalWrite(11,HIGH);
delay(100);
}























Se Compila el proyecto
Por el icono "play" y si todo fue exitoso aparece "compilation done"


Por ultimo se transfiere al pingüino




Board PICDEM FS USB o Pingüino


Introducción
Este documento esta orientado a las personas que quieren hacer un circuito base que maneje el USB y sea similar al Arduino.

En general todos parten de un ejemplo de MicroChip llamado "PICDEM FS USB" (Enlace a Documento Complementario)

Transferir primer programa a al PIC
Lo primero que hay que hacer es Conseguir las PIC 18F4450 o Pic 18F4455 y "Quedarles el Bootloader". Para esto se requiere un quemador, existen varios en el mercado ejemplo con el JDM. En Instructables esta el JDM2 . En la siguiente imagen se ve la PIC y el quemador (Yo se que él quemador no me quedo muy bonito, pero funciona).


El software requerido para transferir el programa es el WinPic800. Aquí esta una imagen de la configuración

Construir el Hardware de Prueba
Conector USB y potencia. En este ejemplo la alimentación del proyecto se realiza directamente por el USB.
Nota: Los cables Azules y Blancos sobre la PIC llevan Negativo (Tierra) y Positivo respectivamente.

Luego se ilustran los dos condensadores de 22 PicoFaradios conectados a la PIC y a Tierra.

El compañero de los condensadores el el Cristal debe ser de 20MHz y se conecta entre los dos condensadores
Despues de concluir el oscilador se debe poner un condensador para voltaje de USB, puede ser de 470microFaradios o 220nanoFaradios. Nota si usas un condensador Electrolítico (Como el de la imagen) se debe tener en cuenta la polaridad (el menos esta marcado por una linea blanca).
Este condensador es requerido en algunos casos (puede ser opcional) para mantener el voltaje cuando se manejan proyecto que mueven servos o otros dispositivos de gran consumo.
Hasta este punto el PICDEM FS USB de Microchip y el pinguino son iguales.
El PICDEM FS USB usa dos switches(boton), uno para Reset y otro para programar conectado al RB4.
Leds de estado de la conexión USB (Solo para PICDEM FS USB)

El Pinguino no usa el switche (boton ) conectado al rb4 ni los Leds de estado de la conexion. Este a su ves usa un led conectado a RA4. Nota esta imagen no es real, es solo ilustrativa de mas o menos como queda. La resistencia y el Led deben ser soldados.

 
|  Blogger Template By Lawnydesigns Powered by Blogger