Como anexar um Arduino?

43

O site do Arduino resume como

O Arduino é uma plataforma de prototipagem eletrônica de código aberto baseada em hardware e software flexíveis e fáceis de usar. Destina-se a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos.

Pode ser uma interface agradável para controlar servos e fornecer outra conectividade fornecida por seus muitos escudos opcionais.

Como conectar um a um Raspberry Pi? Como configuro a comunicação?

Lucas Kauffman
fonte

Respostas:

38

Os Arduinos geralmente aparecem como dispositivos seriais USB. As placas atuais usam o driver serial USB embutido no microprocessador principal, mas os Arduinos mais antigos (e clones) usavam chips USB-serial de terceiros separados.

Para simplesmente receber Serial.printdados do Raspberry Pi do Arduino, eu uso o programa GNU Screen como um terminal básico: screen [serial-port] [baud-rate](por exemplo screen /dev/ttyACM0 9600).

Eu testei três Arduinos diferentes e um clone bastante diferente. Todas as variantes mais recentes apareceram como /dev/ttyACM0portas e as mais antigas /dev/ttyUSB0. Foi o que eu encontrei no Raspbian:

O Raspberry Pi pode não fornecer energia suficiente para acionar um Arduino, portanto você pode precisar de energia externa. Para completar, também testei um Prolific PL2303 , mesmo que não esteja em nenhum Arduino que eu conheça. Pareceu muito feliz como /dev/ttyUSB0.

Para comunicações mais complexas com sensores, considere o Firmata , "um protocolo genérico para comunicação com microcontroladores a partir de software em um computador host". Possui implementações para as bibliotecas Arduino e Python para execução no lado do Raspberry Pi.

Aqui está um pequeno exemplo usando pyFirmata para ler um LM35 e alterar o brilho de um LED:

#!/usr/bin/python
# -*- coding: utf-8 -*-

# simple test of pyfirmata and Arduino; read from an LM35 on A0,
#                                       brighten an LED on D3 using PWM
# scruss, 2012-08-14 - tested on Arduino Uno & Raspberry Pi (Raspbian)

import pyfirmata

# Create a new board, specifying serial port
board = pyfirmata.Arduino('/dev/ttyACM0')

# start an iterator thread so that serial buffer doesn't overflow
it = pyfirmata.util.Iterator(board)
it.start()

# set up pins
pin0=board.get_pin('a:0:i')             # A0 Input      (LM35)
pin3=board.get_pin('d:3:p')             # D3 PWM Output (LED)

# IMPORTANT! discard first reads until A0 gets something valid
while pin0.read() is None:
    pass

for i in range(10):
    pin3.write(i/10.0)                  # set D3 to 0, 10%, 20%, ... brightness
    print "PWM: %d %% Temperature %.1f °C" % (i * 10, pin0.read() * 5 * 100)
    board.pass_time(1)                  # pause 1 second

pin3.write(0)                           # turn LED back off
board.exit()

Existem algumas advertências ao usar pyFirmata:

  • As leituras analógicas e as gravações PWM são normalizadas para um intervalo de 0 .. 1, e não para o Arduino padrão 0 .. 255 e 0 .. 1023.
  • Você realmente precisa iniciar um encadeamento de iterador separado para impedir que leituras antigas excedam o buffer serial
  • Como o Arduino é lido de forma assíncrona, verifique se a conexão pyFirmata está totalmente inicializada antes de ler das portas. Caso contrário, os Nonevalores se seguirão.
scruss
fonte
1
Também confirmei que você pode executar o Processing no Raspberry Pi. É muito lento, mas consegui controlar um Arduino através de um link USB: Controlando um Arduino do Raspberry Pi usando o Processing . Vou ver se eu posso porta isso para Python / tkinter ...
scruss
Obrigado por esta resposta, foi muito útil. Estou usando o python serial para ler em / dev / ttyACM0 e acho muito inconsistente. Presumi que fosse a falta de energia do meu arduino, mas o liguei a uma fonte de alimentação externa e ainda estou tendo problemas. Às vezes, os dados estão malformados, às vezes, uma exceção é lançada porque / dev / ttyACM0 não é encontrado (embora as execuções subseqüentes o encontrem). Você já teve problemas semelhantes?
Andy Smith
Não, isso não corresponde à minha experiência.
scruss
Obrigado pela resposta - interessante, deve ser algo que estou fazendo de errado!
Andy Smith
Talvez faça uma pergunta específica que não seja Pi no SE ou diretamente no fórum do Arduino. Serial comms muitas vezes me dá uma dor de cabeça ...
scruss
13

Caso não esteja claro, com o Raspbian Wheezy , você pode executar o Arduino IDE e carregar esboços no Arduino quando conectado à porta USB do Raspberry Pi. Para instalar no Raspbian, basta digitar no shell (também conhecido como linha de comando):

sudo apt-get install arduino

Ele fará o download e instalará todos os pacotes necessários. Tenho algumas fotos do IDE do Arduino no Raspbian aqui:

http://www.element14.com/community/groups/raspberry-pi/blog/2012/07/03/review-of-raspberry-pi-images

(como outras pessoas descreveram acima, o Raspberry Pi também pode programar o Arduino através dos pinos da porta serial (UART) no cabeçalho GPIO. Nesse caso, você não precisaria "desperdiçar" uma porta USB, mas exigiria configuração adicional )

Saúde, Drew

pdp7
fonte
Testei um Arduino Uno com LED RGB com esboço simples e o Arduino Uno era alimentado apenas pela porta USB do Raspberry Pi. Não tive nenhum problema, mas, é claro, YMMV.
pdp7 9/08/12
8

Pode-se optar por conectar o rpi ao arduino usando uma porta USB ou usando os pinos GPIO. Pode-se usar o Wiringpi para fazer a comunicação entre as placas.

Atualmente, também está sendo desenvolvida uma ponte chamada Ponte .

Um mundo básico de olá pode ser encontrado aqui .

Lucas Kauffman
fonte
7

O modo à la

Anunciado como a maneira correta de colocar um Arduino em um Raspberry Pi pela Hack A Day, o modo à la é um clone empilhável do Arduino, projetado por Anool Mahidharia, Justin Shaw e Kevin Osborn da Wyolum.com OSHW. Hack A Day descreveu o seguinte

Logo de cara, o AlaMode se conecta diretamente aos pinos GPIO do Raspberry Pi. A partir daí, a comunicação com o ATMega do Arduino é ativada, permitindo que você envie e receba dados da mesma forma que faria com um Arduino. Há um relógio em tempo real, cabeçalhos de servo, muitas maneiras de alimentar a placa e até uma fuga para o [a] módulo GPS.

Um monte de lixo desnecessário é eliminado no AlaMode; Não há porta USB, mas pode ser programada diretamente pelos pinos GPIO do Raspberry Pi. Bem legal, e mal podemos esperar para pegar uma para o nosso [Raspberry Pi].

Kevin dá um pouco mais de detalhes em seu blog :

Aqui estão os recursos, incluindo alguns extras:

  • Energia flexível. Pode ser alimentado diretamente do Pi, autônomo com uma bateria ou verruga, ou com energia USB. Isso é importante se o seu escudo consome mais energia do que o Pi pode fornecer ou se você deseja desencaixá-lo para uma operação independente. Programável através do UART do Pi nos pinos GPIO, ou um adaptador USB-Serial FTDI ou ISP.
  • Cabeçalho para conectar o GPS Fastrax UP501. DS3234 Relógio em tempo real. O Pi não possui seu próprio RTC com bateria. Você pode definir um programa no AlaMode para relatar o horário para o Pi via serial ou I2C
  • Slot para cartão Micro-SD. Útil para registro de dados e grande memória para seus aplicativos Arduino
  • Linha de conectores servo conectados aos pinos PWM com um trilho de potência e terra configurável

Beta limitado

Atualmente, o conselho está na versão beta limitada, mas merece ser mencionado como um clone bem pensado, anunciado por um grupo com forma anterior .

Referências

  1. Postagem no Blog de Hack A Day
  2. Postagem de blog de Kevin Osborn
  3. Wyolum.com
Alex Chamberlain
fonte
4

Você pode considerar a placa Gert, que agora é baseada no Arduino, se desejar uma plataforma de interface de hardware de uso geral. Uma vantagem é que existe uma extensa documentação sobre a interação com o RPi. Disponível para pré-encomenda da Element14 a partir de 8/8/12.

Cara
fonte
0

Existe um RaspberryPi HAT que se comporta como o Arduino e pode ser programado através de sua interface da Web a partir de qualquer navegador. Projeto chamado CoPiino . Ele vem completamente com o software instalado e funcionando. Basta digitar o Arduino Sketch na interface do usuário do navegador e clicar em "compilar e executar" - é isso.

tswaehn
fonte
1
dado que você postou pelo menos duas respostas que estão promovendo o CoPino, suspeito que você esteja conectado a este projeto. Qualquer conexão deve ser anotada em sua resposta;
Steve Robillard 11/11
Sim, isso é absolutamente correto e meu comentário aborda o assunto totalmente. A placa CoPiino é semelhante à já mencionada placa a-la-mode. Onde o CoPiino apresenta alguns recursos adicionais interessantes. Onde a programação do Arduino a partir do Pi é facilmente abordada - qual foi a pergunta inicial.
tswaehn
Quatro anos depois, você ainda não editou sua afiliação. Por favor, faça isso.
Jon Harper