Help us understand the problem. What is going on with this article?

CUI で Raspberry Pi から Arduino のスケッチを書き込む(platformio)

More than 1 year has passed since last update.

Raspberry Pi から Arduino へ書き込みできるようにしたので手順書として。
どちらもまだまだ初心者です。

*nix に慣れている方であれば特に詰まることなく作業できるかと思います。

こちらを参考にさせていただきました。
Raspberry Pi で Arduino のスケッチを書き込む (魔女の一撃)

GUI を使う方はもっと楽な方法があるようです。。。
Raspberry PiにArduino IDEをインストールする方法 (kosakalab)

実行時の環境

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 は無事チカチカしましたか?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした