ESP32Pingを使う(2021年梅雨)


1. はじめに

Ardino-IDEを用いてESP32でpingをするためには、ライブラリが必要なようです。今回は、ESP32Pingライブラリを試して見ました。ただ、Arduino-IDEに候補として上がってこなかったため、スケッチと同梱し(手動インストールせずに)利用しました。(この記事は2021年5月現在のものです。今後、Arduino-IDE上にpingライブラリの候補として上がるかもしれません)

2. ESP32pingライブラリをクローン

次のページからzipをダウンロードし展開します。(もしくは、このリポジトリをgit clone し、そのフォルダに移動します)
https://github.com/marian-craciunescu/ESP32Ping

3. サンプルを試す

ESP32Pingのフォルダ直下にある次の4つのファイルを examples\SimplePing フォルダにコピー(or移動)します。

  • ESP32Ping.cpp
  • ESP32Ping.h
  • ping.cpp
  • ping.h

そのままでは動きません(ライブラリとしてインストールしていないため)ので、少し修正します。

ESP32Ping.h を開きます。27行目にある

#include <ping.h>

#include "ping.h"

に変更します。つまり、不等号<>をダブルクオーテーション"に書き換えます。

SimplePing.inoも同様です。7行目にある

#include <ESP32Ping.h>

#include "ESP32Ping.h"

に変更します。

これらは、ESP32Pingライブラリをインストールせずに、スケッチと同梱して利用するための変更です。

あとは、SSIDとパスワード、pingしたいリモートIPアドレス(192.168.1.1など)を書き換えます。

たったこれだけです。

3. 実行

焼き込んだら、シリアルモニタを開きます。
Wi-Fiに接続されると、自身のIPアドレスが表示され、対象のIPアドレスが表示され、成功すると、Successと表示されます。

Connecting to WiFi
.......................................
WiFi connected with ip 192.168.1.3
Pinging ip 192.168.1.1
Success!!

(これは192.168.1.1 に対してpingした例です)

4. おわりに

ESP32でpingをする場合、別途ライブラリが必要という点に驚いたのですが、そのライブラリ多く、どれを選ぶか結構悩みました。
今回はESP32Pingを使いましたが、他にも色々とあるようです。例えば次の記事が、とても参考になります。ライブラリの手動インストール方法も説明されています。
https://qiita.com/nanbuwks/items/06f87b278a3d2269e39a

ライブラリがあれば、ping自体は手軽にできるということが伝わればと思います。

おっと、記載するのを忘れてました。
pingが何か分からない場合は、「ping コマンド 初心者」みたいな単語で検索すると良いでしょう。

pingをESP32に行わせる必要性ですが、基本的には無いでしょう。それぞれの目的のサービスにアクセスし、タイムアウトになれば、それはサーバが落ちていると判断して、その場合の処理を行う、という実装で良いと思います。今回私は、ESP32自身にネットワークの状態を把握させたいと思いpingについて調べました。自身のパソコンやラズパイで行うのも手軽で良いのですが、作業している最中に、いちいちコマンドで行うのも面倒です。そこで、状態をLEDで表示することを考えました。NGであれば赤、OKであれば緑のLEDを点灯させました。いわゆるパトライト(←(株)パトライトの商標とのこと)みたいなものです。 それにはESP32は都合が良い訳です。今回の例のように、とても簡単に作ることができました。