hogehoge, world.

米国カリフォルニアのソフトウェアエンジニアがIT・自転車・音楽・天体写真・語学などについて書く予定。

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (6) ~ 続・電源の話

前回「USB給電でESP-WROOM-02は動かない」と書いたが、改めて確認してみたらちゃんと動いた。最初試したときは回路が何か間違っていて余計な電流が流れていたのかもしれない。

USB変換モジュールに出てる+5Vのピンを、スイッチングレギュレーターまたは三端子レギュレーターを通して降圧、ESP-WROOM-02電源につなぐ。この状態で、起動・ATコマンドによる基本WiF動作・HTTPによるLEDとFETの駆動あたりまで確認した。

f:id:tomoto335:20160515124617p:plain

続きを読む

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (5) ~ 電源とUSBシリアル変換モジュール

さてそろそろESP-WROOM-02の話に入ろう。まずはこれがなくては始まらない、電源USBシリアル変換モジュールについて。

買いたてほやほやの状態のESP-WROOM-02には、シリアル通信で対話的にコマンドを送ってWiFI機能を動かすことができるプログラムがあらかじめ書き込まれている。まるで昔のモデムのようなノリで、実際ここで使われるコマンドはそれらしく「ATコマンド」と呼ばれている。最終的には自分でプログラミングするつもりであっても、ESP-WROOM-02を買って来たら、まずはこれを叩いて動作確認をするのが常套手段である。そのために最低限必要なのは、電源と、PCと通信するためのUSBシリアル変換モジュールである。

続きを読む

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (4) ~ OSなしのプログラミング

前回Arduinoのソフトウェア開発はOSなしで実行されるC++プログラムを書くこと」と述べた。この「OSなし」が何を意味するのか、やったことのない人にはピンと来ないかもしれないので、簡単に説明してみたいと思う。

OSのある世界では、PCが起動するとブートローダーがまずOSを読み込んで実行し、次にOSがアプリケーションをファイルから読み込んで実行する。これがArduinoだとブートローダーが直接アプリケーションを読み込んで実行する。つまり普段空気のように当たり前に存在しているOSによるサポートを当てにせずにアプリケーションを書かねばならない。具体的には次のような違いが現れることになる。

続きを読む

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (3) ~ Raspberry Piとの違い

もうしばらくArduino一般の話を続けよう。よくArduinoRaspberry Piはどう違うのか?という質問をされるので、その観点でArduinoの特徴を説明してみたいと思う。

Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab

続きを読む

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (2) ~ まずは普通のArduinoから

マイコンArduinoの世界に初めて触れる人は、ESP-WROOM-02の前にやはり普通の(authenticな)Arduinoを少し触っておいた方がいいと思う。詳細は後述するが、ESP-WROOM-02は使う前に次のようなお膳立てが必要であり、いきなりだとトラブったときに問題の切り分けが難しくなるかもしれない。

  • ちょっとした電源回路が要る
  • PCに接続してプログラムを書き込むのにちょっとしたパーツが要る
  • Arduino開発環境にちょっとしたプラグインやライブラリを入れる必要がある
  • 入出力信号が5Vではなく低めの3.3Vである

ノーマルなArduinoなら本体にUSBケーブルを直接挿すだけで起動し、素のArduino開発環境からすぐさまサンプルプログラムを流し込んで動かすことができる。解説サイトや解説本も豊富で、調査やトラブルシュートのための情報には事欠かない。まずはこれでLEDチカチカやセンサーで一通り遊んでみて、ハードウェア部分・ソフトウェア部分ともに基礎を理解しておくのがおススメである。

続きを読む

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (1) ~ はじめに

ESP-WROOM-02というWiFiモジュールがある。たったの650円で手に入り、触ってみるとこれがなかなかおもしろい。

Wi−Fiモジュール ESP−WROOM−02 DIP化キット: 無線、高周波関連商品 秋月電子通商 電子部品 ネット通販

f:id:tomoto335:20160508013220j:plain

WiFiモジュール」とは一体何のことだかわかりにくいかと思うが、蓋を開けてみると「Arduino互換マイコンWiFi機能が付いたもの」である。

  • Arduinoというのは「誰でも簡単に組み込みソフトウェアの開発ができる」ことを目指した開発プラットフォームである。Arduinoマイコン(または互換機)を買ってきて、PC上のArduino開発環境からプログラムを書き込めば、LED・モーター・センサーなどを制御するシステムが簡単に作れてしまう。
  • ESP-WROOM-02は、これにWiFi機能が付いて、アクセスポイントに接続したり、あるいは自らがアクセスポイントになってPCやスマフォと無線でTCP/IP通信できるハードウェアである。
* * *

百聞は一見に如かず、ということで実例をお見せしよう。下の動画はWiFiを通じたHTTPリクエストでクマーを動かすシステムである。

  • 左下にあるESP-WROOM-02がHTTPサーバとして動作しており、HTTPリクエストとしてやって来るREST風コマンドにクマーが反応する。
  • 既存のWiFiアクセスポイントに参加することも、自身が単独のWiFiアクセスポイントになることもできる。WiFiの設定もHTTPでスマフォ等から行う。
  • 冒頭の写真は本クマーシステムのブレッドボードそのものである。

ちなみに、本クマーシステムは実際のソフトウェア開発現場でバグ報告やバグ修正の通知に使用され、殺伐としたソフトウェア品質保証行程に癒しを与えるという実績を上げている。

もうひとつ、こちらは同様にHTTPコマンドで回転灯を点灯させるシステムである。

f:id:tomoto335:20160508014255j:plain

これも実際のソフトウェア開発現場でCI(Continuous Integration)におけるビルド失敗通知に使用されており、「コラー、変なソースをチェックインしたヤツは誰だ!」「すいませんすぐ直します!(くそぅ回転灯のおかげで速攻ばれちまったぜ…)」と開発生産性向上に貢献している。*1

* * *

ここで個人的には、こんなArduino+WiFiを備えたモジュールがたったの650円で手に入るというのは、我々生粋のソフトウェア屋が組み込み分野に足を踏み出すという文脈において、かなり革命的なことではないかと思うわけである。

Arduino単体だと、LEDチカチカやセンサー読み取りのような実験レベルのものは驚くほど簡単に動かせてしまうのだが、いざ意味のあるアイディアを実現しようとするとこれがなかなか難しい。スタンドアロンなシステム(自律的に稼働する車とかロボットとか)を作るにしろ、PCに接続して使う外部デバイスとのインタフェースを作るにしろ、制約が厳しくアイディアを選んだり、ソフトウェア屋としてのスキルセットが活かしにくかったり、結局のところ「意味がある」と言えるレベルに到達するためのハードルは数も高さもそれなりにあるのである。

ところが、WiFiTCP/IPまでデフォルトで使えるとなると話は大きく変わって来る。デバイスから公開のWebサービスに直接アクセスしたり、親機やスマフォと普段使い慣れた方法で連携したり、我々ソフトウェア屋の得意な領分でアイディアをかたちにする余地が大きく広がる。またWiFiというどこにでもあるインフラを使えるので、設置場所を選ばず応用範囲が広くなる。しかも安いので、多数集めての連携もできるし、思い切った実験で壊しても惜しくない。ソフトウェア屋の技術や発想の基礎はそのままで、アイディアをかたちにしてくれる強力な「おもちゃ」が手に入ると言える。

例えばこの「天気予報サービスから情報を取得して色が変わる雪だるま君」は、この特性をうまく活かした、可能性を感じさせる好例と言えるだろう。

というわけで、これを自分だけの楽しみにしておくのはもったいない、特にアイディアを持っている人には是非実現手段の引き出しのひとつとして持っていてもらいたい、とこのような書き物をすることにした次第である。

ただし、ArduinoESP-WROOM-02の入門記事は既に秀逸なものがネット上に幾つも書かれているため、私が今更同じことを繰り返す意義はない。私は、私自身が辿った道筋や、私自身が発見した(ネット上にあまり情報がない)事柄を中心に紹介していきたい。基本的な事項が抜けてるなぁと思われた読者は、まずは適当なキーワードでググってもらい、それでも情報がなければコメントで質問いただければと思う。

*1:なお現在使われているのはWiFi版ではなく有線の版である。