рдЬрд▓рд╡рд╛рдпреБ рдкреНрд░рдмрдВрдзрди рд╕рд╕реНрддрд╛ рдФрд░ рдкреНрд░рдлреБрд▓реНрд▓рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ (IRremoteESP8266 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ Tion 02 рд╕рд╛рдВрд╕)

рдореБрдЭреЗ рдПрдХ рдПрдпрд░ рдХрдВрдбреАрд╢рдирд░ (рдпрд╛ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдиреНрдп рдЙрдкрдХрд░рдг) рдФрд░ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛, рдпрд╛ рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЗрд▓реБрд▓рд░ рдПрдХ рд╕реЗред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдмрд╕ esp8266 (рд▓рдЧрднрдЧ $ 2 рдЪреАрдиреА рд╕реЗ) рдХреЛ рдЕрд╡рд░рдХреНрдд рдПрд▓рдИрдбреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рднрд░реЗрдВ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛ред


рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкреБрдирд░реАрдХреНрд╖рдг esp-01 рдХреЛ рдорд┐рд▓рд╛рдк рдХрд░рдирд╛ рдерд╛ (рдХреБрдЫ рдЗрд╕ рддрд░рд╣ ) рдХрд┐ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрд┐рд░рдЪрд┐рдЯ рдХреЗ рдкреИрд░ рдХреЛ рд╡рд╛рдпрд░рд┐рдВрдЧ 5 * 5 рдорд┐рдореА рдорд╛рдкрддрд╛ рд╣реИ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд GPIO рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╢реЛрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдИрдПрд╕рдкреА -12ред
Esp8266 рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВред

рдЕрд╡рдпрд╡ рдФрд░ рдореЙрдбреНрдпреВрд▓


* Esp8266 рд╕рдВрд╢реЛрдзрди esp-01
* FT232RL: рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП USB рд╕реЗ рд╕реАрд░рд┐рдпрд▓ 232 TTL рдПрдбрд╛рдкреНрдЯрд░ + рддрд╛рд░
* Tsop 4838 рдлреЛрдЯреЛрдбреЗрдЯреЗрдХреНрдЯрд░
* 3.3v рдирд┐рдпрд╛рдордХ
* рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ S9014
* рдЗрдиреНрдлреНрд░рд╛рд░реЗрдб рдПрд▓рдИрдбреА 5013IRAB (рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп 940 рдПрдирдПрдо)
* 330 рдУрдо рдЕрд╡рд░реЛрдзрдХ
* рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмреЛрд░реНрдб
* рд╕реЛрд▓реНрдбрд░рд┐рдВрдЧ рдЖрдпрд░рди, рд╕реЛрд▓реНрдбрд░, рдлреНрд▓рдХреНрд╕ред
* IR рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп IRremoteESP8266 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд▓реЗрдЦрдХ рдорд╛рд░реНрдХ рд╕реНрдЬрд╛рдмреЛ, рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрди рд╡рд╛рд░рд┐рди, рдХреЗрди рд╢рд┐рд░рд┐рдлред

рдмрдЪрдд рдХреЛрдб


* рдлреЛрдЯреЛрдбреЗрдЯреЗрдХреНрдЯрд░ , VCC рдХреЛ +3.3, GND рдХреЛ рд╢реВрдиреНрдп, OUT рд╕реЗ GPIO рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
* рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп \ IRremoteESP8266 рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдбрдВрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦреЛрд▓реЗрдВ \ IRrecvDump \ IRrecvDump.ino
* рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдкрд┐рди рдирдВрдмрд░ рдХреЛ рдмрджрд▓ рджреЗрдВ рдЬрд┐рд╕рд╕реЗ рд╣рдордиреЗ рдлреЛрдЯреЛрдбреЗрдЯреЗрдХреНрдЯрд░ рдХреЗ рдУрдИрдЯреА рдХреЛ рдЬреЛрдбрд╝рд╛ (рдкрдВрдХреНрддрд┐ "int RECV_IN = 2;")ред
* рдлрд░реНрдорд╡реЗрдпрд░ рднрд░реЗрдВред рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдбрдВрдк рдХреЛрдб рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдмрдЯрди рджрдмрд╛рдП рд░рдЦреЗрдВред
Tion O2 рд╕рд╛рдВрд╕ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓реЗ:
рдиреАрдЪреЗ
16711935
Decoded NEC: FF00FF (32 рдмрд┐рдЯреНрд╕)
- рдКрдкрд░
16724175
Decoded NEC: FF30CF (32 рдмрд┐рдЯреНрд╕)
- рд╕реЗрдЯ рдХрд░реЗрдВ
16722135
Decoded NEC: FF28D7 (32 рдмрд┐рдЯреНрд╕)
- рд╢рдХреНрддрд┐
16720095
Decoded NEC: FF20DF (32 рдмрд┐рдЯреНрд╕)


рдЬрдм рддрдХ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд┐рдореЛрдЯ рдХреЗ рдХреЛрдб рдХреЛ "рд╣рдерд┐рдпрд╛рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддрдм рддрдХ рдлреЛрдЯреЛрдбреЗрдЯреЗрдХреНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдмрдВрдзрди


* рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдИрдЖрд░ рдПрд▓рдИрдбреА рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

(рдлреНрд░рд┐рдЯреНрдЬрд╝рд┐рдВрдЧ рд╕реЗ рдЙрдзрд╛рд░ рд▓реА рдЧрдИ рдЫрд╡рд┐)
GPIO рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 3.3v рдХреЗ рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реЗ, рдПрд▓рдИрдбреА рднреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
UPD: рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди-рд╕реАрдорд┐рдд рдЕрд╡рд░реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
* рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдбреЗрдореЛ рдлрд░реНрдорд╡реЗрдпрд░ рдпрд╣рд╛рдБ рд╣реИ
\ IRremoteESP8266 \ рдЙрджрд╛рд╣рд░рдг \ IRServer \ IRServer.ino
* рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдХрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдЬрд╛рд╕реВрд╕реА рдЗрд╕рд╕реЗ рдЬреБрдбрд╝ рд╕рдХреЗред рдФрд░ рдЬреАрдкреАрдЖрдИрдУ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
const char* ssid = ".....";
const char* password = ".....";
IRsend irsend(0);

* рдлрд░реНрдорд╡реЗрдпрд░ рдореЙрдбреНрдпреВрд▓ред
* рдХрдВрд╕реЛрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, esp рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ 192.168.1.1/ir?code=16720095 (рдмрд╕ рд╡рд╛рдВрдЫрд┐рдд рдЖрдИрдкреА рдФрд░ рдХреЛрдб рд╕реНрдерд╛рдирд╛рдкрдиреНрди) рдХрд╛ рдПрдХ рдкрддрд╛ рджрд░реНрдЬ рдХрд░рдХреЗ рдХреЛрдб рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдпрд░ рдЕрдкрдЧреНрд░реЗрдб рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб
 /* * IRremoteESP8266: IRServer - demonstrates sending IR codes controlled from a webserver * An IR LED must be connected to ESP8266 pin 0. * Version 0.1 June, 2015 */ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <IRremoteESP8266.h> const char* ssid = "FFFF"; const char* password = "XXXX"; unsigned long last_cmd_send_time = 0; MDNSResponder mdns; ESP8266WebServer server(80); const char* serverIndex = "<form method='POST' action='/update' enctype='multipart/form-data'><input type='file' name='update'><input type='submit' value='Update'></form>"; // IRsend irsend(2); IRsend irsend(13); void handleRoot() { server.send(200, "text/html", "<html><head> <title>ESP8266 Demo (Web Update)</title></head><body><h1>Hello from ESP8266, you can send NEC encoded IR signals from here!</h1><p><a href=\"ir?code=16769055\">Send 0xFFE01F</a></p><p><a href=\"ir?code=16429347\">Send 0xFAB123</a></p><p><a href=\"ir?code=16771222\">Send 0xFFE896</a></p></body></html>"); } void handleIr(){ for (uint8_t i=0; i<server.args(); i++){ if(server.argName(i) == "code") { unsigned long code = server.arg(i).toInt(); irsend.sendNEC(code, 32); } } handleRoot(); } void handleSeq(){ unsigned long code = 0; unsigned long cnt = 0; unsigned long dl = 0; unsigned long nwt = 0; for (uint8_t i=0; i<server.args(); i++){ if(server.argName(i) == "code") { code = server.arg(i).toInt(); } if(server.argName(i) == "count") { cnt = server.arg(i).toInt(); } if(server.argName(i) == "delay") { dl = server.arg(i).toInt(); } if(server.argName(i) == "need_wait") { nwt = server.arg(i).toInt(); } } if (nwt > 0){ unsigned long wt = millis() - last_cmd_send_time; if (wt < nwt && wt > 0) { delay(nwt - wt); } } if (code != 0) { for (uint8_t i=0; i<cnt; i++){ irsend.sendNEC(code, 32); delay(dl); } } last_cmd_send_time = millis(); handleRoot(); } 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); } void setup(void){ irsend.begin(); Serial.begin(115200); WiFi.mode(WIFI_AP_STA); WiFi.begin(ssid, password); 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()); if (mdns.begin("esp8266", WiFi.localIP())) { Serial.println("MDNS responder started"); } server.on("/", handleRoot); server.on("/ir", handleIr); server.on("/seq", handleSeq); server.on("/inline", [](){ server.send(200, "text/plain", "this works as well"); }); server.on("/update", HTTP_GET, [](){ server.sendHeader("Connection", "close"); server.sendHeader("Access-Control-Allow-Origin", "*"); server.send(200, "text/html", serverIndex); }); server.on("/update", HTTP_POST, [](){ server.sendHeader("Connection", "close"); server.sendHeader("Access-Control-Allow-Origin", "*"); server.send(200, "text/plain", (Update.hasError())?"FAIL":"OK"); ESP.restart(); },[](){ HTTPUpload& upload = server.upload(); if(upload.status == UPLOAD_FILE_START){ Serial.setDebugOutput(true); WiFiUDP::stopAll(); Serial.printf("Update: %s\n", upload.filename.c_str()); uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; if(!Update.begin(maxSketchSpace)){//start with max available size Update.printError(Serial); } } else if(upload.status == UPLOAD_FILE_WRITE){ if(Update.write(upload.buf, upload.currentSize) != upload.currentSize){ Update.printError(Serial); } } else if(upload.status == UPLOAD_FILE_END){ if(Update.end(true)){ //true to set the size to the current progress Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); } else { Update.printError(Serial); } Serial.setDebugOutput(false); } yield(); }); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); } 



рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмреНрд░реЗрд╕реНрдЯ рдХреЛ рдореИрдиреЗрдЬ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреЗрдЬ рдмрдирд╛рдпрд╛ рд╣реИред
brizer.html
 <html> <head> <script> function sendIR(str) { if (str.length == 0) { // document.getElementById("txtHint").innerHTML = ""; return; } else { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { // document.getElementById("txtHint").innerHTML = this.responseText; } }; xmlhttp.open("GET", "http://192.168.0.193/" + str, true); xmlhttp.send(); } } </script> </head> <body> <div id="demo"> <button type="button" onclick="sendIR('ir?code=16724175')">Up</button> <button type="button" onclick="sendIR('ir?code=16711935')">Down</button> <button type="button" onclick="sendIR('ir?code=16722135')">Set</button> <button type="button" onclick="sendIR('ir?code=16720095')">Power</button> <button type="button" onclick="sendIR('seq?need_wait=11000&code=16722135&count=2&delay=20');sendIR('seq?code=16711935&count=50&delay=20');sendIR('seq?code=16724175&count=21&delay=20')">day</button> <button type="button" onclick="sendIR('seq?need_wait=11000&code=16722135&count=2&delay=20');sendIR('seq?code=16711935&count=50&delay=20');sendIR('seq?code=16724175&count=35&delay=20')">night</button> <a href="http://192.168.0.193/update">update</a> </div> </body> </html> 



рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░реЗрд╕реНрдЯ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд╕рд╛рде рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкрд╣рд▓реА рдмрд╛рд░ "рдЙрдарддрд╛ рд╣реИ", рдпрд╣ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕реНрд╡рдЪрд╛рд▓рди рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдХреГрдкрдпрд╛ рдЕрджреНрдпрддрди рдлрд░реНрдорд╡реЗрдпрд░ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi401637/


All Articles