viernes, 31 de octubre de 2014

Pinguino Android con App Inventor vía BlueTooth

Comunicación De Pinguino Con Un Dispositivo Móvil Android

Modulo BlueThooth
Hay varios módulos de comunicación serial asíncrona de modo inalambrico por Bluetooth , como lo son el HC-04, HC-05. HC-06 todos para la aplicación básica de comunicación uno a uno entre un dispositivo móvil Android y un microcontrolador operan igual.
Descripción del BLK MD BC04
El modulo que se adquirió no tenia terminales de conexión directos para Protoboard, así que se procedió a soldar los terminales con cuidado. Se recomienda adquirir estos módulos ya listos para conexión en Protoboard o escudos Pinguino Arduino. 
Montaje Bolutek BC-04
La alimentación para todos estos dispositivos es de 3.3 voltios los módulos que ya están listos para usar tienen regulación de voltaje y pueden alimentarse directamente a 5 voltios

Conexión 
En el esquema de conexión se observa que el microcontrolador esta alimentado a 3.3v pero puede estar alimentado a 5v siempre y cuando el modulo Bluethooth este a 3.3v o tenga un regulador que permita alimentación  a 5v.

Montaje Para La Recepción De Datos

Montaje recepción Pinguino BlueThooth
Para la recepción de datos se conecta el terminal TX del modulo BlueThooth con el terminal RX de la tarjeta Pinguino. En el esquema se observa que por utilizar 5V se empleo un regulador de 3.3V para alimentar el modulo BlueThooth, los módulos que están listos para usar en el protoboard tienen el regulador ya integrado.
Programa de recepción y encendido de un Led
Este es el programa que se descarga en Pinguino, en el momento de las pruebas este no opero empleando Pinguino X4 así que se compilo con Pinguino 9.05 y funciono correctamente.
Pantalla de diseño en App Inventor
Bloques del programa App Pinguino BlueThooth
Los bloques son de guía para otros programas más elaborados, de manera fácil se agregan otros botones para enviar diferentes textos, es de tener en cuenta que en la recepción de Pinguino se espera un carácter  por esto los textos tienen una sola letra.

Fuentes De Los Programas Realizados En App Inventor

miércoles, 29 de octubre de 2014

Simulacion De Pinguino Con Proteus y Processing

PROTEUS CON PINGUINO E INTERACCIÓN CON PROCESSING

Pinguino Virtual en Proteus
Trate de conectar una tarjeta virtual en Proteus con Pinguino IDE, sin éxito ya que una vez que presiono el reset para la descarga, ya no se lo conectar nuevamente y el dispositivo USB no es reconocido.
Sin embargo procedí a copiar el archivo hex de una Pinguino con el programa de comunicación con processing que se encuentra en otras publicaciones de este blog. En este caso la interacción funciono dado que ya no hay que presionar el pulsador de reset y esto hace que la tarjeta virtual siempre este conectada.

Archivos Para descargar
Instalar El Virtual USB de Proteus
Por defecto el USB virtual de Proteus no esta instalado y hay que hacerla para que este pueda operar.
Para la instalación ir a la carpeta Virtual USB de proteus y dar click a Install USB Drivers

Imagen tomada de http://protonbasic.wordpress.com/usb/usb-hid/

  • En Proteus versión 7.6 funciono para el sistema operativo windows 7 de 32 bits, en el de 64 indico que el controlador no era compatible.
  • En la versión 8 de proteus tiene soporte tanto para sistemas windows de 32 y 64 bits.



domingo, 12 de octubre de 2014

Motor Paso a Paso Con Pinguino

CONTROL DE UN MOTOR PASO A PASO CON PINGUINO

Motor paso a paso con Pinguino
El montaje corresponde a un motor paso a paso tipo unipolar con dos terminales comunes, el circuito de potencia para el manejo del motor corresponde al ULN2003 que puede emplearse para manejar motores pequeños. Para el manejo de dos motores un solo circuito integrado se emplea el ULN2803.
En el esquema el común del motor esta conectado a 5 Voltios y a la misma fuente del micricontrolador.
La conexión del común puede ser también a 12V, también el común del ULN se conectara a los 12V.

REFERENCIAS

miércoles, 8 de octubre de 2014

EEPROM AT28C16

EEPROM AT28C16

El emplear memorias EEPROM para la realización de circuitos digitales combinatorios y secuencial puede ahorrar el uso de compuertas y facilitar modificaciones y correcciones al los circuitos.
Una memoria EEPROM básicamente es un dispositivo lógico programable y puede ser empleado como tal para la realización de circuitos digitales tanto combinatorios como secuenciales.

Terminales EEPROM AT28C16

LECTURA DE DATOS EN LA MEMORIA EEPROM 

Una forma fácil de leer los datos de una memoria EEPROM, es empleando Led en la salida para visualizar el dato y emplear un Dip Swicht para generar la dirección que se desea consultar

Lectura EEPROM AT28C16

En el gráfico se observa que la configuración permita la lectura desde 00H hasta FFH y que los bits mas significativos del registro de direccionamiento que no son empleados son llevados a GND.
Hay que tener presente que la configuración del Dip Swicht es con resistencias de Pull Up
Otra forma de verificar los datos es empleando un microcontrolador como Pinguino.

Lectura EEPROM AT28C16 con Pinguino
El emplear un microcontrolador trae la facilidad de leer los datos secuencialmente o solo los que sean de nuestro interés por medio de un programa. En el ejemplo se emplea escritura directa al puerto B empleando la instrucción PORTB que en Pinguino corresponde al conjunto de terminales que van de 0 a 7.

ESCRITURA DE DATOS EN LA MEMORIA EEPROM 


Este tipo de memoria pude ser programada de forma manual sin la necesidad de algún voltaje especial de programación como ocurre en muchos dispositivos programables.

Programación manual EEPROM AT28C16

Para la programación manual se siguen los siguientes pasos
  • En el Dip Swicht de la izquierda se fija la dirección.
  • En el Dip Swicht de la derecha se coloca el dato que se desea guardar.
  • Se presiona el pulsador para escribir el dato.
Para un nuevo dato en otra dirección se repite nuevamente el procedimiento descrito.


Aunque la escritura de datos se puede hacer de forma manual, es más fácil empleando un microcontrolador.

Programación EEPROM AT28C16 con Pinguino
El emplear un microcontrolador, permite editar y cambiar los datos, así como direccionar en diferentes segmentos los datos que queremos escribir. En el ejemplo los datos son guardados en formato hexadecimal empleando un arreglo.

domingo, 21 de septiembre de 2014

Montaje pinguino 4550 PCB

MONTAJE PINGUINO 18F4550 PCB 

PCB Pinguino y entrenador PIC

FUENTES PARA REALIZAR EL MONTAJE


GUÍA DE MONTAJE PINGUINO ENTRENADOR PIC
PCB pinguino 4550

La tarjeta esta diseñada para soportar microcontroladores PIC de 40 terminales y puede emplearse como entrenador PIC y o como tarjeta Pinguino.

COMPONENTES

RESISTENCIAS
Las resistencias se recomiendan a un cuarto de vatio.
  • 3- Resistencias de 470 ohm .
  • 1- Resistencia de 10 kohm.
CAPACITORES
Los capacitores electrolíticos están marcados con + para indicar el ánodo. El ánodo en un capacitor electrolítico nuevo es el terminal mas largo.
  • 3- capacitores de 100 nf (104).
  • 2- capacitores de 20pf (pueden ser otros en el rango de 15 a 30 pf).
  • 3- capacitores de 47uf (pueden ser también de 10uf).
  • 1- capacitor de 220nf (224) Puede reemplazarse por uno de valor similar.
LEDS
Se recomienda leds sencillos rojo y verde.
  • 1- Led rojo 3mm (Led de ON) el ánodo del led esta indicado con +.
  • 1- Led verde 3mm (Led de RUN) el ánodo del led esta indicado con +.
REGULADORES
Los reguladores se emplean si el dispositivo se alimenta con fuente externa, aunque se recomienda una alimentación externa de 12 voltios, puede ser cualquier otra con un voltaje cercano (7v a 15v).
  • 1-Regulador 7833 de 3.3 voltios . Se consigue también como LD33V
  • 1-Regulador 7805 de 5 voltios.
CONECTORES
  • 2- Regletas header hembra (Como las de Arduino).
  • 1- Regleta header macho para las conexiones SELP y 5v GND.
  • 1- Regleta header macho en L para la conexión PICKIT.
  • 1- Conector USB hembra.
  • 1- Plug hembra para alimentación con adaptador de voltaje.
OTROS
  • 1- Pulsador de 4 terminales.
  • 1- Diodo 1n4148.
  • 1- Cristal de cuarzo de 20 Mhz, para la tarjeta Pinguino es obligatorio este valor.
  • 1- Cable USB macho – macho.
CONFIGURACIÓNES

CONFIGURACIÓN SIN FUENTE EXTERNA DE ALIMENTACIÓN
Sin fuente de alimentación externa

Esta configuración es la que tiene solo los componentes necesarios para que la tarjeta opere desde la alimentación suministrad por el computador.
Selección de alimentación por USB

El Jumper SELP de selección de alimentación se coloca como indica el gráfico para seleccionar alimentación desde USB.
Esta selección por Jumper previene que dos fuentes de alimentación estén simultáneamente alimentando el microcontrolador.
La tierra GND si es común para los dos circuitos posibles de alimentación.
En el modo USB los terminales 12V y 5V de los conectores EXT SUPPLY no operan. Solo el terminal de 3.3 esta en operación para alimentación de dispositivos o sensores que operen en este rango

CONFIGURACIÓN CON FUENTE EXTERNA DE ALIMENTACIÓN

Alimentación externa


En esta configuración se cuenta con dos opciones de alimentación desde fuente externa o USB por medio de la selección con el Jumper SELP.
Selección alimentación externa
El Jumper SELP de selección de alimentación se coloca como indica el gráfico para seleccionar alimentación externa.
Esta selección por Jumper previene que dos fuentes de alimentación estén simultáneamente alimentando el microcontrolador.
La tierra GND si es común para los dos circuitos posibles de alimentación.
El adaptador recomendado para alimentación externa recomendado es de 12 voltios donde el exterior del plug es tierra (GND) y el interior es alimentación 12 voltios.
El diodo previene el caso de que adaptador conectado tenga polaridad invertida con respecto al circuito.


Terminales para tomar alimentación


Con la alimentación externa se tiene salidas de de 3.3 Voltios, 5 Voltios y 12 Voltios en los conectores indicados como EXT SUPPLY.


DIAGRAMA ESQUEMÁTICO



Diagrama esquemático


Montaje Pinguino 18F4550 Protoboard

GUÍA DE MONTAJE EN PROTOBOARD PINGUINO 18F4550

DIAGRAMA ESQUEMÁTICO
Digrama tomado de http://wiki.pinguino.cc/index.php/PIC18F4550_Pinguino#Board_overview

Este es el diagrama esquemático base que se puede encontrar en la Wiki de pinguino CC

  1. Los capacitores del cristal también puedes ser de valores en el rango de 15pf a 30pf
  2. El capacitor de 220nf puede ser electrolítico, cerámico o de poliester. Se puede reemplazar incluso por el capacitor electrolítico de 1uf.
  3. El capacitor de 10uf es opcional y esta conectado entre los terminales de fuente.
  4. La alimentación la provee el puerto USB, así que hay ser cuidadosos de no hacer un corto circuito en el montaje.
  5. En este montaje el conector USB es hembra del tipo B
ESQUEMA DE MONTAJE


Esquema de montaje Pinguino 18F4550
  1. En el esquema el capacitor indicado 224 (codigo 101) es el capacitor de 220nf o 0.22uf que puede reemplazarse por un valor similar incluso por uno electrolítico de 1uf
  2. Se recomienda diferenciar el cableado con colores para evitar un posible corto por malas conexiones. En el esquema el cable Rojo indica 5 Voltios y el cable Negro Tierra.
  3. Verificar que el Led este bien conectado, el ánodo o pata mas larga de un Led nuevo estara conectada a la resistencia.
  4. El conector que aparece en el montaje es un conector tipo hembra que necesita una extensión macho - macho para conectar al computador. (TENER CUIDADO SI SE EMPLEA UN CONECTOR MACHO, LAS POLARIDADES DE ALIMENTACIÓN SON CONTRARIAS AL CONECTOR HEMBRA)
Componentes Pinguino 18F4550
LISTADO DE COMPONENTES BÁSICOS
  • PIC 18F4550
  • Cristal de 20Mhz
  • LED Rojo
  • Una resistencia de 470 Ohm
  • Una resistencia de 10K Ohm
  • Dos capacitores de 22 pf
  • Un capacitor de 220 nf
  • Un pulsador de dos terminales
  • Un conector USB hembra
  • Una extensión USB macho - macho

MONTAJE EN EL PROTOBOARD
Montaje en Protoboard Pinguino 18F4550


Pinguino 18F4550 en protoboard
  1. Verifique que el microcontrolador no este invertido, el terminal uno esta marcado con un punto ademas de tener una musca en media luna que indica la posición correcta del microcontrolador. Conectarlo en forma invertida puede ocasionar que dispositivo se queme.
  2. Verifique con el multimetro que haya corto entre los terminales de alimentación y tierra.
  3. Verificar polaridad del LED.
  4. Si el pulsador es de 4 terminales, identifique con el multimetro cuales son los extremos.
  5. Soldar cables de extensión al conector USB hembra.
  6. Antes de conectar la el dispositivo USB hembra verifique el voltaje entre terminales con un multimetro. Una mala conexión ocasionaría un corto circuito en el computador.
PROBLEMAS COMUNES EN EL MONTAJE
  1. El microcontrolador esta sin programar con el bootloader de pinguino. Para esto se emplea el programador PicKit y el archivo bootloader.
  2. El microcontrolador esta invertido.
  3. El LED esta invertido.
  4. Se empleo un conector macho, por lo que la polaridad de alimentación esta invertida.
  5. El cristal esta defectuoso.

Montaje Pinguino 4550 Wiki


MONTAJE PINGUINO 1845F50 ENCONTRADO EN LA PAGINA WIKI.PINGUINO.CC

TARJETAS DE 8 BITS
En la pagina wiki del proyecto pinguino se encuentran varios esquemas y montajes para la tarjeta pinguino con el PIC 18F4550. En esta publicación pretendo dar una mejor explicación de estos montajes.
Montaje
Este montaje tiene como característica que tiene conexión a un programador de PIC como el PicKit asi que puede emplearse como tarjeta base para microcontroladores PIC de 40 terminales como el popular 16F877a
La fuente de de este montaje se puede encontrar en el siguiente enlace:
Diagrama esquemático
Esquema tomado de http://wiki.pinguino.cc/index.php/File:Esquematico.png
  1. En el diagrama esquemático se observa que tiene protección contra inversión de voltaje en la fuente de externa de alimentación  y un regulador de 5V, así que la tarjeta pude ser alimentado externamente con 12V o más sin exceder la capacidad del regulador.
  2. Tiene un Jumper JP1 para seleccionar si la tarjeta se alimenta con fuente externa o desde el computador por el puerto USB.
  3. Tiene un interruptor S1 para encender y apagar la tarjeta.
Circuito Impreso PCB

Circuito tomado de http://wiki.pinguino.cc/index.php/File:PCB.png
  1. Entre el conector USB y el interruptor de encendido y apagado se puede observar los tres puntos de conexión del Jumper de selección fuente de alimentación  Para USB el Jumper se conecta entre el punto central y el punto cercano al conector USB, para alimentación externa sera entre el central y el punto cercano al interruptor.
  2. Tiene conexión para programador de PIC indicado con un triangulo blanco en el terminal VPP, en caso de emplear el PicKiT se recomiendo que los terminales de este conector sean en angulo.
Guía de componentes
Listado tomado de http://wiki.pinguino.cc/index.php/Pinguino_Base


  1. Los valores de los capacitores de 22pf pueden ser reemplazados por capacitores en el rango de 15pf a 30pf.
  2. El capacitor que aparece como de 0.33uf puede reemplazarse por uno de valor similar como de 1uf.
  3. El voltaje soportado por los capacitores electrolíticos puede ser menor a 50 V, por ejemplo a 25V o incluso hasta 16V, esto depende de la fuente externa de alimentación que vaya a emplearse.
  4. El capacitor de VUSB  ue aparece como de 0.22uf puede reemplazarse por uno de valor similar como de 1uf. También puede emplearse capacitores cerámicos o de poliester.
  5. En el listado falta el conector Jumper

Artes listas para imprimir
Las artes para la realización del circuito impreso se pueden descargar de los siguientes enlaces. Como los archivos comprimidos estan con extension tar.gz los usuarios del sistema operativo windows pueden emplear 7-zip para descomprimirlos



viernes, 25 de julio de 2014

Control remoto RF 315Mhz


Modulo Control Remoto RF a 315Mhz

Este modulo consta de un transmisor con 4 botones y un receptor con 4 terminales de salida y uno de indicación de que hay recepción de un dato.
Se puede emplear con Pinguino o cualquier aplicación electrónica digital con flip flop o latch para retener los datos.

Características

  • Chip: SC2262
  • Frecuencia de operación: 315MHz/433MHz (250MHz-450MHz)
  • Recepción de sensibilidad: > -85dBm
  • Tasa de transferencia: <5Kbps
  • Formato de decodificación: PT2272, HS2272, AX5327
  • Número de canales: 4
  • Cobertura: 40 metros~60 metros
  • Voltaje de operación RX: 5V
  • Corriente de operación: 10mA
  • Modulación: ASK
  • Longitud de antena: 24cm( 315MHz)/18cm( 433.92MHz)
  • Tamaño RX: 4.0cm x 2.3cm x 0.5cm

Diagrama De Terminales


  • GND corresponde al terminal de tierra.
  • 5V terminal de alimentación.
  • D0 Bit 0 es activado cuando se presiona el botón A
  • D1 Bit 1 es activado cuando se presiona el botón B
  • D2 Bit 2 es activado cuando se presiona el botón C
  • D3 Bit 3 es activado cuando se presiona el botón D
  • VT terminal de salida que indica que hay un nuevo dato
Pruebas Realizadas


Circuito de pruebas


  • El circuito se alimento con 3.7 voltios y opero de manera correcta. La antena que trae hay que desenrollarse , es de aproximadamente 30 cm y hay que hacerlo para su buen funcionamiento.
  • El terminal de salida VT se puede emplear como flanco de subida para un flip flop o señal de habilitación en un lacht. Esto mismo es valido para la tarjeta pinguino o un microcontrolador en general.








jueves, 3 de julio de 2014

Lego con App Inventor

Control De Robots Lego Desde App Inventor

App Inventor es un entorno de programación para la realización de aplicaciones en dispositivos con el sistema operativo Android. El entorno de programación de App inventor se ejecuta en un navegador Web y el despliegue de la aplicación se realiza en el teléfono, tableta o simulador Android.
Por ser un servicio basado en la nube las la generación del programa ejecutable para el dispositivo Android no se realiza en el computador del usuario.

Enlaces De Interés sobre App Inventor

Primer Programa En APP Inventor ( Hola Ronronea)

Antes de hacer una aplicación como la de manejo de robots lego como introducción se tiene como ejemplo la realización de una aplicación básica. 
Vídeo tutorial de hola ronronea
En caso de no tener MIT AI2 Companion instalado el dispositivo móvil, en la opción build se selecciona save .apk to my computer. Teniendo el apk descargado, se procede a la instalación manual en el dispositivo móvil.

Programa Ejemplo Lego

App Inventor tiene las herramientas para la realización directa de aplicaciones con robots lego NTX
El siguiente video es una guía básica para la elaboración de la aplicación.


Aquí se muestra un programa de ejemplo de manejo del robot por medio de botones
En los enlaces de interés esta el archivo .aia que contiene la aplicación que pude ser cargada con la opción import project (.aia) from my computer que esta la pestaña Projects

Interfaz de usuario
Programa de bloques

sábado, 7 de junio de 2014

Curso online de Processing

Curso de Creative Coding

Para el que gusta de la programación en processing, aquí hay un curso online

Entre los los requisitos del curso esta el de mostrar los trabajos, así que usara esta publicación para mostrar las tareas del curso.
Aquí se puede descargar los ejemplos de todo el curso que esta bajo licencia GPL3

Ejercicios del curso

tarea uno semana uno

tarea dos semana uno
tarea dos semana uno

tarea tres semana uno
tarea uno semana dos

tarea dos semana dos
tarea tres semana dos

jueves, 1 de mayo de 2014

Guía de montaje tarjeta impresa pinguino 2550

TARJETA PINGUINO UNIAJC

Guía de componentes
En naranja están los componentes mínimos que se necesitan para que la tarjeta pinguino funciones, en rojo están los componentes adicionales que en su mayoría son para las fuentes de alimentación de 3.3 voltios y 5 voltios externas.
Con componentes mínimos
Montaje completo

Selección de la fuente de alimentación

Esta tarjeta tiene dos formas de alimentación  por USB y externa, para selección tiene un jumper como se muestra en el gráfico.
Selección para alimentación desde USB

Programación desde PICKit

La tarjeta tiene un conector para poder conectar el Pickit y descargar el bootloader
Conexión pinguino pickit




martes, 18 de marzo de 2014

Processing con Pinguino X4

Processing con Pinguino X4

En el blog tengo publicaciones previas de como interactuar con la tarjeta Pinguino desde Processing, pero el código correspondiente a la tarjeta Pinguino, ya no es compatible con el nuevo IDE X4, por lo cual al compilarlo generara errores.
La librería correspondiente a Processig sigue siendo la misma y sigue operando bien para la versión actual de Processing.

USB Processing Código Para Pinguino X4

Este código corresponde al modo de operación de comunicación modo Bulk tal como esta para la nueva versión del IDE de programación del la tarjeta Pinguino que tiene instrucciones diferentes para la lectura y escritura.
El siguiente código se probo con un microcontrolador 18f4550 con el bootloader versión 2.12
La conexión la probé desde GNU/Linux con Ubuntu



//Por: Julio Fabio De La Cruz G. 2014
//http://micropinguino.blogspot.com 
//Adaptacion a pinguino X4 para emplear la libreria usbprocessing
//Basado en el trabajo de Stéphane Cousot, Jean-Pierre Mandon y Douglas Edric Stanley.
int i;
int temp;
u8 receivedbyte;
char rbuffer[64];
char sbuffer[2];
void setup(){
    TRISB=0;
    for(i=8;i<=12;i++)
        pinMode(i,INPUT);  
    for(i=21;i<=28;i++)
        pinMode(i,INPUT);
}
void loop(){
    receivedbyte=0;
    if(BULK.available()) 
        do {
            receivedbyte = BULK.read(rbuffer);
        } while (receivedbyte == 0);
    rbuffer[receivedbyte] = 0;
    if (receivedbyte > 0){
      if(rbuffer[0]=='+'){
        if (rbuffer[1]=='C')
            PORTB=0;
        if(rbuffer[1]=='W'){
            if(rbuffer[2]=='D')
                digitalWrite(rbuffer[3],rbuffer[4]);
            if(rbuffer[2]=='A'){
                temp=rbuffer[4]+(rbuffer[5]*256);
                analogWrite(rbuffer[3], temp );
            }
        }
        if(rbuffer[1]=='R'){
            if(rbuffer[2]=='D'){
                sbuffer[0]=digitalRead(rbuffer[3]);
                BULK.write(sbuffer[0], 1);
            }
            if(rbuffer[2]=='A'){
                temp=analogRead(rbuffer[3]);
                sbuffer[0]=temp;
                sbuffer[1]=temp/256;
                BULK.write(sbuffer, 2);
            }
        }
      }
    }
}