Visual Studio で ESP32 プログラミング

 BT Stack 作りは外人さんが頑張ってるぽい のですけど、どうも BLE(いわゆる BT4.0)をターゲットにしてるような雰囲気でして、いわゆる Classic BT を使いたいと思ってる自分としては、(できるかどうかは別にして)https://github.com/bluekitchen/btstack の移植にチャレンジしないといけないなぁと思っております。
→ESP32 Core の BT.h を見る限り、ベースは 2.0/4.0 の両方に対応してそうな気がする


 プログラミングは、Arduino IDE でもいいのですがディープな作業をするにあたっては、お世辞にも使い勝手が良いとはいえません。エディタにコンパイル機能が付属しただけくらいですからね。
 特に私のように、Arduino 歴が短く、メソッド名が頭に入ってない身には非常に厳しいものがあります。


 そこで! MicrosoftVisual StudioIDE に使ってみようと思います。
 ネットを探すと ESP8266 で使われた形跡はいくつか見つけましたが、ESP32 の例は見つけられず。
 Arduino 繋がりだしきっと使えるはず・・・で試してみたら、ばっちり使えてしまったのでメモ残します。




 まず、Arduino IDE をインストールして、それで開発が出来る状態にします。
(わからない方は 準備編 をどうぞ。実験するための回路図も載せてます)


 次に Visual Studio を準備します。
 バージョンは 2012〜2017(2017 は現時点で RC 状態だが)に対応しているみたいで、バージョン番号が大きくなるにつれて高機能にはなりますが動きも格段に重くなっていきます。
 C#VB.NET の開発をするならともかく、Arduino の開発に使う分には「高機能」の恩恵には預かれず、私の工作机に常置しているパソコンが LIVA(+秋月 IGZO パネル)と低スペックなため、VS2012 を選択しました。


 低スペック機にとっては重いですが、VS2015 は Pro相当の Community Edition が無償公開されているので、これを使ってみる手もあります。
(趣味で使う程度なら無償だが、無償には条件があるので商用利用を予定される方は注意)


 Visual Studio のインストール時に C++ が選択されていることを確認します。
 古いバージョンだとデフォルトでオプションてんこ盛りで不要なものを外したほうがいいくらいですが、VS2015 だと C++ のチェックは外れているので「カスタム」を選択したうえで手動でチェック入れる必要あります。


http://dl.ftrans.etr.jp/?9720dccf0f6b409b84401dbf58bb9323a3f7832a.png http://dl.ftrans.etr.jp/?279cbf2019f442ee9ac973273900238008768aa4.png


 インストールが終わったら、Visual Studio を起動し「ツール」の中の「拡張機能と更新プログラム」をクリック、左側が「オンライン」になってる状態で右側の検索ボックスに「Arduino」と入れて検索してやると「Arduino IDE for Visual Studio」が出現するので、こいつをダウンロードし実行します。


http://dl.ftrans.etr.jp/?e51e16f6ee394f44814eb2d41824456b3c610aff.png http://dl.ftrans.etr.jp/?5419d08e5a69412b9cd50a66272cedfb62a597b0.png
http://dl.ftrans.etr.jp/?ecf2e4cb2ad5440a899cdbb0c1c1495602757214.png http://dl.ftrans.etr.jp/?43c71ddb9c7d4342b220d3d21ed3d164e1364daf.png


 指示されるとおり Visual Studio の再起動をかけると初回に設定画面が現れますが、ESP32 で遊ぶだけならばデフォルトのまま(下2つは空白のまま)で大丈夫なようです。
 先に作った Arduino IDE 環境のを自動的に引っ張ってきているのもしれません。


http://dl.ftrans.etr.jp/?d2b25fc3463d4be48f745f4a65d459a7873623e7.png http://dl.ftrans.etr.jp/?b08d0c9ea0af4f438b22093def601c6fe4e9f617.png


 「新しいプロジェクト」や「開く」に Arduino Project が選択できるようになってます。
 あとは細かいところをゴチョゴチョするだけ

ボードは ESP32 Dev Module を選択 書き込み COMポート を選択 シリアルモニタ COMポート の選択
http://dl.ftrans.etr.jp/?a192322a3454482690dc118b1cbd50036c91d5c1.png http://dl.ftrans.etr.jp/?4fcc1cc6150a4d08b046dbd7a9c8972d50149979.png http://dl.ftrans.etr.jp/?1eb8255e5c434f38bac922ab083b44eabb19599b.png

 ここまでは説明用に VS2015 でスクショ撮り直して掲載してます。
 以下は実機の VS2012 環境なので、画面が僅かに違います。

 インテリセンスは感涙もので、一度でも使い始めたら止められないと思いますよ〜
 副作用として、なかなかメソッド名が覚えられなくなりますが・・・


http://dl.ftrans.etr.jp/?551b2e1816384d2ab5e5c4155f54a5b4f8df5720.png http://dl.ftrans.etr.jp/?005f895036ca44c3bde07bff0bf452d808fae239.png


 ヘッダーファイルの中身は簡単に見えるし、定義の実体を参照したり飛んだり、およそ必要な機能は全て備わってると言って過言じゃありません。
 とにかく、ここぞというところで右クリしまくってみてくださいな。


 書き込み&実行もバッチリ
 スイッチ押しながらON(またはリセット)という ESP32 側で必要な作法は Arduino IDE と一緒です。


http://dl.ftrans.etr.jp/?1da19ee639de46b59957de19ee00cb4dd72655b8.png


 開発元に「お布施」するとデバッグ機能が強化されるみたいですが、私は本職じゃないので Serial.printf で十分(笑)
 なんとか BT-SPP だけでも実現したいですねー
(目下 HCI・ACLプロトコルを勉強中)