Bom dia amigos, preciso de uma ajuda com um projeto que eu gostaria de alterar mas não se tem como.
Eu fiz esse projeto aqui (https://www.youtube.com/watch?v=okP5wnUuHzU&t=6s) de clonar controles remotos com o Arduino UNO e deu certinho, mas ele só funciona conectado pelo computador (resumidamente, você recebe um sinal infravermelho, salva ele, e reproduz ele quando quiser com um emissor infravermelho).
Eu queria alterar esse projeto para enviar o código infravermelho por um comando no celular. Após pesquisar um pouco eu ouvi falar do ESP01. À primeira vista eu pensei que seria fácil, mas depois de muitos tutoriais falhados eu percebi que não faço ideia de como fazer isso, ou se realmente é possível com o ESP01.
Então, tem como? Ou eu preciso de um outro módulo, tipo o ESP32? E se for possível com o ESP01, alguém poderia me dar uma luz de como fazer?
Olá! Bem vindo ao Forum!
Se eu entendi direito o que você quer fazer, você pretende enviar o comando "a" a partir do seu celular para o Arduino e ele envia para a TV o código infravermelho que você gravou previamente. É isso?
Se for, o que você precisa é estabelecer uma comunicação sem fio entre o Arduino e o seu celular. Isso pode ser feito via wi-fi usando o ESP-01 conectado ao Arduino. Porém, eu pessoalmente acho bem mais difícil fazer isso via wi-fi do que por Bluetooth.
No seu lugar, eu compraria o ESP32 (que substitui o Uno e o ESP-01) e criaria um app usando o MIT app inventor para enviar os comandos do celular para o Arduino via Bluetooth.
Aí eu chamo atenção para dois aspectos que devem ser considerados:
-
O Uno opera em lógica de 5V. Os ESPs em 3.3V. Então tem que ver se o receptor e o transmissor de IR que você vai usar operam em 3.3V também.
-
Nem todas as bibliotecas que funcionam com o Arduino funcionam com o ESP-32. Então você também precisa checar a compatibilidade dessa biblioteca usada no vídeo. Ou mudar o programa para usar uma que sirva no ESP-32.
Ola, coincidentemente, fiz este projeto a poucos dias, o controle remoto do meu projetor se quebrou e aí reinventei ele usando um esp01, basicamente, tive uma sorte muito grande de dias antes ter clonado os sinais infravermelho dos botões usando o receptor infravermelho, primeiro passo é este, você ter os códigos de sinais dos botões na mão, já da então para começar o projeto, eu utilizei um led emissor, um transistor, um resistor e um regulador de tensão, a noite posto o desenho do projeto para você dar uma olhada, atualmente estou usando ligado no USB do carregador de celular, mas em breve vou passar ele para baterias 18650 para não ficar ocupando espaço na tomada.
No mais para deixar controlável pelo celular, criei uma página HTML simples, vamos lá indo do começo, o meu esp01 configurei ele como um webserver, criei diversas rotas, cada rota é um comando a ser emitido pelo infravermelho, essa página HTML possui o desenho dos botões do meu controle e cada botão que pressiono ele chama uma rota que está no meu esp01, basicamente é isso.
Não consigo enviar os desenhos agora, mas se tiver interesse a noite consigo postar mais detalhes! Inclusive o meu projeto fui um pouco além e utilizei a biblioteca espalexa para deixar ele compatível com Alexa, então tanto faz eu comandar pelo celular atraves da pagina html ou dar comando pela alexa ![]()
Nossa, muito show. Se você puder postar depois o desenho eu agradeço, me ajudaria muito.
Boa noite, fiz uma representação simples de como o projeto está funcionando atualmente, os componentes utilizados foram estes:
1 resistor 1k
1 regulador de tensão Dc-dc Step Down Buck Mini 360 3a
1 transistor BC548B
1 Led Infravermelhor
1 Esp01 (8266)
1 fonte de energia 5v
Observações:
- O transistor BC548B pode possivelmente ser substituído pelo BC548, 2n2222 ou um S8050.
- O resistor pode testar 330 ohms até 10k, isso porque de onde tirei a ideia tinha essa recomendação, testei de 1K e de primeira deu certo.
- Regulador de tensão listei o que estou usando de exemplo, mas está livre para usar qualquer um que entregue 3.3v para o circuito este é o ponto importante, exemplo de outro regulador conhecido é o Lm2596
- Como disse anteriormente e apenas reforçando, da forma que listei e desenhei é exatamente como está funcionando para mim, em breve irei atualizar o circuito para funcionar com baterias.
- Uma possível diferença que você vai notar para sua montagem no Arduino UNO é a presença do transistor neste projeto, li em diversos lugares que é problemático usar sem o transistor para controlar os sinais do led com o esp01 devido algum tipo de instabilidade na energia, não me arrisquei de testar sem o transistor já que vi isso em várias montagens e também já tinha um fácil aqui que removi de um controle remoto.
- Não sei se era o seu pensamento também, sei que tinha opção de usar o esp01 para controlar o arduino que por sua vez controlaria o LED, mas pensei já que quem faz o trabalho principal de se conectar no WIFI é o esp01 e ele consegue controlar o led diretamente, pq aumentar a complexidade do projeto incluindo mais outro microcontrolador? A menos que o microcontrolador precisasse controlar outras coisas que o esp01 não conseguisse suprir claro.
Abaixo o desenho da montagem do circuito:
Links que eu usei como base antes de criar a minha própria montagem:
- ESP01 Send & Receive Circuit · crankyoldgit/IRremoteESP8266 Wiki · GitHub
- Diy Ir Remote With ESP8266-01 — 2 The Top
Não havendo dúvidas em relação à montagem e se necessitar pode avisar que eu gero um exemplo simples de código também.
Bem é isso, qualquer dúvida estou a disposição, aceito críticas também ahuaha não sou nenhum profissional em microcontroladores/eletrônica, somente trabalho profissionalmente com programação e há pouco tempo decidi ingressar nessa área por hobbi, gosto sempre de descobrir pontos a melhorar, abçs!! (=
Boa tarde, muito obrigado pela explicação detalhada. ![]()
Como você disse, é realmente melhor usar só o ESP01 do que com o Arduino, já que eu já tenho os códigos que eu preciso.
Eu ainda vou ter que comprar esse regulador de tensão e o transistor para montar e testar aqui, mas se você puder mostrar um exemplo de código me ajudaria muuuito. Eu só consegui fazer esse projeto do Youtube porque ele estava bem explicadinho, e honestamente eu não sou muito bom com essa parte de programar.
Obrigado ![]()
Claro, sem problemas, gerei uma versão bem simplificada do meu código, somente com a parte principal, que é fazer o webserver funcionar com algumas rotas do controle de exemplo, como se trata de um aplicação de servidor que vai ficar online para que você possa do seu celular ou de qualquer outro dispositivo acessar os comandos a qualquer momento é necessário deixar ele com um IP fixo na sua rede, pois por default o seu modem/roteador possui um DHCP que irá ficar distribuindo endereços aleatórios para o seu esp01 quando ele bem entender, na minha rede o meu gateway (roteador principal) tem o endereço 192.168.0.1, por isso respeitando essa faixa defini o meu ip principal como 192.168.0.125 pq sei que é um ip que está livre, é desejável você entender um pouquinho dessa parte para poder configurar corretamente, mas normalmente os roteadores costumam vir nessa faixa mesmo qualquer coisa avisa se tiver dificuldades nisto.
No mais você sabe o que é um webserver? Caso não, basicamente é uma aplicação web de servidor, que vai funcionar como uma API (Application Programming Interface (Interface de Programação de Aplicação)) , pois bem essa API vai disponibilizar rotas que são basicamente comandos acessíveis por qualquer dispositivo na sua rede, um exemplo de rota, caso o seu esp01 for configurado para o IP 192.168.0.125 como no meu caso, para chamar um comando para mandar o meu equipamento para tela inicial basta eu acessar http://192.168.0.125/telaInicial, acessar este endereço no navegador de internet de qualquer dispositivo é o suficiente para o meu esp01 receber o comando e saber que quero acessar tela inicial.
Claro que não vamos ficar acessando endereços para executar as funcionalidades, existem outros meios para facilitar essa comunicação, posso mostrar adiante depois que pelo menos essa parte já estiver compreendida hauah
Vamos ao código:
#include <ESP8266WiFi.h>
#include <IRremote.h>
#include <ESP8266WebServer.h>
#define IR_TRANSMITTER_PIN 3 // Definindo o pino do transmissor IR (RX)
IRsend irsend(IR_TRANSMITTER_PIN); // Instância do transmissor IR
ESP8266WebServer server(80);
void setup() {
Serial.begin(115200);
// Configurar o WiFi
WiFi.mode(WIFI_STA);
WiFi.begin("NOMEDAREDE", "##SENHADAREDE##"); //INSERIR CREDENCIAIS AQUI
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao WiFi...");
}
Serial.println("Conectado ao WiFi");
// Configurar IP fixo
IPAddress ip(192, 168, 0, 125);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, gateway, subnet);
// Configurar rotas do servidor web
server.on("/mudo", HTTP_GET, mudo);
server.on("/telaInicial", HTTP_GET, telaInicial);
server.on("/confirmar", HTTP_GET, confirmar);
server.on("/esquerda", HTTP_GET, esquerda);
server.on("/direita", HTTP_GET, direita);
server.on("/cima", HTTP_GET, cima);
server.on("/baixo", HTTP_GET, baixo);
server.begin();
}
void loop() {
server.handleClient();
}
void mudo() {
irsend.sendNEC(0xEF00CF30, 32);
server.send(200, "text/plain", "Botao mudo!");
}
void telaInicial() {
irsend.sendNEC(0xEF00AF50, 32);
server.send(200, "text/plain", "Botao tela inicial!");
}
void confirmar(){
irsend.sendNEC(0xEF000FF0, 32);
server.send(200, "text/plain", "Botao confirmar!");
}
void esquerda(){
irsend.sendNEC(0xEF00FF00, 32);
server.send(200, "text/plain", "Botao esquerda!");
}
void direita(){
irsend.sendNEC(0xEF00BF40, 32);
server.send(200, "text/plain", "Botao direita!");
}
void cima(){
irsend.sendNEC(0xEF007F80, 32);
server.send(200, "text/plain", "Botao cima!");
}
void baixo(){
irsend.sendNEC(0xEF005FA0, 32);
server.send(200, "text/plain", "Botao baixo!");
}
Dá uma analisada, qualquer dúvida me fala, deixei os comandos somente de ilustração, mas aí só adaptar para o seu caso. Não sei se vc já brincou com esp01 antes, se não tiver, já da uma olhada no youtube, pode até ser no brincando com ideias mesmo que é um excelente canal, lá tem vídeo mostrando como configurar esp01 para primeiro uso, coisas que vc deve saber antes de comprar, vai ser importante vc comprar um adaptador USB e preparar ele de uma forma específica para colocar o esp01 em modo de gravação, tem lá explicando certinho, se não encontrar eu dou uma procurada aqui para te enviar.
Muito obrigado de novo ![]()
Vou ter que aprender umas coisinhas (como usar o esp01) pra tentar fazer isso, mas acho que consigo.
Valeu!
Olá novamente, tudo bem?
Já tem um tempo que eu falei que ia testar tudo, mas com tanta coisa na facul eu acabei adiando a montagem do projeto até agora.
Eu finalmente montei tudo e tentei usar o webserver, mas infelizmente não deu certo. Eu configurei o ESP01 com o adaptador USB (até soldei um botão para usar o modo de gravação), o meu circuito ficou idêntico ao seu, arrumei o código para usar aqui (tive que mudar pq o meu gateway é diferente), mas quando acessei o endereço aqui não aconteceu nada. Tentei o endereço base e os outros com comandos, mas não acontece nada. Conferi se as credenciais estavam corretas, os endereços, tentei usar perto do roteador, mas nada adiantou.
Alguma ideia do que possa ter sido o problema?
Desculpe por mandar msg depois de tanto tempo, acho que esse projeto nem está mais na sua cabeça, mas se puder dar pelo menos uma ideia já ajudaria muito.
Valeu ![]()
Boa noite, opa, claro, primeira etapa é saber se está de fato conectando no seu wifi, quando você está com o seu esp01 conectado no USB do computador e com a IDE do arduino aberta, você consegue ver no log uma mensagem de que está tentando se conectar e logo após uma mensagem de que conectou? Ou só fica tentando conectar a vida toda, se puder posta a versão completa do código que você está usando aqui (censurando wifi/senha claro hehe)
Então cara, não aparece texto no meu terminal, só ficam surgindo uns "��L�L�L�L����L���" a cada segundo.
Mas eu percebi agora que eu provavelmente estou fazendo algo bem errado, pq como eu conectaria o ESP01 no meu PC e com o circuito montado ao mesmo tempo? Eu estou usando o adaptador USB, então só tem como ser um ou outro!
(Pelo menos o que eu havia feito foi gravar o programa no ESP, colocar ele no circuito, ligar e tentar acessar o endereço no meu navegador, o que não funcionou).
Eu tenho certeza que gravei o programa corretamente, e esses símbolos que eu falei aparecem quando eu conecto o ESP em modo de execução (mas sem o resto do circuito).
Quanto ao código, eu procurei o que faltava arrumar no seu código, mas pelo o que eu vi não precisava mudar nada. A forma de conexão já estava certa, e a função WebServer.handleClient() chama as funções definidas em server.on(), correto? O que mais falta além disso? Eu verifiquei os endereços e nomes/senhas, mas está tudo certo.
Perfeito, está aparecendo os símbolos estranhos por causa da taxa de transmissão, basta alterar para 115200 aí você vai ter a visão do log real. Print abaixo:
É isso mesmo, é um ou outro, primeiro foca em ter certeza que está funcionando conectado somente no computador, sem estar conectado no circuito, quando estiver acessível as rotas, ai sim você passa para a segunda complexidade que é funcionar no seu circuito, é bom no computador vc ter as rotas fakes e quando você acessar aparecer um log no seu console do arduino ide, assim vc vai ter certeza que deveria funcionar no seu circuito.
Apenas acrescentando, a taxa de transmissão foi definida no setup:
void setup() {
Serial.begin(115200);
// restante do código
}
Precisa ser definido dessa forma pq é a taxa padrão de transmissão do esp01.
Incrível cara, eu refiz exatamente o que eu tinha feito ontem e dessa vez funcionou perfeitamente. Foi sua bênção de alguma forma.
Muito obrigado pela décima vez. Pode parecer um problema simples, mas me ajudou demais, e você explica melhor que qualquer professor.
Acho que não preciso de ajuda pra mais nada daqui pra frente, então valeu!
Por nada, fico feliz por saber que consegui ajudar (: Se precisar de ajuda para criar uma interface visual para acessar as rotas pode dar ideia. Eu particularmente gosto de usar HTML, existe uma forma de colocar o próprio HTML no esp01 na rota principal, mas acho que tem gente que gosta de usar softwares de terceiros para acessar as rotas.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.

