ESP-WROOM-02 Infrared Remote Controller
ESO-WROOM=02は、Wi-fiモジュールです↓

それを搭載した赤外線モジュールがESP-WROOM-02 Infrared Remote Controllerなのです
データを書き込むためには、別にFTDI USB シリアル変換アダプター(5V/3.3V切り替え機能付き)が必要になります↓

ちなみに今回は3.3Vを使用するので間違えないようにしてください
使えるようにする
ピンが[PROG]に入ってるときは、プログラムを書くことができます
ピンが[RUN]に入っているときは、実行することができます
忘れがちなので気を付けてください
動画は。[PROG]から[RUN]に変えています
まずは、Arduino IDLを開いて
ファイル→環境設定に行きましょう
そしたら、[追加ボードマネージャー(URL)]に必要なライブラリのURLを張りましょう!
↑これを張り付けて[OK]を押そう!
次に、[ツール]→[ボード:”Arduino/Genuino Uno”]→[ボードマネージャ]を選択しましょう!
ここでこんな風にできない警告が出てくる人がいるのではないでしょうか?
エラー:考えられる要因
- バージョンが違う
- インストーラを使っていなかったため(ファイルの位置が微妙だった説)
- タイミング?
僕の場合はバージョンかと思ったんですが、たぶんインストーラを使わないのが問題だったかもしれないです笑
今回は、新しく1.8.4のWindows Installerを再ダウンロードしました!
ちなみに最初は1.8.9のバージョンでした
そしたらうまくいったので試してく見てください
できると、ボードマネージャの画面にES82866がインストールできる覧が出てきますので、バージョンを最新のものを選びインストール!
これで、ESPの環境が整いました!
ボードの設定を使用
[ツール]→[ボード:”Arduino/Genuino Uno”]→[Generic ESP8266 Module]をクリックしましょう
次のステップに移る前に、使っているCOMを確認・設定しておきましょう!
下の画像のように[デバイスマネージャー]→[ポートの設定]→[詳細設定]→[COMポート番号]を選択しましょう!
できるだけ低い番号がおすすめですが、使用していないものを利用してください
今回は、COM1に設定しました(画像は変更前)
Upload Speed: “115200”
CPU Frequency:”80 MHz”
Flash Size:”2M(1M SPIFFS)”
Flash Mode:”QIO(fast)”
Flash Frequency:”40MHz”
Reset Method”nodemcu”
シリアルポート:”COM1″(自分で選んだものを選択してください)
これで設定は完了です
プログラム(赤外線を読み込む)
いよいよプログラムですね
まずは、制御したいリモコンの赤外線を読み取らないといけないですよね!
ここからLibraryをダウンロードしましょう
[ファイル]→[スケッチ例]→[IRremoteESP8266]→[IRrecvDump]を選択しましょう!
[IRrecvDump]です画像は間違ってます
プログラミングは、uint16_t RECV_PIN = 2;のところを
uint16_t RECV_PIN = 5;に直しておきましょう
シリアルモニタを選択して、ボーレートを115800に合わせます
使用する赤外線リモコンを近づけて、ボタンを押すと・・・
下のようにデータが取れます
確認出来たら成功です
気を付けてください!ピンを[RUN]にし忘れていませんか?
Please use IRrecvDumpV2.ino instead! と出てきますが、
そちらを使ってみても変化がなかったので気にしなくていいと思いますよ
プログラム(赤外線を制御する)
先ほど読み取った、データを書き換えましょう!
[変更しよう]と書いてあるところを自分のWI-FIのSSID,PASSWORDに変えておきましょう
[ここ]と書いてあるとこには、先ほどとったデータを書きましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <IRremoteESP8266.h> #include <IRsend.h> const char *ssid = "ssid"; //変更しよう const char *password = "password"; //変更しよう ESP8266WebServer server ( 80 ); IRsend irsend(14); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); irsend.begin(); Serial.println(""); //wait for connection while( WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.on("/",handleRoot); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); } void handleRoot() { char temp[800]; int sec = millis() / 1000; int min = sec / 60; int hr = min / 60; char message[20]; String(server.arg(0)).toCharArray(message,20); if(server.arg(0).indexOf("Power") != -1){ Serial.println("Power"); irsend.sendPanasonic(0x555A,0xF148688B); //ここ delay(10); irsend.sendPanasonic(0x555A,0xF148688B); //ここ } else if(server.arg(0).indexOf("Vol UP") != -1){ Serial.println("Vol UP"); irsend.sendPanasonic(0x555A,0xF148288F); //ここ } else if(server.arg(0).indexOf("Vol Down") != -1){ Serial.println("Vol Down"); irsend.sendPanasonic(0x555A,0xF148A887); //ここ } snprintf ( temp, 800, "<html>\ <head>\ <title>ESPr IR Demo</title>\ <style>\ body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\ </style>\ </head>\ <body>\ <h1>ESPr IR DEMO</h1>\ <p>Uptime: %02d:%02d:%02d</p>\ <p>BUTTON :%s</p>\ <form action=\"/\" method=\"post\">\ <input type=\"submit\" name=\"button1\" value=\"Power\" style=\"width:30%; height:100px\">\ <input type=\"submit\" name=\"button2\" value=\"Vol UP\" style=\"width:30%; height:100px\">\ <input type=\"submit\" name=\"button3\" value=\"Vol Down\" style=\"width:30%; height:100px\">\ </form>\ </body>\ </html>", hr, min % 60, sec % 60 ,message ); server.send ( 200, "text/html", temp ); } void handleNotFound() { String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += ( server.method() == HTTP_GET ) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for ( uint8_t i = 0; i < server.args(); i++ ) { message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n"; } server.send ( 404, "text/plain", message ); } |
実行するとIPアドレスが出てくるので、それをスマホで開くとコントローラーが出てきて完成!
また、[ファイル]→[IRremoteESP8266]→[IRsendDump]のプログラムを使っても送信できますよ
登録されてるPANASONICだとしたの用に出てくるみたいです
実際に使ったプログラム↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <IRremoteESP8266.h> #include <IRsend.h> const char *ssid = "smlab_b4"; const char *password = "Asdf1234"; ESP8266WebServer server ( 80 ); IRsend irsend(14); uint16_t rawData[100] = {3400,1600, 450,1200, 450,350, 450,400, 450,400, 450,350, 450,400, 450,350, 450,400, 450,350, 450,400, 450,400, 450,350, 450,1200, 450,400, 450,350, 450,400, 450,400, 400,400, 450,400, 450,350, 450,400, 450,350, 450,400, 450,400, 450,350, 450,400, 450,350, 450,400, 450,350, 450,400, 450,1200, 450,400, 450,1200, 450,1200, 450,1200, 450,1200, 450,1200, 450,1200, 450,400, 450,1200, 450,1200, 450,1200, 450,1200, 450,1250, 450,1200, 450,1200, 450,1200, 450,1200, 450,400 }; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); irsend.begin(); Serial.println(""); //wait for connection while( WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.on("/",handleRoot); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); } void handleRoot() { char temp[800]; int sec = millis() / 1000; int min = sec / 60; int hr = min / 60; char message[20]; String(server.arg(0)).toCharArray(message,20); if(server.arg(0).indexOf("Power") != -1){ Serial.println("風向き"); irsend.sendRaw(rawData,100, 38); } else if(server.arg(0).indexOf("Vol UP") != -1){ Serial.println("Vol UP"); irsend.sendPanasonic(0x555A,0xF148288F); } else if(server.arg(0).indexOf("Vol Down") != -1){ Serial.println("Vol Down"); irsend.sendPanasonic(0x555A,0xF148A887); } snprintf ( temp, 800, "<html>\ <head>\ <title>ESPr IR Demo</title>\ <style>\ body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\ </style>\ </head>\ <body>\ <h1>ESPr IR DEMO</h1>\ <p>Uptime: %02d:%02d:%02d</p>\ <p>BUTTON :%s</p>\ <form action=\"/\" method=\"post\">\ <input type=\"submit\" name=\"button1\" value=\"Power\" style=\"width:30%; height:100px\">\ <input type=\"submit\" name=\"button2\" value=\"Vol UP\" style=\"width:30%; height:100px\">\ <input type=\"submit\" name=\"button3\" value=\"Vol Down\" style=\"width:30%; height:100px\">\ </form>\ </body>\ </html>", hr, min % 60, sec % 60 ,message ); server.send ( 200, "text/html", temp ); } void handleNotFound() { String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += ( server.method() == HTTP_GET ) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for ( uint8_t i = 0; i < server.args(); i++ ) { message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n"; } server.send ( 404, "text/plain", message ); } |
こんな風になります
忘れがちなのでもう一度言いますが「ピンをRUNにかえましたか?」笑
ピンの変え忘れでできないってことがかなりありました笑
Refarence
//Refarence: http://trac.switch-science.com/wiki/esp_dev_arduino_ide
//https://github.com/esp8266/Arduino#installing-with-boards-manager
//https://ht-deko.com/arduino/folder.html
//https://qiita.com/arigadget/items/0c0a0c3ce4f0555c66a5
//https://github.com/markszabo/IRremoteESP8266
//https://trac.switch-science.com/wiki/ESP-IR
//https://github.com/SWITCHSCIENCE/samplecodes/tree/master/ESPr-IR/ESPrIR-Server
//http://osa2.hatenablog.com/entry/2017/12/02/213838
コメント