Automação Residencial

Lâmpada Inteligente com Aplicativo

Eletrogate 29 de julho de 2022

Introdução

Nesse post, iremos utilizar a plataforma MIT App Inventor para criar um aplicativo que vai ligar e desligar uma lâmpada. O projeto utiliza a placa NodeMcu ESP12E, que vai atuar como um Web Server e receber informações do aplicativo para enviar ao Relé.


O que é o MIT App Inventor?

O MIT App Inventor é um ambiente de programação visual intuitivo que permite que todos criem aplicativos totalmente funcionais para telefones e tablets. Este possui um sistema de programação em blocos, o que facilita e agiliza o processo de criação de aplicativos.


Circuito

A montagem será a seguinte:


Código da Placa

O código será o seguinte:

#include <ESP8266WiFi.h>

#ifndef STASSID
#define STASSID "*****"
#define STAPSK  "*****"
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

// Cria uma instância do servidor
// Especifica a porta
WiFiServer server(80);

void setup() {
  Serial.begin(9600);

  // prepara a porta da lampada
  pinMode(13, OUTPUT);
  digitalWrite(13, 0);

  // Connecta na rede do wifi
  Serial.println();
  Serial.println();
  Serial.print(F("Conectando com "));
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }
  Serial.println();
  Serial.println(F("WiFi connectado"));

  // Inicia o servidor
  server.begin();
  Serial.println(F("Servidor iniciado"));

  // Escreve o endereço do IP
  Serial.println(WiFi.localIP());
}

void loop() {
  // Vê se um cliente conectou 
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  Serial.println(F("novo cliente"));

  client.setTimeout(5000); 

  // Lê a primeira linha do pedido
  String req = client.readStringUntil('\r');
  Serial.println(F("pedido: "));
  Serial.println(req);
  client.flush();
  
  // Responde o pedido
  int val;
  if (req.indexOf(F("/gpio/0")) != -1) {
    val = 0;
  } else if (req.indexOf(F("/gpio/1")) != -1) {
    val = 1;
  } else {
    Serial.println(F("Pedido invalido"));
    val = digitalRead(13);
  }

  // Define a lampada de acordo com o pedido
  digitalWrite(13, val);

  // Lê o resto do pedido
  
  while (client.available()) {
    
    client.read();
  }

  // Manda a resposta para o cliente
  client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nA lampada esta agora "));
  client.print((val) ? F("ligada") : F("desligada"));
  client.print(F("<br><br>Clique <a href='http://"));
  client.print(WiFi.localIP());
  client.print(F("/gpio/1'>Aqui</a> para ligar a lampada, ou <a href='http://"));
  client.print(WiFi.localIP());
  client.print(F("/gpio/0'>Aqui</a> para desligar a lampada.</html>"));

  
  Serial.println(F("Desconectando do cliente"));
}
Configurando o WiFi

Onde estão os asteriscos, substitua pelo nome da sua rede WiFi

#define STASSID "*****"

e pela senha da sua rede WiFi

#define STAPSK "*****"

Iniciar Projeto

Com esse código, já podemos utilizar a lâmpada pelo navegador acessando pelo IP dado. Mas, agora, vamos para o aplicativo. Primeiro, entre no site do MIT App Inventor e acesse “Create Apps”

Após isso, faça o login e você será redirecionado para essa parte, onde você deve clicar em “Start new project”


Construindo o Aplicativo

Após clicar em “Start new project”, dê um nome ao projeto.

Após isso, você será direcionado a essa página

Vamos colocar 2 botões, um pra cada função da lâmpada(ligada/desligada). Para colocar o item no celular, basta arrastá-lo.

Temos, também, que colocar a conectividade Web.

Na direita, onde está escrito Button1 e Button2, podemos renomear o botão para “Ligar lâmpada” e “Desligar lâmpada”.

Agora, vamos para a parte do código do aplicativo.
Primeiro, clique em “Blocks”

Na parte dos botões, selecione o bloco “when button1 .click”

Após isso, selecione o componente Web1 e selecione o bloco “Set Url to”. Selecione, também, o bloco de texto e coloque o IP, dado anteriormente, na configuração do web server, junto com /gpio/1.  Exemplo: http://192.168.1.113/gpio/1

Para o botão 2, repita o processo, apenas mudando de /1 para /0

Agora, adicione, nos dois, o bloco “call Web1 .get”

Código completo:


Como Baixar o Aplicativo

Clique na parte “Build” e selecione o formato desejado

O aplicativo será compilado, será dado um código qr e um link para você baixar o aplicativo e pronto! Agora, é só usar.


Conclusões Finais

Com os conhecimentos desse post, você pode testar e fazer diferentes projetos com a placa nodemcu ESP12-E e aplicativos. Nosso app ficou como pode ser visto abaixo.

Mas, você também pode personalizar o seu aplicativo como quiser. Como, por exemplo, adicionar imagens de fundo:


Sobre o Autor


Arthur Almeida

Estudante do Ensino médio , aficionado por criar novos projetos eletrônicos e automações, principalmente com o Arduino. No meu tempo livre eu gosto de pesquisar sobre novas tecnologias e tento criar projetos com elas.


Eletrogate

29 de julho de 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!