気の向くままに辿るIT/ICT
webzoit.netウェブサイトホームページ
IoT・電子工作

ESP-01/12/32でmDNS(常時IPではなくホスト名でアクセス)

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
ESP8266って?

ESP-01/12/32でmDNS(常時IPではなくホスト名でアクセス)

ESP-01/12/32でmDNS(常時IPではなくホスト名でアクセス)

2018/07/12

Rasbee ESP8266 ESP-01 LWIP AP+STA シリアル WIFI無線モジュール

 Wi-Fi(wifi)モジュールESP8266の内、ESP-01を使ってmDNS/Multicast Domain Name System機能により常時、IPアドレスではなく、xxx.localという指定した任意のホスト名でアクセスしてみるページ。

 後述の前提環境があれば、ESP8266ボードにサンプルスケッチをアップロードするだけと超カンタン。

 これまた動作確認に過ぎず、実用品ではないが、ネットワークを介したアプリを作る上でこの上なく、便利な基本操作ということで。

 ここでは、ESP8266の中でも最もベーシックなESP-01を使うが、これでできるということは、ESP-02...、ESP-07、...、ESP-12、...ESP-14、ESP-WROOM-02、ESP-WROOM-32などでも、これら開発ボードでも、もちろん、できるということで。

 ただ、ESPシリーズの内、日本の技適を通っていて、モヤモヤすることなく、堂々と使えるものは、いまのところ、ESP-WROOM-02/ESP-WROOM-32(とこれらを搭載した開発ボード)のみ。

HiLetgo ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード

waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

waves ESP-WROOM-32 + 開発基盤 セット 国内発送

waves ESP8266 WiFiモジュール(技適取得済み) ESP-WROOM-02 キット 赤基盤

[スイッチサイエンス] ESP-WROOM-02ピッチ変換済みモジュール《シンプル版》

[スイッチサイエンス] ESP-WROOM-02ピッチ変換済みモジュール《フル版》

HiLetgo 2個セット ESP8285 ESP-M2 CH340開発ボード WIFIシリアルポートモジュール CH340 ESP8266に対応

HiLetgo® 2個セット ESP8266 NodeMCU LUA CP2102 ESP-12E モノのインターネット開発ボード ESP8266 無線受信発信モジュール WIFIモジュール Arduinoに適用 [並行輸入品]

HiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F Arduino IDE UNO R3に対応 

Rasbee WeMos D1 R3 簡易デザイン WiFi 開発ボード NODEMCU LUA ESP8266 Arduino UNO 適用 1個 [並行輸入品]

Rasbee OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F For IDE UNO R3 Arduino用 1個 [並行輸入品]

Rasbee アップグレード版 WeMos D1 R2 WiFi UNO 開発板 ESP8266 Arduino 1個 [並行輸入品]

前提

 mDNS機能を持つパッケージアプリケーションとしてLinuxならAvahi、Mac/WindowsならBonjourがインストール済みであること(macOSはBonjourはプリインストール済みのはず)。

 もちろん、ESP8266を使える環境があること(Arduino IDEでESP8266ボードを使えるようにする等)。

 よってESP8266でmDNS機能を使う場合にもプログラム書き込み時だけでなく、実行時もラズパイやパソコンなどOSをインストールできるハードウェアは別途必要となる。

ESP-01へのスケッチのアップロード準備

 ESP-01にプログラムをアップロードするには、USBポートを備えたCP2102やFTDI系のシリアルUSB変換モジュールを併用する必要がある。

 尚、USBポートを備えた開発ボードではないESP-01〜ESP-14単体及びブレイクアウトボード(≒ピッチ変換基板)との組み合わせは、全て同様にシリアルUSB変換モジュールを要する。

 ESP-01の定格電圧は3.3VなのでシリアルUSB変換モジュールも3.3V専用か3.3V/5V兼用なら3.3Vに切り替えて接続する。

Rasbeeオリジナル FT232RL互換 3.3V/5V FTDI/USB/TTL変換アダプタ

 尚、ESP-01は、プログラム書き込み時と実行時でRSTとGPIO0のHIGH/LOWを巧みに切り替える必要があるが、RTS/DTRピン(ホール)のあるFTDIモジュールなら、これらにESP8266のRST/GPIO0をそれぞれ接続することで自動でアップロードできる為、これを使うことをおすすめする。

 ただ、これらRTS/DTR、ブレッドボード上でピンホールにジャンパワイヤを挿す場合、ピンヘッダや3.3V/5V切り替え用ジャンパピンのハンダ部が隆起しているのだが、ピンホールが、この付近にある為、USBシリアル変換モジュール並びに挿したジャンパワイヤを手でうまく押さえる必要はあるだろう。

 なんなら、手で持った方が、安定するだろう。

 ちなみにESP-01については、SPIFFSを使おうにもフラッシュメモリ容量の関係でArduinoOTAは難しい模様。

ESP-01FTDI別電源
RXTX-
TXRX-
RSTRTS-
GPIO0DTR-
VCC-3.3V
GNDマイナス

 また、パソコンのUSBは最大500mAと大丈夫そうに思えるし、実際、たいていの場合、書き込みできるが、往々にしてWiFiモジュールは多くの電流を必要とすることがあり、ESP8266も300mAを超えることもあるとのことなのでそれらが要する電流量不足やパソコンのUSBポートの損傷回避などを考慮し、実行時はもちろんのこと、書き込み時も念の為、別電源をとった方がよさ気。

 尚、検証・運用時には、元電源が3.3Vだと過電流により2V程度まで電圧降下し、ESP8266にリセットがかかり、WiFi接続が途切れるなどの状況になる可能性があるので5Vから降圧、更に電圧降下に耐え得るよう、より短時間で通常電圧に戻る負荷過渡応答特性に優れた電圧レギュレータを使う必要がありそう。

 全ての回路で同じとは限らないが、とある回路を作って9V電池で動かしてみたところ、7V切ったあたりで動作が不安定になり、電池を交換したら正常になった。

EasyWordMall 3.3V 5V MB102ブレッドボード用 電源モジュール パワーモジュール

KKHMF MB102ブレッドボード電源モジュール3.3V 5V Arduino Boardハンダ無しブレッドボード用

9V 電池ボックス DCケース5.5*2.1  スイッチ&背面カバーとプラグイン

uxcell バッテリコネクタ 5.5x2.1mm 9Vバッテリー用 接続バッテリー 4個入り

アルカリ乾電池 9V 1本 6LR61/B1P/V

SUCCUL ACアダプター 12V 1A センタープラス スイッチング式 最大出力12W 出力プラグ外径5.5mm(内径2.1mm)PSE取得品

サンプルスケッチのアップロード

 ここでは、ソフトウェアというか開発環境としてArduino IDEを使うものとする。

 Arduino IDEでESP8266ボードを使える状態なら、[ファイル] => [スケッチ例] => [ESP8266mDNS] => [mDNS_Web_Server]があると思うので、このサンプルスケッチを開き、宅内無線LANルーターかアクセスポイント用のSSID/PASSWORDを適宜編集し、ESPボードにアップロードする。

シリアルモニタの出力内容

Connecting to SSID
. . . . . . .
WiFi connected.
IP address: 192.168.xxx.xxx
mDNS responder started
TCP server started

 これは任意だが、USBシリアル変換モジュールはそのままにPCが認識したUSBポートが、Arduino IDE上で選択されていることを確認、シリアルモニタを開き、baudrateは115200、改行なし(WindowsならCR+LFかも)とする。

 もし、何も表示されなければ、ESP-01の入力電源を入れ直すなどして再起動、宅内無線アクセスポイントに接続すると、このような内容が表示されるはず。

ブラウザでアクセス

Hello from ESP8266 at 192.168.xxx.xxx

 ブラウザのURL入力欄に[ESP8266.local]と入れて[Enter]とすると、このように表示される。

 尚、ホスト名(除.local)は、スケッチのMDNS.begin()関数の引数で指定されたものとなるので、この部分を編集していなければ、[ESP8266.local]でアクセスできるということになる。

備考

 敢えて言うまでもないが、IPアドレスを固定ではなく、DHCPに割り振らせるようにしている場合、アクセスする度にIPアドレスが常に同じという保証はないし、固定だったにしてもドット付きの数字(IPアドレス)で覚えておくより、文字(ホスト名)の方が覚えやすく、書き(入力し)やすいと思われ、IPアドレスが変わっても、IPアドレスが変わったことすら意識することなく、同じホスト名でアクセスできるのは、とても便利。

 無線に限ったことではないが、LANを使う場合、IoT専用ならまだしもパソコンやスマホ・タブレットなどと共用している場合には、IPを固定するのも面倒なのでDHCPを使うのが楽だという前提もある。

 また、人が介在する手作業なら別だが、ラズパイとESPボードやArduinoボードなどネットワークを介したM2M(Machine to Machine)通信だった場合、プログラムを書くにあたり、DHCPに払い出されたIPを追わずに済むので、常に同じホスト名でアクセスできるに越したことはない。

関連リンク