De Frambuesa Pi Projects For Dummies
Por Mike Cook, Jonathan Evans, Brock Craft
Puedes conectar tu Pi de Frambuesa al Arduino y sacar aún más provecho de ambas placas, y hay varios métodos para hacer esta conexión. El Frambuesa Pi tiene una variedad de pines GPIO que puede utilizar en sus proyectos, pero ayuda si conoce las funciones de los distintos pines. Por último, el frambuesa Pi puede alimentar los dispositivos de varias maneras, lo que puede resultar útil a medida que se construyen los proyectos.
Indice
Conectando el Frambuesa Pi y el Arduino
Algunas personas ven el Arduino y el Frambuesa Pi como placas rivales, pero este no es el caso en absoluto. En todo caso, son complementarios – la debilidad de uno es la fuerza del otro. Aquí hay tres maneras de conectar un Arduino y un Pi de Frambuesa.
USB
Simplemente conecta el conector USB en el Raspberry Pi al conector USB en el Arduino. Eso es todo lo que necesitas hacer. Hay una ligera curva en que el Pi puede potencialmente asignar al Arduino uno de dos puertos, así que cuando abra el puerto serie al Arduino, use el siguiente fragmento de código:
import serialtry: ser = serial.serial('/dev/ttyACM0',115200, timeout=2)except : ser = serial.serial('/dev/ttyACM1',115200, timeout=2)
Esto asume que has configurado el código en el Arduino para usar el puerto serie a la misma velocidad de 115200 baudios con un comando de inicio:
Serie.begin(115200)
Puede utilizar cualquier velocidad de transmisión que los dos sistemas puedan utilizar, pero tienen que coincidir. En el lado Pi, usa ser.write() para enviar lo que esté entre paréntesis al Arduino y back = ser.read(1) para obtener un byte de vuelta. Si no se ha recibido nada después del tiempo de espera establecido al abrir el puerto, la llamada regresa. Puede obtener tantos bytes de vuelta de esta llamada como los que puso entre paréntesis.
Serial
Esto funciona en un software muy parecido al USB, pero aquí se conectan los pines GPIO en el Raspberry Pi a los pines TX y RX en el Arduino. Este método puede ser útil si tienes un Arduino con más de un puerto serie, como el Arduino Mega. El único inconveniente es que si estás usando un Arduino de 5V, necesitas algunos circuitos de cambio de nivel. Para recibir una señal de 5V en la Pi, un simple divisor resistivo será suficiente, pero para pasar de 3V3 a 5V se necesita un transistor.
Aquí se puede utilizar cualquier transistor NPN de uso general. Usted se comunica de la misma manera que el puerto serie USB, excepto que siempre obtiene el puerto ttyACM0.
Para ambos métodos de serie, está transfiriendo bytes y no números. Si tiene problemas con esto, tal vez alguna otra instalación de software haya cambiado el funcionamiento predeterminado de su puerto serie en el lado Pi. Si es así, busque en línea los síntomas de su problema específico.
I2C
El I2C (se pronuncia «I squared C» pero a menudo escrito I2C) puede ser usado para conectar los dos juntos. El sistema I2C es una disposición maestro/esclavo – sólo el maestro envía o solicita datos. El frambuesa Pi no es muy adecuado para ser un esclavo I2C, así que tienes que convertirlo en el maestro. El bus requiere resistencias pull-up, que ya están en los pines 2 y 3 de GPIO en el frambuesa Pi. Desafortunadamente, el Arduino de 5V tiene su resistencia interna de pull-up activada si estás usando la librería estándar de I2C llamada «Wire»; debido a que esto está tirando de las líneas hasta 5V, podría dañar tu Pi. Así que tendrás que hackear la librería de cables (la que se usa para I2C) o, mejor aún, usar una librería que permita el control de las resistencias internas de pull-up como la que se encuentra en Github.com. La conexión es entonces simple. Note que hay un ejemplo de uso de Arduino como esclavo I2C en la sección de ejemplos del IDE de Arduino.
Si no desea cambiar el software, tendrá que utilizar un circuito de cambio de nivel I2C.
Frambuesa Pi GPIO Pin Funciones Alternas
Los pines de entrada/salida de propósito general (GPIO) pueden conmutarse entre entrada o salida y tienen una resistencia pull-up o pull-down habilitada, pero hay una gran cantidad de otros periféricos en el chip Raspberry Pi que pueden conmutarse a estos pines. Puede ver la disposición básica de un pin, GPIO 18.
Todos los otros pines tienen una disposición similar pero con diferentes bloques para elegir. Los números en el conmutador son el valor de registro de tres bits que se debe establecer en la colección de registros de selección de función alternativa. Tenga en cuenta que los números Alt tienen poca relación con los patrones de bits que realmente establece.
Aunque hay 54 líneas GPIO en el procesador Raspberry Pi’s, sólo 28 salen al conector P1 de la tarjeta (menos en los modelos no-plus); el resto se utilizan para hacer que el procesador actúe como un ordenador (cosas como la tarjeta SD, el conector USB y los LEDs). En los modelos B+ y A+, tiene los primeros 28 pines GPIO; en los modelos anteriores, tiene un subconjunto de éstos. La mayoría de los diagramas que encuentra le ofrecen sólo una selección de estas funciones alternativas. Aquí puede ver todas las funciones alternativas y dónde aparecen en el conector GPIO.
Lo primero que hay que detectar es que hay dos tipos de «nada aquí»: Una está en blanco y la otra está etiquetada como
Para el cuento sangriento completo, el documento de BCM2835 ARM Peripherals es donde usted quiere mirar, pero aquí está un vistazo rápido a algunas de las funciones:
- ALT 0: Donde la mayoría de las funciones alternativas interesantes y útiles son en lo que se refiere al Pi de frambuesa. Los SDA y SCL 0 y 1 son los dos buses I2C, y los TXD0 y RXD0 son las conexiones seriales. Las líneas GPCLK son una salida de reloj de propósito general que puede configurarse para funcionar a una frecuencia fija independiente de cualquier software. Los pines PWM proporcionan las dos salidas moduladas por ancho de pulso; el SPI 0 es la línea de bus de interfaz periférica en serie. Finalmente, los pines PCM proporcionan salidas de audio moduladas por pulsos codificados.
- ALT 1: Los pines se utilizan como un bus de memoria secundario. Debido al diseño del Pi de Frambuesa, esto no sirve para nada.
- ALT 2: Los únicos pines ALT 2 que salen de la cabecera del pin GPIO están reservados.
- ALT 3: Los pines más útiles aquí son las líneas CTS0 y RTS0; estas son líneas de handshaking para el módulo serie si las necesita. Las líneas BSC son para el Controlador Serial Broadcom, que es un bus de modo rápido compatible con I2C que soporta direccionamiento de 7 y 10 bits y tiene la temporización controlada por registros internos. Las líneas SD1 son probablemente para el control de una tarjeta SD, pero el documento BCM2835 ARM Peripherals no hace ninguna otra mención de ello. De todas formas, no es la forma en que la Frambuesa Pi accede a la tarjeta SD.
- ALT 4: Las líneas SPI 1 son un segundo bus SPI. Y los pines de ARM son para una interfaz JTAG. JTAG es una forma de hablar con el chip sin ningún tipo de software. Se utiliza mucho para las pruebas iniciales de un sistema durante el desarrollo, aunque también se puede utilizar para la depuración de hardware.
- ALT 5: Los pines útiles aquí son las segundas líneas de datos y handshaking del puerto serie. Las líneas PWM son exactamente las mismas líneas PWM que se cambian a GPIO 12 y 13 bajo ALT 0, sólo que esta vez se cambian a GPIO 20 y 21. También hay dos de las líneas de reloj de propósito general junto con otra copia de las señales ARM JTAG.
El poder de la frambuesa Pi
Una pregunta común es: «¿Podrá el Pi de frambuesa hacer esto?», a la que el que responde siempre es: «¿Qué quieres decir con poder?». Básicamente, hay tres maneras en las que una Pi puede alimentar algo y cada una tiene una respuesta diferente.
Obtención de la energía del pin GPIO
Los pines GPIO son bastante frágiles en el frambuesa Pi, en comparación con otras placas como la Arduino. Cada clavija GPIO puede suministrar (proporcionar la corriente) o hundirse (succionar la corriente dentro de la clavija para cambiar algo a tierra) alrededor de 16mA. La cantidad total de corriente procedente de todos los pines sumados debe limitarse a unos 50 mA, que se distribuyen a unos 3 mA cada uno para los modelos no Plus.
Lo único que debería estar alimentando directamente desde un pin GPIO es un LED, y sólo con una corriente baja. Todo lo demás necesita pasar por algún tipo de controlador, normalmente un transistor o FET. Además, el voltaje de salida es de sólo 3V3, por lo que muchos dispositivos necesitan más voltaje y más corriente.
Obteniendo la energía de la Pi
Aquí es donde la señal para controlar algo se deriva de los pines GPIO, pero la potencia real para conducirlo es de las líneas eléctricas internas de 3V3 o 5V de Raspberry Pi.
Usar el suministro de 3V3 es delicado porque esa línea pasa a través de los reguladores de voltaje a bordo y hay una cantidad limitada de corriente de repuesto disponible antes de que se sobrecaliente el regulador. No tome más de 50 mA de este riel de potencia. Si desea más, considere la posibilidad de usar un regulador de voltaje en la línea de 5V.
Mucho más prometedora es la línea de 5V porque se deriva de la misma fuente de energía que está alimentando a toda la Pi. Debido a que el Pi toma hasta 800mA en su pico, si usted alimenta al Pi con una fuente de alimentación de 2A, podría tomar aproximadamente 1.2A de las líneas de 5V. Coloque en paralelo las dos clavijas de 5 V del conector GPIO y al menos dos tomas de tierra para reducir la resistencia introducida por el conector. Pero en el extremo superior de este consumo de corriente, espere un poco de caída de voltaje – puede que se pierda un voltio más o menos y termine con sólo unos 4V.
Obtención de la energía de una fuente externa
Hay ocasiones en las que se necesita una tensión superior a 3V3 o 5V para controlar un dispositivo. Si este es el caso, necesita una fuente de alimentación separada. Esto significa que el terminal de puesta a tierra o el terminal de conexión a tierra de la fuente de alimentación externa debe estar conectado a la tierra del Frambuesa Pi. Un temor común aquí es que esto dañará de alguna manera al Pi, pero mientras sea sólo la tierra la que esté conectada, no hay nada de qué preocuparse.
Por ejemplo, una aplicación típica podría ser el accionamiento de un relé de 12 V.
La forma en que funciona un transistor asegura que los 12V no se vuelvan a filtrar al Pi de frambuesa.
Los contactos de relé están completamente separados de la Pi; se dice que está aislada. Cualquier tipo de bobina o inductor debe tener un diodo para protegerse contra los CEM posteriores; se trata de un gran pico de tensión inversa que se produce cuando se elimina la corriente de la bobina del relé y el campo magnético se colapsa. El diodo hace un cortocircuito y evita que se dañe.
La resistencia de 1K en la base del transistor asegura que no consuma demasiada corriente del pin GPIO. Este circuito es aplicable a otras cosas también – por ejemplo, en lugar de la bobina del relé, puede tener un motor.