Download - PINGUINO y Pynguino
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 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
La tarjeta Pinguino
El µC PIC18F2550
Hardware libre
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
El proceso de trabajo:
El IDE Pinguino (Modo Standalone)
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(
)
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)
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()
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
()
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.
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)
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')
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():
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:
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.