ESP-WROOM-02やESP32でメッシュネットワークを構築できると分かったので色々試していたんですけど、painlessMesh というのが一番楽に構築できました。
Arduino Core を使えるのでプログラムも作りやすいです。
このライブラリを使ってゲートウェイを作るには色々面倒くさそうだったので自分なりに解釈して自分ができる範囲でつくってみました。
スポンサーリンク
そもそもメッシュネットワークって何がいいの?
普通のWi-Fiは電波の届く範囲は限られていますので、中継機を使って接続できる環境を広げます。
それで隅々まで電波が届いたらいいのですが現実的には難しいこともしばしば...
大量に中継機を設置したらいいですが、こちらもコスト的に厳しいこともあります。
あとはSIMをつけてどこでも3GやLTE回線で接続できたらいいですけど、規模が大きくなりますしコスト的にもあまり...
そこでメッシュネットワークです。
メッシュネットワークであればWi-Fi環境下でなくても、近くのノードと通信できればバケツリレー形式でデータを目的地まで運ぶことができます。
1つだけインターネットにつながるところ(ルートノード)を作っておけば、他はインターネットにつながらなくても情報をルートノードまで持ってこれれば問題ありません。
また、どこかに障害が起きてしまっても代替経路を確保してくれるので障害にも強いです。
painlessMeshライブラリ
冒頭で書いたpainlessMeshはESP32とESP8266(ESP-WROOM-02)で使える Arduino Core のライブラリです。
特徴はなんと言っても"painless"、「痛みなく」簡単にメッシュネットワークの構築が可能です。
なんとなくサンプルスケッチを書き込むだけで構築できたのは感動です。
ESP32で実装できますし、ESP8266(ESP-WROOM-02)でも動くのは感動です。
ただゲートウェイ(メッシュネットワークと他のネットワークを中継するところ)を作るのはちょっとややこしいので注意が必要です。
上記のページに書いているのですが、ゲートウェイを作る方法として5つ挙げられています。
英語が苦手なので合っているか分かりませんが。
- 2つのデバイスを使ってシリアル通信でデータをやり取りする。
- リスナーとつなげる。メッシュネットワークプロトコルを理解する必要がある。
- Raspberry Pi などをリスナーとして使って、違うネットワークとつなげる。ただし、Raspberry Pi 側に2つのWi-Fiデバイスが必要。
- MQTTクライアントとして使う。
- APモードだけを使って構築。ただしかなり注意が必要でESP8266WiFi.hも使えないみたいです。
ゲートウェイをつくる
上記の方法で無難なのは1.と4.だと思います。
4.のMQTTであれば1つのデバイスで済むのですがMQTTで接続する機会があまりないため採用せず、2つのデバイスを接続してそれぞれをシリアル通信することにしました。
ESP32であればハードウェアシリアル(UART)を3ch持っているのでこのあたりは楽に構築できます。
これくらいであれば私でも簡単に作れると思ったので基板も作ってみました。
贅沢な使い方ですが、現時点ではベストなんですよ...
SDカードは上位ネットワークと接続できなかったときのデータバックアップ用につけておきました。
プログラムの書込みは ESP Programmer でおこなうようにしているので、最小限の構成になっています。
スポンサーリンク
この構成にすれば1つはメッシュネットワークからデータを収集して、もう1つはインターネットに接続してサーバなどデータを送信できます。
ケースはタカチのPFシリーズを使っています。
「ネットワークケース」という名前で作っているものにマッチしていますね。
ESP32のメッシュネットワーク(ESP-Mesh)
実はEspressifが出しているESP32を使ったESP-Meshというのもあるんですけど、こちらであればもっとシンプルに構築できるかもしれません。
こちらはESP-IDFでのみ対応という感じで万人受けしない感じなのですが。
分かる人にはESP-Meshで事足りますし、こちらのがシンプルでいいのですが、私は分かりません...
いろんなところからデータを収集したいのであればメッシュネットワークはいい選択だと思います。
ESP32やESP8266のモジュールがあればすぐに構築できますので、ぜひ試してみてください。
スポンサーリンク
Leave a Comment