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?

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.

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


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 .


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

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.