Arduinoを接続する方法?


43

Arduinoのウェブサイトは、としてそれを合計します

Arduinoは、柔軟で使いやすいハードウェアとソフトウェアに基づいたオープンソースのエレクトロニクスプロトタイピングプラットフォームです。アーティスト、デザイナー、愛好家、そしてインタラクティブなオブジェクトや環境の作成に興味がある人を対象としています。

それは、サーボを制御し、多くのオプションのシールドによって提供される他の接続性を提供するための素晴らしいインターフェースになります。

Raspberry Piに接続するにはどうすればよいですか?通信を設定するにはどうすればよいですか?

回答:


38

Arduinoは通常、USBシリアルデバイスとして表示されます。現在のボードはメインマイクロプロセッサに組み込まれたUSBシリアルドライバーを使用しますが、古いArduino(およびクローン)は別個のサードパーティUSBシリアルチップを使用しました。

Serial.printArduinoからRaspberry Piのデータを簡単に受信するには、GNU Screenプログラムを基本的なターミナルとして使用screen [serial-port] [baud-rate]します(たとえばscreen /dev/ttyACM0 9600)。

3つの異なるArduinoと1つのかなり異なるクローンをテストしました。新しい亜種はすべてとして登場/dev/ttyACM0ポート、および古いもの/dev/ttyUSB0。これは、Raspbianで見つけたものです。

  • Duemilanove-シリアルチップ:FTDI FT232RL。シリアルポート:/dev/ttyUSB0
  • 宇野 -シリアルチップ:アトメルATmega16U2(古いボード上または8U2); シリアルポート:/dev/ttyACM0
  • Leonardo-シリアルチップ:Atmel ATmega32U4(ビルトイン); シリアルポート:/dev/ttyACM0
  • OMS Omega-328U-シリアルチップ:Silicon Labs CP210x ; シリアルポート:/dev/ttyUSB0

Raspberry PiはArduinoを駆動するのに十分な電力を提供しない可能性があるため、外部電源が必要になる場合があります。完全を期すために、私は知っているArduinoにはないものの、Prolific PL2303もテストしました。それはかなり幸せに見えた/dev/ttyUSB0

センサーとのより複雑な通信については、Firmata、「ホストコンピューター上のソフトウェアからマイクロコントローラーと通信するための汎用プロトコル」を検討できます。Arduinoの実装と、Raspberry Pi側で実行するPythonライブラリがあります。

pyFirmataを使用してLM35を読み取り、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()

pyFirmataを使用する場合、いくつかの注意事項があります。

  • アナログ読み取りおよびPWM書き込みは、標準のArduino 0 .. 255および0 .. 1023ではなく、0 .. 1の範囲に正規化されます。
  • シリアルバッファをオーバーフローする古い読み取り値を停止するには、個別のイテレータスレッドを開始する必要があります。
  • Arduinoは非同期に読み取られるため、ポートから読み取る前に、pyFirmata接続が完全に初期化されていることを確認してください。それ以外の場合、None値が続きます。

1
また、Raspberry PiでProcessingを実行できることも確認しました。非常に遅いですが、なんとかしてUSBリンク経由でArduinoを制御することができました:Processingを使用してRaspberry PiからArduinoを制御します。これをPython /
tkinterに

この答えをありがとう、とても役に立ちました。python serialを使用して/ dev / ttyACM0から読み取り、非常に矛盾していることがわかりました。私はそれが私のarduinoの電力不足であると仮定しましたが、外部電源に接続しましたが、まだ問題があります。データの形式が正しくない場合や、/ dev / ttyACM0が見つからないために例外がスローされる場合があります(ただし、以降の実行では検出されます)。同様の問題がありましたか?
アンディスミス

いいえ、これは私の経験と一致しません。
12

応答してくれてありがとう-面白い、私が間違っているのは間違いない!
アンディスミス

SEで非Pi固有の質問をするか、Arduinoフォーラムで直接質問してください。シリアル
通信で

13

不明な場合は、Raspbian Wheezyを使用して、Raspberry PiのUSBポートに接続したときにArduino IDEを実行し、Arduinoにスケッチをアップロードできます。Raspbianにインストールするには、シェル(コマンドライン)に入力するだけです。

sudo apt-get install arduino

必要なすべてのパッケージをダウンロードしてインストールします。RaspbianのArduino IDEの写真をここに2枚持っています。

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

(他の人々が上記で説明したように、Raspberry PiはGPIOヘッダーのシリアルポート(UART)ピンを介してArduinoをプログラムすることもできます。この場合、USBポートを「浪費」する必要はありませんが、追加の構成が必要になります)。

乾杯、ドリュー


Arduino UnoをRGB LEDで簡単なフェーディングスケッチでテストしましたが、Arduino UnoはRaspberry PiのUSBポートからのみ給電されていました。問題ありませんでしたが、もちろんYMMVです。
pdp7


7

・ラ・モードà

銘打たラズベリーパイでのArduinoを置くための適切な方法をハックAデイで、 ラ・モードAからAnool Mahidharia、ジャスティン・ショーとケビン・オズボーンによって設計されたスタック可能なArduinoのクローンであるWyolum.com OSHWのコラボレーティブ。Hack A Dayは次のように説明しました

すぐに、AlaModeはRaspberry PiのGPIOピンに直接接続します。そこから、ArduinoのATMegaとの通信が有効になり、Arduinoの場合と同じようにデータを送受信できます。リアルタイムクロック、サーボヘッダー、ボードに電力を供給する多くの方法、さらに[a] GPSモジュールのブレイクアウトもあります。

AlaModeでは、多くの不必要な問題が解決されます。USBポートはありませんが、Raspberry PiのGPIOピンを介して直接プログラムできます。かなりきちんとしているので、[Raspberry Pi]を手に入れるのが待ちきれません。

Kevinは彼のブログでもう少し詳しく説明しています

いくつかの追加の特典を含む機能は次のとおりです。

  • 柔軟なパワー。Piから直接電源を供給できるほか、スタンドアロンのバッテリーまたは壁コンセント、またはUSB電源を使用できます。これは、シールドがPiが提供できる以上の電力を必要とする場合、またはスタンドアロン操作のためにドッキングを解除する場合に重要です。GPIOピン上のPiのUART、またはFTDI USBシリアルアダプターまたはISPを介してプログラム可能。
  • Fastrax UP501 GPSを接続するためのヘッダー。DS3234リアルタイムクロック。Piには、バッテリでバックアップされたRTCがありません。AlaModeでプログラムを設定して、シリアルまたはI2C経由でPiに時間を報告できます。
  • マイクロSDカードスロット。データロギングに役立ち、Arduinoアプリケーションの大容量メモリ
  • 構成可能な電源および接地レールを備えたPWMピンに接続されたサーボヘッダーの列

限定ベータ

現在、このボードは限定ベータ版ですが、よく考え抜かれたクローンとして言及する価値があります。これは以前の形式のグループによって発表されました。

参照資料

  1. Hack A Dayのブログ投稿
  2. Kevin Osbornのブログ投稿
  3. Wyolum.com

4

汎用ハードウェアインターフェースプラットフォームが必要な場合は、現在ArduinoベースのGertボードを検討してください。利点の1つは、RPiとの対話に関する詳細なドキュメントがあることです。8/8/12の時点でElement14からの先行予約が可能です。


0

Arduinoのように動作し、任意のブラウザからWeb UIを介してプログラムできるRaspberryPi HATがあります。CoPiinoと呼ばれるプロジェクト。ソフトウェアが完全に稼働しています。ブラウザのUIにArduino Sketchを入力し、「コンパイルして実行」を押すだけです。


1
CoPinoを宣伝している回答が少なくとも2つ投稿されていることを考えると、このプロジェクトに接続していると思われます。接続は、あなたの答えに注意する必要があります
スティーブロビラード

はい、それは絶対に正しいですし、私のコメントは完全にトピックをカバーしています。CoPiinoボードは、すでに説明したa-la-modeボードに似ています。CoPiinoには、いくつかの素晴らしい追加機能があります。PiからArduinoをプログラミングする方法について簡単に説明します-これが最初の質問でした。
-tswaehn

あなたの4年はまだあなたの所属で編集していません。そうして下さい。
ジョンハーパー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.