はじめに
この記事はこれからArduinoをつかった電子工作を始めたいという方や, プログラミングを始めてみたいけど 漫然と言語の勉強をするのは嫌だ という方向けに書いております.
プログラミングを目的に据えてしまって, 途中で挫折してしまうような後輩や友人を何人か見てきたので, 「Arduinoを動かす」という目的に対する, 手段としてのプログラミングを紹介できたらいいかな なんて考えて書いてます.
この記事では環境構築をメインにしています.言語編は完成次第公開します.
環境
- Arch Linux(スクリーンショット等は著者環境のものです.Windowsのものも追加しました.)
- Visual Studio Code
- Arduino Nano(ここでは互換品についても触れます.また,プログラムについてはArduino Uno等でもある程度共通です)
- Platform IO(VSCode拡張機能)
用意するもの
インストールするもの
Visual Studio Code
公式サイトで自分の使っているOSにあったものをダウンロードし,インストーラに従ってインストールを進めてください. もしくは,Linuxのパッケージマネージャを使い,
yay -S visual-studio-code-bin
というふうにインストールしても良いでしょう.(例はArchLinuxの場合)
日本語化については, 他記事で詳細に解説されているでしょうから, ここでは省きます.
PlatformIO
VSCodeの拡張機能よりインストールします.
四角が集まったような, 上から5つめの赤丸で囲まれたアイコンで「拡張機能」タブを開き, 黄色い矢印で示された検索窓に platformio
と入力します.
おそらく上の方にPlatformIO IDE
と書かれた拡張機能が出てくるかと思うので, そちらをインストールします.
インストールすると, 右下にぴょこって下の画像のようなメッセージが出てくると思います.これは「Pythonのポータブルインタプリタをダウンロードしています」となっていますが, いくつか必要なものをダウンロードしてインストールするようです.PlatformIOを導入したあとはしばらくオンラインに保ってこれらのパッケージが揃うまで待ちましょう.
必要なものが揃うと,次の画像のような表示がでてきます. 「Reload Now」をクリックするとVSCodeが再起動します.
これで, PlatformIOはインストールできました. 再起動後, VSCodeの左下に家のアイコンがあり, それをクリックすると下のようなPlatformIOのホーム画面が開くかと思います.
これでPlatformIOのインストールはOKです.
シリアルドライバ
こちらの項は, 安い互換品のArduino Nanoなどを買ったときに, CH340という安いUSBシリアルチップが載っている場合の手順です.
純正品をご購入の方は読み飛ばしてください.
Windowsの場合
Windowsの場合は,互換Arduinoをつなぐと, デバイスマネージャー(左下のWindowsアイコンを右クリック→"デバイスマネージャー")に画像のようにでてくると思います.("COM3"の部分は環境によって違うかもしれません)
ドライバを入れないと, Arduinoとのデータのやり取りができないので, ドライバをインストールします. "CH340" でググってみると,
天下の秋月電子通商さんのページがトップにでてきました. このページ にある"ドライバーソフト"のリンクからzipファイルをダウンロードします.
ダウンロード後, 解凍すると,CH341SER
と INSTALL
の2つのディレクトリがあります.このうち, CH341SER
の中にある SETUP.EXE
ファイルを実行し, でてきた画像のようなウィンドウでINSTALL
をクリックすることでドライバのインストールが完了します.
Linuxの場合
Linuxを使っている場合, ググって出てくるインストール用のドライバソースファイルのアーカイブでは上手にビルド出来ず, インストール出来ないという沼に陥ります. 公式にドライバのソースコードが作られたときのヘッダファイルが, 新しい現在のバージョンのLinuxカーネルには無いようなのです.
それでも, 諦めが悪くて貧乏で純正が買えない僕は, LinuxでなんとしてもやっすいArduino互換を使いたかったので探し回りました. ありました. すばらしき人類の英知 OSSの宝庫, GitHubに.
https://github.com/juliagoda/CH341SER
これがあればあとは早いです. ターミナル上で
sudo pacman -S arduino arduino-docs avr-binutils avr-gcc avr-libc avrdude #必要なパッケージをインストール
git clone https://github.com/juliagoda/CH341SER #Gitレポジトリをクローン
cd CH341SER #クローンしたディレクトリに移動
make #コンパイル
sudo make install #インストール
で使えるようになります.
Arduinoを動かそう
プロジェクトの作成
先程のPlatformIOのホーム画面の右側に, Quick Accessと大きく書いてある下, New Project
とあります. 新しいプロジェクトはここをクリックして作成できます.
クリックすると, Project Wizard
が立ち上がり,この中でプロジェクト名, 使うArduinoの種類, フレームワークを指定して, プロジェクトの保存先を指定します.
Boardは使うマイコンボードの種類で, 今回僕はArduino Nano(安い互換品)を使うので画像のように指定しています.各自使うものに合わせて設定してください.
LocationのUse default location
のチェックを外すと, 自分のPC内の好きなところにプロジェクトを保存できます.
それぞれ指定したあと, 右下のFinishでプロジェクトのディレクトリが作られ, VSCodeで開きます.
最初はしばらく待たされるかもしれません. プロジェクトのディレクトリが開かれたら,左側にプロジェクトディレクトリの中身が表示されています.プロジェクトのディレクトリには,
- .pio/ - 隠れて表示されないかも
- .vscode/ - これも隠れて表示されないかも
- include/ - 重要 意図して含むインクルードファイルが置かれる
- lib/ - 重要 自分でプライベートなヘッダファイルとかを記述したときにここに置く
- src/ - 重要
main.cpp
(一番メインのファイル)がここにある - test/ - ユニットテストやプロジェクトテストのためのディレクトリ
- .gitignore - Git(バージョン管理システム)の追跡対象外を定義するファイル.
- platformio.ini - PlatformIOの設定を記述するファイル.後で編集します
があります.まずはsrc/main.cpp
を開いてみましょう.(>srcのようになっているときはクリックすると展開されてvsrcのようになります)
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
といった風になっているかと思います.ここに次のように書き加えてみましょう.
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
//ここに設定を書きます.
pinMode(13,OUTPUT);//基板の上にあるLのLEDにつながっている13番ピンを出力にします
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH); //13番のピンの出力をHIGH(5V)にします
delay(1000); // 1000ms そのまま待機します
digitalWrite(13,LOW); //先程HIGHにした13番のピンをLOW(GND)にします
delay(1000);
}
コピペせずに打っていると,次のような補完が出てくることに気づくでしょう. 頭のいいVSCodeくんは途中まで書かれた内容から「これかな〜」ってのを出してくれるんですね.
Enterで青く選択されている候補が入力されます.べんりですね. 便利な機能を使いこなしながら入力したら,次はコンパイルします.
左下の家のマークで先程はHOMEを呼び出しましたが,その隣にチェックマークと右矢印が出ていますね.
これらのマークはそれぞれ,「コンパイル」と「書き込み」です.まずはチェックマークでコンパイルをします.文字が流れて,
===== [SUCCESS] Took X.XX seconds ===
Terminal will be reused by tasks, press any key to close it.
というような表示が下に出たら成功です.あなたの書いたプログラムはその通りにコンパイルされました.
コンパイルの次は書き込みですが, 書き込みの際にWindowsとLinuxでPlatformIOの設定が違います.
Windowsの場合
複数のArduinoをつないでいなければ, 単に右矢印をクリックで書き込みができると思います.
avrdude done. Thank you.
===== [SUCCESS] Took X.XX seconds =====
となれば書き込み成功です.
Linuxの場合
まず, LinuxのなかでArduinoがどこに置かれているか確認します.そして, 書き込みの許可を与えます.
ls -la /dev/serial/by-id #これでデバイスが表示されます.
#lrwxrwxrwx usb-XXXX_USB2.0-Serial-XXXX-port0 -> ../../ttyUSB0 というふうに表示がされると思います
sudo chmod 666 /dev/ttyUSB0 #ttyUSB0の部分は表示によって変えてください.書き込み許可を与えています
先程説明したplatformio.ini
ファイルを開いてください.
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
となっていると思います.このファイルの末尾に先程のchmod 666 XXXXX
のXXXXX
を思い出して,
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
upload_port = /dev/ttyUSB0
というふうに付け加えます. これでPlatformIOに「ここにArduinoがつないであるから書き込んでね」と伝えるわけです.
編集して保存したら, Windowsと同様に右矢印で書き込みが出来ます.
書き込みが出来たら,Lと書いてある端っこのチップLEDが1秒間隔で点滅を始めます.
おわりに
実はこのページの内容は, PlatformIOの公式チュートリアルの内容ほぼそのままなんです.より詳しい解説はこちらで見ることが出来ます.
「かさごでもわかる Arduinoで始めるプログラミング」は執筆中です. 完成したら公開します.
この記事は初心者が書いているので, ご意見, ご指摘等ありましたらコメントいただけると幸いです. 読んでくださりありがとうございました.