{"id":400,"date":"2017-04-26T19:54:47","date_gmt":"2017-04-26T22:54:47","guid":{"rendered":"https:\/\/fedablio.com.br\/blog\/?p=400"},"modified":"2022-01-17T21:50:04","modified_gmt":"2022-01-18T00:50:04","slug":"usando-o-arduino-como-controle-remoto-de-infravermelho","status":"publish","type":"post","link":"https:\/\/fedablio.com.br\/blog\/arquivos\/400","title":{"rendered":"Usando o Arduino como controle remoto de infravermelho"},"content":{"rendered":"\n<div style=\"text-align:justify;\">\n\n<p>\nNeste exemplo vou mostrar como fa\u00e7o para \u201cler\u201d um controle remoto atrav\u00e9s do Arduino e com este mesmo Arduino enviar os comandos &#8220;lidos&#8221; do controle remoto para um determinado dispositivo. Vou utilizar o mini system Philips FW-C390 para demonstrar. A ideia tamb\u00e9m vale para televisores, decodificadores, DVDs e etc. Devem ser respeitados o tipos de c\u00f3digo e taxas de bits de cada um. Ex.: NEC, Sony, PANASONIC, RC5, RC6 e etc.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/irarduino01.jpg\"\/><br>\n\n<h4>Material utilizado<\/h4>\n\n<p>\n<code>Arduino Uno Rev 3<\/code><br>\n<code>Ethernet shield W5100<\/code><br>\n<code>Cabo USB plug A e B macho\/macho<\/code><br>\n<code>LED receptor infravermelho compativel com 38 KHz<\/code><br>\n<code>LED emissor infravermelho para controle remoto<\/code><br>\n<code>Resistor 330 Ohm 1\/4W<\/code><br>\n<code>Jumper macho\/macho<\/code><br>\n<code>Protoboard<\/code><br>\n<code>Mini System Philips FW-C390 com controle remoto<\/code>\n<\/p>\n\n<p>\nVamos come\u00e7ar baixando a <a href=\"https:\/\/www.arduino.cc\/en\/software\" target=\"_blank\" rel=\"noopener\">IDE Arduino 1.0.4 (Windows, MAC ou Linux)<\/a> e a biblioteca <a href=\"https:\/\/drive.google.com\/file\/d\/0BwAx3qGThpsAZ3RweGttNWFRdFE\/\" target=\"_blank\" rel=\"noopener\">IRremote<\/a>. Enquanto escrevo, a \u00faltima vers\u00e3o da IDE \u00e9 a &#8220;1.8.2&#8221;, por\u00e9m esta apresentou incompatibilidade com a biblioteca &#8220;IRremote&#8221;.\n<\/p>\n\n<p>\nConsiderando que tenham baixado ambos, comecem extraindo o IDE Arduino. Podem deix\u00e1-lo na \u00e1rea de trabalho mesmo. Procurem a pasta por nome de &#8220;libraries&#8221; e cole o conte\u00fado extra\u00eddo do arquivo <code>IRremote<\/code> nela.\n<\/p>\n\n<p>\nAbra a IDE Arduino e clique conforme abaixo:\n<\/p>\n\n<p>\n<code>\nFile > Examples > IRremote > IRrecvDump\n<\/code>\n<\/p>\n\n<p>\nCom o programa &#8220;IRrecvDump&#8221; aberto, fa\u00e7a o upload deste para sua placa Arduino. Agora vamos montar o circuito conforme abaixo:\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/irarduino02.png\"\/><br>\n\n<p>\nFoto da montagem\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/irarduino03.jpg\"\/><br>\n\n<p>\nDirecione o controle remoto para o sensor infravermelho e pressione os bot\u00f5es POWER, CD e TAPE 1\/2 para conferir. Ser\u00e1 mostrado no monitor da serial do IDE Arduino algo mais ou menos assim:\n<\/p>\n\n<pre>\nC4C\nDecoded RC5: C4C (12 bits)\nRaw (22): 3638 850 -900 850 -900 850 -900 1700 -950 800 -950 800 -1800 1700 -900 850 -1800 850 -900 1700 -950 800\n\n53F\nDecoded RC5: 53F (12 bits)\nRaw (22): -15018 800 -950 1700 -1800 1700 -1800 1650 -950 850 -1800 800 -950 800 -900 850 -950 800 -900 850 -950 800\n\nCBF\nDecoded RC5: CBF (12 bits)\nRaw (24): -24792 800 -950 800 -950 800 -950 1700 -950 800 -1800 1700 -1800 800 -950 800 -950 800 -950 800 -950 800 -950 800\n<\/pre>\n\n<p>\nVejam que foram gerados para os bot\u00f5es POWER, CD e TAPE 1\/2 os c\u00f3digos de 12 bits C4C, 53F e CBF respectivamente. Repita o processo para os demais bot\u00f5s desejados. Eu achei interessante utilizar 9 bot\u00f5es do controle remoto. S\u00e3o eles: POWER, CD, TAPE 1\/2, TUNER, AUX, DIMINUI VOLUME, AUMENTA VOLUME, DIMINUI CANAL E AUMENTA CANAL (apelidei os 2 \u00faltimos). Recomendo que fa\u00e7am uma \u201ccola\u201d contendo os nomes dos bot\u00f5es e seus respectivos c\u00f3digos. Isso ajuda bastante nos pr\u00f3ximos passos.\n<\/p>\n\n<p>\nA minha inten\u00e7\u00e3o \u00e9 controlar o mini system atrav\u00e9s de meu smartphone ou notebook. Agora \u00e9 que entra o Ethernet Shield. Observem o c\u00f3digo abaixo:\n<\/p>\n\n<pre>\n\/*\nLED emissor: PWM 3\n*\/\n#include &lt;SPI.h&gt;\n#include &lt;Ethernet.h&gt;\n#include &lt;IRremote.h&gt;\n\nbyte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };\nIPAddress ip(192, 168, 1, 3);\nIPAddress gateway(192, 168, 1, 1);\nIPAddress subnet(255, 255, 255, 0);\nEthernetServer server(80);\nIRsend irsend;\n\nvoid setup() {\n  Ethernet.begin(mac, ip, gateway, subnet);\n  server.begin();\n}\n\nvoid loop() {\n  EthernetClient client = server.available();\n  if (client) {\n    boolean currentLineIsBlank = true;\n    String vars;\n    while (client.connected()) {\n      if (client.available()) {\n        char c = client.read();\n        vars.concat(c);\n        if (vars.endsWith(\"\/controle1\")) {\n          \/\/bot\u00e3o POWER\n          irsend.sendRC5(0xC4C, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle2\")) {\n          \/\/bot\u00e3o CD\n          irsend.sendRC5(0x53F, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle3\")) {\n          \/\/bot\u00e3o TAPE 1\/2\n          irsend.sendRC5(0xCBF, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle4\")) {\n          \/\/bot\u00e3o TUNER\n          irsend.sendRC5(0xC7F, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle5\")) {\n          \/\/bot\u00e3o AUX\n          irsend.sendRC5(0xD7F, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle6\")) {\n          \/\/bot\u00e3o VOLUME MENOS\n          irsend.sendRC5(0xC11, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle7\")) {\n          \/\/bot\u00e3o VOLUME MAIS\n          irsend.sendRC5(0xC10, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle8\")) {\n          \/\/bot\u00e3o CANAL MENOS\n          irsend.sendRC5(0xC5F, 12);\n          delay(100);\n        }\n        if (vars.endsWith(\"\/controle9\")) {\n          \/\/bot\u00e3o CANAL MAIS\n          irsend.sendRC5(0xC5E, 12);\n          delay(100);\n        }\n\n        if (c == '\\n' && currentLineIsBlank) {\n          client.println(\"HTTP\/1.1 200 OK\");\n          client.println(\"Content-Type: text\/html\");\n          client.println(\"Connnection: close\");\n          client.println();\n          client.println(\"&lt;!DOCTYPE HTML&gt;\");\n          client.println(\"&lt;html&gt;\");\n          client.println(\"&lt;head&gt;\");\n          client.println(\"&lt;title&gt;Philips FW-C390&lt;\/title&gt;\");\n          client.println(\"&lt;\/head&gt;\");\n          client.println(\"&lt;body&gt;\");\n\n          client.println(\"&lt;a href='\/controle1'&gt;&lt;button style='width:150px; height:40px;'&gt;POWER&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle2'&gt;&lt;button style='width:150px; height:40px;'&gt;CD&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle3'&gt;&lt;button style='width:150px; height:40px;'&gt;TAPE 1\/2&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle4'&gt;&lt;button style='width:150px; height:40px;'&gt;TUNER&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle5'&gt;&lt;button style='width:150px; height:40px;'&gt;AUX&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle6'&gt;&lt;button style='width:150px; height:40px;'&gt;VOLUME -&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle7'&gt;&lt;button style='width:150px; height:40px;'&gt;VOLUME +&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle8'&gt;&lt;button style='width:150px; height:40px;'&gt;CANAL -&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n          client.println(\"&lt;a href='\/controle9'&gt;&lt;button style='width:150px; height:40px;'&gt;CANAL +&lt;\/button&gt;&lt;\/a&gt;&lt;br\/&gt;\");\n\n\t  client.println(\"&lt;\/body&gt;\");\n          client.println(\"&lt;\/html&gt;\");\n          break;\n        }\n        if (c == '\\n') {\n          currentLineIsBlank = true;\n        }\n        else if (c != '\\r') {\n          currentLineIsBlank = false;\n        }\n      }\n    }\n    delay(1);\n    client.stop();\n  }\n}\n<\/pre>\n\n<p>\nObservem que antes do c\u00f3digo mostrado no monitor da serial temos um <code>0x<\/code>. \u00c9 uma sintaxe obrigat\u00f3ria.\n<\/p>\n\n<pre>\n\/\/se a string concatenada terminar com \/controle1\nif (vars.endsWith(\"\/controle1\")) {\n\/\/ent\u00e3o envia o c\u00f3digo C4C do tipo RC5 de 12 bits\nirsend.sendRC5(0xC4C, 12);\n\/\/com dura\u00e7\u00e3o de 100 milisegundos para o LED emissor\ndelay(100);\n}\n<\/pre>\n\n<p>\nConsiderando que o upload do c\u00f3digo acima foi feito em seu Arduino, vamos montar o circuito que envia os dados atrav\u00e9s do LED emissor.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/irarduino04.png\"\/><br>\n\n<p>\nFoto da montagem\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/irarduino05.jpg\"\/><br>\n\n<p>\nSe notarem que o nosso novo controle s\u00f3 funciona muito pr\u00f3ximo ao dispositivo a ser controlado, tentem remover o resisotor de 330 Ohm. A seguir vejam como o programa ficou em um computador com o navegador Google Chrome.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/irarduino06.png\"\/><br>\n\n<h4>Por que n\u00e3o conseguimos enxergar a luz emitida pelos controles remotos?<\/h4>\n\n<p>\nA luz possue um comprimento de onda que determinam as cores. Os olhos humanos apenas conseguem enxergar estas ondas, quando estas v\u00e3o desde a cor vermelha (430 nan\u00f4metros aproximados) at\u00e9 a cor violeta (700 nan\u00f4metros aproximados). Abaixo desta faixa temos o infravermelho (controle remoto) e acima, o ultravioleta (sol). Caso queiram muito ver seu controle remoto emitindo luz, o aponte para a c\u00e2mera do seu smartphone enquanto aperta qualquer bot\u00e3o.\n<\/p>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Neste exemplo vou mostrar como fa\u00e7o para \u201cler\u201d um controle remoto atrav\u00e9s do Arduino e com este mesmo Arduino enviar os comandos &#8220;lidos&#8221; do controle remoto para um determinado dispositivo. Vou utilizar o mini system Philips FW-C390 para demonstrar. A ideia tamb\u00e9m vale para televisores, decodificadores, DVDs e etc. Devem ser respeitados o tipos de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[88],"tags":[89,90,91,92],"class_list":["post-400","post","type-post","status-publish","format-standard","hentry","category-arduino","tag-arduino-controle-remoto","tag-controle-televisao-arduino","tag-copiar-controle-remoto","tag-infravermelho-arduino"],"_links":{"self":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/comments?post=400"}],"version-history":[{"count":7,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/400\/revisions"}],"predecessor-version":[{"id":407,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/400\/revisions\/407"}],"wp:attachment":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}