SpresenseでLチカから始める (1) Lチカは簡単か
●Arduino IDEでSpresenseを使えるようにする
Arduino IDEでスケッチがかけても、実際にコンパイルができない、コンパイルはするが正しく動作しないマイコン・ボードはいくつもあります。ソフト・シリアルやサーボ・モータのライブラリが思ったように動かないことがありました。ここでは、絶対に動くと思われるLEDの点灯を試します。
●対応ライブラリの導入
次に示す解説にそって、多くのマイコン・ボードの開発関連ソフトウェアをArduino IDEに追加するのと同じ手順でライブラリを追加します。
1. Spresense Arduino Library のインストールの仕方
使用環境はWindows 10です。Arduino IDEは1.8.5です。IDEの上部にあるメイン・メニューのファイルから環境設定をクリックします。環境設定画面の下のほうにある「追加のボードマネージャのURL」に、下記のURLを追加します。ほかのボードが書かれていたときは、「,」を入れてからコピペします。
https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/generic/package_spresense_index.json
OKでこの画面を閉じます。
メイン・メニューのツールから、真ん中付近にあるボード何がしをクリックして、ボードマネージャを開きます。
検索のところに「Spresense 」を入れ、見つかったら、More info付近をクリックすると右側にinstallボタンが出てくるのでクリックします。次の画面は既にインストールが終わった状態です。インストールは数分かかります。
●ボードのセットアップ
Spresense は、メイン・ボードを拡張ボードの上に接続します。メイン・ボードのI/O電圧は1.8Vと低すぎて通常のセンサなどを直接つなげられません。拡張ボードではロジック・レベルを5V(ジャンパJP1で3.3Vも可能)に変換してくれています。取り出せる電流は数mAと書かれているので、3mA程度と想像されます(デフォルトは2mAのようだ)。けれど、プルアップされているので、初期状態はHIGHなので、こちらで調べたようにArduino UNOとは異なります。ピンを初期設定するまでの短い間、リレーの駆動のように挙動が異なることを気にかける必要なアプリケーションもあります。
USB-シリアル変換デバイスはCP201xが使われています。CH34xと並んでよく使われるデバイスなので、ドライバが入っている方も多いでしょう。Windows 10ならば、初めてでも自動でインストールされる場合が多いです。
マイクロUSBケーブルでPCとつなぎます。電源配給確認はメイン・ボードの青色LEDです。
●Arduino IDEの起動
メイン・メニューのツールから、ボード-Spresense を選択します。
シリアル・ポートのCOMXX(利用者によって異なる。ここではCOM17)は自動で選択されるはずですが、選択されなかったので手動で選びました。
通常はこれでボードとシリアル・ポートの設定は終了ですが、資料によると、ファームウェアをアップデートするように説明されています。ツール > 書き込み装置 でSpresense Firmware Updater を選択します。
ツール > ブートローダを書き込む を選択します。これでブートローダとバイナリ・ライブラリがインストールされます。バイナリ・ライブラリはEnd User License Agreementに同意するとspresense-binaries-v1.0.000.zipファイルがダウンロードできます。
ダウンロードしたZIPファイルを、Welcome to Spresense Bootloader updaterの画面にドラッグ&ドロップします。
画面の下の黒字に赤い文字で進行している様子がわかります。
ブートローダの書き込みが終了するとリセットがかかります。
●Lチカのスケッチ
こちらの記事で使った電流制限抵抗入りのLEDを、12番ピンとGNDに挿しこみ、スケッチのBlinkを読み込みます。スケッチのなかで、I/Oポートを指定している LED_BUILTINを12に修正します。
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(12, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(12, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Arduino IDEの画面上にある「→」をクリックして、コンパイルとボードへの実行ファイルの書き込みを行います。Arduino UNOのようにTx/RxのLEDが点滅するようなギミックはありません。
1秒ごとに点滅したでしょうか。ディジタルI/O側のソケットにはシルク印刷が何もないので、Arduino UNOを横に並べて、ピン番号を間違えないようにしました。