ESP32でEthernetライブラリのコンパイルエラーを回避する方法【Arduino使用】

Raspberry Pi/電子工作
スポンサーリンク
スポンサーリンク
スポンサーリンク

こんにちは、あろっちです。

ESP32でEthernetライブラリのEthernetServerクラスを使ったスケッチでコンパイルエラーが発生する問題が確認されました。

これを回避するためのEthernetライブラリの修正方法を記述します。

スポンサーリンク
スポンサーリンク

Ethernetモジュールについて

ESP32をEthernetに繋ぐには以下のようなSPI接続の汎用Ethernetモジュールを使います。

左: W5500 Lite 右: W5500

Ethernetライブラリ

本記事ではEthernetライブラリはWIZnet Ethernet HATに対応した以下のWIZnetのfork版を使用します。

https://github.com/WIZnet-ArduinoEthernet/Ethernet

Ethernetライブラリの修正

ライブラリのソースファイル場所Arduinoスケッチ保存フォルダ内のlibraries/Ethernet/src(※)
修正ファイルEthernet.h
EthernetServer.cpp
※ライブラリ名はEthernetですがGitHubからzipをダウンロードしてインストールした場合、フォルダ名がブランチ名がついた形(Ethernet-master等)になっていることも想定されます。

Ethernet.h

EthernetServerの宣言の箇所

修正前

class EthernetServer : public Server {
private:
	uint16_t _port;
public:
	EthernetServer(uint16_t port) : _port(port) { }
	EthernetClient available();
	EthernetClient accept();
	virtual void begin();

以下のように修正します。

修正後


class EthernetServer : public Server {
private:
	uint16_t _port;
public:
	EthernetServer(uint16_t port) : _port(port) { }
	EthernetClient available();
	EthernetClient accept();
#ifdef ARDUINO_ARCH_ESP32
	virtual void begin(uint16_t port=0);
#else
	virtual void begin();
#endif

EthernetServer.cpp

修正前

void EthernetServer::begin()
{

以下のように修正します。

#ifdef ARDUINO_ARCH_ESP32
void EthernetServer::begin(uint16_t port)
#else
void EthernetServer::begin()
#endif
{

関連記事

当ブログのマイコン記事です。ぜひご覧ください。

コメント

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