Your Shopping Cart
Your cart is empty

Control PINGUINO from MACosx

Hi good morning, this is another project involving PINGUINO mac and I understand that this is very restrictive, but today with the Hackintosh anyone can have a MAC OSX, I say this from me experience.
This is a very basic application that controls both the digital and the analog gates of a PINGUINO 18fx550, whether we use the serial port option as USB with CDC,and also with the bluetooth module tested in previous posts.

Need two parts, a program for MAC,

DOWNLOAD LINK

and the second a code for the PINGUINO,this code is very comprehensive and provides for communications from any platform, works like code, with two digits (by now we do not need more ), the first digit identifies the door and the second the treatment, to the digital port identifies a 0=LOW and 1=HIGH, but for analog ports I have decided that 3 may give the reading order.
So if we want to read analog port 13 which correspond to “AN0″ and we would execute “03″ us back the digital value between 0 and 1023 of this port.
In the other hand we want to raise the output of the digital port “0″ then we send to turn ON “01″ and “00″ to turn OFF.
Sounds complicate but it is understood when applied
If you want a help, we will sent “9″ with any other number, it returns a help.

/*Project IPHONE, IPAD & MAC talk with PINGUINO walii.es*/
//You need send number port 0 to 7 and status 0 or 1
//for anoalogic port you will check port an0 to an7 and need set status in 3
//for help you need set 9 in the value0
#define LENGTH 3
#define RUNLED PORTAbits.RA4
int rxBuffer[16];
int rxIndex = 0;
int i,value1,value0,value,value0a;
void setup() {
 Serial.begin(9600);
 for (i=0;i<8;i++) { //servos conections
 pinMode(i,OUTPUT);
 digitalWrite(i,LOW); // fixe un niveau 0 sur les sorties
 }
}

void loop (){
 if (Serial.available() > 0) {
//if(rxIndex==0) Serial.printf("Captured first value \n\r");
//if(rxIndex==1) Serial.printf("Captured Second value \n\r");
 rxBuffer[rxIndex]=Serial.read();
rxIndex=rxIndex+1;
 if(rxIndex==LENGTH){
 value0=rxBuffer[0]-48;
 value0a=rxBuffer[0]-35;
 value1=rxBuffer[1]-48;
 if(value1<2)
 {
 Serial.printf("Port: %d,",value0);
 Serial.printf("Status: %d\n\r",value1);
 if( value1==0 ) {
 digitalWrite(value0,LOW);
 } else if (value1==1) {
 digitalWrite(value0,HIGH);
 }
 }
 if(value1==3){
 value=analogRead(value0a);
 Serial.printf("Reading port %d -> An%d value= %d\n\r",value0a,value0,value);
 }
 if(value0==9) Serial.printf("You need send number port 0 to 7 and status 0 or 1\n\r for analogic port you will check port an0 to an7 \n\r and need set status in 3 for help you need set 9 in the value0\r\n");
 rxIndex = 0;
 //if (rxIndex==0) Serial.printf("Waiting ...\n\r");
}

}
 delay(10);
}

Como funciona Pinguino en MAC osx LION

Este video es solo una explicación de como debería funcionar PINGUINO en LION, ya que existen diferencias entre la versión de windows y la de mAC.

Pinguino en MAC 10.7 LION

Tras un largo tiempo de inactividad por diversos proyectos externos a PINGUINO, vuelvo a escribir y ofrecer un aporte que creo puede ayudar a mas de uno… lo que tengo para ofrecer para el bolso de la dama y el bolsillo del caballero es: La versión modificada de PINGUINO GUI 9.05 para ser usada en LION sin necesidad de VMware o Parallel (emuladores de windows).

Esta versión tiene unas librerías nuevas, compiladas  y modificadas para esta versión de LION sin soporte para POWER PC que era en esencia el problema que aparecia en la versión anterior, solo tienen que

1º Crear un nuevo directorio.

2ºPoner el archivo ZIP

3º Descomprimirlo

Luego ya pueden traer sus proyectos a esta nueva versión, cuidado cuando lo descompriman recuerden que MAC sobreescribe las carpeta, asi que si tienen algo debajo seguro se sobre escriba asi que hagan backup de sus proyectos.

el archivo está compartido en fileserver.

LINK    http://www.fileserve.com/file/9jGaMjU/PinguinoBeta905MacLion.zip

Nuevo LINK http://pinguino.walii.es/download/PinguinoBeta905MacLion.zip

 

Os pongo una captura de mi version funcional.

Cualquier problema me lo dicen y lo vemos puntualmente lo he probado con PYTHON 2.5.4, 2.5.5, 2.6.6 y 2.6.7. Aun no lo he probado en 2.7, pero siempre os recomiendo tener la version ante ultima de cualquier software…

saludos.

Pinguino PIC

 

Esta es una entrada de pruebas para verificar el funcionamiento del carro de compras recién implantado.

El producto puede ser un microcontrolador PIC 18f4550 programado con el firmware pinguino.

PCBC v1 – PINGUINO CAR Bluetooth Control

Hoy os mostrare como controlar un coche a radio control pero via bluetooth y ayudando me con PINGUINO.
La idea viene a rais de un MINI controlado por Android que venden en algunas tiendas y pensé, que sería facil de reproducir.

 

 

El control es basico pero he puesto un detalle muy interesante, ya que la dirección de este vehículo es exponencial ya que puedes indicarle que gire X grados (a diferencia de los coches de radio control tradicionales que son TOPE IZQUIERDA o TOPE DERECHA), para poder controlarlo finamente he puesto un servo para dirigirlo como si de un conductor se tratase, este puede girar la dirección tantos grados como le indiquemos, ahora en el ejemplo lo he puesto en máximos de ambos extremos, pero fácilmente puede indicarse que gire a la izquierda X grados.

El motor principal es controlado por un PUENTE H basico con BC548, y el pinguino es el tradicional 8bits 18f4550, el modulo bluetooth es el mismo que vengo utilizando en anteriores circuitos y facilmente comprable a traves de EBAY.

La comunicación bluetooth la realizo con un ordenador MAC, pero puede realizarse con cualquier equipo o distribución ya que utiliza los protocolos RS232 sobre Bluetooth, generando una interfaz serie virtual en el equipo cliente.

Tambien el código de PROCESSING es muy fácil y conciso, exportable a java para ser reproducido en cualquier ordenador.
Dejo el código fuente para que cada uno lo reproduzca en su PC de casa sea cual sea la distribución.

Este es el código de PINGUINO

 

// PCBC v1
// Pinguino Car Bluetooth Control v1
// Walii.es 2011
// pinguino.walii.es
#define RUNLED PORTAbits.RA4
#define PIC18F4550                // control pin of servo
int counter;                    // counter used for interrupt
int position0=50;                //pin0 servo vertical
int previous;
int i;
int key;
int pulseWidth = 20;
void setup()
{
T1CON=0x01;                    // configure timer 1
PIE1bits.TMR1IE=1;                // set interrupt for timer 1
INTCON|=0xA0;                    // enable GIE and PEIE
for (i=1;i<8;i++)     {             //servos conections
pinMode(i,OUTPUT);
digitalWrite(i,LOW);			// fixe un niveau 0 sur les sorties

}
pinMode(0,OUTPUT);
Serial.begin(9600);
}
void UserInterrupt()
{
if (PIR1bits.TMR1IF)
{
TMR1H=0xFF;                // reload value timer 1
TMR1L=0x9C;
PIR1bits.TMR1IF=0;            // clear interrupt flag
if (counter>position0+51) PORTBbits.RB0=0; // position
else PORTBbits.RB0=1;
if (counter==1500) counter=0;    // value for ~20 mS
counter++;
}
}

void stop()
{
	digitalWrite(2,LOW);
	digitalWrite(1,LOW);
	delay(10);
}
void stoptotal()
{
	digitalWrite(2,LOW);
	digitalWrite(1,LOW);
	position0=50;
	delay(10);
}
void w()
{
	digitalWrite(2,HIGH);
	digitalWrite(1,LOW);
}
void s()
{
	digitalWrite(2,LOW);
	digitalWrite(1,HIGH);
}
void a()
{
position0=10;
}
void d()
{
position0=80;
}
void q()
{
position0=10;
digitalWrite(2,HIGH);
digitalWrite(1,LOW);
}
void e()
{
position0=80;
digitalWrite(2,HIGH);
digitalWrite(1,LOW);
}
void z()
{
position0=80;
digitalWrite(2,LOW);
digitalWrite(1,HIGH);
}
void c()
{
position0=10;
digitalWrite(2,LOW);
digitalWrite(1,HIGH);
}

void loop()
{
if (Serial.available())
    {
key=Serial.read();
if (key=='w' && previous!='w') stop(),w();
if (key=='s' && previous!='s') stop(),s();
if (key=='a' && previous!='a') stop(),a();
if (key=='d' && previous!='d') stop(),d();
if (key=='q' && previous!='q') stop(),q();
if (key=='e' && previous!='e') stop(),e();
if (key=='z' && previous!='z') stop(),z();
if (key=='c' && previous!='c') stop(),c();
previous=key;
} else; stoptotal();
Serial.printf(" %d", position0);
}

 

y Este es el código de processing

/**
PINGUINO CAR CONTROL via BLUETOOTH
Walii & walterleonardo
Pinguino.walii.es
*/
import processing.serial.*;
Serial myPort;
String port[];
int i;

final static int NORTH = 1;
final static int EAST = 2;
final static int SOUTH = 4;
final static int WEST = 8;
final static int STOP = 16;
int result;
float x,y;

void setup() {
  size(512,400);
  frameRate(30);
  result = 0;
  x = width/2;
  y = height/2;
 port=Serial.list();
println(port);
myPort=new Serial(this,port[10],9600);
}

void draw() {
  background(0);
  switch(result) {
    case NORTH: myPort.write("w"); break;
    case EAST: myPort.write("d"); break;
    case SOUTH: myPort.write("s"); break;
    case WEST: myPort.write("a"); break;
    case NORTH|EAST: myPort.write("e"); break;
    case NORTH|WEST: myPort.write("q"); break;
    case SOUTH|EAST: myPort.write("c"); break;
    case SOUTH|WEST: myPort.write("z"); break;
    case STOP: myPort.write("x"); break;
  }
  fill(255);
  rect(x,y,10,10);
}

void keyPressed(){
  switch(key) {
    case('w'):case('W'):result |=NORTH;break;
    case('d'):case('D'):result |=EAST;break;
    case('s'):case('S'):result |=SOUTH;break;
    case('a'):case('A'):result |=WEST;break;
    case('x'):case('X'):result |=STOP;break;
  }
}

void keyReleased(){
  switch(key) {
    case('w'):case('W'):result ^=NORTH;break;
    case('d'):case('D'):result ^=EAST;break;
    case('s'):case('S'):result ^=SOUTH;break;
    case('a'):case('A'):result ^=WEST;break;
    case('x'):case('X'):result ^=STOP;break;
//    case('w'):case('W'):result |=STOP;break;
//    case('d'):case('D'):result |=STOP;break;
//    case('s'):case('S'):result |=STOP;break;
//    case('a'):case('A'):result |=STOP;break;
  }
}

 

 


Pinguino grabador de Pinguinos

Gracias a la idea de JEAN, y tras el pedido de varias personas que dicen que no entienden el post en ingles… intentaré poner todos los datos para que se puedan seguir y llegar a buen puerto de una forma amena y simple.

lo primero que debemos tener en cuenta es que yo trabajo principalmente con el pic 18f4550… pero tiene que funcionar con el 18f2550.

Teniendo en cuenta que el circuito utilizado y la identificación de PINES es la siguiente.

Equipo grabador, un Pinguino estandart.

el segundo es el circuito del pinguino a grabar, obviamente puede ser un zocalo de, quita y pon, así podremos programar muchos pics.

Los números de pines concuerdan con la imagen superior, dirán ¿porque este orden? y tiene una respuesta muy simple, ya que todo el proyecto viene de mucho mas atrás, y para una consistencia en la identificación de puertas, el PIN1 es por defecto el RB0 sin importar el pin físico donde se encuentre.

El programa que utilizaremos es el siguiente, compilado en la version de IDE 9.05, no muestra indicios de errores y funciona muy bien, digo esto porque si lo compilamos en otra versión de IDE pueden aparecernos problemas.

 

// This is a tool to program the pinguino bootloader in a new chip
// with your Pinguino, the self replicating machine !!
// Jean-Pierre MANDON 2010
// Fixed bug 02/07/2011 PGM pin is no longer used

#define PGC 1		// connected to the PGC pin of the blank chip
#define PGD 2		// connected to the PGD pin of the blank chip
#define VPP 3		// connected to the VPP pin of the blank chip
#define VCC 6		// connected to the power on transistor
#define redled	 5

uchar bulkerase[48] ={0x00,0x3C,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,0xF7,0x6E,0x00,0x05,0x0E,0x00,
                      0xF6,0x6E,0x0C,0x3F,0x3F,0x00,0x3C,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,0xF7,
		              0x6E,0x00,0x04,0x0E,0x00,0xF6,0x6E,0x0C,0x8F,0x8F,0x00,0x00,0x00,0x00,0x00,0x00};

uchar startwrite[24]={0x00,0xA6,0x8E,0x00,0xA6,0x9C,0x00,0x00,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,
					  0xF7,0x6E,0x00,0x00,0x0E,0x00,0xF6,0x6E};

uchar startwrid[24] ={0x00,0xA6,0x8E,0x00,0xA6,0x8C,0x00,0x30,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,
					  0xF7,0x6E,0x00,0x00,0x0E,0x00,0xF6,0x6E};
uchar checkmem[32];
uint address=0;

#define pic_on()  digitalWrite(VCC,LOW)
#define pic_off() digitalWrite(VCC,HIGH)

// begin programming mode
// power is on ( VCC and Programing voltage )

void start_pgm()
{
	digitalWrite(VPP,HIGH);
	delayMicroseconds(4);
}

// end programming mode
// power is on ( VCC and Programing voltage )

void stop_pgm()
{
	digitalWrite(PGD,LOW);
	digitalWrite(PGC,LOW);
	digitalWrite(VPP,LOW);
}

// send a command to the chip
// SPI soft

void send_command(uchar command,uchar lowbyte,uchar highbyte)
{
	unsigned char i;
	for (i=0;i<4;i++)
		{
		digitalWrite(PGC,HIGH);
		if ((command&1)==1) digitalWrite(PGD,HIGH);
		else digitalWrite(PGD,LOW);
		digitalWrite(PGC,LOW);
		command=command>>1;
		}
	for (i=0;i<8;i++)
		{
		digitalWrite(PGC,HIGH);
		if ((lowbyte&1)==1) digitalWrite(PGD,HIGH);
		else digitalWrite(PGD,LOW);
		digitalWrite(PGC,LOW);
		lowbyte=lowbyte>>1;
		}
	for (i=0;i<8;i++)
		{
		digitalWrite(PGC,HIGH);
		if ((highbyte&1)==1) digitalWrite(PGD,HIGH);
		else digitalWrite(PGD,LOW);
		digitalWrite(PGC,LOW);
		highbyte=highbyte>>1;
		}
digitalWrite(PGC,LOW);
digitalWrite(PGD,LOW);
}

// special end of command write
// DS39622K Page 20 figure 3.5 (Flash Microcontroller Programming Specification)

void end_writecmd()
{
unsigned char i;
digitalWrite(PGD,LOW);
for (i=0;i<3;i++)
	{
	digitalWrite(PGC,HIGH);
	digitalWrite(PGC,LOW);
	}
digitalWrite(PGC,HIGH);
delay(6);
digitalWrite(PGC,LOW);
delayMicroseconds(500);
for (i=0;i<8;i++)
	{
	digitalWrite(PGC,HIGH);
	digitalWrite(PGC,LOW);
	}
for (i=0;i<8;i++)
	{
	digitalWrite(PGC,HIGH);
	digitalWrite(PGC,LOW);
	}
}	

// Read Flash memory
// Pinguino examples Flash folder

uint ReadFlash(uint address)
{
uchar high8,low8;
TBLPTRU=0;
TBLPTRH=address>>8;
TBLPTRL=address;
__asm tblrd*+ __endasm;
low8=TABLAT;
__asm tblrd*+ __endasm;
high8=TABLAT;
return((high8<<8)+low8);
}

//-----------------------------------------------------------
// begining of the main loop
//-----------------------------------------------------------

void setup()
{
pinMode(PGC,OUTPUT);
digitalWrite(PGC,LOW);
pinMode(PGD,OUTPUT);
digitalWrite(PGD,LOW);
pinMode(VPP,OUTPUT);
digitalWrite(VPP,LOW);
pinMode(redled,OUTPUT);
digitalWrite(redled,LOW);
pinMode(VCC,OUTPUT);
digitalWrite(VCC,HIGH);
}

void loop()
{
int i;

// erase chip

pic_on();
delay(20);
start_pgm();
digitalWrite(redled,HIGH);
delay(10);
for (i=0;i<48;i+=3) send_command(bulkerase[i],bulkerase[i+1],bulkerase[i+2]);
delay(100);
stop_pgm();
delay(20);
pic_off();
delay(1000);

// read bootloader and write it

pic_on();
delay(1000);
start_pgm();
delay(10);
for (i=0;i<24;i+=3) send_command(startwrite[i],startwrite[i+1],startwrite[i+2]);
while (address<0x1FDF)
	{
	for (i=0;i<32;i++) checkmem[i]=ReadFlash(address+i);
	for (i=0;i<30;i+=2) send_command(0b00001101,checkmem[i],checkmem[i+1]);
	send_command(0b00001110,checkmem[30],checkmem[31]);
	end_writecmd();
	address+=32;
	digitalWrite(redled,digitalRead(redled)^1);
	delay(4);
	}
digitalWrite(redled,HIGH);
for (i=0;i<32;i++) checkmem[i]=ReadFlash(address+i);
for (i=0;i<48;i+=3) send_command(startwrite[i],startwrite[i+1],startwrite[i+2]);
for (i=0;i<30;i+=2) send_command(0b00001101,checkmem[i],checkmem[i+1]);
send_command(0b00001111,checkmem[30],checkmem[31]);
end_writecmd();

// ---------- end copying bootloader

// programing configuration bits

for (i=0;i<24;i+=3) send_command(startwrid[i],startwrid[i+1],startwrid[i+2]);
send_command(0b00001111,0x24,0x24);
end_writecmd();
send_command(0,0x01,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0E,0x0E);
end_writecmd();
send_command(0,0x02,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x3F,0x3F);
end_writecmd();
send_command(0,0x03,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x1E,0x1E);
end_writecmd();
send_command(0,0x05,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x81,0x81);
end_writecmd();
send_command(0,0x06,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x81,0x81);
end_writecmd();
send_command(0,0x08,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0F,0x0F);
end_writecmd();
send_command(0,0x09,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0xC0,0xC0);
end_writecmd();
send_command(0,0x0A,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0F,0x0F);
end_writecmd();
send_command(0,0x0B,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0xA0,0xA0);
end_writecmd();
send_command(0,0x0C,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0F,0x0F);
end_writecmd();
send_command(0,0x0D,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x40,0x40);
end_writecmd();

// ---------- end configuration bits

stop_pgm();
pic_off();

digitalWrite(redled,LOW);

while(1);
}

 

y lo siguiente es fácil, programaremos el PIC grabador, la imagen nº1, el chip a programar no necesita tener nada… puede ser tal cual viene de fabrica.

 


Control y verificación de Servo

Un diseño facil pero muy útil, para probar nuestros servos, y verificar el recorrido de cada uno.

Las conexiones son simples: el servo conectado a la salida 0(cero) RB0

Y el potenciometro de mas de 47k entre positivo y negativo y el centro a la puerta 13…

 

 

He incluido dos codigos, uno con la libreria de servo, y otro de la forma tradicional sin libreria.

Con libreria de servos
// Control de servo tradicional con libreria
// Walii.es 2011
//Pinguino.walii.es
//   +-----+
//   |servo|--------- PWM Servo control ---> to pinguino pin.
//   |     |--------- +5V
//   |  o  |--------- GND
//   |     |
//   +-----+

uchar position=1;
int i;
void setup(void)
{
servo.attach(0);
}

void loop(void)
{
i=analogRead(13);
position=i/4;
servo.write(0,position);
delay(100);
}

Sin libreria de servo, pueden observar que el recorrido es mucho mayor que con la librería, esto es porque de esta forma no tenemos un limite preestablecido en él tamaño de pulso. Y si nos pasamos con esto, puede generar un reset por consumo elevado en el PINGUINO.

// Control de servo tradicional sin libreria
// Walii.es 2011
//Pinguino.walii.es
#define RUNLED PORTAbits.RA4
#define PIC18F4550                // control pin of servo
int counter;                    // counter used for interrupt
int position0;                //pin0 servo vertical
int ir0;//pin 13
int i;
int pulseWidth = 20;
void setup()
{
T1CON=0x01;                    // configure timer 1
PIE1bits.TMR1IE=1;                // set interrupt for timer 1
INTCON|=0xA0;                    // enable GIE and PEIE
pinMode(0,OUTPUT);
Serial.begin(9600);
}
//Con la siguiente rutina controlamos la señal al servo RB0.
//Leemos en cada pasada el valor de position0
void UserInterrupt()
{
if (PIR1bits.TMR1IF)
{
TMR1H=0xFF;                // reload value timer 1
TMR1L=0x9C;
PIR1bits.TMR1IF=0;            // clear interrupt flag
if (counter>position0+51) PORTBbits.RB0=0; // position
else PORTBbits.RB0=1;
if (counter==1500) counter=0;    // value for ~20 mS
counter++;
}
}

void loop()
{
ir0=analogRead(13);
position0=ir0/6;
if (position0<1) position0=1; if (position0>151) position0=151;

}

Update de pruebas realizadas con el INTERVALOMETRO pinguino.

Aqui algunas capturas mas con relación al funcionamiento del intervalometro.

Hace un par de noches hemos gozado de unas muy bonitas tormentas eléctricas, y he intentado capturar algunas fotos con el invento hecho algunos post detras.
POST INTERVALOMETRO PINGUINO

Capturas:

 

 

Sensor de Apertura de Frigorifico & Open Refrigerator Sensor

Hoy les traigo el ultimo artilugio que se me ha ocurrido, ya que ayer mi mujer ha retado a mi niña por dejar la puerta abierta de la nevera, y se me paso por la cabeza “porque nadie ha hecho algo tan practico como un avisador de puerta abierta?” quizas ya lo hay pero la version de frigo que tengo doy gracias que aun enfria… :-)

Y basicamente el cacharro es esto:

un sensor de luz que detecta y promedia el primer valor que coje, y lo guarda como referencia, entonces cuando abrimos la puerta detecta que la incidencia de luz es mayor y comienza el juego, dejando un tiempo prudencial de espera (en este caso 10 segundos me pareció correcto) si la puerta no se ha cerrado dispara una alarma sonora  hasta que dicha puerta no es cerrada, comenzando nuevamente el ciclo.

algo basico pero que no tengo entendido que existiese.

aqui os dejo unas fotos, videos y el código, no he pensado poner el circuito ya que tiene muy poco, creado a partir del 18f2550, y con un buzz conectado al sensor 12 y un LDR en el 13… no tiene mas que eso.

 

 

El codigo:

// Alarma de Nevera
// Walter López Pascual (Walii & Walterleonardo) 2011 walii.es

int led1,LDR,MLDR,valor,ovalor;			// Values like integers ( Pin )
int mldr[];						// Array for measures
int debug=0;						// Only with debug "1" we´ll see printed values in serial
int wait=10000;						// Time to wait before BUZZ in MS

promedioldr ()
{
int i;
MLDR=0;
for (i=0;i<9;i++){
mldr[i]=analogRead(LDR);
MLDR=MLDR+mldr[i];
}
MLDR=MLDR/10;
return MLDR;
}

void setup()
{
	led1=11;					// led 1 is connected on pin 1
	LDR=13;
	pinMode(led1,OUTPUT);		// BUZZ & LED
	ovalor=promedioldr();		// Capture initial value to measure
	Serial.begin(9600);
}

void encenderledbuzz ()				//BUZZ & LED active action
{
digitalWrite(led1,HIGH);
delay(250);
digitalWrite(led1,LOW);
delay(250);
}

void esperar ()					//wait time before BUZZ
{
if (debug==1){
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...\r\n");
	delay(wait/10);
	Serial.printf("Wait...BUZZ\r\n");
}
else delay(wait);
}

void loop()
{
valor=promedioldr();
if (valor>=ovalor+100){
	esperar();
	while (analogRead(LDR)>=ovalor+100){
	encenderledbuzz();
	if (debug==1) Serial.printf("Analog Value = %d \r\n", analogRead(LDR));
	}
}
if (debug==1) Serial.printf("Actual LDR value= %d / Previous LDR value= %u\r\n", valor, ovalor);
digitalWrite(led1,LOW);
}

Gracias al blog “Padel Barcelona” por publicar uno de mis proyectos.

Ya existe un sistema para medir la aceleración y movimiento que tienen las palas de pádel. He encontrado un curioso video donde nos explican cómo han implementado el sistema y en qué consiste.!!!

http://www.padelbarcelona.es/padel/sensor-de-aceleracion-y-movimiento-de-palas-de-padel.html

Jornada de Robotica ARDE “Charla de PINGUINO”

PINGUINO BLUETOOTH

Bueno hoy al fin pude terminar el proyecto bluetooth, lo tengo parado hace un par de semanas porque estoy en medio de un curso de Manager de Proyectos y otro de Ingles… pero al fin, he podido…

Basicamente estaba intentando dejar de lado XBEE para la comunicación in-alambrica, ya que esos módulos son un poco caros…entre 40 y 60 euros… ahora con los módulos bluetooth que se pueden conseguir por 20euros… puedo hacer todas los proyectos que quiera, además de no necesitar un receptor especial, ya que con cualquier ordenador o PDA con bluetooth, puedo comunicarme tranquilamente.

Aquí un video del funcionamiento.

La idea principal es modificar el Paddle Sensor con uno de estos modulos así consume memos, entre unos 50 a 100mA, a maxima potencia. Adicionalmente otra de las ventajas es la comunicación RS232 UART bi direccional, la cual puede llegar a casi un Mega de transferencia. Aunque la distancia se reduce a 20 metros sin obstáculos y 5 con obstáculos.

Lo primero es el esquema de este adaptador bluetooth.

Con un simple LM 317 y un preset de 5K en su Adj puedes tener un regulador de 3.3Volts 1 Amp…

Básicamente conectamos directamente el módulo BLUETOOTH en nuestra placa PINGUINO… sin nada de intermediario y se entenderán perfectamente, ya que la placa PINGUINO posee unas resistencias de acople que ayudan al dialogo correcto.

El codigo es simple. Escribo como si fuese un puerto serie normalito… y espero respuestas… en este caso, mido la temperatura y la luminosidad mediante entradas analógicas, y como punto adicional, controlo un LED colocado en el puerto 0. Todo esto con retroalimentación a la consola serie.

// Bluetooth comunication v 1
// Walter López (walterleonardo & walii) 2011 pinguino.walii.es

char *string = "Hola mundo bluetooth!!! estoy vivo... soy pinguino";
#define LM35 18
#define LDR 17
#define LED 0

int i=0;

temp(){
int aux=0,buffer[10];
for (i=0;i<9;i++){
buffer[i]=analogRead(LM35);
aux = aux + buffer[i];
}
aux = (aux / 10);
aux = aux/2;
return aux;
}

light(){
int aux=0,buffer[10];
for (i=0;i<9;i++){
buffer[i]=analogRead(LDR);
aux = aux + buffer[i];
}
aux = (aux / 10);
aux = (aux-23)/10;
aux = 100-aux;
return aux;
}

void setup()
{
	Serial.begin(9600);
	pinMode(LED,OUTPUT);
	digitalWrite(LED,LOW);
	Serial.printf("\r\n");
	Serial.printf("****************************************\r\n");
	Serial.printf("*** PRUEBA de comunicacion BLUETOOTH ***\r\n");
	Serial.printf("****************************************\r\n");
	Serial.printf("\r\n");
}
void loop()
{
u8 c;
	Serial.printf("****** %s\r\n", string);
		Serial.printf("\r\n");
			Serial.printf("\r\n");
	Serial.printf("Press t key to receive the temperature ...\r\n");
	Serial.printf("Press l key to receive the Light level ...\r\n");
	Serial.printf("Press x key to change the LED status ...\r\n");
c = Serial.getkey();
Serial.printf("=========================================\r\n");
if (c == 116) Serial.printf("Temperature = %u degrees Celsius\n\r" , temp());
if (c == 108) Serial.printf("Light = %u Percentage\n\r" , light());
if (c == 120) digitalWrite(LED,(digitalRead(LED)^1)), Serial.printf("Changed LED Status \n\r");
Serial.printf("=========================================\r\n");
	Serial.printf("\r\n");

}

Circuitos Básicos y Numeros de PINES.

Aquí dejo los planos minimos de los dos modelos actuales de PINGUINO… 18f2550 y 18f4550… como verán no necesitan de mucho para funcionar. Pero es necesario saber siempre el numero de PIN a configurar.

18f2550 (si le dan click se hace mas grande)

18f4550 (lo mismo, si le hacen click se hace mas grande)

Tabla de códigos ASCII

Siempre me vuelvo loco buscando… y siempre termino con el oraculo (google) por eso he decidido poner aquí las cosas necesarias, siempre que necesiten algo de info, busquen en la Categoría de UTILIDADES.

Tabla de conversión de caracteres ASCII

Paddle Sensor PINGUINO+XBEE+PROCESSING

Hola nuevamente, aunque este es un proyecto vendido a un cliente, por eso no puedo poner los archivos fuente, me interesa compartirlo con vosotros ya que lleva la tecnología pinguino dentro.

Utilizando un sensor de aceleración y movimiento de 5Gs y colocando este en una pala, he podido crear todo el entorno para poder visualizar y grabar (para un posterior análisis) todas los datos de un jugador de padel, fuerza, direccionalidad, firmeza, etc. Capturando toda la información con pinguino, y transfiriendo a un ordenador con un sistema creado con processing…(java en sus entrañas)… y así poder analizar y realizar un TUNNING mas exacto en el tipo de juego de una persona. Algo así como llevar un juego analógico al ámbito digital.

Aqui está el video donde explico que hace el cacharro…


Saludos.

Reflex Control “TimeLapse & Long Exposure” with PINGUINO.

Hola a todos… perdón el titulo en ingles… pero suena como mas importante… ya que para mi este es un invento muy útil… porque ultima-mente estuve tonteando con la reflex y quería hacer un poco de timelapse… y la cámara por si sola no lo hace… necesitando un ordenador conectado… entonces me puse a pensar “pero solo un poquito porque el medico me dijo que no hiciese esfuerzos…  :-) “, y se me ocurrió reutilizar un par de cosillas que tenia en el cajon de los inventos viejos… y me hice este invento… bueno invento no es… porque ya existen… pero por lo menos me he ahorrado unas cuantas pelas.

El cacharro tiene cosas de todos los mundos y colores…
puedo indicarle cantidad de cosas insalubres:
1º Cantidad de tomas (fotogramas) “ShotN”
2º Espacio de tiempo entre tomas “Pause”
3º Tiempo de exposición (por si acaso queremos hacerlo desde fuera de la cámara) “Time”
4º Cambia de modo entre TIMELAPSE y LONGEXPOSURE
5º Activar el modo LDR (con un detector LDR puede detectar si cae un rayo… y fotografiarlo) en cuanto tenga una tormenta os muestro el ejemplo
6º Activar o desactivar el BUZZER (tiene un pequeño buzzer que indica las tomas y diferencias
7º Activar o desactivar la iluminación del LCD
8º Un modo de lectura, en donde veo el nivel de luminosidad del LDR y el nivel de Bateria…
9º El modo de disparo que nos indica un resumen de todos los detalles… y en donde nos permite disparar en modo automatico.
10º Un botón de modo manual, para no perder esta características y poder incluir en el futuro un control remoto inalámbrico. (para el paso siguiente)
Se ha medido un consumo de 70mA, así que con un pack de baterias AAx4 puede funcionar por 20hrs… pero si apagamos la iluminación del LCD el consumo cae a 40mA lo cual no s deja una duración de batería de unas 50hrs.

Este es un prototipo, pero ya estoy construyendo para vender, si alguien esta interesado, solo tiene que contactarme.

 

 

 

Leer el resto de esta entrada »

PINGUINO IDE THEME

Gracias a la aportación de la gente de PINGUINO Venezuela… que me ha inspirado y me he puesto a realizar un theme a mi gusto y piachere… para los que quieran ver el IDE un poco más “MAC”… os dejo el theme creado en el siguiente link… https://rapidshare.com/files/458709102/walii.zip

hay que descomprimir la carpeta en el directorio THEME dentro de PINGUINO IDE… y luego iniciar el IDE y buscarlo en la opción “Preferences” y “themes”.

Saludos… y nuevamente gracias a Juan Espinoza por la idea.

Mascota AirWick

Como hace tiempo que mi nena me incha con el tema de tener una mascota… y como yo no le pienso cumplir el capricho… se me ocurrió aunar un poco mis conocimientos y hacerle algo para que se distraiga entre tanto.

Este artilugio basicamente hace lo siguiente:

1º No se cae de las mesas

2º Si dibuja un circulo en el suelo no sale de él (utilizando cinta aisladora negra y siendo el suelo de un color claro)

3º Si se encuentra con un objeto en frente retrocede y lo esquiva

4º Si le pasa la mano por el lomo… este se detiene…(mas que nada para mantenerlo controlado, porque he visto que la nena tiene miedo del ruido que hace y no lo toca si escucha algo)

Basado en un PINGUINO “pequeño” 18f2550 ya que me sobrava y tenia poco espacio dentro… además utilizo varios sensores infrarrojos… y no se asusten los que parecen cartuchos de dinamita son baterias de LIPO (extraídas de una bateria de portátil) poseen un rendimiento inmejorable… puede durar varias horas funcionando el bicho.

 

 

Leer el resto de esta entrada »

BarCamp ARDE

Bueno al final me he presentado en la BarCamp… y la verdad que estuvo muy interesante y he sacado en claro que no soy el unico trastornado de Madrid que le gustan estas cosas… :-)

Edificio del UNED en las Tablas (Madrid)

Mi ponencia sobre pinguino.

Uno de los proyectos mas bonitos que he visto… una bestia!

Uno de los proyectos basados en PINGUINO, muy bonito… inspirador…

Pero sinceramente la he pasado muy bien… y hemos hecho durar la charla mas alla de las 19hrs. He aprendido mucho y me he empapado de toda la info interesante que han hablado los ponentes.

Tambien he realizado una charla de PINGUINO aunque la gente que estaba ya tenia muchos conocimientos se han sorprendido con las peculiaridades de PINGUINO.

La gente de ARDE ha filmado el evento para poder colgarlo de su WEB… y compartir con mucha mas gente esta información.

También he sacado en claro que necesitamos unirnos para poder hacer cosas interesantes… cada uno aporta lo suyo… pero unidos creo que puede salir algo muy importante…

Espero volver a verlos en la proxima reunion…

BarCamp ARDE (PINGUINO entre otras cosas)

Este sabado 26 de Marzo se organizará una reunión tipo BARCAMP en el UNED (de las Tablas, Madrid), para los que quieran participar, visitarnos o solo pasarse un rato. Aquí estan los datos.

Intentaré hablar sobre PINGUINO y ayudar a los principiantes a entrar en este mundo.

http://barcamp.org/w/page/38043852/V-Jornadas-Robóticas

Saludos los esperamos.

DIGITAL CODE LOCK

Aquí, algo que he querido publicar hace tiempo… y por eso lo verán instalado ya en mi coche… ya lleva algún tiempo de pruebas y ha salido victorioso.

Siempre me preguntaba porque un Mercedes CLK puede tener un arranque con código y yo en mi Korando no??? J Por eso me puse manos a la obra y he realizado este proyecto.

Básicamente funciona así: si uno no introduce el código correcto no cierra el circuito y no alimenta al circuito de arranque… algo como un corte de arranque pero en forma de código…

Con un cable muy largo e instalado separadamente el PINGÜINO y el teclado, y así poder tener el teclado en una posición disimulada, por sobre el parasol, entonces si no se baja el parasol es imposible ver la modificación… también he incluido un procedimiento para modificar el código para poder cambiarlo por ejemplo cuando lo dejamos en el taller de reparaciones o cuando lo dejamos en los lava coches. Y así no descubren nuestro verdadero código.

El código funciona utilizando la memoria EEPROM del PINGÜINO para poder grabar de forma permanente el número secreto, y que este no se modifique o se pierda con una falta de energía. Por tal motivo podremos conectarlo en la conexión de contacto de nuestro coche… y así alimentarlo solo mientras se necesite.

Leer el resto de esta entrada »

Código de lectura y escritura en la EEPROM del PINGUINO

Esto se me ocurrió tras hablas con JEAN, porque no he encontrado un ejemplo de tal uso, ya que PINGÜINO tiene 250 posiciones de memoria para utilizarlas en lo que uno quiera recordar, aunque nuestro pingüino se quede sin energía. Ya que es una memoria EEPROM puede recordar lo que escribamos en ella por siempre… y ser borradas y re-escritas las veces que necesitemos.

He intentado hacer dos ejemplos muy fáciles y prácticos… uno escribe las 250 posiciones, y el otro las lee… para que veamos que después de apagar y reprogramar nuestro PINGÜINO, esta información sigue estando, ya que utiliza espacios de memoria que no se sobre-escriben si escribimos un nuevo código.

Escritura:

#include <eepromlib.c>
#include 18f4550
int i;

void setup()
{
  for (i = 0; i < 250; i++){
    ee_write(i, i);
    delay(100);
    if (i==250) Serial.print("grabado...\n\r");
    }
}

void loop()
{
}

Y el código de lectura

#include <eepromlib.c>
#include 18f4550
unsigned char answer;
int i;
int a = 0;
int value;

void setup()
{
Serial.begin(9600);
}

void loop()
{
 value = ee_read(a);
  Serial.print(a,DEC);
  Serial.print("\t");
  Serial.print(value,DEC);
  Serial.print("\n\r");

  a = a + 1;

  if (a == 250)
    a = 0;

  delay(100);

}

Problemas para detectar PINGÜINO en Windows XP

Hoy me ha ocurrido algo que antes nunca… e instalado una maquina nueva con window xp y he intentado conectar un PINGÜINO, era muy extraño me lo detectaba correctamente como “Microchip Custom USB DEVICE” pero en el programa que trae el LIBUSB no aparecía y si no aparece en el listado el PINGÜINO GUI no lo reconoce tampoco y no podemos escribir en él, recuerden que tenemos que buscar por “04D8 FEAA”, tras dar muchas vueltas por las entrañas de WINDOWS, instalar el LIBUSB varias veces, y reiniciar otras tantas, e buscado en el ORACULO, y encontré que hay una nueva versión de LIBUSB con una interfaz mas manual… ¿Qué quiero decir con manual?… ya lo verán.

Si os ocurre esto, descarguen de la web de LIBUSB o de mi pagina, aquí en la columna de la derecha de la página principal verán la descarga (recuerden que deben estar registrados para descargarla), lo instalan sin quitar nada, así nomas, encima del resto de instalaciones del LIBUSB…

El archivo se llama. libusb-win32-devel-filter-1.2.2.0.exe

http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/1.2.2.0/

Leer el resto de esta entrada »

IGLU CONTROL

En principio quería explicar el nombre… porque se me ocurrió exactamente haciendo eso, buscando un nombre… ya que este proyecto se inicia como un control domótico utilizando PINGÜINO para comandar todos los artefactos y censar temperatura y humedad de todos los puntos de la casa. Entonces aunando PINGÜINO y CASA, se me ocurrió el nombre de PROYECTO IGLU CONTROL.

Me he basado en la mezcla de varias tecnologías, como suelo hacer siempre:

  1. Cliente grafico (un ordenador o teléfono inteligente con un browser) y conexión a Internet.
  2. Un router de borde con Linux “OPENWRT” y un túnel seguro (OPENVPN/PPTP) para recibir la conexión y dejar entrar en mi red privada desde cualquier parte del mundo.
  3. Un servidor Linux, para centralizar toda la información recibida de los PINGUINOS, procesarla y presentarla en pantalla, a la vez también es el encargado de enviar las ordenes a cada una de los PINGUINOS (control de domótico de electrodomésticos)
  4. Varios módulos XBEE, para la comunicación entre el servidor y los PINGUINOS
  5. Algunos routers con Linux “OPENWRT” y puertos USB para la monitorización de la actividad mediante cámaras WEB.
  6. Y muchos PINGUINOS con controles de potencia, relés eléctricos y sensores de temperatura, iluminación y humedad.

NOTA: el punto “2″ se puede obviar si solo queremos conectarnos desde nuestra misma red.


Leer el resto de esta entrada »

Proyecto Cardrone Con PINGUINO

Este proyecto intenta la reutilización de un vehículo radio controlado, reemplazando toda la electrónica con un micro-controlador PINGUINO, y el medio de transmisión, reemplazarlo con el protocolo de comunicación 802.15.4 ( XBEE/ZigBee), ofreciendo la capacidad de control a una distancia mayor a un kilometro.

Adicionando a esta mejora, y entendiendo que a esta altura se podría controlar el vehículo con cualquier ordenador con un módulo XBEE conectado por USB… podríamos agregar la facilidad de controlarlo mediante un teléfono móvil o ipad IPHONE/ANDROID”, mediante la utilización de PROCESSING y con la librería de comunicación OSCnet (para el caso de los dispositivos móviles se utiliza el programa TouchOSC).

Nota: la versión de touchOSC para ANDROID es 100% gratis y de libre distribución.

La de IPHONE tiene un precio de $5.- dólares por única vez en la tienda de APPELSTORE

Video del proyecto finalizado.

Video de funcionamiento

.

Leer el resto de esta entrada »

Proyecto de FURRI con PINGUINO WALII

Con este post quiero agradecer a FURRI por incluir uno de nuestros KITS en su proyecto tan interesante de comunicacion via laser, me parecio algo muy practico y con muchas aplicaciones en el futuro…

Este es el link a la WEB de FURRI…
http://www.tarribot.com/tallerdunas/

Saludos y a seguir en el tema.

Feliz Año a todos…

PINGUINO 9.05 para MAC “PERFECTA”

Ya en mis manos, la ultima version de GUI de PINGUINO la version 9.05 para MAC, tambien he descargado la version para linux, y estoy en proceso de prueba, una genialidad y un look muy diferente…ya lo verán…
Por lo que puede probar, funciona perfectamente, aunque en la versión de PYTHON 2.5.2 no inicia… pero en cualquier otra 2.5.4 y 2.6.0 funciona al 100%.

gracias JEAN.


Automatismo de luz navideña…con PINGUINO

Bueno siguiendo el tema de chorradas, y luego del burbujometro :-) se me ocurrió montar el belén navideño, pero al terminarlo lo vi medio fofo… y pensé que quedaria bonito si automatizamos un poco la cosa y ponemos alguna que otra luz.
El tema de tener que darle a un interruptor me molestaba, así que he realizado una especie de interruptor infrarrojo, para activar con solo pasar la mano delante de la estrella, y durante un tiempo de cerca de un minuto las luces y algunos cambios de color…
Espero os guste, es una tontería pero facil de hacer y de replicar.


Las lineas marcadas con //debug son para ir corrigiendo en tiempo real la respuesta del PINGUINO.


/*
 * Walii PINGUINO PIC
 * http://pinguino.walii.es
*
*Español
* Un sensor para el BELEN, para que cuando pasas la mano por delante
* se enciendan las luces de decoración, durante un minuto aproximadamente
*English
* A sensor for BELEN, so that when you pass your hand in front of this
* the lights decoration ON, these for about a minute.
 */

int redPin = 2; 	// R petal on RGB LED module connected to digital pin 2
int greenPin = 1; 	// G petal on RGB LED module connected to digital pin 1
int bluePin = 0; 	// B petal on RGB LED module connected to digital pin 0
int valueir;		//IR SENSOR
int i;
int timer=0;

void setup()
{
   for (i=0;i<8;i++)
	{
	pinMode(i,OUTPUT);		// Config all the port like OUTPUT
	digitalWrite(i,LOW);		// fixed all exit to LOW
	}
Serial.begin(9600);		//debug
}
void color (uchar red, uchar green, uchar blue)     // the color generating function
{
          digitalWrite(redPin,red);
          digitalWrite(bluePin,blue);
          digitalWrite(greenPin,green);
}

void loop() 	// run over and over again
{
valueir=analogRead(13); //Read analog port
//Serial.print("valor ir ");	//debug
//Serial.print(valueir,DEC);	//debug
//Serial.print("\n\r");		//debug
if (valueir<100) timer=50;		//Control IR SENSOR
//Serial.print("valor timer ");	//debug
//Serial.print(timer,DEC);		//debug
//Serial.print("\n\r");		//debug

while (timer>1) //Make this only if timer is > 1
{
//Serial.print("valor timer ");	//debug
//Serial.print(timer,DEC); 	//debug
//Serial.print("\n\r"); 		//debug
analogWrite(11,1000);	// 99% pwm 11
color(HIGH, LOW, LOW); 	// turn the RGB LED red
		delay(500); 	// delay for 1/2 second
analogWrite(11,500);		// 50% pwm 11
color(LOW, HIGH, LOW); 	// turn the RGB LED green
		delay(500);	// delay for 1/2 second
analogWrite(11,1000);	// 99% pwm 11
color(LOW, LOW, HIGH); 	// turn the RGB LED blue
		delay(500); 	// delay for 1/2 second
analogWrite(11,800);		// 80% pwm 11
timer--;
}
analogWrite(11,0);		//Off the PWM pin
color(LOW, LOW, LOW); 	//Off all the ligths
delay(100);			// Wait 100ms
}

Burbujometro con PINGUINO

Hola… buenas, hoy con una tontería que se me ocurrió hace tiempo y nunca tuve el tiempo para hacerlo, hoy dedique un ratillo a ello, aunque hecho con prisas y con poca paciencia. Pero funciona…


Quizas mi mezcla no sea la ideal, por eso las burbujas no salen como debería.

El programa es basico, controlando el servo y deteniendo un segundo arriba para poder soplar y medio segundo abajo para poder humectar bien el aro.

También el ventilador se controla con una salida PWM y controlando esta con dos botones… para subir y bajar la velocidad, ya que las burbujas necesitan un viento de velocidad “X” para hacerse, si es muy débil el viento, no se hace la burbuja y si este es muy fuerte la rompe.

El control del ventilador es un transistor BC337 corto circuitando la tierra del cooler.

EL código es:

int value;
int i;
int valueservo;
int valuemotor=2;
uchar position=1;

void setup(void)
{
servo.attach(0);
pinMode(1,INPUT);
pinMode(2,INPUT);

}

void loop(void)
{
servo.write(0,230);
delay(500);
servo.write(0,90);
delay(1000);
analogWrite(11,valuemotor);	// 50% square wave on output 11
//analogWrite(12,102);	// 10% square wave on output 12
if (digitalRead(1)==LOW) valuemotor=valuemotor+10;
if (digitalRead(2)==LOW) valuemotor=valuemotor-10;
if (valuemotor>=1023) valuemotor=1023;
if (valuemotor<=2) valuemotor=2;

}

MARKETING PINGUINO HACKINGLAB

    Se me ocurrió hacer un par de pedidos de gorras, tazas y camisetas con un logo que he creado de PINGUINO… con el permiso de JEAN, me gustaría ofrecerlas por si alguien más quiere…

Por ahora quise hacer solo estos diseños… pero cualquiera puede pedirme alguno especial… de otro color o tamaños, estos son para mí… y me gusta el blanco…

 

Las Camisetas mangas cortas salen por €19 euros

Las Camisetas mangas largas salen por €30 euros

Las tazas salen por €19 euros

Las gorras salen por €26 euros

Estos precios son más el envió… que es €6 euros nacional o €12 euros internacional.

Si pedimos más de 5 unidades el envío es gratis, y si piden más de 10, un descuento en el total de 10%.

Taza térmica de cerámica

Gorra talle único

   

Camiseta manga corta talle L

Camiseta manga larga talle L

 

Instalador de Windows para PINGUINO GUI PIC 9.04

    Estuve esperando a que JEAN me pasara la ultima versión de PINGUINO… pero parece que lleva mucho más trabajo de lo que pensábamos… así que mientras, os ofrezco la versión 9.04… hasta que tenga en mis manos la 9.05…

 

 

Jean me ha ofrecido la BETA…BETA del 9. 05… pero prefiero que este bien fina antes de ponerme a hacer el paquete…

Ahora he refinado un poco más el paquete de instalación… y tienen de donde elegir…

Para quienes nunca han instalado PINGÜINO y necesitan todas las aplicaciones previas… tenemos la versión “A” la cual trae he instala todo lo necesario para hacer funcionar PINGÜINO en una maquina nueva… o a la que nunca se le ha instalado esta aplicación… trae PYTHON, WXPYTHON, LibUSB y PyUSB.

http://rapidshare.com/files/432813687/Pinguino_Setup_9.04_A.exe

 

Para la gente que ya tiene instalado y funcionando cualquier versión previa de pingüino… y solo necesita instalar la nueva versión… para ello es el paquete “B”, con tamaño reducido y sin paquetes extras.

http://rapidshare.com/files/432812456/Pinguino_Setup_9.04_B.exe

 

Saludos.

PINGUINO 9.04 CDC compiler problem

Hola buenos dias, esta es una solucion rapida a un probelma de compilación en la version 9.04 de MAC OSX, cuando queremos complilar el modulo de ejemplo de CDC en una MAC… nos aparecen muchos errores… existe un error en el codigo del archivo usb_config.h y el .c, gracias JEAN

Al final de este documento pongo un enlace a dichos archivos que deberán ser copiados a la carpeta

/tools/share/sdcc/include/pic16/usb    reemplazando los existentes… esta solucion tambien es factible para la nueva version 9.05

El error visto es algo asi:

__CODE

__DATA

El link de descarga es el siguiente.

http://rapidshare.com/files/432256020/uso_CONFIG.zip

Para los que usen la version de macOSX existe tambien un problema con la version del teclado de ESPAÑOL ISO que hace que no aparezcan la llave abierta y el corchete abierto… eso no pasa si tenemos la configuración del teclado en ingles… según lo comentado con JEAN lo solucionara en la version 9.05

saludos.

Processing + touchOSC + PINGUINO + Brushless

Aqui os enseño el ultimo proyecto que he creado, basandome en el famoso ARDRONE, quice intentar reproducir el control utilizando un IPHONE, conectado por WIFI, y asi dar ordenes via TOUCHOSC al PROCESSING y este via puerto USB enviar la informacion recibida a un PINGUINO el cual tiene como tarea mover el motor BRUSHLESS…

La tarea es sensilla.

[IPHONE (+TouchOSC)]—wifi—>[OSx(+PROCESSING)]—usb—>[PINGUINO(+brushless)]

Siento lo del audio, pero sin querer capture el video con el microfono de la webcam, por ende “Horrible”

Esto es una muestra de lo que podemos hacer con las herramientas y el tiempo necesario.

En cuanto tenga un segundo, subo el perfil de TOUCHOSC, el codigo del PROCESSING y el de PINGUINO.

Saludos.

Tienda de compras

Gracias el consejo de varias personas que han utilizado la tienda, he visto que tiene problemas de visualizacion en OPERA y CHROME…

Se recomienda el uso de Internet Explorer y Safari.

Igualmente he incluido los productos en una nueva web que tengo ONline… la cual para quien quiera visitarla ya estan activos los productos PINGUINO…

el link es:
http://echollos.com/category.php?id_category=7

Basicamente son los mismos productos pero esta web es compatible con todos los Exploradores.Pronto incluire el link en la propia pagina.

Circuitos de sensores y entradas para PIC

    Esto es más que nada una ayuda memoria, para no tener que buscar en internet o en el oráculo. Estos circuitos están probados y si se sigue el esquema correctamente se obtienen buenos resultados.

Aquí vemos como conectar pulsadores o botones, ya sea para obtener una rampa positiva o negativa.

También vemos como conectar un termostato LM35.

Recordemos que este transistor posee un rango de medición muy grande, con una definición de 10mVolts por grado.

Pudiendo medir desde los -55º a los 150ºC operando en tensiones de 4 a 30Volts. Con solo 4 Volts puede medir su máximo que sería 150ºC.

Si obtenemos por ejemplo:

En la salida 1,5volts nuestra lectura es de +150ºC

Si tenemos 0,25Volts la lectura seria de +25ºC

Y el siguiente extremo es del -0,55Volts que representaría a -55ºC

 

Aquí vemos un sensor infrarrojo, el cual funciona a la perfección.

Verifiquen en su construcción que el diodo de receptor tiene que tener la patilla negativa hacia el positivo, o sea, conectada al resistor de 47K.

 

Por último tenemos como conectar un simple LED (pensando en una alimentación de 5 Volts).

También un LDR el cual nos ofrece una salida con positiva con pulsos invertidos, o rampa negativa.

Más adelante pondré los programas para utilizar cada uno.

Nuevo precio del PIC programado y KITs

    Gracias a muchas recomendaciones y búsquedas, he podido reducir el coste de producción del PIC y su programación. Así que lo tenemos con nuevo precio… ahora 14euros programado con la última versión del firmware.

También he conseguido precios orientativos para los kits completos (sin soldar), con el PCB, MICROCONTROLADOR y componentes básicos, por 39euros. Comparado con el precio de productos similares ARDUINOS, creo que estamos en el rango normal de precios.

Para los que quieran el PINGÜINO armado y soldado, listo para funcionar, creo que el precio orientativo puede ser de 50euros.

Actualmente con el número de ventas no es factible bajar el coste, mas adelante si el volumen de ventas aumenta, quizás podríamos reducir en 10 o 15% el valor de kits y componentes.

También para los que quieran comprar cantidad ( +5 kits, PICs o PCB), os recuerdo que tienen un descuento de un 5%.

 

Saludos.

PINGÜINO PIC sensor de temperatura e Iluminación

Bueno hoy estoy con un proyecto fácil, pero que al principio de mis tiempos con PICs, me costó su trabajo.

Básicamente el proyecto toma 10 lecturas de temperatura con el sensor LM35 y 10 lecturas del LDR, luego realizamos el promedio de estas y lo imprimimos por el puerto serie, para más tarde hacer lo que queramos con estos valores. Graficarlos en una página web o simplemente en PROCESSING

El código es simple.

<blockquote>
/*
=============
Sensor de temperatura y luz
walii
Octubre 2010
*/
#define PIC18F4550
#define RUNLED PORTAbits.RA4
int samples[10];
int max=0;
int min=100;
int tempc=0;
int tempf=0;
int lux=0;
int i,x;
float val1;
float val2;

void setup() {
//Solo el serial es necesario para enviar los datos.
Serial.begin(9600);
}
void loop() {
//Realizamos un ARRAY para hacer un promedio de 10 mediciones
for (i=0;i<=9;i++){
val1=analogRead(13);
samples[i]=(4.65*val1*100)/1024.0;
tempc=tempc+samples[i];
delay(100);
}
//Dividimos por la misma cantidad de lecturas
tempc=tempc/10.0;
//Convertimos en Farhenheit
tempf=(tempc*9)/5+32;
//Capturamos los valores de minimos y maximos.
if(tempc>max){max=tempc;}
if(tempc<min){min=tempc;}

//Ahora le toca el turno a la luz, tomamos 10 lecturas
for (x=0;x<=9;x++){
val2=analogRead(16);
samples[x]=val2*100/1024.0;
lux=lux+samples[x];
delay(100);
}
//Dividimos el resultado por el mismo numero de lecturas
lux=100-(lux/10.0);
//Controlamos que las lecturas no sobrepasen los valores de 0-100.
if(lux>=100)lux=100;
if(lux<=0)lux=0;
//Imprimimos todo en el serial
Serial.print("Pinguino.walii.es");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("Temperatura: ");
Serial.print(tempc,DEC);
Serial.print(" C");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("Temp maxima: ");
Serial.print(max,DEC);
Serial.print(" C");
Serial.print("\n\r");
Serial.print("Temp minima: ");
Serial.print(min,DEC);
Serial.print(" C");
Serial.print("\n\r");
Serial.print("Temp fahrenheit: ");
Serial.print(tempf,DEC);
Serial.print(" F");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("Nivel de Luz: ");
Serial.print(lux,DEC);
Serial.print("%");
Serial.print("\n\r");
Serial.print("#####################");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
Serial.print("\n\r");
//indentificacion que todo funciona bien, el runled parpadea.
RUNLED=1;
delay(50);
RUNLED=0;
delay(50);
}

El sensor LM35 lo conectaremos en la puerta AN0, patilla numero2 o puerta 13 de nuestro PINGUINO 18f4550 (recordemos que por algún motivo JeanPear a cambiado los números de las patillas, pero viendo el diagrama nos ubicamos bien.)

El LDR para medir la incidencia de luz lo conectaremos en la puerta AN3, patilla numero 5 o puerta 16 de nuestro PINGÜINO 18f4550

Un juego de colorines y sensores de infrarrojo… claro… con PINGÜINO.

Hola buenos días… hoy cumplo con una de las promesas y proyectos de mi tintero… un juego con detección de infrarrojos en los 360grados… con 4 sectores y uno adicional arriba.

Básicamente se compone de 5 sensores de infrarrojo que detectan cualquier obstáculo a menos de 30 centímetros, y lo traduce en un color diferente dependiendo de donde provenga el objeto… por ejemplo si ponemos un objeto o interceptamos el as del norte… el cubo cambiaría a rojo… si incidimos desde arriba cambiaría a blanco… y si incidimos desde cualquier otro lado, el cubo cambiaría de color.

Un ejemplo fotográfico de lo que he realizado… aunque no es un cubo en cuanto pueda conseguir un tooper que se adecue a las dimensiones… lo clono.

Un vídeo al respecto para que se entienda un poco más.

Leer el resto de esta entrada »

Componentes de un PINGUINO

Como mucha gente me lo ha solicitado, dispongo una lista de los componentes necesarios para hacernos una placa de PINGUINO… Obviamente no incluyo el programador o los cables… pero son cosas que se necesitan… por lo menos la primera vez…

También os dejo a su gusto la elección, ya que cada uno puede hacerlo como más os guste, en su propia PCB o en un PROTOBOARD, o en el aire… como quieran… por ejemplo en un PROTOBOARD ya no necesitarían el conector USB, ya que con un cable viejo de un RATON USB, podrían construirse el adaptador a tal efecto. Fuente en realidad no se necesita, porque sacamos la energía del puerto USB, pero recordar que los puertos USB de ordenadores ofrecen solo una corriente de 500mA y esto puede no ser suficiente para algunos casos.

 

    Los componentes necesarios son:

    1x Placa PCB (preferiblemente la comprada en PINGÜINO.WALII.ES ) J

1x PIC 18f4550*(Programado, la mejor forma comprarlo en PINGÜINO.walii.es) J

1x Zócalo 40 pines para PIC*

1x Cristal 20Mhz*

1x Capacitor 470nf tantalio (tiene que ser lo más exacto y estable posible)*

2x Capacitor de 22pf cerámico para el oscilador*

2x Capacitor de 100nf para el filtrado de la fuente*

1x Capacitor de 10uf para el botón de reset*

2x Leds del color que queramos

2x Resistencia de 470ohm 1/4watts*

2x Resistencia de 330ohm 1/4watts*

1x Resistencia de 10Kohm 1/4watts*

1x Conector USB Hembra clase B (el de las impresoras)*

1x Botón pulsador para el reset, recordar que tiene que ser de dos patillas, para que encastre perfectamente en el diseño del PCB*

Y todos los conectores y pines que queramos poner, según gustos, hay gente que no pone nada y suelda los cables directamente al PCB.

(120 pines machos, para la imagen de la web, para por ejemplo, control de sensores o servomotores)

(60 pines hembras, si queremos utilizar nuestro pingüino como si fuese de un protoboard, recomendado para pruebas y comenzar)

(sin pines, para el que desee soldar los cables directamente en la placa, y dejar nuestro PINGÜINO definitivo en su sitio)

 

Componentes opcionales:

Si utilizaremos fuente de alimentación de 12 volts:

1x 7805 (regulador de 5volts 1Amp)

1x diodo de 1Amp por ejemplo 1n4001

1x capacitor de 10uf de 5 volts o más, solo para estabilizar la salida del 7805.

Si queremos utilizar el puerto serie con un router tipo fonera:

2x diodos zener 3,3volts 1/4watts

Si utilizaremos panel solar para alimentar el PINGÜINO:

1x diodo de 1Amp por ejemplo 1n4001

 

 

Saludos.

PINGUINO IDE Instalador versión 9.02

Hola Buenos días a todos, hoy tras una promesa a RAFAEL, os traigo la nueva versión del instalador de pingüino.

No solo he incluido todo el materia nuevo desde la versión 9.02 con todo lo nuevo que trae consigo, sino también el ultimo MAIN.C el cual soluciona un problema con el puerto serie (fresquito fresquito, de ayer mismo), también he incluido para la gente que no tiene instalado PINGÜINO y/o quiere hacerlo desde cero, todos los paquetes necesarios (esto último como recomendación especial de JEAN).

PASOS A SEGUIR:

Cuando iniciemos la instalación, nos pedirá toda la info necesaria para instalar PINGÜINO (directorios y nombres de programa), y antes de finalizar con la instalación de PINGUINO, comienza la instalación de los paquetes necesarios para que este funcione (omitir estos pasos para lo que ya tengan un PINGÜINO funcionando) de PYTHON, WXPYTHON, PYUSB y LIBUSB, en ese orden, dejando todo perfectamente atado para que alguien que nunca uso PINGÜINO tenga una instalación funcional en pocos pasos y sin necesidad de descargar nada.

Para quien ya tenga una instalación funcional de pingüino, os recomiendo cancelar los 4 instaladores, y luego proseguir con la instalación de pingüino propiamente dicha. Más que nada para no tener aplicaciones duplicadas en su Windows. Por ejemplo, por necesidad extras, yo tengo instalado el PYTHON 2.6 y no necesito el PYTHON 2.5 que trae el instalador, entonces le doy “CANCEL” cuando comienza la instalación de dicho programa, y salto este paso…. Lo mismo con todos los demás, y dejamos que finalice la instalación de pingüino.

Otro punto adicional y que siempre me ha gustado, es que ahora tenemos links directos a todos los diagramas necesarios, Pingüino 18f2550, pingüino 18f4550, diagramas DCE y DTE y conexión de serie a FONERA. Uso a diario estos diagramas y me gusta tenerlos a golpe de ratón. (TENGO MUY MALA MEMORIA)

NOTA: Tras un problema en la ultima version, ahora he corregido la nueva y solucionado los problemas de instalacion de PYTHON.

LINK DE DESCARGA MEGAUPLOAD

LINK DE DESCARGA RAPIDSHARE

Saludos y espero que os guste la nueva versión.

Pinguino IDE BETA9.01 instalador de Windows

    Para los más prolijos, he creado un instalador automático de la beta 9.01, el cual instala la versión en “Archivos de programas” si tenemos la versión de Windows en español, o en su defecto en “Program Files” si tenemos otras versiones.

También se sitúa tanto en el directorio de instalación como en el grupo de programas con el nombre “hackingLab” y dentro de este en un vínculo con el nombre de la versión, para que todas las nuevas versiones puedan convivir sin sobre-escribirse.

 

El vínculo de descarga es el siguiente:

http://rapidshare.com/files/414840511/PinguinoPic_beta9.01_Setup.exe.html

 

Y Aquí algunas capturas del instalador:

Una vez dentro del instalador nos pedirá el directorio donde queremos instalarlo, por defecto le he puesto el comentado anteriormente.


Luego nos pregunta el grupo de programas, en este caso el por defecto es “HackinLab”

y también nos da la opción de agregar o no iconos en el escritorio o en el lanzador rápido de Windows.


En el siguiente paso nos muestra lo que va a ocurrir y donde instalará todo y luego el progreso de instalación.


Por último el instalador ofrece la opción de visitar la página web y/o iniciar el programa.

Y a la derecha vemos el icono que se instala en el escritorio. (No os preocupéis, mas adelante lo embelleceré).


 

Saludos.

Jugueteando con la BETA9 y la librería de servos

Aquí un diseño rápido y educativo de PINGUINO, utilizando las librerías de servos he realizado este seguidor de sol, para nuestros proyectos solares….

// Seguidor solar con libreria de servo beta9
// Walii walterleonardo@gmail.com 2010
#define PIC18F4550
uchar pos = 0; // Variable to store the servo position.
int inputPhotoLeft = 13; //LDR left sensor
int inputPhotoRight = 14; //LDR right sensor
int Left = 0; // Store readings from the photoresistors.
int Right = 0; // Store readings from the photoresistors.
int servo1 = 0; // Attach servo to pin 0.
void setup()
{
servo.attach(servo1);
}
void loop()
{
// Reads the values from the photoresistors to the Left and Right variables.
Left = analogRead(inputPhotoLeft);
Right = analogRead(inputPhotoRight);
// Checks if right is greater than left, if so move to right.
if (Left &gt; (Right +10))
// +10 is the deadzone, so it won't jiggle back and forth.
{
if (pos &lt; 179) pos++; servo.write(servo1,pos); } // Checks if left is greater than right, if so move to //left. if (Right &gt; (Left +10))
// +10 is the deadzone, so it won't jiggle back and forth.
{
if (pos &gt; 1)
pos -= 1;
servo.write(servo1,pos);
}
// Added ALOT of delay, increase or decrease if you want less or more speed.
delay(70);
}

Saludos

Fuente de alimentación con LCD PINGUINO

Me puse a pensar en reconstruir mi fuente de alimentación y se me ocurrió que porque no hacerla con PINGÜINO…

Tenía un LCD de 2×16… y pensé, es suficiente para poder ver el voltaje y la corriente consumida… además más adelante puedo hacer un control para subir o bajar la tensión de salida…

Leer el resto de esta entrada »

En mis manos la versión beta9 de la GUI… de PINGÜINO.

Lo primero de todo es agradecer a JEAN… gracias a él estoy probando desde ayer la nueva versión de interfaz gráfica de PINGÜINO la versión BETA9… que a diferencia de otros proveedores cada versión tiene un millón de cosas nuevas…

Según JEAN, la tendrá lista para salir a la calle en un par de días. Pero la beta que he probado yo la veo bien madura… J

Leer el resto de esta entrada »

Por fin han llegado las placas PCB PINGÜINO…!!!

Hola…buenas noticias, tengo en mi poder las placas PCB de PINGÜINO….

Muy bonitas y al ser las primeras, con muy pocos fallos… por suerte.

Según tengo entendido salieron de china el 1 de julio así que tardaron 15 días en llegar.

El lunes comenzaré su distribución, por orden de pedido, quien desee alguna mas es ahora el momento de solicitarla.

Estoy meditando el tema de KITs armados, porque la verdad que me ha llevado mucho tiempo soldar todos los componentes y si calculo el coste por hora de trabajo, me parece que debería venderlas como mínimo 50euros… me parece que solo hare alguna para que me quede de recuerdo armada y como un pingüino de colección.

Igual ya he pedido presupuesto para los KITs para armar, y vender la placa y sus componentes sin soldar, así me quito ese tema y me dedico directamente a inventar que es lo que me gusta.

Mucha gente me ha solicitado el listado de componentes, así que aquí os lo indico.

Leer el resto de esta entrada »

Placa desde MakePCB.

Para todos los interesados, la gente de MakePCB nos ha respondido con algo bueno, según ellos, el producto ha salido de la fábrica y dispone a ser enviado…
Se supone que a corto plazo tendremos las placas para ser distribuidas.
Por el tema de envíos para quienes me han consultado tengo valores aproximados que pueden ser:
R.Moreira (Portugal) tanto para Portugal como para Canarias, estoy haciendo el mismo coste de envío que para España, asumiendo la diferencia.
6.- euros. (Con código de seguimiento y seguro)
J.Fernandez (Peru)  &  F.Lopez (Argentina)  &  E.Sanchez (Argentina)  &     J.Sancristobal (Chile) debajo indico el coste Internacional.
Para envíos Internacionales
El precio por unidad es el que aparece en la web (11 euros) puede incluir un chip y una placa PCB. Pero para pedidos superiores a 1 unidad necesito saber exactamente el número, porque dependiendo el peso y destino el coste de envío es diferente.
saludos y a esperar las dichosas PCBs.

GTP-USB-Lite mi programador USB

Hoy voy a compartir una herramienta que ya es difícil conseguir (por lo menos en mi caso, quise repetir el modelo que tenia, y solo lo he encontrado entre mis backups), un programador USB, para quienes como yo, se les complica programar micro controladores en los ordenadores modernos, sin puertos SERIE.

Es un programador basado en el GTP-USB, pero en este caso, libre (OPENSOURCE).

El único inconveniente es que solo puede ser utilizado por la versión de WINPIC800 3.55b, lo cual no es un problema si tenemos de donde conseguir esta versión.

El circuito es el siguiente:


Leer el resto de esta entrada »

Vuelta tras vacaciones…con nuevas ideas

    Bueno… tras unas vacaciones reparadoras, vuelvo con ideas frescas…

Veamos como iniciamos nuevamente la marcha…

Proyectos ideados bajo el sol de Mallorca… J

1º entretenimiento para mi niña, así me deja pensar en otros proyectos… un generador de pompas de jabón… robótico… con un servo y un ventilador de ordenador… as ver que podemos hacer…

2º Finalizar el proyecto de robot seguidor de líneas y detector de obstáculos…

3º Finalizar proyecto de auto a control remoto vía wifi con el IPHONE

4º Comenzar el nuevo proyecto de control de jardines y espacios verdes con PINGÜINO (humedad, luminosidad, temperatura, etc. y si puedo, control de riego dependiendo el reporte del tiempo “si llueve en breve, no regar”)

5º Comenzar a rentabilizar la inversión en Zigbee… y darle algún uso… J

 

Veremos con que comenzamos primero…

Cualquier idea será bienvenida.

Gracias a joseluis ya tenemos otra cosa para ocupar el tiempo libre… J

 

NOTA IMPORTANTE

Para los que compraron placas PCB, quiero hacerles llegar mis disculpas, ya que según Niels de MakePCB (en mi última comunicación la semana pasada), la producción de las placas está retrasada porque no dan abasto en su construcción, gracias a un número muy grande de órdenes… les daré tiempo a contestar mi último correo del día de hoy, a ver qué novedades tienen, y si no me responden algo bueno, cancelare la orden y la realizare con otra compañía.

Al final lo barato sale caro.

 

PINGUINO+Processing Osciloscopio de 6 canales

    Navegando por el mar de internet, me encuentro con algo muy interesante, un osciloscopio de 6 canales tomando muestra de una resolución de 10bits de los puertos RA de un Arduino, me pregunte ¿porque no tenemos algo similar para pingüino? y me puse a ello.

En principio he cogido la versión creada por la web http://accrochages.drone.ws/ , la he modificado lo suficiente como para que pueda utilizarse con PINGÜINO en sus dos modalidades por puerto SERIE o también por USB, esta última es más recomendable por el ancho debanda y la practicidad de un solo conector.

El resultado es esto:

 

El código no lo he posteado porque es demasiado largo, pero he puesto las dos modalidades en internet para que puedan descargarlas.

Este es el vínculo para la versión USB

Y este otro es el vínculo de la versión por puerto Serie

Nota: al final de cada código de PROCESSING encontraran comentado el código para PINGuINO.

 

PINGUINO Seguidor de SOL

Hoy un proyecto fácil de replicar, pero que no encontré nada para PINGUINO por eso decidí hacerlo.

La forma de funcionar es la siguiente:

Los LDRs reciben la intensidad lumínica del SOL y la traducen en niveles lógicos analógicos entre 0 y 1024… en mi caso he creado un umbral en 900…porque de la forma que he conectado los LDRs cuanto más luz, menos valor lógico. Por tal motivo si recibe luz, el valor baja…

Si ambos LDRs poseen cualquier valor por encima o por debajo de 900… entonces el PIC entiende que está perfectamente enfocado o que no posee luz y por tal motivo no cambia el ángulo del servo.

Por otro lado, si el PINGÜINO detecta que algún sensor se diferencia en el rango del otro, esto indica hacia qué lado tiene que moverse el servo.

Por ejemplo…. Si el LDR derecho detecta un valor de 800 y el LDR izquierdo tiene un valor de 950… entonces entiende que la fuente de luz se encuentra del lado derecho y modifica el ángulo del servo hacia ese sentido.

Aquí pueden ver una demostración con una linterna…

Leer el resto de esta entrada »

PACHUBE +PINGUINO+PROCESSING

HOla Buenos días.

Hoy tras un par de día con PROCESSING, he visto que podemos enviar datos por red utilizando diferentes tipos de librerías, y entre ellas podemos encontrarnos con una muy especial, que se llama PACHUBE.

http://PACHUBE.com

En exclusiva el servicio que me llamo la atención fue la de comunicar PINGÜINO (bueno arduino, pero ya podemos con PINGUINO) con Pachube para tanto controlar las puertas de nuestro PINGÜINO, como crear gráficas de cualquier tipo de sensor que tengamos en nuestro proyecto y publicarlo en un FEED creado a tal fin.

En este caso la información indica cómo hacerlo con ARDUINO,por eso me he puesto a modificarlo para que funcione con nuestro vicio (PINGÜINO)…y este es el resultado.

El gráfico en vivo es este: (Pero tengan en cuenta que puede estar apagado hasta que no lo deje permanente en el router LINKSYS de mi casa. El cual tiene el pingüino conectado de forma permanente, y así poder ver la temperatura/humedad/iluminación de mi casa de forma remota).

Y si quieren ver mi feed de pachube.

Este es el link

Un monitor de cualquier tipo de sensor, en mi caso un LDR conectado en el Puerto AN0 de mi PINGUINO. Esto utilizando las librerías y el código de pingüino mencionado en el post anterior, además me he puesto a modificar el código del PROCESSING de ARDUINO y he obtenido este resultado.

Necesitaríamos crearnos una cuenta en PACHUBE y un FEED “con actualización manual si estamos detrás de un firewall o no queremos abrir puertos, y de forma automática si tenemos un ordenador conectado directamente a internet… que no creo…”

También necesitaremos esta librería EEML dentro del directorio LIBRARIES del PROCESSING, es la encargada del envío y recepción de información por internet.


// Processing control pinguino+PACHUBE
// Walii.es pinguino.walii.es 2010
import hypermedia.pinguino.*; // import library
int val0,val1,val2,val3,val4,val5,val6,val7;
Pinguino board; // pinguino object
import eeml.*; // librería para envío/recepción de datos a internet
float lastUpdate;
int myValue;
DataOut dOut;
void setup()
{
board = new Pinguino( this ); // connect to Pinguino board
//dOut = new DataOut(this, 5210);
//si quieren hacer una prueba local descomentar
dOut = new DataOut(this, "SU PROPIO FEED/feeds/8231.xml", "nuestra clave de FEED");
dOut.addData(0,"light sensor, LDR, light level"); //identificacion de feedID
}
void draw()
{
val0=board.analogRead(13); //lee el puerto
println(val0); //imprimer el valor en la consola
//cada 5 segundos se hace un update de los datos
//si la respuesta es "200" está todo bien
//si la respuesta es "400" no hemos llegado a la pagina
if ((millis() - lastUpdate) > 5000){
println("ready to PUT: ");
dOut.update(0, val0);
int response = dOut.updatePachube();
println(response);
lastUpdate = millis();
}
}

LISTO, con esto tendremos transmitiendo nuestro pingüino a travez de PROCESSING, pudiendo hacerse con PYTHON o Perl, en la web de PACHUBE indica como.

Comenzando con PROCESSING y PINGUINO

Tras ver varias páginas, me entro la intriga sobre el software de compilación JAVA de nombre PROCESSING, el cual nos ofrece posibilidades que hasta el día de hoy no había visto.

Para quien tenga un poco de facilidades de programación, os recomiendo totalmente… en un ratillo, he creado toda una aplicación, y con posibilidades de crear ejecutables para todos los sistemas, LINUX, WINDOWS y MAC.

El archivo de ejemplo de código abierto se encuentra en este link. PROCESSING-PINGÜINO.PDE

No lo he posteado porque tiene 500 líneas de código y 15mil caracteres…

Ya tenemos tienda!!!

Bueno os quiero anunciar que he finalizado la tienda, en la cual pueden comprar los diferentes kits que iré subiendo.

Algo práctico y más profesional para agilizar el proceso. Y se puede pagar con PAYPAL (mucha seguridad, con centro de soporte y resolución de conflictos) o tarjetas de crédito (soportados y segurizados por PAYPAL).

Para transferencias os hare llegar mi número de cuenta.

El link es Compras y se encuentra en el menú arriba de todo de la página.

Este es el link si no se ubican. http://pinguino.walii.es/compras

Estoy incorporando productos y proyectos, aunque la mayoría será OpenSoftware y OpenHardware, los kits y componentes los intentare vender. De alguna manera tenemos que mantener el sitio funcionando.

PINGUINO VUMETER

Esto pretende ser una especie de ayuda cabeza, para cuando queramos hacer algo relacionado a controles o vúmetros. En realidad es un código muy simple, pero siempre es bueno tenerlo a mano. (Es que tengo una memoria prodigiosamente escasa J )

El resultado es el siguiente:

Leer el resto de esta entrada »

Nuevo PCB PINGUINO FULL V1

Tras algunas recomendaciones de logística y precios, de parte del usuario FURRi y de algunas críticas constructivas del diseño por parte del usuario FJ_Sanchez he remodelado la placa de PINGÜINO y tras varias meditaciones he decidido hacerla un poco más grande y completa… con conexiones para baterías y paneles solares, además de una salida independiente y regulada para UART y así poder poner en el futuro un Zigbee, de los cuales ya tengo 5… J así que veremos que se nos ocurre.

La distribución de componentes es pensada para control de servos y sensores con pines en paralelo que entregan alimentación de 5 volt a cada uno de los pines para poder conectar independientemente con solo 3 cables, sensores, servos, leds, interruptores y cualquier aditamento que necesitemos… esto es opcional y tiene muchos componentes que si el usuario no los necesita no los instala.

Como he pedido 50 y el coste se acerca a los 200euros, el precio definitivo será de 4Euros por palca, con un coste de envío de 6 euros hasta 2kilos (paquete azul de correos.es), así que ha pedir placas que os conviene organizarse para pedir varias y así distribuir el coste del envío. No creo poder bajar más el precio, porque es una placa de doble cara, pistas muy anchas y casi 250 orificios.
También puedo vender los microprocesadores 18f4550 “convertidos a PINGÜINO J” con el ultimo firmware, a un valor de 19 euros más envío (lo mismo que antes 6 euros hasta 2 kilos).
Nota: no encontré nada más económico con número de seguimiento, si alguien sabe de alguno me dice. También tienen la opción de pasarse a buscarlos por casita, estoy en Madrid, en Alcobendas.

Leer el resto de esta entrada »

Adaptador Serie PINGUINO a Serie de cualquier FONERA

Este es un diseño de JEAN PEAR MANDON, lo cual lo he probado y funciona muy bien, también incluyo otro que es más complicado pero es bueno tener.

Básicamente lo que hacen es regular los voltajes de los pulsos de entrada y salida, acoplándolos según corresponda. Ya que los pingüinos funcionan con una comunicación UART de 5volts… y la mayoría de los ROUTERS (FONERAS) funcionan con tensiones de 3.3Volts.

 

Este es el Fácil, aunque funciona, es muy probable que tenga problemas con algunos routers

 

Este aunque es más complicado, nos aseguramos que siempre funciona.

RUNLED BLINK (la forma más fácil de probar PINGUINO)

Aquí os dejo la forma más fácil de probar Pinguino, sin ningún tipo de aditamento, solo la placa tal cual está diseñada, con el LED que indica que PINGUINO esta ejecutándose el RUNLED.

Ya que lo que realizara este programa, es hacer parpadear este led, así que no necesitamos nada externo a nuestra tarjeta, para saber si funciona correctamente.

Esta línea dentro del LOOP puede agregarse a cualquier programa para dar un toque diferente a la ejecución de nuestro diseño.

El programa es:

// Pinguino.walii.es RUNLED BLINK
#define RUNLED PORTAbits.RA4
void setup()
{
}
void loop()
{
//Esta línea puede agregarse en cualquier parte del loop
//pero genera un retardo en el propio LOOP de 500milisegundos
RUNLED=1;delay(250);RUNLED=0;delay(250);
}
Al pegarlo en nuestro configurador (GUI de PINGÜINO) y ejecutar con PLAY,
verificaremos que esta todo correcto y procederemos a programar nuestro PINGÜINO.
NOTA: RECUERDEN que si no hacemos la comprobación, presionando el botón PLAY (triangulo),
no podremos programarlo en nuestro PINGÜINO


				
Una Vez creada la compilación, en el directorio de ejemplos tendremos creado el archivo HEX,
el cual enviaremos al PIC con el botón UPLOAD TO PINGÜINO (el botón de la derecha que tiene
 una flecha apuntando a la derecha).
Y veremos el siguiente cuadro.


				
Ahora reiniciaremos el PIC, presionando el botón RESET, y comenzaremos a presionar de
forma repetitiva el botón WRITE hasta que veamos PIC FOUND, archivo.hex uploaded. Tarda
cerca de 5 segundos más o menos… YO lo controlo con el sonido de Windows cuando detecta
un nuevo hardware, cuando reseteamos PINGUINO oímos el sonido del hardware cuando se
quita, y a los pocos segundos oiremos el sonido de cuando conectamos cualquier hardware
al puerto USB, ese sonido determina el comienzo de la escritura. Inténtenlo varias veces
verán que será así.

PROTEUS-ISIS PINGUINO

Estos son los archivos de proteus para quien quiera jugar un poco con la virtualidad de PINGUINO… y el rediseño de placas impresas.

El proteus es versión 7.5 Sp3

http://rapidshare.com/files/393550672/PINGUINO_PROTEUS.rar.html

Nota: El único defecto es que los leds, van montados por detrás (no sé realmente porque me ha salido así) pero respetando la polaridad pueden ser puestos del lado de los componentes.

 

 

Saludos.

PCB placas de circuito impreso para PINGUINO

Sres.

Estoy organizando un paquete (Vaca) para comprar placas de circuito impreso para pinguino, en principio necesitamos hacer un grupo de por lo menos 30 personas, para que nos cueste cerca de 10 euros cada placa (esto es por ser un prototipo nuevo, ya solo el prototipo cuesta 220euros, y 100 más cuestan las 30 copias), los que se encuentren interesados, por favor enviarme un correo con sus datos al mail pingüino@walii.es

Así podremos hacer una colecta y llegar al coste general del diseño de un nuevo prototipo de placa.

La placa en cuestión es la siguiente:

Leer el resto de esta entrada »

NETWORK STATUS CHECK (pingüino+fonera+Cshell)

Hoy se me ha ocurrido hacer algo para quitarme tareas de encima, no les ha ocurrido que su mujer los llama diciendo “no funciona internet, ¿Qué le pasa?” J y nosotros a 20kilometros de distancia deberíamos saber lo que ocurre por telepatía 2.0 J

Por eso se me ocurrió un indicador que nos informe con levantar la mirada, si el problema el local o de internet, por ejemplo me ha pasado que el proveedor hace modificaciones y se corta, en esos caso es bueno saberlo para no tocar o modificar nada sin estar seguro que el problema es nuestro.

O quizás para ver el estado de la red en todo momento. Saber si nuestra conexión a internet se encuentra saturada o caída, o tenemos algún servidor de internet que nos interesa saber cuándo se cae.

He realizado un diseño con PINGÜINO un programa simple y un script en el equipo a donde conectemos el puerto serie del PINGÜINO.

Es básicamente la misma configuración del proyecto RGB wifi, que utilizando la comunicación RS232 puede ordenar a PINGÜINO que encienda uno u otro color o led.

En este caso controlaremos dos leds RGB, un BUZZER y si queremos también un servo (esto último no lo tengo terminado en cuanto a hardware, pero si el código)

Leer el resto de esta entrada »

PINGÜINO GUI en MAC OSX pero en Acer Aspire One

Aquí una demostración de funcionamiento de PINGÜINO, no solo en MAC osX sino también en HACKINTOSH, ya que este MAC osX está corriendo en un Acer Aspire One con el software iDeneb 1.4 lo cual es una variación de software MAC OS X para ordenadores Clones.

PINGÜINO+FONERA+LUA=wifi control pinguino

Esto es una muestra del trabajo que he realizado, en cuanto tenga un segundo pondré el tutorial de cómo se realiza.

PINGÜINO + ISIS = PINGÜINO VIRTUAL

Estoy trabajando en hacer funcionar el PINGÜINO virtual, una configuración de ISIS que simula ser pingüino, para poder probar las configuraciones sin necesidad de gastar dinero en componentes… por lo menos antes de verificar que funciona como queremos.

Leer el resto de esta entrada »

PINGÜINO RGB remoto via web

Este proyecto tiene varios usos, básicamente es una forma de controlar un grupo de LED RGB (tricolores con masa común) vía una página web, que seleccionar que color queremos que se muestre.

Puede ser una forma de armonizar una habitación, cambiar el color de una piscina o simplemente tontear… J

Leer el resto de esta entrada »

Mis PINGUINITOS!!! :-)

La idea de este post es poder mostrar los diferentes diseños de mis PINGUINOS, como han evolucionado y la calidad del trabajo.

En principio las herramientas que vamos a necesitar…

Lo primordial es una conexión serie para nuestro ordenador, con un regulador de niveles TTL. Yo recomiendo la configuración analógica con transistores, pero a cada cual lo que más le guste.

Existen muchos chips en el mercado que pueden hacer el control de voltajes entre puertos. Ya que el nivel TTL del PINGÜINO es de 3,3volts, y necesitamos llevarlo y regularlo al nivel del periférico que utilicemos.

Como podrán observar, me gusta mucho reciclar objetos y partes, ya sea por ecología como por dinerito… J

Leer el resto de esta entrada »

Como comenzar con PINGUINO


Aunque fue diseñado originalmente en LINUX, es mejor comenzar con WINDOWS, se facilita mucho la instalación y puesta en marcha. Luego si deseamos más potencia podríamos migrar a LINUX.

Pero para verlo funcionando de una forma rápida… lo mejor es el dichoso WIN2.

Lo primero será cargar el firmware en el PIC 18f2550 o 18f4550, recomiendo este ultimo por tener muchas más aplicaciones posibles, aunque un poco más caro, en EBAY se puede conseguir por $8 dólares.

Igual necesitarían un programador, pero omito este pasó ya que supongo que algún experimento han hecho con PICs y ya tendrán uno. J

El firmware a cargar “compatible con ambos PICs” se encuentra en la siguiente dirección, en si se denomina BOOTLOADER porque sirve para iniciar el pic y que este escuche al programa PINGÜINO.

Este firmware está basado en el proyecto VASCOBOOTLOADER… y modificado para este micro-controlador.

Leer el resto de esta entrada »

PINGUINO primer POST

Esta pretende ser una sección para poder presentar y colaborar con todo el mundo que esté interesado en el proyecto PINGUINO, tras conocer los proyectos de JEAN PIERRE MANDON, me interesé mucho en uno de ellos, el proyecto PINGÜINO que intenta hacer llegar las tecnologías de MICROCONTROLADORES a todo el mundo sin necesidad de conocimientos previos y con una facilidad de uso y disfrute nunca vistos con anterioridad.

Las personas involucradas en el proyecto PINGÜINO han sido correspondientemente consultadas antes de realizar esta web, y tras su aprobación, he puesto esta ONLINE.

Links

Facebook Like Add
Google PLUS ONE
De donde me visitan
Publicidad
Calendario de Posts
mayo 2012
L M X J V S D
« abr    
 123456
78910111213
14151617181920
21222324252627
28293031