Índice:

Controle remoto baseado em navegador Arduino (linux): 9 etapas (com imagens)
Controle remoto baseado em navegador Arduino (linux): 9 etapas (com imagens)

Vídeo: Controle remoto baseado em navegador Arduino (linux): 9 etapas (com imagens)

Vídeo: Controle remoto baseado em navegador Arduino (linux): 9 etapas (com imagens)
Vídeo: [LIVE] - Por dentro da plataforma Arduino 2024, Novembro
Anonim
Controle remoto baseado em navegador Arduino (linux)
Controle remoto baseado em navegador Arduino (linux)
Controle remoto baseado em navegador Arduino (linux)
Controle remoto baseado em navegador Arduino (linux)

Temos filhos. Eu os amo demais, mas eles ficam escondendo o controle remoto do satélite e da TV quando colocam os canais infantis. Depois que isso aconteceu diariamente por vários anos, e depois que minha querida esposa me permitiu ter um Arduino no Natal, decidi que era hora de fazer algo útil (aos olhos dela!) Com o Arduino. Então, aqui temos o culminar disso: uma interface baseada na web para o Arduino que substitui meus controles remotos e é acessível a partir de minha rede interna. Quando eu descobrir por que meu escudo Ethernet não permite que meu arduino mantenha um esboço, vou escrever um novo esboço que usa o escudo Ethernet como servidor web, o que significa que não preciso do Apache instalado no meu computador. Fique ligado, vou chegar lá!

Etapa 1: Pré-requisitos

Pré-requisitos
Pré-requisitos

Hardware: Lado do Arduino: Arduino - Estou usando um Arduino Uno R2 Breadboard - sua loja de eletrônicos local ou a cozinha se você quiser um autêntico breadboard. um de um controle remoto quebrado (obrigado crianças!) Receptor infravermelho - Eu peguei o meu de um extensor remoto de olho mágico Transistor - Eu usei um resistor BC547 - Eu usei um resistor variável de 1,5 k ohm definido para 1 k ohm breadboard fios jumper - eu peguei o meu de um carretel de cabo RJ45 de núcleo sólido Lado do computador: Computador para usar como servidor USB para o Arduino Software: Arduino software - da biblioteca irremote arduino.cc - de https://www.arcfn.com/2009/08/multi-protocol- infravermelho-remote-library.html (obrigado Ken, ótimo trabalho!) Servidor da web Apache com PHP instalado - endereço IP interno apache.org - o meu é 192.168.0.9 Foto do seu controle remoto - google ou uma foto tirada com sua câmera. Salvei o meu na resolução 200x600

Etapa 2: Construindo o Conselho

Construindo o Conselho
Construindo o Conselho

Usar uma placa de ensaio para um arduino é altamente recomendado. Montei meu Arduino e uma placa de ensaio no mesmo gabinete e conectei todos os pinos que uso regularmente diretamente à placa de ensaio de forma permanente. Pinos do Arduino usados para este projeto: 5v, aterramento Digital pinos 3, 11 (o pino 3 controla o LED IR, o pino 11 se conecta ao receptor IR)

Etapa 3: esquemático

Esquemático
Esquemático

Este esquema é muito simples, 4 componentes e 6 fios. Conexões do LED IR: Conecte uma das pernas do resistor ao pino digital 3 do Arduino. Conecte a outra perna do resistor ao pino base do transistor (a perna do meio no meu caso) Conecte o emissor do transistor ao aterramento Conecte o coletor do transistor para a perna negativa do LED (perna curta, lado achatado do LED) Conecte a perna positiva (perna longa, lado curvo) do LED para as conexões do receptor de IV de pino de 5v (você precisaria encontrar a pinagem para seu receptor IR específico): pino GND para pino de aterramento VS para pino VO de 5v para pino digital 11 do Arduino

Etapa 4: Adicionar Biblioteca Irremote ao Software Arduino

Adicione a biblioteca Irremote ao software Arduino
Adicione a biblioteca Irremote ao software Arduino

irremote é uma ótima biblioteca escrita por Ken Shirriff e está disponível em seu blog em https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Baixe a biblioteca em https:// arcfn.com / files / IRremote.zip e instale-o como faria com qualquer outra biblioteca do arduino. Seu blog contém muitas informações úteis sobre a biblioteca e como instalá-la.

Etapa 5: registre os códigos de seus controles remotos

Aqui está o início da parte chata (mas inevitável): Pressionar todos os botões no controle remoto, salvando a string de saída e mapeando-a para o controle remoto virtual. Você só precisa fazer isso uma vez, levando cerca de 20 minutos ou mais. Inicie um editor de texto para salvar sua saída. Crie um novo documento e digite todos os botões em seu controle remoto, um por linha: Power Up Down Left Right.. et cetera Inicie o IDE do Arduino e clique em "Arquivos-> Exemplos-> IRremote-> IRrecvDump" e carregue-o para seu Arduino. Este exemplo descarregará os códigos remotos na porta serial. Inicie o monitor da porta serial e pressione uma tecla no controle remoto. Você verá uma string aparecer na janela do monitor serial: "Decodificado *: * (* bits)". Copie esta linha e salve-a em seu documento na linha apropriada. Repita até que você tenha todas as suas chaves armazenadas no arquivo de texto. Eu sei o quão divertido é este bit, já o fiz duas vezes até agora: P Agora precisamos fazer uma pequena pesquisa e substituir no arquivo de texto: pesquisar por "Decodificado" substituir por "" pesquisar por ": 0x" substituir por "," procure por "(" substituir por "," procurar "bits)" substituir por "" Portanto, para uma linha como: NEC decodificado: 0x000110 (15 bits), agora devemos ter uma linha que diz: NEC, 000110 15

Etapa 6: Crie a página da Web para o seu controle remoto

Agora precisamos mapear os botões em sua imagem do controle remoto.

Usei https://www.maschek.hu/imagemap/imgmap para mapear os botões e modifiquei o código que o site fornece para fazê-lo funcionar.

Clique em "Usar uma imagem em seu computador: [escolher arquivo]", selecione sua imagem, clique em [carregar], clique em [aceitar] Solte retângulos, círculos etc. em cada botão. Para HREF coloque /remote.php?command= e a linha para esse botão do documento de texto, por exemplo /remote.php?command=NEC, 000110, 15 Seria sensato (e ajudaria imensamente na depuração) se você também preencher Alt: com o nome do botão, mas isso é com você.

Repita para cada botão.

Tudo feito? Então vamos continuar. No final da página está "Código", clique nele e uma caixa se abrirá mostrando o código para o mapa de imagem. Copie e cole em um novo documento de texto. Esta é a parte principal da nossa página web.

Aqui está minha página da web completa, basta substituir o…

com seu próprio código acima e salve-o como remote.php em seu diretório da web (/ var / www no linux) junto com suas imagens de controle remoto. Altere as linhas de suas próprias imagens:

"https://www.w3.org/TR/html4/loose.dtd">

Controle de LED Arduino

Etapa 7: Faça upload do código do controle remoto para o seu Arduino

Faça upload do código de controle remoto para o seu Arduino
Faça upload do código de controle remoto para o seu Arduino

Crie um novo esboço e cole o seguinte código nele: / * * WebRemote * Um LED IR deve ser conectado ao Arduino PWM pino 3. * Versão 0.1 julho de 2009 * Este código é protegido por Gregory Fenton, https://labby.co. uk / 2012/02 / irremote-arduino-experimentation / * Biblioteca IRremote copyright 2009 Ken Shirriff, https://arcfn.com * / #include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); return obj; } booleano terminado = falso; char inData [64]; // Tamanho conforme índice de bytes apropriado = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Serial << "Porta serial inicializada" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; long sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (índice == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {terminado = verdadeiro; índice = 0; pausa; } else {if (index <64) // Tamanho do array {pch + = inChar; index ++; }}} if (terminado) {// Analisa os dados em inData aqui… pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // ignorar ',' ou '' // i agora aponta para o início do hexadecimal j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j agora aponta para ',' ou '' após hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); para (i = 0; i <sTemp.length (); i ++) {k = sTemp ; if (! ((k> = '0' && k = 'A' && k <= 'F'))) quebra; sHex * = 16; if (k> = '0' && k <= '9') sHex + = (k - '0'); else if (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F'))) quebra; } sTemp = pch.substring (j + 1); sBits = 0; para (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits * = 10; if (k> = '0' && k <= '9') sBits + = (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Tipo de código:" << sType << "Hex:"; Serial.print (sHex, HEX); Serial << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; terminado = 0; }}} void sendIt (String sType, long sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex, sBits); } else if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } else if (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } else if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } else if (sType.equals (String (""))) {Serial << "Atrasando" << EOP; atraso (450); } atraso (30); }}

Etapa 8: Conecte-se ao servidor da Web a partir do seu computador

Conecte-se ao servidor da Web a partir do seu computador
Conecte-se ao servidor da Web a partir do seu computador

.. ou telefone ou android ou ipad ou o que quer que seja: vá para https:// endereço IP do servidor web / remote.php no seu navegador Para mim, o endereço é https://192.168.0.9/remote.php mas o seu sem dúvida será diferente. Se tudo estiver funcionando, você deverá ver uma imagem do seu controle remoto com botões nos quais pode clicar.

Etapa 9: Etapa opcional: edite o arquivo de hosts para torná-lo mais fácil de usar

Etapa opcional: edite o arquivo de hosts para torná-lo mais fácil de usar
Etapa opcional: edite o arquivo de hosts para torná-lo mais fácil de usar

Uma etapa que fiz foi editar meu arquivo hosts (/ etc / hosts no linux, C: / Windows / System32 / Drivers / etc / hosts no Windows). Observe que este arquivo só pode ser editado em um prompt de comando administrativo (windows) ou por su (linux) Adicione a linha ip.add.re.ss remote substitua ip.add.re.ss pelo endereço IP do servidor e salve o arquivo. Você precisaria fazer isso em todos os dispositivos que desejasse para acessar a página da web com o nome abreviado. Agora você pode acessar o remoto com https://remote/remote.php Este é meu primeiro instrutível adequado, seja gentil e me diga se houver algum problema para que eu possa corrigi-lo.

Recomendado: