pinguino y pynguino

16
Sistemas de control Proyecto Pinguino y Proyecto Pynguino Open hardware - Open software

Upload: davessanchez

Post on 01-Jan-2016

435 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: PINGUINO y Pynguino

Sistemas de control

Proyecto Pinguino

y

Proyecto Pynguino

Open hardware - Open software

Page 2: PINGUINO y Pynguino

Pinguino es Open hardware y Open software.

El hardware pinguino se basa en el el PIC18F2550, tiene un módulo 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

Page 3: PINGUINO y Pynguino
Page 4: PINGUINO y Pynguino

La tarjeta Pinguino

El µC PIC18F2550

Hardware libre

Page 5: PINGUINO y Pynguino

01 PIC18F2550

01 socket 28 pines

01 conector USB Tipo B

01 Cristal 20 Mhz (clock), pequeño

02 condensadores cerámicos 22pf

01 condensador cerámico 220 nF (224)

01 condensador cerámico 100 nF (104)

01 condensador electrolítico 10 uf

01 condensador electrolítico 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

Page 6: PINGUINO y Pynguino

El proceso de trabajo:

El IDE Pinguino (Modo Standalone)

Page 7: PINGUINO y Pynguino

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

Las librerías Pynguino

Pynguino es un paquete para Python que establece un control de la tarjeta Pinguino con comandos muy básicos y similares a los usados en la IDE de Pinguino, permite configurar y leer los estados digitales y análogos, habilitar un método para el control del dispositivo a través de una conexión de red, y controlar un display LCD.

Pynguino contiene un grupo de módulos para distintas funciones: (requieren el programa pynguino.pde grabado en la tarjeta Pinguino)

• PinguinoProcessing(): Controlar la tarjeta Pinguino.

• PinguinoSockets(): Control a través de red.

• PinguinoServos(): Controlar servos desde Python (en desarrollo).

• PinguinoLCD(): Controlar un display LCD con Pytnon.

PinguinoProcessing()

FUNCION DESCRIPCION EJEMPLO

Conect(puerto) Inicializa la comunicación con la

tarjeta pinguino.

pinguino.Conect('/dev/tty

Acm0')

RecursiveConect() Inicializa la comunicación con la

tarjeta pinguino de manera automática

con el primer pinguino que encuentre.

pinguino.RecursiveConect(

)

Page 8: PINGUINO y Pynguino

pinMode(pin,mode) Define el comportamiento de un

determinado pin. pinguino.pinMode(1,'outpu

t')

digitalWrite(pin,estado) Establece el valor de un pin. pinguino.digitalWrite(6,'

high')

digitalRead(pin) Retorna un 'high' o un 'low'

dependiendo el estado del pin leído.

pinguino.digitalRead(5)

analogWrite(pin,valor) Fija el pin análogo en el valor

indicado

pinguino.analogWrite(12,5

24)

analogRead(pin) Retorna un valor entero según el

estado del pin.

pinguino.analogRead(11)

allInput() Define todos lo pines como entrada. pinguino.allInput()

allOutput() Define todos los pines como salida. pinguino.allOutput()

allHigh() Manda todas los pines a un estado

alto.

pinguino.allHigh()

allLow() Manda todas los pines a un estado

bajo.

pinguino.allLow()

reset() Resetea el pinguino. pinguino.allOutput()

setProcessingTimeout(valor) Permite cambiar el timeout del

interprete. pinguino.setProcessingTim

eout(1)

setProcessingWriteTimeout(valor) Permite cambiar el writeTimeout del

interprete. pinguino.setProcessingWri

teTimeout(2)

ProcessingClose() Cierra el puerto para el interprete. pinguino.ProcessingClose(

)

GetPinguinoCode() Imprime en pantalla en código que va

en el pinguino.

pinguino.GetPinguinoCode(

)

GetPinState() Retorna el estado de un pin basado en

la última orden enviada al pinguino.

pinguino.GetPinState(4)

GetPinMode() Retorna el modo de un pin basado en

la última orden enviada al pinguino.

pinguino.GetPinMode(11)

ee_write(pos,data) Permite escribir en la posición de

memoria de la EEPROM un dato de 8

bits.

pinguino.ee_write(255)

ee_read(pos) Retorna el valor almacenado en esa

posición de la memoria EEPROM.

pinguino.ee_read(45)

PinguinoSockets()

FUNCION DESCRIPCION EJEMPLO

SetServer(host IP,puerto) Configura los parámetros para el

servidor.

pinguino_sc.SetServer('19

2.168.0.47',65488)

InitServer() Inicializa los parámetros para el

servidor y se bloquea hasta la espera

de la conexión.

pinguino_sc.InitServer()

SetCustomer(host IP,puerto) Inicializa los parámetros para el

cliente (deben ser iguales a los

parámetros del server para lograr la

conexión).

pinguino_sc.SetCustomer('

192.168.0.47',65488)

Rcv(bytes) Retorna una cadena que haya sido

enviada por una parte de la conexión,

pinguino_sc.Rcv(1024)

Page 9: PINGUINO y Pynguino

como parámetro el número máximo

de bytes a recibir.

Send(string) Envía una cadena a la otra parte de la

conexión. pinguino_sc.Send('Mensaje

enviado para pinguino')

ServerClose() Cierra el puerto del servidor. pinguino_sc.ServerClose()

CustomerClose() Cierra el puerto del cliente. pinguino_sc.CustomerClose

()

SetPinguinoObject(objeto pinguino) Como el fin principal es manipular

pinguino es necesario pasar como

parámetro un objeto pinguino.

pinguino_object=PinguinoP

rocessing()

pinguino_sc.SetPinguinoOb

ject(pinguino_object)

process_method() Método especial, ver ejemplos. pinguino_sc.process_metho

d("Conect('/dev/ttyACM3')

")

PinguinoLCD()

FUNCION DESCRIPCION EJEMPLO

Conect(puerto) Inicializa la comunicación con la

tarjeta pinguino.

pinguino.Conect('/dev/tty

Acm0')

RecursiveConect() Inicializa la comunicación con la

tarjeta pinguino de manera automática

con el primer pinguino que encuentre.

pinguino.Conect()

LCD_setCursor() Sitúa el cursor en la posición indicada. pinguino.LCD_setCursor(1,

0)

LCD_begin() Inicializa el display LCD. pinguino.LCD_begin(2,0)

LCD_print() Muestra en la pantalla el parámetro

indicado, puede ser una cadena, un

entero o un numero de coma flotante.

pinguino.LCD_print("Pingu

ino PIC")

pinguino.LCD_print(2550)

pinguino.LCD_print(3.1416

)

LCD_home() Retorna a la primera posición del

display.

pinguino.LCD_home()

LCD_clear() Limpia la pantalla. pinguino.LCD_clear()

LCD_leftToRight() xD no se que hace. pinguino.LCD_leftToRight(

)

LCD_rightToLeft() xD no se que hace. pinguino.LCD_rightToLeft(

)

LCD_scrollDisplayLeft() Mueve la visualización un espacio

hacia la izquierda. pinguino.LCD_scrollDispla

yLeft()

LCD_scrollDisplayRight() Mueve la visualización un espacio

hacia la derecha.

pinguino.LCD_scrollDisplayRight

()

LCD_blink() Inicializa el parpadeo del cursor. pinguino.LCD_blink()

LCD_cursor() Indica que se muestre el cursor. pinguino.LCD_cursor()

LCD_display() pinguino.LCD_display

LCD_noBlink() Detiene el parpadeo del cursor. pinguino.LCD_noBlink()

LCD_noCursor() Oculta el cursor. pinguino.LCD_noCursor()

LCD_noDisplay() pinguino.LCD_noDisplay()

Page 10: PINGUINO y Pynguino

LCD_autoscroll() pinguino.LCD_autoscroll()

LCD_contraste() Fija el contraste, como parámetro un

pin de salida análoga y su valor.

pinguino.LCD_contraste()

LCD() Inicializa los pines de control para el

display LCD.

pinguino.LCD(8, 9, 0, 1,

2, 3, 4, 5, 6, 7)

GetPinguinoLCDCode() Retorna el código que va en el

Pinguino pinguino.GetPinguinoLCDCode

()

Page 11: PINGUINO y Pynguino

Interfaces gráficas

Pynguino + Matplotlib

Pynguino

Pynguino es un paquete para Python que establece un control de la tarjeta Pinguino con comandos muy básicos y similares a los que se integran en la IDE de Pinguino, permite configurar y leer los estados digitales y análogos, habilitar un método para el control del dispositivo a través de una conexión de red, y controlar un display LCD.

Page 12: PINGUINO y Pynguino

Escrito en: Python

Por: Yeison Nolberto Cardona Álvarez <[email protected]>

Licencia: BSD

Versión actual: 0.7.1

Plataformas: Linux, Windows

Dependencias: PySerial

Módulos: PinguinoProcessing, PinguinoSockets, PinguinoLCD

Descripción simple

La principal característica de Pynguino es que en el caso de hacer interfaces con Python, Pynguino permite transportar toda la parte de programación al código en Python, estableciendo así una mayor control y posibilidades en nuestras aplicaciones.

Pynguino contiene un grupo de módulos para distintas funciones:

PinguinoProcessing(): Controlar la tarjeta Pinguino. PinguinoSockets(): Control a través de red. PinguinoServos(): Controlar servos desde Python (en desarrollo). PinguinoLCD(): Controlar un display LCD con Pytnon.

El módulo puede ser encontrado en PyPi o en el Host del proyecto.

PinguinoProcessing()

Conect(puerto): Inicializa la comunicación con la tarjeta pinguino.

ejemplo: pinguino.Conect('/dev/ttyAcm0')

RecursiveConect(): Inicializa la comunicación con la tarjeta pinguino de manera automática 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 leído.

ejemplo: pinguino.digitalRead(5)

analogWrite(pin,valor): Fija el pin análogo en el valor indicado

ejemplo: pinguino.analogWrite(12,524)

analogRead(pin): Retorna un valor entero según el estado del pin.

ejemplo: pinguino.analogRead(11)

Page 13: PINGUINO y Pynguino

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 código 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 posición de memoria de la EEPROM un dato de 8 bits.

ejemplo: pinguino.ee_write(255)

ee_read(pos): Retorna el valor almacenado en esa posición de la memoria EEPROM.

ejemplo: pinguino.ee_read(45)

PinguinoSockets()

SetServer(host IP,puerto): Configura los parámetros para el servidor.

ejemplo: pinguino_sc.SetServer('192.168.0.47',65488)

InitServer(): Inicializa los parámetros para el servidor y se bloquea hasta la espera de la conexión.

ejemplo: pinguino_sc.InitServer()

SetCustomer(host IP,puerto): Inicializa los parámetros para el cliente (deben ser iguales a los parámetros del server para lograr la conexión).

ejemplo: pinguino_sc.SetCustomer('192.168.0.47',65488)

Rcv(bytes): Retorna una cadena que haya sido enviada por una parte de la conexión, como parámetro el número máximo de bytes a recibir.

ejemplo: pinguino_sc.Rcv(1024)

Send(string): Envía una cadena a la otra parte de la conexión.

ejemplo: pinguino_sc.Send('Mensaje enviado para pinguino')

Page 14: PINGUINO y Pynguino

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 parámetro un objeto pinguino.

ejemplo: pinguino_object=PinguinoProcessing()

pinguino_sc.SetPinguinoObject(pinguino_object)

process_method(): Método especial, ver ejemplos.

ejemplo: pinguino_sc.process_method("Conect('/dev/ttyACM3')")

PinguinoLCD()

Conect(puerto): Inicializa la comunicación con la tarjeta pinguino.

ejemplo: pinguino.Conect('/dev/ttyAcm0')

RecursiveConect(): Inicializa la comunicación con la tarjeta pinguino de manera automática con el primer pinguino que encuentre.

ejemplo: pinguino.Conect()

LCD_setCursor(): Sitúa el cursor en la posición 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 parámetro 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 posición 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 visualización un espacio hacia la izquierda.

ejemplo: pinguino.LCD_scrollDisplayLeft()

LCD_scrollDisplayRight(): Mueve la visualización 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():

Page 15: PINGUINO y Pynguino

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 parámetro un pin de salida análoga 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 código que va en el Pinguino

ejemplo: pinguino.GetPinguinoLCDCode()

Distribuciones de pines

Pic18F2550

Entradas y salidas digitales: Todos los pines de 0 al 12. Entradas análogas: Los pines de 13 al 17. Salidas análogas: Los pines 11 y 12.

Instalar el paquete:

Page 16: PINGUINO y Pynguino

Para descargar e instalar el módulo pynguino en su versión mas reciente mediante.

En Ubuntu:

Método1: Descargar con ejemplos e imágenes

Descargar el paquete completo desde subversion, incluyendo ejemplos e imágenes. Si no se tiene instalado el módulo PySerial para python que permite conectare con el puerto serie del computador: $ sudo apt-get install python-serial

Para descargar el módulo debe de tener instalado subversión: $ 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

Método 2: Sólo instalar

Instalar el módulo directamente desde Python Packages Index mediante: $ sudo apt-get instal python-serial

$ sudo apt-get install python-setuptools

$ easy_install pynguino

Para obtener el código .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()

También lo puede encontrar en el directorio pynguino que se descargó en su carpeta personal (/home/nombre de usuario/pynguino).

Windows:

A partir de la versión 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.