PR

初めてのESP8266でとにかくWi-Fi機能を最速ルートで確かめた

eye_catch_ESP8266_wifi プログラミング
記事内に広告が含まれています。
スポンサーリンク

最近、近所で住人が在宅中にも関わらず車が盗まれました。

近所でなくとも世の中的にも強盗が住人在宅中に侵入したりと物騒なニュースをよく目にします。

そこで、単純にスマート家電を購入するのではなく、
できるだけ低コストで独自に防犯システムを構築していこうと考えました。

手始めに、低コストで低消費電力なマイコンであるESP8266を購入して、動かしてみました。

普通は、マイコンを買ったらLEDを光らせる”Lチカ”をやると思うのですが、

とにかくWi-Fi機能がきちんと動くのか?

が気になったので、”Webサーバを構築してアクセス”を試してみました。

この記事はこんな方におすすめ
  • IoTに興味がある
  • Arduino IDEを使ったことがある
  • VS code, C++に慣れている

ESP8266の特徴

主な特徴は次の通りです。

  1. Wi-Fi搭載(2.4GHzのみ、802.11 b/g/n対応)
  2. 低消費電力(IoT用途に適している)
  3. サイズが小さい
  4. Arduino互換(Arduino IDEやPlatformIOで簡単に開発可能)

とにかく小さくてWi-Fi機能が使えるマイコンでかつ、
自分が扱えそうなマイコンだったのでESP8266を選びました。

以前、Arduino UNOを購入してLチカだけやって放置してしまっていたのでArduino IDEが使えるならとりあえず焼きこみなどはできそうと判断しました。

今回購入したESP8266

Amazonで技適取得済みと書かれていて1個単位で購入できる次の商品を購入しました。

OSOYOOという会社の製品でカナダを拠点に教育向けのツールを売っているみたいです。

マイコンを買う際に同じ名前でも色んなブランドや型番がありますが、
”開発ボード”と書いてあればUSBポート付属で、単体でとにかくPCと繋いで動かせます。

実際に届いて箱を開けてみるとこんな感じ。

USBはType-Cです。

ESP12-Fと書かれていて、”おや?”と思ったのですが、ESP8266はマイコンチップのことで、

ESP8266を搭載したモジュールのことをESP-12Fと呼ぶようです。

そして、さらにUSB接続可能な開発ボードとしてはNodeMCUと呼ぶようです。

裏面はこんな感じでGPIOが沢山あります。

きちんと、”Nodemcu”と記載されています。

Arduino IDEを使ってファームを書き込む

まず、Arduino IDEを公式サイトからダウンロードします。

続いて、Arduino IDEを開いて「ファイル」→「設定」をクリック。
(私の場合、英語になっています。)

「追加のボードマネージャ」(Additional boards manager URLs)に次のURLを入力します。

「ツール」→「ボード」から「Generic ESP8266 Module」を選択します。

そして、PCとESP8266をUSBで接続します。

「ツール」→「シリアルポート」で適切なポートを選択。

次のようなログがArduino IDE上で確認できました。

これでファームウェアの書き込みが完了しました。

ログ出力してみる

あとはArduino IDE上で簡単な動作確認をしてみます。

次のような、ログ出力するだけのスケッチを書いてアップロードしてみました。

すると、文字化けした文字列の後に”Hello, ESP8266!”が表示されました。

ログ出力を確認するにはArduino IDEの「ツール」→「シリアルモニター」を開きます。
上記のスケッチでは通信速度を115200にしているので、シリアルモニターもこれに合わせる必要があります。

 先頭の文字化けしたデータはESP8266が起動時に送るブート情報らしく、文字化けするのは正常なようです。

文字化けせずに出す方法もありそうで、
通信速度変えてみましたが化けたままだったので一旦無視することに…

VS Codeで動かしてみる

ここまでできれば別にArduino IDEを使ってスケッチを書いて焼きこむことで
開発していけばいいのですが、使い慣れたVS Codeで開発したいと思ったのでセットアップしてみました。

VS codeの方が今話題のAIコーディングだったり、Githubとの連携もやりやすそう。
個人的にはArduino IDEに使い慣れる手間をなくして最速で開発したい。

VS Code拡張機能のPlatformIO導入

アリさんマークのこちらの拡張機能を入れると
VS codeを使ってArduino IDEと同様にアップロードとシリアルモニターが使えるようです。

インストール後、Welcomeページが表示された後に次のようなホーム画面が表示されました。

右側のQuick Accessにある”NEW Project”をクリックしてプロジェクトを作成します。

”NEW Project”をクリックすると次のようなウィザードが立ち上がるのでボードなどを選びます。

今回はESP8266 ESP-12Eを選んでみました。

ESP8266 ESP-12Eは今回私が購入したESP12-Fの前機種のようで、
12-Fの方がアンテナ設計が改善されていて、Wi-Fiの通信性能が向上しているようです。

そしてプロジェクト作成が完了すると、次のようなファイル一式が作成されます。

src/main.cppがあり、ここがスケッチと同じ内容になっています。

デフォルトでは次のような内容になっています。

おそらくこれは、プロジェクト作成時のプラットフォームとしてArduinoを選択したからだと思います。

platformio.iniは次のような内容が書かれていて、プロジェクト作成時に選んだ内容と一致しています。

後で、すこし困ったのですが、シリアルモニターの通信速度はこのiniファイルに記載します。

このように最後の行に通信速度を追加して、シリアルモニターの出力を確認できました。

デフォルトは9600とかに設定されているようでしたので、それにコード上で合わせても問題ないです。

VS Code上で動かす

PlatformIOをインストール後、VS Codeの左下には次のようなアイコンが並びます。

”→”のマークをクリックするとアップロードができて、
”コンセントプラグ”のようなマークをクリックするとシリアルモニターが立ち上がります。

ここまでで、準備は整いましたので、いよいよコーディングしてみます。

WebサーバをESP8266上に構築

main.cppに次のようなコードを書きました。

Hello from ESP8266! という文字をサーバアクセス時にレスポンスとして返すコードです。

ESP8266のサーバのIPアドレスはシリアルログに出力して確認します。

ESP8266は2.4GHz帯しかサポートしていないので
SSID記載時に2.4GHzに対応するWi-Fiが設定できているか注意してください。

シリアルモニターの表示は次のようになりました。

PCとスマホから192.168.1.8にアクセスしてみると、無事期待通りのメッセージが表示されました。

Wi-Fiの信号強度を確認してみる

せっかくWi-Fi機能を試してみたので、

先ほどのhandleRoot()関数を次のように書き換えて、
現在のWi-Fi信号強度を表示するように変えてみました。

これでサーバにアクセスしてみると、次のように表示されました。

-30~-50dBmでも非常に強いようですが、私の環境では-57~60の値が表示されていました。

RSSI(Received Signal Strength Indicator)は、無線通信の信号強度を示す指標。
主にWi-FiやBluetoothの受信信号の強さを表し、dBm(デシベルミリワット)という単位で測定されます。

HTMLでWi-Fi Speedと表現しましたが、今回は強度のみの表示としました。

まとめ

今回はESP8266を買ってみたので、とりあえずWi-Fi機能を試してみました。

普通はLチカすると思うのですが、回路を組んでLED光ったところで
今回の目的とあまり関係ないので、簡単なWebサーバを立ててWi-Fi機能を試してみました。

個人的に触ってきたマイコンの中で最も小さいものだったこともあり、

こんなに小さくても立派にWebサーバとして動いているんだなと少し感動しました。

また、PlatformIOの拡張機能はArduino IDEで使える機能をそのまま問題なく使えるので、VS Codeに使い慣れたユーザにとってはとても楽だなと感じました。

もう少し部品をそろえて人感センサー等を取り付けたりして拡張させてみたいと思いますが、
今回はここまでです。

最後までお読みいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました