Como fazer seu próprio botão de conexão Wi-Fi com ESP8266

Como fazer seu próprio botão de conexão Wi-Fi com ESP8266

A Internet das Coisas tem um vasto potencial DIY. Com know-how suficiente e alguns componentes baratos, você pode construir um sistema complexo de dispositivos conectados.





Às vezes, no entanto, você deseja algo simples. Sem sinos ou apitos, apenas um botão que executa uma única tarefa. Você já deve estar familiarizado com algo assim se já usou um botão Amazon Dash para reordenar itens domésticos do dia a dia.





Hoje vamos fazer um botão habilitado para Wi-Fi usando um NodeMCU e programá-lo para usar IFTTT para fazer ... bem, qualquer coisa! Instruções escritas após o vídeo, se preferir.





O que você precisará

Você vai precisar de:

  • 1 x placa NodeMCU (ESP8266), disponível para $ 2-3 no AliExpress
  • 1 x botão de pressão
  • 1 x LED (opcional)
  • 1 x resistor de 220 Ohm (opcional)
  • Placa de ensaio e fios de conexão
  • Micro USB para programação
  • Computador com o Arduino IDE instalado

Além do NodeMCU, você deve ser capaz de encontrar a maioria dessas peças em qualquer kit inicial do Arduino. Este tutorial presumirá que você está usando o LED e o resistor opcionais, mas eles não são essenciais.



Etapa 1: Configurando o circuito

A configuração do hardware é muito simples para este projeto. Configure sua placa de acordo com este diagrama.

O fio roxo conecta pino D0 para um lado do botão. O fio verde conecta o outro lado do botão ao PIN RST . O fio azul vai de pino D1 para o resistor e LED. A perna negativa do LED se conecta ao PIN GND do NodeMCU.





Quando a placa de ensaio é configurada, ela deve se parecer com isto:

como obter mensagens antigas no iphone

Se você está se perguntando como meu LED vai para o pino de aterramento usando apenas aqueles pequenos pedaços de cabo, nosso rápido curso intensivo de placa de ensaio deve ajudar a esclarecê-lo! Verifique sua configuração e conecte seu NodeMCU ao computador via USB.





Etapa 2: Configurando o IDE

Antes de prosseguir com a codificação, você precisa fazer alguns preparativos. Se ainda não o fez, configure o Arduino IDE para reconhecer sua placa NodeMCU. Você pode adicioná-lo à sua lista de painéis via Arquivo> Preferências .

Você pode encontrar uma explicação mais detalhada dessa etapa em nosso artigo de introdução ao NodeMCU.

Duas bibliotecas são necessárias para este projeto. Navegar para Sketch> Incluir Biblioteca> Gerenciar Bibliotecas . Procurar ESP8266WIFI por Ivan Grokhotkov e instalá-lo. Esta biblioteca foi escrita para fazer conexões Wi-Fi com a placa NodeMCU.

Próxima pesquisa para o IFTTTWebhook por John Romkey e instale a versão mais recente. Esta biblioteca foi projetada para simplificar o processo de envio de webhooks para o IFTTT.

Essa é toda a preparação de que precisamos, vamos codificar!

Como o código funcionará

Vamos usar o ESP8266WIFI biblioteca para estabelecer uma conexão wi-fi. o IFTTTWebhooks biblioteca faz uma solicitação ao IFTTT --- neste caso, para postar no Twitter. Em seguida, instrua a placa NodeMCU para hibernar quando não estiver em uso para economizar energia.

Quando o botão for pressionado, ele irá vincular o D0 e RST alfinetes. Isso reinicializa o tabuleiro e o processo acontece novamente.

A maior parte do código neste tutorial é simples o suficiente para iniciantes. Dito isso, se você está começando, achará muito mais fácil entender depois de seguir nosso Guia para iniciantes do Arduino .

Este tutorial percorre o código em partes para ajudar na compreensão. Se você quiser ir direto ao assunto, pode encontrar o código completo em Pastebin . Observe que você ainda precisará preencher suas credenciais de Wi-Fi e IFTTT neste código para que ele funcione!

Etapa 3: Testando o sono profundo

Para começar, criaremos um teste simples para mostrar como funciona o sono profundo. Abra um novo esboço no IDE do Arduino. Insira os dois blocos de código a seguir.

#include
#include
#define ledPin 5
#define wakePin 16
#define ssid 'YOUR_WIFI_SSID'
#define password 'YOUR_WIFI_PASSWORD'
#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Aqui, incluímos nossas bibliotecas, juntamente com a definição de algumas variáveis ​​que precisaremos em nosso esboço. Você notará que ledPin e wakePin são numerados de forma diferente aqui em comparação com o diagrama de Fritzing acima. O NodeMCU tem uma pinagem diferente para placas Arduino. No entanto, isso não é um problema, devido a este diagrama útil:

Agora crie uma função de configuração:

void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(' ');// print an empty line before and after Button Press
Serial.println('Button Pressed');
Serial.println(' ');// print an empty line
ESP.deepSleep(wakePin);
}

Aqui, configuramos nossa porta serial e usamos um loop while para esperar até que comece. Uma vez que este código será acionado após pressionar o botão de reinicialização, imprimimos 'Botão pressionado' para o monitor serial. Então, dizemos ao NodeMCU para entrar em sono profundo até o botão que conecta o wakePin ao RST pino é pressionado.

Finalmente, para teste, adicione isso ao seu ciclo() método:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

Normalmente, os esboços do Arduino executam a função de loop continuamente após a configuração. Como fazemos a placa hibernar antes do término da configuração, o loop nunca é executado.

Salve seu esboço e carregue-o no quadro. Abra o monitor serial e você deve ver 'Botão pressionado.' Cada vez que o botão é acionado, o quadro é reiniciado e a mensagem é impressa novamente. Funciona!

Uma observação sobre o monitor serial

Você deve ter notado alguns caracteres sem sentido no monitor serial durante alguns de seus projetos. Isso geralmente é devido a não definir o monitor serial para a mesma taxa de baud que o Serial.begin (XXXX) avaliar.

Muitos guias sugerem iniciar a conexão serial a uma taxa de transmissão de 115200 para um projeto como este. Tentei muitas combinações, e todas elas apresentavam vários graus de tagarelice antes e depois das mensagens seriais. De acordo com várias postagens do fórum, isso pode ser devido a uma placa com defeito ou a um problema de compatibilidade de software. Como isso não afeta muito o projeto, estou optando por fingir que não está acontecendo.

como diminuir o tamanho de um arquivo pdf no mac

Se você estiver tendo problemas com o monitor serial, experimente diferentes taxas de transmissão e veja qual funciona melhor para você.

Etapa 4: Conectando ao Wi-Fi

Agora crie uma função para se conectar à sua rede Wi-Fi.

void connectToWifi() {
Serial.print('Connecting to: SSID NAME'); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(' ');// print an empty line
Serial.print('Attempting to connect: ');
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(', ');
i--;
}
Serial.println(' ');// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print('Connected.');
Serial.println(' ');// print an empty line
Serial.print('NodeMCU ip address: ');
Serial.println(WiFi.localIP());
}
else {
Serial.println('Connection failed - check your credentials or connection');
}
}

Este método tenta se conectar à sua rede dez vezes com um segundo no meio. O sucesso ou falha de conexão é impresso no monitor serial.

Etapa 5: Chamar o método de conexão

Agora, o connectToWifi () nunca é chamado. Adicione uma chamada à sua função de configuração entre a mensagem 'Botão pressionado' e o envio da placa para hibernar.

connectToWifi();

Caso você esteja se perguntando onde isso se encaixa, deve ser assim:

No topo do esboço, substitua o ssid e senha variáveis ​​com suas credenciais de Wi-Fi. Salve seu esboço e carregue-o no quadro.

Agora, quando a placa inicializar, ela tentará se conectar à sua rede Wi-Fi, antes de retornar à função de configuração. Agora, vamos configurar a integração IFTTT.

Etapa 6: Configurando a integração IFTTT

O IFTTT permite a integração com uma vasta gama de serviços da web. Nós o usamos em nosso tutorial de LED de torre de PC Wi-Fi para enviar um alerta sempre que um novo e-mail for recebido. Hoje vamos usá-lo para enviar um tweet com o pressionar de um botão.

Navegue até o Meus miniaplicativos página e selecione Novo miniaplicativo

Clique em + isto e conectar-se a Webhooks . Selecione 'Receber um pedido da web' e nomeie seu evento. Mantenha simples ! Anote o nome do evento, você precisará adicioná-lo ao seu código NodeMCU mais tarde. Clique 'Criar gatilho' .

Agora selecione + isso . Procure pelo Twitter serviço e se conectar a ele --- você precisará autorizá-lo a postar em sua conta do Twitter. Selecione 'Postar um tweet' e escolha sua mensagem.

A próxima tela solicitará que você analise o miniaplicativo. Clique em Concluir. É isso!

Etapa 7: Adicionar credenciais IFTTT ao código

De volta ao Arduino IDE, você precisará adicionar sua chave de API IFTTT e nome de evento às variáveis ​​definidas. Para encontrar a chave API, navegue até Meus miniaplicativos e selecione Webhooks debaixo de Serviços aba. Selecione Documentação para acessar sua chave.

Copie a chave e o nome do evento em seu código, substituindo os nomes temporários configurados para eles.

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Observe que as vírgulas invertidas devem permanecer, apenas substituir o texto.

Entre chamar o connectToWifi () e fazendo a placa hibernar, crie uma instância do objeto de biblioteca IFTTTWebhook. O LED sinaliza a conclusão da tarefa antes que o sono profundo comece novamente.

como inserir caixa de texto no google docs
//just connected to Wi-Fi
IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep

Chamando o gatilho no gancho O objeto dispara o miniaplicativo IFTTT e deve postar em sua conta do Twitter. Salve seu esboço e carregue-o. Agora você deve ter um botão de tweet totalmente funcional.

Se não parece estar funcionando, verifique seu código e credenciais cuidadosamente para ver se há erros. Se você realmente ficar preso, pegue o código completo acima e compare-o com o seu.

Feito! Como você poderia melhorar ainda mais?

Esta é uma versão básica de um botão Wi-Fi, mas há muitas maneiras de aprimorá-lo. Para simplificar, a conexão USB é usada para alimentação aqui. Uma bateria o tornaria totalmente móvel e uma caixa com o circuito seria o projeto de impressão 3D perfeito para iniciantes.

Apesar de usar o sono profundo, você pode descobrir que a bateria se esgota rapidamente. Existem muitos Dicas de economia de energia do Arduino que auxiliam neste tipo de projetos. Embora seja mais difícil do que este tutorial, se você fez seu próprio Arduino com baixo consumo de energia do zero, um botão Wi-Fi alimentado por bateria pode durar meses!

Este projeto seria perfeito para um controle remoto para aplicativos domésticos inteligentes. Já existe uma quantidade considerável de miniaplicativos de automação residencial disponível no IFTTT. Depois de aprender o básico, você pode usar quase qualquer sensor ou interruptor para acionar praticamente qualquer serviço que possa imaginar.

Crédito da imagem: Vadmary / Depositphotos

Compartilhado Compartilhado Tweet O email 6 alternativas audíveis: os melhores aplicativos de audiolivros gratuitos ou baratos

Se você não gosta de pagar por audiolivros, aqui estão alguns aplicativos excelentes que permitem ouvi-los gratuitamente e legalmente.

Leia a seguir
Tópicos relacionados
  • faça você mesmo
  • Arduino
  • Tutoriais de projetos DIY
Sobre o autor Ian Buckley(216 artigos publicados)

Ian Buckley é jornalista freelance, músico, performer e produtor de vídeo que mora em Berlim, Alemanha. Quando ele não está escrevendo ou no palco, ele está mexendo em eletrônicos ou códigos DIY na esperança de se tornar um cientista maluco.

Mais de Ian Buckley

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever