Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

ESP32やESP8266は無線LAN経由でArduino IDEからスケッチを更新する事が出来る。Arduino OTAと言う機能である。

無線LANに接続している状態で設置し使用している場合、スケッチの更新が必要な際わざわざPCとUSBで接続する必要がないため、非常に便利な機能である。

サンプルスケッチがArduinoOTAの下にある。主要な部分を抜き出したのが以下のスケッチ。初回はUSBで接続して書き込む必要がある。

setHostnameに分かり易い名前を付けておくと良い。

#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "ssid名";
const char* password = "パスワード";

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();
	}

	ArduinoOTA
	.setHostname("esp32_TESTBOARD")
	.onStart([]() {})
	.onEnd([]() {})
	.onProgress([](unsigned int progress, unsigned int total) {})
	.onError([](ota_error_t error) {});

	ArduinoOTA.begin();
}

void loop() {
	ArduinoOTA.handle();
}

ESP8266の例

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

const char* ssid = "ssid名";
const char* password = "パスワード";

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();
	}

	ArduinoOTA.setHostname("esp8266_tenki");
	ArduinoOTA.onStart([]() {});
	ArduinoOTA.onEnd([]() {});
	ArduinoOTA.onError([](ota_error_t error) {});
	ArduinoOTA.begin();
}

void loop() {
	ArduinoOTA.handle();
}

書き込んでESPマイコンがPCと同じネットワークに接続して発見出来る状態になれば、Arduino IDEのシリアルポートの下に自動的に表示される。pythonが必要らしいので、pythonをインストールしていなければインストールしておく。

https://www.python.org/downloads/

シリアルポートを選択する様に、対象のデバイスを選択してスケッチを書き込むだけでネットワーク越しにスケッチの書き込みが行われる。

セキュリティやミスで書き込むのを防ぐためにパスワードを設定する事も出来る。下記行をArduinoOTA.beginの前に追加する。

ArduinoOTA.setPassword((const char *)"123");

123を適当なパスワードに設定する。

シリアルポートのリストには出てくるのに、書き込もうとすると [ERROR]: No response from device と出て書き込みが出来ない場合、ウイルスチェックソフト等のファイアウォールがブロックしている可能性があるので、ファイアウォールを一時的に停止するか例外設定しておく。

コメントを残す

メールアドレスが公開されることはありません。


*

CAPTCHA