2009-05-28 42 views
13

Estoy empezando a aburrirme un poco de la programación de pequeños juguetes que he estado haciendo recientemente, y me encantaría comenzar a programar e interactuar con el hardware.Programación con hardware en python

El único problema es que soy principalmente un tipo pitón que realmente no ha aprendido ni usado ningún otro idioma. ¿Puedo seguir interactuando con el hardware con Python?

Además, ¿con qué hardware puedo interactuar? Realmente no tengo cosas que pueda usar, así que tendría que comprar un kit o algo así. ¿Cuáles son algunas opciones baratas para esto?

Respuesta

13

Interactuando con el puerto serie de un PC es bastante trivial y hay Python Serial library disponible. The roomba robot is controllable via a serial port. Probablemente haya otros robots por ahí, pero este podría ser un paso simple y pequeño para ponerlo en marcha.

Personalmente, aprendí mucho comprando a PIC programmer y haciendo un poco de circuits to flash LEDs. Pasé a controlar esos PIC a través del puerto serie y más tarde a través de USB (a través de libusb). Hay una mayor curva de aprendizaje allí, ya que tendrás que programar los PIC en C o en ensamblador, pero puedes lograr algunos resultados bastante increíbles una vez que hayas recogido los conceptos básicos. Aunque te lo advierto, es una pendiente resbaladiza una vez que te das cuenta de cuántos pequeños artilugios puedes construir :-)

+1

pySerial es fantástico (y refrescantemente multiplataforma); Lo he usado para comunicarme con la ECU de mi automóvil (una computadora empotrada integrada, básicamente, una arquitectura SuperH) para realizar flasheo y registro, y funciona como un campeón. Si está trabajando con un hardware más moderno sin un puerto serie nativo, los dispositivos serie a USB FTDI (http://www.ftdichip.com/) son bastante útiles; Si bien aún puede usar pySerial para hablar con ellos, también puede usar libftdi (http://www.intra2net.com/en/developer/libftdi/), cuya interfaz SWIG proporciona una API algo más rica. – esm

+1

+1 para la idea del microcontrolador. Es una buena forma de comenzar a bajo nivel en un entorno que aún es supervisable. –

+0

También puede usar dongles en serie USB e incluso microcontroladores USB y seguir hablando con ellos como con un puerto serie asincrónico (EIA232). – XTL

3

tratar BugLab o OpenMoko

+1

"¿Cuáles son algunas opciones baratas para esto?" Comprar un teléfono no es barato –

3

Puedes usar ctypes para conectar con el hardware. Te permitirá llamar a bibliotecas nativas, así que esencialmente puedes usarlo para hacer cualquier cosa que C pueda hacer. Por supuesto, esto supone que desea interactuar con el hardware a través de su computadora host que ejecuta Python.

He usado ctypes por un par de proyectos:

lo encontré en general bastante fácil de usar , pero ayudó que ya sabía C/C++.

+0

+1 para Keyboard LED & morse Code Idea! –

2

Compre un kit Lego Mindstorm. El lenguaje de programación es fácil de vivir, no es Python, pero está lo suficientemente cerca. Y son robots reales con actuadores y sensores reales.

+1

"opción barata" es supuestamente relativa :) – XTL

11

Definitivamente mira Arduino.

  • El diseño de hardware es de código abierto por lo que incluso podría montar su propia si quería
  • La placa incluye entradas y salidas digitales y analógicas, así que es fácil de conseguir algunos LED parpadea rápidamente
  • programarlo en un 'lenguaje' llamado Wiring que esconde una gran cantidad de complejidades de C, que por lo general se utilizan en los PIC

en el lado del PC, se puede entonces utilizar PySerial para comunicarse con la junta a través de USB como se mencionó anteriormente

+0

+1: Por la mención de Arduino. Estaba tratando de pensar en el nombre antes y no podía recordarlo. A menudo he jugado con la idea de tener un juego con uno :-) –

2

Muchas PC todavía tienen puertos parellel, y existe un módulo python para interacting with the parallel port, aunque no lo he usado.

El puerto paralelo puede ser la forma más sencilla de comenzar a controlar el hardware, ya que puede conectarle los dispositivos electrónicos más sencillos. Solo un led te dará algo visible enseguida.

Entonces, como menciona Jon Cage, se puede conseguir una Pic programmer

+0

+1: tienes razón, el puerto paralelo es probablemente más simple para empezar. –

+0

Lo he usado. Tenga cuidado de no sobrecargar un puerto que es difícil de reemplazar. Además, los puertos paralelos USB a menudo no lo son. Están codificados para conducir impresoras de puertos paralelos. – XTL

1

nodos inalámbricos El SNAP en www.synapse-wireless.com ejecutar un subconjunto de Python llamada Snappy. Puede utilizar las incorporaciones peek() y poke() en el lenguaje SNAPpy para interactuar directamente con el hardware dentro del chip (PWM, por ejemplo). SNAPpy también tiene integradas para I2C, SPI y serie, para que pueda controlar el hardware externo. También tiene incorporado para E/S de nivel inferior, como readPin() writePin() y readAdc(). Algo como un kit EK2500 podría ser bueno para empezar. Véase también el foro de usuarios en línea en forums.synapse-wireless.com

+0

Solo el precio que encontré: $ 180. Ay, incluso para un devkit. – XTL

0

No estoy muy seguro de que alguien haya mencionado el sello BASIC. Nuevamente, es muy limitado, pero es SUPER sencillo comenzar a trabajar con él. Hay algunos otros procesadores que también hacen, pero como introducción, creo que es un gran dispositivo.

Arduino también es una buena opción, y es probable que puedas obtener más por tu dinero con ese dispositivo.

Como mencioné anteriormente, comencé con los procesadores PIC, que no son los más fáciles de trabajar inicialmente (o realmente nunca ... jaja) es discutible, pero entendí cómo funcionan las cosas el mundo de la interacción micro controlador/hardware.

Lo mejor de la suerte & si usted tiene alguna pregunta, ¡no dude en preguntar!

+0

También comencé con el sello BASIC hace años, pero creo que es una representación pobre de lo que los microcontroladores modernos pueden hacer. Sin mencionar cuán ridículamente caros son los kits. –

4

Los nuevos dispositivos Raspberry Pi tienen un buen rango de E/S y Python parece ser el idioma más utilizado para ellos.

Cuestiones relacionadas