Algunas personas ven el Arduino y Raspberry Pi como tableros rivales, pero este no es el caso en absoluto. En todo caso, son complementarias - la debilidad de uno es la fuerza de la otra. Aquí hay tres maneras de conectar un Arduino y Raspberry Pi.
USB
Simplemente conecte el conector USB de la Raspberry Pi al conector USB del Arduino. Eso es todo lo que necesita hacer. Hay una ligera curva en la que el Pi potencialmente puede asignar el Arduino uno de los dos puertos, por lo que al abrir el puerto serie al Arduino, utilice el siguiente fragmento de código:
serialtry importación: ser = serial.Serial ('/ dev / ttyACM0', 115200, timeout = 2), excepto: ser = serial.Serial ('/ dev / ttyACM1', 115200, timeout = 2)
Esto supone que ha configurado el código en el Arduino para utilizar el puerto serie al mismo 115.200 velocidad de transmisión con un comando de comenzar:
Serial.begin (115200)
Se puede utilizar cualquier velocidad de transmisión que los dos sistemas pueden utilizar, pero tienen que coincidir. En el lado Pi, utilizar ser.write () para enviar lo que está en los soportes a la Arduino y back = ser.read (1) para reducir distancias de bytes. Si no ha habido nada recibida después del período de tiempo de espera se establece al abrir el puerto, la llamada vuelve. Puede solicitar tantos bytes de vuelta de esta llamada y cuando se pone entre paréntesis.
Serial
Esto funciona en el software muy parecido USB, pero aquí se conectan los pines GPIO en la Raspberry Pi a los pines TX y RX en el Arduino. Este método puede ser útil si usted tiene un Arduino con más de un puerto serie, como el Mega Arduino. La única pega es que si usted está utilizando una 5V Arduino, necesita algunos circuitos de cambio de nivel. Para recibir una señal de 5V en el Pi, un simple divisor resistivo es suficiente, pero al pasar de 3V3 hasta 5V que necesita un transistor.
Cualquier de propósito general transistor NPN se puede utilizar aquí. Usted se comunica de la misma forma que la serie USB, excepto que siempre obtenga el puerto ttyACM0.
Para ambos métodos de serie, que está transfiriendo no bytes números. Si tiene problemas con esto, tal vez algún otro software de instalación ha cambiado el funcionamiento por defecto de su puerto serie en el lado de Pi. Si es así, buscar en línea para los síntomas de su problema específico.
yo2C
El I2C (pronunciado " I cuadrado C " pero I2C menudo escrito) puede ser utilizado para conectar los dos juntos. El I2Sistema C es un acuerdo maestro / esclavo - sólo el maestro envía o solicita datos. El Raspberry Pi no es muy adecuado para ser un me2Esclavo C, por lo que tiene para que sea el maestro. El autobús requiere resistencias de pull-up, que ya están en los pines GPIO 2 y 3 en la Raspberry Pi. Por desgracia, el 5V Arduino tiene su resistencia pull-up interna habilitada si usted está utilizando el estándar I2C biblioteca llama " alambre " - porque esto está tirando de las líneas hasta 5V, podría dañar su Pi. Así que tendrás que hackear la biblioteca de alambre (la utilizada para I2C) o, mejor aún, utilizar una biblioteca que permite el control de las resistencias pull-up internas como la que se encuentra en Github.com. La conexión es entonces simple. Tenga en cuenta que hay un ejemplo del uso de la Arduino como un I2C esclavo en la sección de ejemplos del Arduino IDE.
Si no desea cambiar el software, usted tendrá que usar un I2Nivel C circuito de desplazamiento.
Funciones Raspberry Pi GPIO Pin Alternos
La entrada de uso general / salida (GPIO) pasadores se puede cambiar entre entrada o salida y tienen un pull-up o pull-down resistencia habilitadas, pero hay una serie de otros periféricos en el chip Raspberry Pi que se puede cambiar a estas pasadores. Se puede ver la disposición básica de un pin, GPIO 18.
Todos los otros pines tienen un arreglo similar, pero con diferentes bloques para elegir. Los números en el interruptor son el valor del registro de tres bits que tienen que ser establecido en la colección de funciones alternativas Seleccione los registros. Tenga en cuenta que los números Alt tienen poca relación con los patrones de bits en realidad se ha establecido.
Aunque hay 54 líneas GPIO en procesador del Raspberry Pi, sólo el 28 son llevados a cabo en el conector P1 en el tablero (menos en los modelos no más) - el resto se utilizan para hacer realmente el acto de procesador como un ordenador (cosas como la tarjeta SD, conector USB y LED). En el B modelos A + + y, usted tiene la primera 28 GPIO pins- en los modelos anteriores, tiene un subconjunto de éstos. La mayoría de los diagramas a encontrar te dan sólo una selección de estas funciones alternativas. Aquí, se puede ver todas las funciones alternativas y donde aparecerá en el conector GPIO.
Lo primero que debemos observar es que hay dos tipos de " nada aquí # 148 ;: Uno es blanco y el otro está marcado como . Es probable que estas funciones reservadas se utilizan para pruebas de fábrica del chip o para funciones no descritas en la ficha técnica. Los blanco simplemente no se aplican.
Para la historia sangrienta completo, el documento Periféricos ARM BCM2835 es donde quieres mirar, pero aquí es un rápido vistazo a algunas de las funciones:
ALT 0: Cuando la mayoría de las funciones alternativas interesantes y útiles son en cuanto a la Raspberry Pi se refiere. La SDA y SCL 0 y 1 son los dos que2C autobuses y el TXD0 y RXD0 son las conexiones en serie. Las líneas GPCLK son una salida de reloj de propósito general que se puede configurar para funcionar a una frecuencia fija independiente de cualquier software. Los pines PWM proporcionan el ancho de dos pulsos modulada outputs- el SPI 0 es las líneas de autobús de interfaz periférica en serie. Por último, los pasadores PCM proporcionan impulsos codificados salidas de audio moduladas.
ALT 1: Las clavijas se utilizan como un bus de memoria secundaria. Debido al diseño del Raspberry Pi, esto no sirve de nada en absoluto.
ALT 2: Los únicos ALT 2 pines sacado el de la cabecera pin GPIO están reservados.
ALT 3: Los pasadores más útiles aquí son los CTS0 y RTS0 líneas- estos se Apretón de manos de las líneas para el módulo de serie si los necesita. Las líneas BSC son para el controlador Serial Broadcom, que es un modo de Ayuno2C-compatible con bus de soporte 7 bits y 10 bits de direccionamiento y tener la temporización controlada por los registros internos. Las líneas SD1 son probablemente para el control de una tarjeta SD, pero el documento Periféricos ARM BCM2835 no hace ninguna otra mención de ella. No es la forma en que el Raspberry Pi accede a la tarjeta SD de todos modos.
ALT 4: Las líneas SPI 1 son un segundo bus SPI. Y las clavijas ARM son para una interfaz JTAG. JTAG es una forma de hablar con el chip sin ningún software en él. Se utiliza mucho para las pruebas iniciales en un sistema durante el desarrollo, a pesar de que se puede utilizar para la depuración de hardware también.
ALT 5: Los pines útiles aquí son las segundas líneas de datos del puerto y del apretón de manos de serie. Las líneas PWM son exactamente las mismas líneas PWM que son interruptores a GPIO 12 y 13 menores de ALT 0, sólo que esta vez están cambiados 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 JTAG ARM.
Encendido de la Raspberry Pi
Una pregunta común es " ¿El poder Raspberry Pi esto, "? a la que el contestador está siempre " ¿Qué quieres decir por el poder "? Básicamente, hay tres formas en que un Pi puede alimentar algo y cada uno tiene una respuesta diferente.
Sourcing el poder desde el pin GPIO
Los pines GPIO son muy frágiles en el Raspberry Pi, en comparación con otros consejos como el Arduino. Cada pin GPIO puede fuente (proporcionar la corriente) o lavabo (chupar la corriente en la clavija para cambiar algo a tierra) sobre 16mA. La cantidad total de corriente cuya fuente o hundido desde todos los pines se sumarán, debe limitarse a alrededor de 50 mA, que se extiende hasta alrededor de 3 mA cada uno de los modelos no-plus.
La única cosa que debe ser la alimentación directamente de un pin GPIO es un LED, y sólo con una corriente baja en eso. Todo lo demás tiene que ir a través de algún tipo de controlador - normalmente un transistor o FET. Además, la tensión de salida sólo 3V3, por lo que muchos dispositivos necesitan más tensión, así como más actual.
Abastecimiento de la alimentación de la Pi
Aquí es donde la señal de controlar algo se deriva de los pines GPIO, pero el poder real para conducir es de la 3V3 o 5V líneas de energía interna de la Raspberry Pi.
El uso de la oferta 3V3 es difícil porque esa línea está pasando por los reguladores de voltaje a bordo y hay una cantidad limitada de repuesto corriente disponible antes de llegar a un sobrecalentamiento de los reguladores. No tome más de 50 mA de esta línea de tensión. Si quieres más, considere el uso de un regulador de tensión en la línea de 5V.
Mucho más prometedora es la línea de 5V porque se deriva de la misma fuente de alimentación que está impulsando todo el Pi. Debido a que el Pi toma hasta 800mA en el pico, así apague el Pi con un suministro 2A, usted podría tomar alrededor de 1,2 A partir de las líneas de 5V. En paralelo hasta los dos 5V patillas del conector GPIO y al menos dos motivos para reducir la resistencia introducida por el conector. Pero en el extremo superior de este consumo de corriente, esperar un poco de caída de tensión - es posible que obtenga un voltio o tan perdido y terminar con sólo alrededor de 4V.
Sourcing la energía de una fuente externa
Hay momentos en que necesita una tensión superior a 3V3 o 5V para controlar un dispositivo. Si este es el caso, se necesita una fuente de alimentación independiente. Esto significa que la planta o terminal -ve de la fuente de alimentación externa debe estar conectado a la tierra de la Raspberry Pi. Un temor común aquí es que esta voluntad de alguna manera daña el Pi, pero mientras que es sólo la tierra que está conectado, no hay nada de qué preocuparse.
Por ejemplo, una aplicación típica podría ser la de conducir un relé de 12V.
La forma en que un transistor trabaja asegura que el 12V no se escapa de nuevo en la Raspberry Pi.
Los contactos del relé están completamente separados del Pi- esto se dice que está aislado. Cualquier tipo de bobina o inductor debe tener un diodo para proteger contra la espalda EMF- este es un gran pico de voltaje inverso que se produce cuando se retira de la corriente de la bobina del relé y el campo magnético se colapsa. Los cortos de diodos esto y evita que se provoquen daños.
La resistencia de 1K en la base del transistor se asegura de que usted no llamar demasiado la corriente desde el pin GPIO. Este circuito es aplicable a otras cosas también - por ejemplo, en lugar de la bobina del relé, se puede tener un motor.