Algumas pessoas vêem o Arduino e Raspberry Pi como placas rivais, mas este não é o caso em tudo. Se alguma coisa, eles são complementares - a fragilidade de um é a força do outro. Aqui estão três maneiras de conectar um Arduino e um Pi Raspberry.
USB
Basta ligar o conector USB do Raspberry Pi ao conector USB no Arduino. Isso é tudo que você precisa fazer. Há uma ligeira bola curva em que o Pi pode potencialmente atribuir o Arduino uma das duas portas, por isso, ao abrir-se a porta serial para o Arduino, use o seguinte trecho de código:
importação serialtry: ser = serial.Serial ( '/ dev / ttyACM0', 115200, timeout = 2), exceto: ser = serial.Serial ( '/ dev / ttyACM1', 115200, timeout = 2)
Isso pressupõe que você tenha configurado o código no Arduino para usar a porta serial, ao mesmo 115200 taxa de transmissão com um comando de começar:
Serial.begin (115200)
Você pode usar qualquer taxa de transmissão que os dois sistemas podem usar, mas eles têm que corresponder. No lado do Pi, use ser.write () para enviar o que está nos suportes ao Arduino e back = ser.read (1) para obter um byte de volta. Se não houve nada recebidas após o período de tempo limite definido quando abrir a porta, a chamada retorna. Você pode obter o maior número de bytes de volta a partir desta chamada como você colocar nos suportes.
Serial
Isso funciona no software muito parecido com USB, mas aqui você conectar os pinos GPIO no Raspberry Pi aos pinos TX e RX no Arduino. Este método pode ser útil se você tem um Arduino com mais de uma porta serial, como o Arduino Mega. O único problema é que se você estiver usando um 5V Arduino, você precisa de alguns circuitos nível movediças. Para receber um sinal de 5V para o Pi, um divisor resistivo simples será suficiente, mas em ir de 3V3 até 5V você precisa de um transistor.
Tanto para uso geral transistor NPN podem ser usados aqui. Você pode se comunicar da mesma forma como a série USB, exceto que você sempre obter a porta ttyACM0.
Para ambos os métodos de série, você está transferindo não bytes números. Se você tiver problemas com isso, talvez algum outro software de instalação mudou o funcionamento padrão do seu porta serial no lado do Pi. Se assim for, pesquisa on-line para os sintomas de seu problema específico.
Eu2C
a I2C (pronuncia-se # 147-I ao quadrado C # 148- mas I2C muitas vezes escritos) pode ser usado para conectar os dois juntos. a I2sistema C é um arranjo mestre / escravo - apenas o mestre envia ou solicita dados. A framboesa Pi não é muito bem adequado para ser um I2C escravo, então você tem que fazê-lo o mestre. O ônibus requer pull-up resistores, que já estão em GPIO pinos 2 e 3 no Raspberry Pi. Infelizmente, o 5V Arduino tem seu interna resistor pull-up habilitado se você estiver usando o I padrão2biblioteca C chamada # 147-Wire # 148-- porque este é puxando as linhas até 5V, que poderia danificar o seu Pi. Então você vai ter que cortar a biblioteca fio (aquele usado para I2C) ou, melhor ainda, usar uma biblioteca que permite o controle das resistências internas pull-up, como o encontrado em Github.com. A conexão é então simples. Note-se que há um exemplo da utilização do Arduino como um I2escravo C na secção de exemplos do IDE Arduino.
Se você não quiser alterar o software, você terá que usar um I2nível C deslocando circuito.
Funções Raspberry Pi GPIO PIN alternativo
A entrada de uso geral / saída (GPIO) pinos pode ser alternado entre entrada ou saída e ter um pull-up ou pull-down resistor habilitado, mas há uma série de outros periféricos no chip Raspberry Pi que pode ser ligado a estes pins. Você pode ver o arranjo básico para um pino, GPIO 18.
Todos os outros pinos tem um arranjo semelhante mas com diferentes blocos para escolher. Os números sobre o interruptor é o valor de registro de três bits que tem que ser definido na coleção de função alternativa selecione registros. Note que os números Alt têm pouca relação com os padrões de bits que você realmente estabelecidas.
Embora existam 54 linhas GPIO no processador do Raspberry Pi, apenas 28 são trazidos ao conector P1 na placa (menos nos modelos non-plus) - o resto são utilizados para realmente fazer o ato processador como um computador (coisas como o cartão SD, conector USB e LEDs). No B + e modelos A +, você tem o primeiro 28 GPIO pins- em modelos anteriores, você tem um subconjunto destes. A maioria dos diagramas você encontra dar-lhe apenas uma selecção destas funções alternativas. Aqui, você pode ver todas as funções alternativas e onde eles aparecem no conector GPIO.
A primeira coisa a detectar é que existem dois tipos de # 147-nada aqui # 148-: Um é branco eo outro é rotulado como. É provável que essas funções reservadas são usados para testes de fábrica do chip ou para funções não divulgados na folha de dados. Os em branco simplesmente não são implementados.
Para o conto cruento cheia, o BCM2835 ARM Periféricos documento é onde você quer olhar, mas aqui está uma rápida olhada em algumas das funções:
ALT 0: Onde a maioria das funções alternadas interessantes e são úteis na medida em que a framboesa Pi está em causa. A SDA e SCL 0 e 1 são os dois I2C ônibus, eo TXD0 e RXD0 são as conexões seriais. As linhas GPCLK são um relógio de saída de uso geral que pode ser configurado para funcionar a uma frequência fixa independente de qualquer software. Os pinos PWM fornecer a largura de dois pulso modulada outputs- o SPI 0 é linhas de ônibus interface de periféricos seriais. Finalmente, os pinos PCM fornecer saídas de áudio modulados por código de pulso.
ALT 1: Os pinos são utilizados como um barramento de memória secundária. Devido ao desenho da Pi framboesa, este não tem qualquer utilidade.
ALT 2: Os ALT apenas 2 pinos trouxe o para o cabeçalho pino GPIO são reservados.
ALT 3: Os pinos mais úteis aqui são o CTS0 e RTS0 linhas- estes são aperto de mão linhas para o módulo de série, se você precisar deles. As linhas BSC são para o controlador Serial Broadcom, que é um modo rápido I2C compatível com bus de apoio 7-bit e 10-bit de endereçamento e ter o tempo controlado por registros internos. As linhas SD1 são, provavelmente, para o controlo de um cartão SD, mas o documento Periféricos ARM BCM2835 não oferece nenhuma outra menção a ele. Não é a forma como o Raspberry Pi acede ao cartão SD de qualquer maneira.
ALT 4: As linhas SPI 1 são um segundo barramento SPI. E os pinos ARM são para uma interface JTAG. JTAG é uma maneira de falar com o chip sem qualquer software nele. É muito utilizado para os testes iniciais de um sistema durante o desenvolvimento, embora possa ser utilizado para a depuração de hardware bem.
ALT 5: Os pinos úteis aqui são as segundas linhas de dados porto e do aperto de mão série. As linhas PWM são exatamente as mesmas linhas PWM que são muda para GPIO 12 e 13 sob ALT 0, só que desta vez eles estão comutada para GPIO 20 e 21. Há também duas das linhas de relógio de propósito geral, juntamente com outra cópia do os sinais de ARM JTAG.
Ligando do Raspberry Pi
Uma pergunta comum é # 147 Será que o poder Raspberry Pi isso?, # 148- ao qual o respondente é sempre # 147-O que você quer dizer com poder? # 148- Basicamente, existem três maneiras de Pi pode alimentar alguma coisa e cada um tem uma resposta em separado.
Que adquirem o poder do pino GPIO
Os pinos GPIO são muito frágeis sobre o Raspberry Pi, em comparação com outras placas, como o Arduino. Cada pino GPIO pode fonte (Fornecer a corrente) ou Pia (Sugar a corrente no pino para mudar algo para o solo) sobre 16mA. A quantidade total de corrente da fonte ou afundado de todos os pinos somados deve ser restrito a cerca de 50 mA, que se espalha para cerca de 3 mA para cada um dos modelos não-plus.
A única coisa que você deve ser a alimentação diretamente de um pino GPIO é um LED, e apenas com uma corrente baixa para isso. Tudo o resto precisa passar por algum tipo de motorista - normalmente um transistor ou FET. Além disso, a tensão de saída só é 3V3, tantos dispositivos precisam mais de tensão, bem como mais corrente.
Que adquirem o poder do Pi
Este é o lugar onde o sinal para controlar algo é derivado dos pinos GPIO, mas o poder real para dirigi-lo é a partir do 3V3 ou 5V linhas de energia interna do Raspberry Pi.
Usando o fornecimento 3V3 é complicado porque essa linha está atravessando os reguladores de tensão a bordo e há uma quantidade limitada de reserva disponível atual antes de começar o superaquecimento dos reguladores. Não tome mais do que 50 mA a partir deste trilho de alimentação. Se você quiser mais, considere o uso de um regulador de tensão na linha de 5V.
Muito mais promissora é a linha de 5V porque é derivada a partir da mesma fonte de alimentação que está a ligar toda a Pi. Porque o Pi leva até 800mA no pico, se você alimentar o Pi com uma oferta 2A, você poderia levar cerca de 1.2A a partir das linhas 5V. Paralelo-se os dois pinos na 5V GPIO o conector e pelo menos duas razões para reduzir a resistência introduzida por o conector. Mas na extremidade superior desta consumo de corrente, esperar um pouco de inclinação tensão - você pode obter um volt ou tão perdido e acabar com apenas cerca de 4V.
Que adquirem o poder de uma fonte externa
Há momentos em que você precisa de uma tensão maior do que 3V3 ou 5V para controlar um dispositivo. Se este for o caso, você precisa de uma fonte de alimentação separada. Isto significa que a base ou terminal -ve da fonte de alimentação externa deve ser ligado à terra do Pi framboesa. Um medo comum aqui é que esta vontade de alguma forma danificar o Pi, mas enquanto é apenas o fundamento de que está conectado, não há nada para se preocupar.
Por exemplo, uma aplicação típica pode estar a conduzir um relé 12V.
A forma como um transistor funciona garante que o 12V não vaza de volta para o Raspberry Pi.
Os contatos do relé é completamente distinta da do Pi- isso é dito para ser isolado. Qualquer tipo de bobina ou indutor deve ter um díodo para proteger contra as costas EMF- este é um grande pico de tensão inversa que ocorre quando a corrente da bobina de relê é removido e o campo magnético colapsa. O diodo calções isso e impede-o de causar qualquer dano.
O resistor 1K na base do transistor garante que você não chamar muita corrente do pino GPIO. Este circuito é aplicável a outras coisas também - por exemplo, em vez de a bobina do relé, você pode ter um motor.