hogehoge, world.

米国カリフォルニアのソフトウェアエンジニアがIT・自転車・音楽・天体写真・語学などについて書く予定。

Raspberry Pi 3でArduino開発

最近Arduino & ESP8266開発について外で説明する機会がしばしばあって、開発環境のデモ用に自分の古いノートPCを持ち歩いていたのだが、これがどうも遅くて調子がよろしくない。一方で、買ってはみたものの、どう活用しようか考えあぐねているRaspberry Pi 3が手元にある…というわけで、このRPi3をArduinoデモ用モバイルPCにすることにした。

ちなみに、ポンド安に乗じて Pimoroni にRaspberry Pi Zeroを注文し、届くのを待っていたりする。個人的にはRPi3よりこちらの方が楽しみだ。

ハードウェア

これからRPi3を買おうという人の参考に。

 ソフトウェア

Arduinoのセットアップはこんなノリで。apt-getは使わない。

  • OS:
    普通にRaspbianをインストール。日本語環境もググって適当に作る。
  • Arduino:
    本家ダウンロードページから最新版(現時点で1.6.9)のLinux ARM版をダウンロードして適当なところに展開、install.shを叩く。
    • "sudo apt-get install arduino" でインストールするとやたら古いの(1.0.x)が入ってしまった。これはボードマネージャーに対応しておらずESP8266アプリを作るのがめんどくさいので即座にアンインストールした。
    • Linux ARM版は "(experimental)" と添え書きされているので品質悪いのか?と思いきや、特に問題はないようだ。
  • ESP8266用Board Manager、各種ライブラリ:
    Arduinoの機能を普通に使って普通にインストールできる。
  • emacs:
    スケッチ外の、所謂ライブラリを編集するのにちゃんとしたプログラミング用エディタが必要。

Arduinoとの接続および通信

デスクトップPCとまったく同じようにUSBで接続できる。GPIO上のUARTは忘れておく。

  • Arduino NanoとはUSBで直接、ESP8266とはUSBシリアル変換モジュールを通して、普通のデスクトップPCと同様に接続できる。ポート名は /dev/ttyUSB0 等。プログラム書き込みもアプリケーションとの通信もすんなり。
  • ESP8266との接続は、GPIOに出ているUARTに直接配線すればUSBシリアル変換モジュールが不要になるのか?と思いきや、うまくいかなかった。
    • RPi3ではRPi2と異なり、 /dev/ttyAMA0 がUARTではなくBluetoothのシリアルポートになっているらしく、このへんがストレートに動かない理由かもしれない。
    • まぁUSBシリアル変換モジュールの方が抜き差しが楽で、無理にUARTを使う必要もないので放置。

アプリケーションのコンパイルと動作

  • LinuxファイルシステムWindowsとは異なりcase-sensitiveなので、Windowsでは通っていた#includeが英大小文字のズレでコンパイルエラーになるかもしれない。注意。
  • コンパイルCore i7のデスクトップよりは遅いが(笑)、Core2 DuoのノートPCよりは速い。I/Oがflashなのはいいね。
  • ESP8266アプリケーションにmDNSレスポンダを仕込んでおくと、RPi3から "host名.local" と呼べば名前解決がすんなり通る。 /etc/nsswitch.conf を見ると、RaspbianはデフォルトでmDNSを使って名前解決を行うよう設定されているのね。

…と、それらしいArduinoデモ用モバイルPCができあがった。あとは http://openhantek.org/ を入れてオシロスコープに対応したいところ。