800円で買えるESP32搭載マイコン、ESP-32S NodeMCUを買ってみました!

時代はIoTというのも今更な気がしますが、ラズパイやObnizなどの「手軽なIoTマイコン」は5,000円超えのものが多いですよね…

そこで、ArduinoIDEで開発できて、Wi-FiBluetoothにも対応したなんでもありなマイコンESP-32S NodeMCUを使ってGETをするという記事をご紹介します!

 

0. パーツ

今回私自身が購入したのは以下のパーツになります。(アフィリエイトリンクなので、購入される方はこちらから購入してくださると嬉しいです…!)

別途USB microBのケーブルが必要になりますが、データのやり取りができるケーブルであれば家にあるものや家電量販店で購入できるモノで問題ないです。

一応私は以下のAnkerのケーブルを使用していますが、高いのでもっと安いので問題ないです。

1. 環境

まずは環境構築から。

1-1. Arduino IDEのインストール

ArduinoIDEがインストールされていない方はインストールしてください。

→Software | Arduino

 

1-2. Arduino IDEへボードマネージャーを追加

ボードマネージャー、つまりはESP-32S NodeMCUを使えるようにしてくれるパッケージのインストールをします。

Arduino IDEを開いて、 ファイル>環境設定  で環境設定を開いてください。

Arduino IDE 環境設定

続いて、 追加のボードマネージャのURL  へ以下のJSONファイルのURLを追加してください。

追加のボードマネージャー

 

1-3. ボードマネージャーの追加確認

ツール>ボード>ESP32 Arduino  が追加されていることを確認してください。

ボードマネージャの確認

 

1-4. USBで接続

USBケーブルで接続してください。

この時、上手く認識されない場合はドライバが入っていない可能性があるので、壊れていると思わずドライバのインストールを試してみることをお勧めします。

 

2. Wi-Fiへの接続

プロジェクトの作成をします。

 

2-1. SSID / PASSWORDを指定

Wi-FiのSSID / パスワードを指定します。

注意点ですが、2.5GHzにしか対応していません。5GHzのWi-Fiを指定してもモジュール自体が対応していないためエラーが発生してしまいます。ちなみに、スマホのテザリングとかは2.5GHzが大半かと思います。

今回はひとまず1個指定できるようにします。

 

2-2. 接続関数の作成

Wi-Fiに接続するための関数を作成します。

中身は単純で  WiFi.begin(ssid, passwd); を用いてWi-Fiに接続します。

その後、  WiFi.status()  が  WL_CONNECTED 、つまりは接続が成功していた場合は自身のローカルIPを出力して終了。失敗していた場合は100mSec置いて再度接続という流れです。

 

2-3. プロトタイプ宣言と関数の呼び出し

プロトタイプ宣言と実際に作成した関数を呼び出してみます。

プロトタイプ宣言とは?という方はざっくり解説すると、コンパイラに予め「こんな自作関数がコード内で書かれています!」と予め宣言してあげることです。スクリプト言語ではあまりないと思うのですが、C言語は関数が定義されている部分より前に関数を呼び出すと関数が動作しないんです(ArduinoIDEのコンパイラではコンパイルエラーにならないので気付きにくい)

では、実際のコードです。

ここで、 void setup() と  void loop() が登場します。これはおまじないのように覚えてもらって構わないのですが、

  • void setup() は最初に1回だけ呼ばれる関数
  • void loop() は処理をずっとループ
    • void setup() の終了後からArduinoの電源が切れるまで
    • 要はメイン処理

と言った感じです。

 

2-4. コードの全体像

コードの全体像はこんな感じです。

 

2-5. 実行してみる

まずは、ツールから以下のような感じで設定してみてください。

シリアルポート の部分は接続しているポートを選択するのですが、どれかわからない時の一番簡単な調べ方は、ESP32をパソコンに接続する前と後で増えたポートがESP32のポートです。

シリアルポートの選択

さて、実行。右矢印のボタンを押せば大丈夫です。

実行ボタン

書き込みには少し時間がかかりますが、以下のように表示されたら書き込み完了です。

書き込み完了

出力結果が見れるように右上の虫眼鏡のボタンからシリアルモニタを表示してください。

シリアルモニタ

シリアルモニタを開くとWi-Fiに接続ができたことが確認できるかと思います。

シリアルモニタ

接続ができない場合はSSID・パスワードを試してみてください。

 

3. GETしてみる

さて、やっと本題のGETです。

 

3-1. URLの指定

まずはGET先のURLを指定します。

今回はGETなので、HTMLにアクセスしてHTMLソースを取ってくるだけでもいいので、そうしてみます。

 

3-2. GET関数

GETをする関数を作成します。

GETを行い  http.GET()  が  HTTP_CODE_OK  、つまりは200番が返ってきた場合はBodyを表示します。

 

3-3. コードの全体像

先程のWi-Fi接続処理と合わせて、全体像はこんな感じ。

 

3-4. 実行してみる

実行方法は上と同じなので割愛。

実行して見ると、こんな感じでHTMLが表示されたらOKです。

実行結果

これでURLを指定してGETできることが確認できたので自身で開発したAPIへGETすることも可能かと思います!

 

最後に

今回の内容はGETのみでしたが、今後はPOSTの記事もかけたら書きたいなと思います。

また、Wi-Fiの認証情報部分も define から二次元配列に変えてfor文で回すことで複数のWi-Fiの登録も可能になります。

そのあたりの拡張性を持たせたり、API側の実装などもブログに書いていければと思います。

また、質問等がありましたら私のTwitterDMへご質問ください(何回か対応済み)

 

参考にした記事

今回のブログ曲

今回投稿中に聴いていた曲はこちら

カテゴリー: ArduinoC言語

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です