Está en la página 1de 16

Sistemas de control Proyecto Pinguino y Proyecto Pynguino

Open hardware - Open software

Pinguino es Open hardware y Open software. El hardware pinguino se basa en el el PIC18F2550, tiene un mdulo nativo integrado USB y un UART para comunicaciones seriales. El IDE pinguino permite dessarrollar aplicaciones STANDALONE programando el PIC en lenguaje C, utiliza el compiladorSDCC, ensamblador y linker GPUTILS y bootloader basado en el proyecto VASCO PUF, Las librerias Pynguino basadas en Python permiten controlar una tarjeta pinguino desde un PC implementando aplicaciones MAESTRO-ESCLAVO. El software de pinguino est basado en Python y corre en Linux, Windows y Mac. Pinguino es desarrollado en el marco del proyecto Hackinglab dirigido por France Cadet y Jean-Pierre Mandon, Hackinglab PINGUINO PYNGUINO PinguinoVE Processing

La tarjeta Pinguino

El C PIC18F2550

Hardware libre

01 PIC18F2550 01 socket 28 pines 01 conector USB Tipo B 01 Cristal 20 Mhz (clock), pequeo 02 condensadores cermicos 22pf 01 condensador cermico 220 nF (224) 01 condensador cermico 100 nF (104) 01 condensador electroltico 10 uf 01 condensador electroltico 47 uf

02 resistencias 220 Ohms 1/4 watt 01 resistencia 10K 1/4 watt 02 tiras de espadines (se requieren 28 pines) 02 jumper 02 minipulsadores de 4 pines 01 conector para portapila 01 plug hembra/macho 01 regulador 7805 02 leds miniatura

El proceso de trabajo:

El IDE Pinguino (Modo Standalone)

El IDE SPE (Stani's Python Editor) (Modo Maestro-esclavo)

Las libreras Pynguino


Pynguino es un paquete para Python que establece un control de la tarjeta Pinguino con comandos muy bsicos y similares a los usados en la IDE de Pinguino, permite configurar y leer los estados digitales y anlogos, habilitar un mtodo para el control del dispositivo a travs de una conexin de red, y controlar un display LCD.

Pynguino contiene un grupo de mdulos para distintas funciones:


(requieren el programa pynguino.pde grabado en la tarjeta Pinguino) PinguinoProcessing(): Controlar la tarjeta Pinguino. PinguinoSockets(): Control a travs de red. PinguinoServos(): Controlar servos desde Python (en desarrollo). PinguinoLCD(): Controlar un display LCD con Pytnon.

PinguinoProcessing()
FUNCION
Conect(puerto) RecursiveConect()

DESCRIPCION
Inicializa la comunicacin con la tarjeta pinguino.

EJEMPLO
pinguino.Conect('/dev/tty Acm0')

Inicializa la comunicacin con la pinguino.RecursiveConect( tarjeta pinguino de manera automtica ) con el primer pinguino que encuentre.

pinMode(pin,mode) digitalWrite(pin,estado) digitalRead(pin) analogWrite(pin,valor) analogRead(pin) allInput() allOutput() allHigh() allLow() reset() setProcessingTimeout(valor) setProcessingWriteTimeout(valor) ProcessingClose() GetPinguinoCode() GetPinState() GetPinMode() ee_write(pos,data)

Define el comportamiento de un determinado pin. Establece el valor de un pin. Retorna un 'high' o un 'low' dependiendo el estado del pin ledo. Fija el pin anlogo en el valor indicado Retorna un valor entero segn el estado del pin. Define todos lo pines como entrada. Define todos los pines como salida. Manda todas los pines a un estado alto. Manda todas los pines a un estado bajo. Resetea el pinguino. Permite cambiar el timeout del interprete. Permite cambiar el writeTimeout del interprete. Cierra el puerto para el interprete. Imprime en pantalla en cdigo que va en el pinguino. Retorna el estado de un pin basado en la ltima orden enviada al pinguino. Retorna el modo de un pin basado en la ltima orden enviada al pinguino.

pinguino.pinMode(1,'outpu t') pinguino.digitalWrite(6,' high') pinguino.digitalRead(5) pinguino.analogWrite(12,5 24) pinguino.analogRead(11) pinguino.allInput() pinguino.allOutput() pinguino.allHigh() pinguino.allLow() pinguino.allOutput() pinguino.setProcessingTim eout(1) pinguino.setProcessingWri teTimeout(2) pinguino.ProcessingClose( ) pinguino.GetPinguinoCode( ) pinguino.GetPinState(4) pinguino.GetPinMode(11)

Permite escribir en la posicin de pinguino.ee_write(255) memoria de la EEPROM un dato de 8 bits. Retorna el valor almacenado en esa posicin de la memoria EEPROM. pinguino.ee_read(45)

ee_read(pos)

PinguinoSockets()
FUNCION
SetServer(host IP,puerto) InitServer()

DESCRIPCION
Configura los parmetros para el servidor. Inicializa los parmetros para el servidor y se bloquea hasta la espera de la conexin. Inicializa los parmetros para el cliente (deben ser iguales a los parmetros del server para lograr la conexin). Retorna una cadena que haya sido enviada por una parte de la conexin,

EJEMPLO
pinguino_sc.SetServer('19 2.168.0.47',65488) pinguino_sc.InitServer()

SetCustomer(host IP,puerto)

pinguino_sc.SetCustomer(' 192.168.0.47',65488)

Rcv(bytes)

pinguino_sc.Rcv(1024)

como parmetro el nmero mximo de bytes a recibir. Send(string) ServerClose() CustomerClose() Enva una cadena a la otra parte de la conexin. Cierra el puerto del servidor. Cierra el puerto del cliente. pinguino_sc.Send('Mensaje enviado para pinguino') pinguino_sc.ServerClose() pinguino_sc.CustomerClose () pinguino_object=PinguinoP rocessing() pinguino_sc.SetPinguinoOb ject(pinguino_object) pinguino_sc.process_metho d("Conect('/dev/ttyACM3') ")

SetPinguinoObject(objeto pinguino) Como el fin principal es manipular pinguino es necesario pasar como parmetro un objeto pinguino. process_method() Mtodo especial, ver ejemplos.

PinguinoLCD()
FUNCION
Conect(puerto) RecursiveConect()

DESCRIPCION
Inicializa la comunicacin con la tarjeta pinguino.

EJEMPLO
pinguino.Conect('/dev/tty Acm0')

Inicializa la comunicacin con la pinguino.Conect() tarjeta pinguino de manera automtica con el primer pinguino que encuentre. Sita el cursor en la posicin indicada. pinguino.LCD_setCursor(1, 0) Inicializa el display LCD. Muestra en la pantalla el parmetro indicado, puede ser una cadena, un entero o un numero de coma flotante. pinguino.LCD_begin(2,0) pinguino.LCD_print("Pingu ino PIC") pinguino.LCD_print(2550) pinguino.LCD_print(3.1416 ) pinguino.LCD_home() pinguino.LCD_clear() pinguino.LCD_leftToRight( ) pinguino.LCD_rightToLeft( ) pinguino.LCD_scrollDispla yLeft() pinguino.LCD_scrollDisplayRight () pinguino.LCD_blink() pinguino.LCD_cursor() pinguino.LCD_display Detiene el parpadeo del cursor. Oculta el cursor. pinguino.LCD_noBlink() pinguino.LCD_noCursor() pinguino.LCD_noDisplay()

LCD_setCursor() LCD_begin() LCD_print()

LCD_home() LCD_clear() LCD_leftToRight() LCD_rightToLeft() LCD_scrollDisplayLeft() LCD_scrollDisplayRight() LCD_blink() LCD_cursor() LCD_display() LCD_noBlink() LCD_noCursor() LCD_noDisplay()

Retorna a la primera posicin del display. Limpia la pantalla. xD no se que hace. xD no se que hace. Mueve la visualizacin un espacio hacia la izquierda. Mueve la visualizacin un espacio hacia la derecha. Inicializa el parpadeo del cursor. Indica que se muestre el cursor.

LCD_autoscroll() LCD_contraste() LCD() GetPinguinoLCDCode() Fija el contraste, como parmetro un pin de salida anloga y su valor. Inicializa los pines de control para el display LCD. Retorna el cdigo que va en el Pinguino

pinguino.LCD_autoscroll() pinguino.LCD_contraste() pinguino.LCD(8, 9, 0, 1, 2, 3, 4, 5, 6, 7) pinguino.GetPinguinoLCDCode ()

Interfaces grficas

Pynguino + Matplotlib

Pynguino Pynguino es un paquete para Python que establece un control de la tarjeta Pinguino con comandos muy bsicos y similares a los que se integran en la IDE de Pinguino, permite configurar y leer los estados digitales y anlogos, habilitar un mtodo para el control del dispositivo a travs de una conexin de red, y controlar un display LCD.

Escrito en: Por: Licencia: Versin actual: Plataformas: Dependencias: Mdulos:

Python Yeison Nolberto Cardona lvarez <yeison.eng@gmail.com> BSD 0.7.1 Linux, Windows PySerial PinguinoProcessing, PinguinoSockets, PinguinoLCD

Descripcin simple
La principal caracterstica de Pynguino es que en el caso de hacer interfaces con Python, Pynguino permite transportar toda la parte de programacin al cdigo en Python, estableciendo as una mayor control y posibilidades en nuestras aplicaciones.

Pynguino contiene un grupo de mdulos para distintas funciones:


PinguinoProcessing(): Controlar la tarjeta Pinguino. PinguinoSockets(): Control a travs de red. PinguinoServos(): Controlar servos desde Python (en desarrollo). PinguinoLCD(): Controlar un display LCD con Pytnon. El mdulo puede ser encontrado en PyPi o en el Host del proyecto.

PinguinoProcessing()

Conect(puerto): Inicializa la comunicacin con la tarjeta pinguino. ejemplo: pinguino.Conect('/dev/ttyAcm0') RecursiveConect(): Inicializa la comunicacin con la tarjeta pinguino de manera automtica con el primer pinguino que encuentre. ejemplo: pinguino.RecursiveConect() pinMode(pin,mode): Define el comportamiento de un determinado pin. ejemplo: pinguino.pinMode(1,'output') digitalWrite(pin,estado): Establece el valor de un pin. ejemplo: pinguino.digitalWrite(6,'high') digitalRead(pin): Retorna un 'high' o un 'low' dependiendo el estado del pin ledo. ejemplo: pinguino.digitalRead(5) analogWrite(pin,valor): Fija el pin anlogo en el valor indicado ejemplo: pinguino.analogWrite(12,524) analogRead(pin): Retorna un valor entero segn el estado del pin. ejemplo: pinguino.analogRead(11)

allInput(): Define todos lo pines como entrada. ejemplo: pinguino.allInput() allOutput(): Define todos los pines como salida. ejemplo: pinguino.allOutput() allHigh(): Manda todas los pines a un estado alto. ejemplo: pinguino.allHigh() allLow(): Manda todas los pines a un estado bajo. ejemplo: pinguino.allLow() reset(): Resetea el pinguino. ejemplo: pinguino.allOutput() setProcessingTimeout(valor): Permite cambiar el timeout del interprete. ejemplo: pinguino.setProcessingTimeout(1) setProcessingWriteTimeout(valor): Permite cambiar el writeTimeout del interprete. ejemplo: pinguino.setProcessingWriteTimeout(2) ProcessingClose(): Cierra el puerto para el interprete. ejemplo: pinguino.ProcessingClose() GetPinguinoCode(): Imprime en pantalla en cdigo que va en el pinguino. ejemplo: pinguino.GetPinguinoCode() GetPinState(): Retorna el estado de un pin basado en la ltima orden enviada al pinguino. ejemplo: pinguino.GetPinState(4) GetPinMode(): Retorna el modo de un pin basado en la ltima orden enviada al pinguino. ejemplo: pinguino.GetPinMode(11) ee_write(pos,data): Permite escribir en la posicin de memoria de la EEPROM un dato de 8 bits. ejemplo: pinguino.ee_write(255) ee_read(pos): Retorna el valor almacenado en esa posicin de la memoria EEPROM. ejemplo: pinguino.ee_read(45)

PinguinoSockets()

SetServer(host IP,puerto): Configura los parmetros para el servidor. ejemplo: pinguino_sc.SetServer('192.168.0.47',65488) InitServer(): Inicializa los parmetros para el servidor y se bloquea hasta la espera de la conexin. ejemplo: pinguino_sc.InitServer() SetCustomer(host IP,puerto): Inicializa los parmetros para el cliente (deben ser iguales a los parmetros del server para lograr la conexin). ejemplo: pinguino_sc.SetCustomer('192.168.0.47',65488) Rcv(bytes): Retorna una cadena que haya sido enviada por una parte de la conexin, como parmetro el nmero mximo de bytes a recibir. ejemplo: pinguino_sc.Rcv(1024) Send(string): Enva una cadena a la otra parte de la conexin. ejemplo: pinguino_sc.Send('Mensaje enviado para pinguino')

ServerClose(): Cierra el puerto del servidor. ejemplo: pinguino_sc.ServerClose() CustomerClose(): Cierra el puerto del cliente. ejemplo: pinguino_sc.CustomerClose() SetPinguinoObject(objeto pinguino): Como el fin principal es manipular pinguino es necesario pasar como parmetro un objeto pinguino. ejemplo: pinguino_object=PinguinoProcessing() pinguino_sc.SetPinguinoObject(pinguino_object) process_method(): Mtodo especial, ver ejemplos. ejemplo: pinguino_sc.process_method("Conect('/dev/ttyACM3')")

PinguinoLCD()
Conect(puerto): Inicializa la comunicacin con la tarjeta pinguino. ejemplo: pinguino.Conect('/dev/ttyAcm0') RecursiveConect(): Inicializa la comunicacin con la tarjeta pinguino de manera automtica con el primer pinguino que encuentre. ejemplo: pinguino.Conect() LCD_setCursor(): Sita el cursor en la posicin indicada. ejemplo: pinguino.LCD_setCursor(1,0) LCD_begin(): Inicializa el display LCD. ejemplo: pinguino.LCD_begin(2,0) LCD_print(): Muestra en la pantalla el parmetro indicado, puede ser una cadena, un entero o un numero de coma flotante. ejemplo: pinguino.LCD_print("Pinguino PIC") pinguino.LCD_print(2550) pinguino.LCD_print(3.1416) LCD_home(): Retorna a la primera posicin del display. ejemplo: pinguino.LCD_home() LCD_clear(): Limpia la pantalla. ejemplo: pinguino.LCD_clear() LCD_leftToRight(): xD no se que hace. ejemplo: pinguino.LCD_leftToRight() LCD_rightToLeft(): xD no se que hace. ejemplo: pinguino.LCD_rightToLeft() LCD_scrollDisplayLeft(): Mueve la visualizacin un espacio hacia la izquierda. ejemplo: pinguino.LCD_scrollDisplayLeft() LCD_scrollDisplayRight(): Mueve la visualizacin un espacio hacia la derecha. ejemplo: pinguino.LCD_scrollDisplayRight() LCD_blink(): Inicializa el parpadeo del cursor. ejemplo: pinguino.LCD_blink() LCD_cursor(): Indica que se muestre el cursor. ejemplo: pinguino.LCD_cursor() LCD_display():

ejemplo: pinguino.LCD_display LCD_noBlink(): Detiene el parpadeo del cursor. ejemplo: pinguino.LCD_noBlink() LCD_noCursor(): Oculta el cursor. ejemplo: pinguino.LCD_noCursor() LCD_noDisplay(): ejemplo: pinguino.LCD_noDisplay() LCD_autoscroll(): ejemplo: pinguino.LCD_autoscroll() LCD_contraste(): Fija el contraste, como parmetro un pin de salida anloga y su valor. ejemplo: pinguino.LCD_contraste() LCD(): Inicializa los pines de control para el display LCD. ejemplo: pinguino.LCD(8, 9, 0, 1, 2, 3, 4, 5, 6, 7) GetPinguinoLCDCode(): Retorna el cdigo que va en el Pinguino ejemplo: pinguino.GetPinguinoLCDCode()

Distribuciones de pines
Pic18F2550
Entradas y salidas digitales: Todos los pines de 0 al 12. Entradas anlogas: Los pines de 13 al 17. Salidas anlogas: Los pines 11 y 12.

Instalar el paquete:

Para descargar e instalar el mdulo pynguino en su versin mas reciente mediante.

En Ubuntu:
Mtodo1: Descargar con ejemplos e imgenes
Descargar el paquete completo desde subversion, incluyendo ejemplos e imgenes. Si no se tiene instalado el mdulo PySerial para python que permite conectare con el puerto serie del computador: $ sudo apt-get install python-serial Para descargar el mdulo debe de tener instalado subversin: $ sudo apt-get install subversion Ahora s, descargar e instalar pynguino: $ svn co https://yeisoneng.googlecode.com/svn/trunk/pynguino $ cd pynguino $ sudo python setup.py install

Mtodo 2: Slo instalar


Instalar el mdulo directamente desde Python Packages Index mediante: $ sudo apt-get instal python-serial $ sudo apt-get install python-setuptools $ easy_install pynguino Para obtener el cdigo .pde que va en el pinguino lo puede obtener de la siguiente manera: En la terminal: $ python >>> from pynguino import PinguinoProcessing >>> pinguino_code=PinguinoProcessing() >>> pinguino_code.GetPinguinoCode() Tambin lo puede encontrar en el directorio pynguino que se descarg en su carpeta personal (/home/nombre de usuario/pynguino).

Windows:
A partir de la versin 0.6 de pynguino se ha compilado en conjunto un instalador, por ahora y por incompatibilidades entre PySerial y amd64 no se encuentra disponible para esta plataforma, pero podr descargar el instalador de pynguino-0.6.win32.exe desde el host.