【環境設定】Wifi経由でプログラム書き込み(Nodemcu編)

Osoyoo社のNodeMCU ESP2866系 NodeMCU(ESP-12F搭載)

NodeMCUにWiFi経由でプログラムを書き込むには、OTA (Over-The-Air) プログラミング機能を利用します。これにより、一度USBケーブルで初期設定を書き込んでおけば、その後はWiFiネットワーク経由でスケッチ(プログラム)を更新できるようになり、非常に便利です。

ここでは、最も一般的な Arduino IDE を使用した手順を説明します。


必要なもの

  • NodeMCU (ESP8266) 開発ボード
  • Arduino IDE がインストールされたPC
  • NodeMCU とPCが接続できるWiFiネットワーク

手順の概要

OTAプログラミングは、大きく分けて2つのステップで行います。

  1. 初回:USB経由でのOTA対応スケッチの書き込み
    • 最初に一度だけ、USBケーブルを使ってNodeMCUにWiFi接続とOTA待機機能を持つ基本スケッチを書き込みます。
  2. 2回目以降:WiFi経由でのスケッチ書き込み
    • 基本スケッチが書き込まれたNodeMCUがWiFiに接続されると、Arduino IDEの「シリアルポート」メニューにネットワークポートとして表示されるようになります。これを選択すれば、USB接続なしで新しいスケchッチを書き込めます。

Step 1: 初回のみの準備

まず、NodeMCUにWiFi経由での更新を受け付けるための基本的なプログラムを書き込みます。

  1. Arduino IDEの準備
    • Arduino IDEにESP8266ボードマネージャがインストールされていることを確認してください。
    • ファイル > スケッチ例 > ArduinoOTA > BasicOTA を選択します。
  2. BasicOTA.ino の編集
    • 開いたスケッチの中にある、以下の部分をあなたのWiFiネットワーク情報に書き換えます。
/* Add includes, defines, and globals here */

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

// ↓↓↓↓↓↓ ここを編集 ↓↓↓↓↓↓
#ifndef STASSID
#define STASSID "あなたのWiFiのSSID"
#define STAPSK  "あなたのWiFiのパスワード"
#endif
// ↑↑↑↑↑↑ ここまで ↑↑↑↑↑↑

const char* ssid = STASSID;
const char* password = STAPSK;

/* setup function */
void setup() {
// ... (以降のコードは変更不要)

Step 2: 初回(USB経由)の書き込み

  1. ボードとシリアルポートの選択
    • NodeMCUをUSBケーブルでPCに接続します。
    • ツール > ボード からお使いのNodeMCUボード(例: NodeMCU 1.0 (ESP-12E Module))を選択します。
    • ツール > シリアルポート からNodeMCUが接続されているCOMポートを選択します。
  2. 書き込み
    • Arduino IDEの「マイコンボードに書き込む」ボタン(→アイコン)をクリックして、スケッチをNodeMCUに書き込みます。書き込みが完了したら、シリアルモニタを開き、ボーレートを 115200 に設定すると、IPアドレスが表示されるのが確認できます。
    Booting... Ready IP address: 192.168.X.X <-- このIPアドレスを覚えておくと便利です

これで、NodeMCUはWiFi経由でプログラムを受け付ける準備ができました。USBケーブルはもう外して構いません。


Step 2: 2回目以降(WiFi経由)のプログラム準備

  1. 書き込みたい新しいスケッチの準備
    • 今度は、あなたが実際に動かしたいプログラム(例:Lチカなど)を用意します。【重要】 この新しいスケッチにも、必ずBasicOTA.inoのOTA関連コードを含める必要があります。 具体的には、#include文、WiFi接続処理、そしてloop()関数内のArduinoOTA.handle()です。これを入れないと、次のOTAアップデートができなくなります。
    スケッチ例 (Lチカ + OTA機能):
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

// あなたのWiFi情報
const char* ssid = "あなたのWiFiのSSID";
const char* password = "あなたのWiFiのパスワード";

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // OTA設定
  ArduinoOTA.onStart([]() {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH) {
      type = "sketch";
    } else { // U_FS
      type = "filesystem";
    }
    Serial.println("Start updating " + type);
  });
  // ... (BasicOTAの他のOTA設定コードも同様にコピー)

  ArduinoOTA.begin();

  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // ↓↓↓ ここからがあなたのメインのコード ↓↓↓
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  ArduinoOTA.handle(); // OTA待機状態を維持するために必須

  // ↓↓↓ ここからがあなたのメインのコード ↓↓↓
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

Step 3: 2回目以降(WiFi経由)の書き込み

  1. ネットワークポートの選択
    • NodeMCUが電源に接続され、WiFiに接続されていることを確認します。
    • Arduino IDEで ツール > シリアルポート をクリックします。
    • しばらく待つと、通常のCOMポートに加えて、ネットワークポートとして esp8266-xxxxxx at 192.168.X.X のような項目が表示されます。これがWiFi経由で接続されているNodeMCUです。これを選択してください。
    • もし表示されない場合は、PCとNodeMCUが同じネットワークに接続されているか、ファイアウォールが通信をブロックしていないか確認してください。
  2. 書き込み
    • ネットワークポートを選択した状態で、「マイコンボードに書き込む」ボタンをクリックします。
    • 書き込みが始まると、パスワードの入力を求められる場合があります(設定した場合)。
    • 書き込み中は、進捗がパーセンテージで表示されます。完了すれば、NodeMCUが自動的に再起動し、新しいプログラムが実行されます。

これで、WiFi経由でのプログラムの書き込みは完了です。🎉

コメント