2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESP32 Devkitc+IRremoteの注意点

Last updated at Posted at 2019-08-06

はじめに

bluetoothを使った赤外線リモコンを作ろうとしたときにハマったのでメモとして残しておきます。

環境

使用ソフト:Arduino
使用マイコン:esp32-devkitc
使用ライブラリ:IRremote(GitHub)

行おうとしたこと

IRRemoteをArduino IDEにインストールし、サンプルスケッチのIRremote>IRrecvDumpV2をESP32に書き込もうとした。

発生したトラブル

esp32に11番ピンがなかったのでIrecvDumpV2のrecvPinを15に書き換えて実行したところ下記のコンパイルエラー。


Arduino:1.8.9 (Windows 7), ボード:"ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 80MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, None"

In file included from C:\Users\ユーザー名\AppData\Local\Temp\arduino_modified_sketch_934277\IRrecvDumpV2.ino:4:0:

C:\Users\ユーザー名\Documents\Arduino\libraries\IRremote/IRremote.h:365:23: error: 'SEND_PIN' was not declared in this scope

   const int sendPin = SEND_PIN;

                       ^

exit status 1
ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。

「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。

IRremote.hは赤外線の送受信用のライブラリなのだが、ESP32では赤外線送信がサポートされていないからESO32用のSEND_PINが定義されていないようだ。(Wifiの送信周りと干渉するらしい?)

8/29追記:多分割り込みやPWM信号がArduinoと互換性が無いからだろう。別記事にて自作してみたので作ってみたい人は確認してみてください。

なのでライブラリ(C:\Users\ユーザー名\Documents\Arduino\libraries\IRremote\IRremote.h)の365行目付近を下記のように書き換えた

書き換え前

IRremote.h

#ifdef USE_SOFT_CARRIER
	private:
		int sendPin;

		unsigned int periodTime;
		unsigned int periodOnTime;
		
		void sleepMicros(unsigned long us);
		void sleepUntilMicros(unsigned long targetTime);
#else
		const int sendPin = SEND_PIN;
#endif

書き換え後

IRremote.h

#ifdef USE_SOFT_CARRIER
	private:
		int sendPin;

		unsigned int periodTime;
		unsigned int periodOnTime;
		
		void sleepMicros(unsigned long us);
		void sleepUntilMicros(unsigned long targetTime);
#elif defined(ESP32)
// No system LED on ESP32, disable blinking by NOT defining BLINKLED

// avr/interrupt.h is not present
#else
		const int sendPin = SEND_PIN;
#endif

これでコンパイルが通り、動かしてみたら問題なく動いたので良しとする。

余談

赤外線送受信用のセンサーやLEDはSeeedのデバイスを利用した。FETや抵抗などがまとめてセットになっているので楽。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?