ともかつの日記

仕事や日常で扱った PIC などのマイコンや Raspberry Pi、パソコンについて書き残していきます。

ESP-WROOM-02 を用いたコントローラ

先日の A/D 変換をもとにして、Wi-Fi で通信するコントローラを作ってみました。 

f:id:VEJ00675:20180123202739j:plain


ESP-WROOM-02 を用いたコントローラ

プログラム(子機:コントローラ側)

子機は、

WiFi.mode( WIFI_STA );

Wi-Fi のアクセスポイントに接続していますが、プログラム中に接続するアクセスポイントの SSID を記述していません。接続可能なアクセスポイントのうち、WiFi.encryptionType が ENC_TYPE_NONE となっている暗号化なしのアクセスポイントに接続します。現状で暗号化されていないアクセスポイントは ほぼ 存在しないでしょうから、この条件を満たしているアクセスポイントは ESP-WROOM-02 によるアクセスポイントであろうと考えるからです。 ※このロジックで不都合があれば、両方のプログラムで SSID を指定すればいいはずです。SSID が “ESP” ではじめるアクセスポイントに接続するようにしました。

基本的には、コントローラ上のアナログジョイスティックは、↓ の記事で作成した MCP3204 を用いた A/D 変換を行っています。↓ の記事との違いは、以下の通りです。

  • 前述したアクセスポイントの検索
  • タクトスイッチによるボタンを 2つと動作状況を示す LED を追加
  • アナログジョイスティックとタクトスイッチの状況を UDP で送信

tomokatsu.hatenablog.com

プログラム(親機)

現時点では、親機のプログラムは子機から UDP で送られてきたデータを受信して、LCD に表示しています。LCD の 2行目に表示されている 3文字が、コントローラの状態です。1文字目が左右、2文字目が上下、3文字目がボタンの状況を表しています。

itpro.nikkeibp.co.jp

上の記事でも説明されているように、UDP で送信しているので、データの欠落があるかもしれませんが、子機からはひたすらに状態が送られてきます。親機では、それを精一杯受信して、処理しています。

本当は、このデータを使って、何かしらの動作をすればいいのでしょうが、現時点では表示しているだけです。(^-^;

まとめ

これまで、このような無線通信を行う場合には、XBee + PIC で行っていました。しかし、ESP-WROOM-02 を使った方が安価で手軽にできるような感じです。具体的には、

  • XBee のモジュールは 2,500円だが、ESP-WROOM-02DIP 化キットで 650円と安価。
  • XBee は通信機器であり、プログラムは別途マイコンを必要とするが、ESP-WROOM-02 は単体で通信とプログラムを行える。
  • XBee の通信に比べて、ESP-WROOM-02Wi-Fi による通信の方が高速。

といった感じ。こんな状況じゃ、もう XBee を使いたいとは思わないな...