Raspberry Pi から Arduino へ書き込みできるようにしたので手順書として。
どちらもまだまだ初心者です。
*nix に慣れている方であれば特に詰まることなく作業できるかと思います。
こちらを参考にさせていただきました。
[Raspberry Pi で Arduino のスケッチを書き込む (魔女の一撃)] (http://s-edword.hatenablog.com/entry/2017/02/12/005621)
GUI を使う方はもっと楽な方法があるようです。。。
[Raspberry PiにArduino IDEをインストールする方法 (kosakalab)] (https://make.kosakalab.com/make/electronic-work/inst_arduino-ide_raspi/)
実行時の環境
- Raspberry Pi 3 Model B+
- Raspbian 9.4 (stretch)
- [Arduino 互換機] (https://www.amazon.co.jp/dp/B06Y5TBNQX)
Raspberry Pi の準備
必要なもののインストール
- arduino
$ sudo apt-get install arduino
- python-pip
$ sudo apt-get install python-pip
実行時の環境ではもともと入ってました。 - platformio
$ pip install platformio
PATH を通す
platformio コマンドを実行しやすいよう、予め PATH を通しておきます。
$ export PATH=${PATH}:/home/pi/.local/bin
PATH が通ったか確認し、次回ログイン時は勝手に PATH が通るようにします。
$ which platformio
$ echo 'export PATH=${PATH}:/home/pi/.local/bin' >> ~/.bashrc
※which コマンドの結果、見つからなかった場合は platformio が上記とは別の場所にインストールされています。
次のコマンドで見つけ出しましょう。
$ sudo find / -type f -name 'platformio'
Arduino を Raspberry Pi に接続する
USB 接続したら次のコマンドを実行します。
$ lsusb
Raspberry Pi が Arduino を認識していれば次のような結果が表示されます。
今回の例では Bus 001 Device 006 に Arduino として認識されていることがわかります。
pi@raspberrypi:~ $ lsusb
Bus 001 Device 006: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 004: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $
platformio を使って書き込みを行うためには Arduino のデバイスを指定する必要があります。
Raspberry Pi が認識しているデバイスの場所は下記コマンドで確認しておきます。
$ ls /dev/ttyA*
次のような結果が表示されます。
今回接続した Arduino は /dev/ttyACM0
ということがわかりました。
このあたりは環境、特に使用している Arduino または Arduino 互換機によって変わるかもしれません。
pi@raspberrypi:~ $ ls /dev/ttyA*
/dev/ttyACM0 /dev/ttyAMA0
pi@raspberrypi:~ $
platformio を使ったスケッチの書き込み
プロジェクトを作成する
プロジェクトを作成するディレクトリを作成します。
$ mkdir arduino-led
プロジェクトのディレクトリへ移動します。
$ cd arduino-led
おもむろにプロジェクトを構築します。
$ platformio init --board=uno
以降はこのプロジェクトのディレクトリで作業を進めて行きます。
Arduino の場所を設定ファイルに追記する
platformio.ini
には Arduino への書き込みに必要な設定情報が保存されています。
次のコマンドで Arduino の場所を設定ファイルに追記します。
$ echo 'upload_port = /dev/ttyACM0' >> platformio.ini
追記できたか確認してみましょう。
最後の行に upload_port = /dev/ttyACM0
と記載されていればおっけーです。
$ cat platformio.ini
スケッチを書く
スケッチはプロジェクトディレクトリの中の src
の中に保存します。
作ったばかりのプロジェクトでは src
ディレクトリは空っぽです。
好きな名前でスケッチを作ることができます。
$ vi src/arduino-led.ino
L チカするためのプログラムは次のものを使いました。
正しく動けば1秒おきに LED がチカチカします。
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
これですべての準備が整いました。
Arduino にスケッチを書き込む
それでは Raspberry Pi から platformio を使って Raspberry Pi へ書き込みましょう。
次のコマンドで書き込むことができます。
$ platformio run --target=upload
初回は必要なコンポーネントのダウンロードが行われるので多少時間がかかります。
どうでしょうか、LED は無事チカチカしましたか?