2018年10月6日土曜日

esp-wroom-02にEsp-Linkを導入する

どうも皆さんこんにちは、二連続で記事を書いているmokerです。

さて、タイトルの通り、Esp-Linkを導入してみようというお話です。
全然日本語のソースが見当たらないので一応書いておきますが、英語読めるならそっちの方がいいと思います(当然ですが)。
ESP-WROOM-02のファームウェア書き換えは電波法に抵触する可能性も指摘されていますので、実行は自己責任でお願いします。


esp-linkについて

次のようなことが実行可能だそうです。
  • ESPのシリアルをwifi経由でいじる。
  • Wifiを用いて、ESPのシリアル経由でAVRなどにプログラムを書き込む。
  • HTTP経由でアップロードしたプログラムをESPに接続されたAVRに書き込む。
  • 接続されたマイコンをインターネットへ接続させる。
  • 接続されたマイコンをwifi経由で操作するUIとなる(一部未実装)。
今回は主に上2つを実行するために書き込んでみました。

全体としては、結構ドキュメントもしっかりしている上に、バイナリも提供されていてかなり扱いやすいと思います。
ただ開発環境がオフィシャルの提供してるやつで、arduino ideとかで製作されてるわけではないので、そこがちょっと僕にとってはいじりにくいポイントです。


書き込んでみる


基本的にはFLASHING.mdを読んでその通りに実行すればうまくいくと思います。
久しぶりにファームウェアの書き換えやったのでそのメモも含めて残しておきます。
環境はWindows10です。

①ダウンロード

リリースからバイナリをダウンロードします。
ダウンロードするのは、source codeではなく、esp-link-v3.x.xx-xxxx.tgzみたいなやつです。
編集時点ではトップに乗っているのがアルファ・リリースだったので注意してください。

②展開

Windowsでtgzを扱う場合、何が正攻法なのかよくわかりませんが、僕は7zipを使って展開しました。多分いろいろソフトがあると思うので適当に選んでください。

③ESPの接続

ESPをシリアル・アップロードモード(実行モードじゃなく)に設定したうえで、PCに接続します。詳しくはこちら:https://ht-deko.com/arduino/esp-wroom-02.html

④書き込みソフトの立ち上げ

ArduinoIDEにespをインストールしている以上、どこかにesptool.pyがあるとは思うのですが、探すのも、コマンドオプションを調べるのもめんどかったのでGUIツールを公式からダウンロードしてきます:https://www.espressif.com/en/support/download/other-toolsの「Flash Download Tool」
起動して、esp8266を選択。

⑤書き込み

オプションは下の通り。
それぞれダウンロードしてきたバイナリファイルと、書きこむ番地を選択します。
  • boot_v1.x.bin : 0x00000
  • blank.bin : 0x3FE000
  • esp_init_data_default.bin : 0x3FC000
  • user1.bin : 0x01000
あとはFlashsizeを自分のやつ選んで(ぼくは32mbitでした)STARTをクリック。

⑥再起動

ESPを実行モードにして、再起動。そうするとwifiのAPに出てくるはずです(なぜか僕の場合は、前回書きこんだwifiの設定がそのまま残ってました)。
ipconfigとかでAPのIPアドレス調べて、そのアドレスをブラウザで開きます。
esp-linkというタイトルのページが出てくればオーケー。

というわけで導入編はこんな感じです。そのうち使ってみた感想を別記事で書くと思います。

Arduinoでシンボリックリンクをライブラリとして使う(Win10)

みなさんお久しぶりです、Mokerです。
忙しさも少し落ち着いたので前回の続きを書いていきたいと思います。

さて今回書くのはタイトルの通り、win10においてシンボリックリンク経由でライブラリを参照できるよっていうお話です。

前回書いた通り、Arduinoでは原則としてライブラリは、ソフトウェア全体で共通のディレクトリか、そのプログラムと同じ階層のsrcフォルダの下(直下でなくてよい)に配置する必要があります。
しかし、この仕様はプロジェクトごとにライブラリを分けたいという場合に少し不便です。
なぜなら、プロジェクトフォルダに共通のlibフォルダを作っても、Arduino側から参照できないからです。

そこで、解決策として今回発見したのがシンボリックリンクを作るやり方。
プロジェクトのlibフォルダに対するシンボリックリンクを.inoファイルと同じ階層に「src」という名前で作っておくと無事参照することができます。

シンボリックリンクの作り方かたは次を参考にしました:http://www.wannko.net/windows10/etc/sinlink.html
うちの環境では、シンボリックリンク作成の際に管理者権限を要求されました。

これでArduino全体のlibフォルダを汚染することなく、プロジェクト全体でlibを共有することができるようになりました。
もしかしたら、srcという名前のシンボリックリンクを直接作るのではなく、srcというディレクトリを作っておいてその直下にcommonとかいう名前でシンボリックリンクを作る方が使い勝手がいいかもしれません(未検証)。

というかArduino用のプロジェクト管理ソフトって何かお勧めないですかね・・・?