« USBケーブルで充電が終わったことを検知する | Main | Raspberry PiでTwitter Botを作る »

2013.05.13

Raspberry Piからシリアル通信でArduinoのLEDを光らせる

Raspberry Piを始めました。で、猫も杓子もということで、こちらのページを参考にArduinoとのシリアル通信を試してみました。

http://justpushbuttons.com/blog/?p=376

元のページでは5V仕様のArduinoとロジックレベルコンバータを使ってRaspberry Pi(3.3V)と接続してますが、手元にあったArduino Pro Miniの3.3V仕様のものを使ってます。大きさといい部品点数の少なさといい、おすすめな組み合わせですが、ちょっと在庫が微妙。

IMGP0546

IMGP0550

まず、Arduino側にシリアルで文字列「1」を受信するとLEDが光り、「0」を受信すると消えるスケッチを書き込みます。某マシュマロを飛ばすプロジェクトの使いまわしです。

https://gist.github.com/usopyon/5568326

次にRaspberry Piです。/etc/inittabをviで編集し

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

と書かれている行をコメントアウトし、リブートします。/boot/cmdline.txtも書き換えたほうがいいようですが、私の環境では、/etc/inittabの書き換えだけで動きました。

次にminicomをインストール。

sudo apt-get install minicom

Raspberry PiのTX/RXとArduinoのRX/TXを接続します。図はJust Push Buttonsのサイトからの引用です。5V仕様のArduinoでしたら、ロジックレベルコンバータが必要です。

接続した状態で

minicom -b 9600 -o -D /dev/ttyAMA0

を起動し「1」を入力するとArduino上のLEDが光り、「0」を入力すると消えます。minicomはCtrl-A Qで終了できます。

Just Push Buttonsでは、さらにRaspberry Piにpython-serialをインストールして、Pythonスクリプトからシリアル通信させるところまで紹介しています。私の環境でもPythonからArduinoに通信できましたが、せっかくなので前回に書いた電流センサの値を読み取るプログラムと組み合わせるところまで試して次回に紹介したいと思います。

|

« USBケーブルで充電が終わったことを検知する | Main | Raspberry PiでTwitter Botを作る »

Arduino」カテゴリの記事

Raspberry Pi」カテゴリの記事