Você está na página 1de 18

UNIVERSIDADE FEDERAL DO MARANHÃO

CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA


BACHARELADO INTERDISCIPLINAR EM CIÊNCIA E TECNOLOGIA
DISCIPLINA: LABORATÓRIO DE ELETRÔNICA APLICADA (2018 .2 - T02)
PROF. DR. SHIGEAKI LEITE DE LIMA
ALUNOS: ADRIANO PABLO DE MORAES - MATRÍCULA: 2018008675
ANDRE LUIZ ALMEIDA CARDOSO - MATRÍCULA: 2015021860

PROJETO Smart Coffee

São Luís
2018
SUMÁRIO

1 INTRODUÇÃO ................................................................................................ 3

2 DESCRIÇÃO DO EXPERIMENTO .................................................................. 4

3 PLATAFORMAS, EQUIPAMENTOS E ETAPAS DA MONTAGEM ................ 5

3.1 APP INVENTOR .................................................................................... 5

3.2 WEMOS D1 ........................................................................................... 5

3.3 COMPONENTES ................................................................................... 7

3.4 MONTAGEM .......................................................................................... 9

4 RESULTADOS E DISCUSSÕES .................................................................. 13

5 CONCLUSÃO................................................................................................ 14

6 REFERÊNCIAS ............................................................................................ 14

7 ANEXO ......................................................................................................... 15
1 INTRODUÇÃO
A automação eletroeletrônica é um tópico amplo que abrange desde a
fabricação digital até os sistemas de controle simples que lidam com máquinas
e processos inteligentes. Implicando o uso de tecnologia e sistemas de controle
para substituir o trabalho mental e físico humano no setor de engenharia e
manufatura. Tarefas previamente executadas por pessoas são automatizadas
usando sistemas e produtos que combinam componentes hidráulicos,
mecânicos, pneumáticos, eletrônicos e elétricos.
A automação industrial, por exemplo, é usada em vários setores, como
indústrias aeroespaciais, automotivas, de petróleo e gás e no setor de
eletrônicos. Paralelamente há muitos benefícios em ter um sistema de
automação residencial. Como o próprio nome diz, trata-se principalmente de
automatizar tarefas e atividades para melhorar a qualidade de vida, o conforto e
a conveniência e até economizar energia, dinheiro e tempo.
Até recentemente, a ideia de automação residencial era relativamente
desconhecida para a maioria das pessoas. A automação das casas aumentou
muito em popularidade nos últimos anos. Uma das maiores vantagens de um
lar automatizado é a facilidade com que a funcionalidade pode ser gerenciada
em uma variedade de computadores: desktop, laptop, tablet ou smartphone.
Os sistemas de automação residencial são compostos por hardware,
comunicação e interfaces eletrônicas que trabalham para integrar
equipamentos elétricos entre si. As atividades domésticas podem então ser
controladas com o toque de um botão. De qualquer local remoto, os usuários
podem ajustar os controles dos sistemas de entretenimento doméstico, limitar
a quantidade de luz solar recebida pelas plantas de interior ou alterar a
temperatura em determinadas salas. O software de automação residencial é
frequentemente conectado através de redes de computadores, para que os
usuários possam ajustar as configurações em seus computadores pessoais.
A transição para uma casa mais inteligente pode melhorar o controle
sobre todos os aspectos de como uma casa opera e aumentar a segurança e
acessibilidade também. Além disso, pode-se aproveitar os benefícios de uma
casa mais eficiente, gerando economia nos custos de energia e manutenção.
Além disso, essa tecnologia também deve eclipsar a tecnologia de controle
remoto.
3
2 DESCRIÇÃO DO EXPERIMENTO
Através da ideia de automação residencial propomos uma solução de
software e hardware para permitir a gestão de uma cafeteira que fosse mais fácil
e oferecesse mais comodidade para o trabalho diário. Utilizando uma placa
dedicada a projetos de IoT, a Wemos D1, com módulo ESP8266 incluso, levando
conectividade wifi ao projeto de Internet das Coisas. Desenvolvemos um código
usando a IDE do Arduino para controlar o acionamento de um relé, dependendo
das informações recebidas de um sensor de temperatura. O algoritmo
desenvolvido é responsável por estabelecer a conexão Wifi e comunicação com
um software aplicativo, que controla o acionamento do circuito desenvolvido para
a plataforma android. O projeto conta com as informações de saída, sendo as
mesmas de interesse do usuário final, mostradas através do display e um buzzer.
Quando ligamos o circuito através do aplicativo o relé é acionado e o
sensor faz a medição da temperatura, dependendo do valor da mesma o rele se
mantém acionado ou é desligado de forma automática. As informações de saída
são vistas no display. Todo o processo se repete com as informações sendo
atualizadas até o desligamento do circuito acontecer.

Figura 1 - Diagrama em Blocos (Estrutura do Projeto)

4
3 PLATAFORMAS, EQUIPAMENTOS E ETAPAS DA MONTAGEM
Para a montagem do projeto utilizamos algumas plataformas e
equipamentos:
3.1 APP INVENTOR

O App Inventor para Android é


um aplicativo da Web de código
aberto fornecido originalmente
pelo Google e agora mantido
pelo Massachusetts Institute of
Technology (MIT). Ele permite que recém-
chegados à programação de
computadores criem aplicativos de
software para o sistema operacional Figura 2 - APP Inventor

(SO) Android . Ele usa uma interface gráfica,


muito semelhante ao Scratch e à interface de usuário do StarLogo TNG , que
permite aos usuários arrastar e soltar objetos visuais para criar um aplicativo que
pode ser executado em dispositivos Android. Ao criar o App Inventor, o Google
baseou-se em pesquisas anteriores significativas em computação educacional,
bem como no trabalho feito no Google em ambientes de desenvolvimento on-
line.

O App Inventor e os projetos nos quais ele se baseia são informados


pelas teorias da aprendizagem construcionista , que enfatizam que a
programação pode ser um veículo para engajar ideias poderosas por meio do
aprendizado ativo. Como tal, é parte de um movimento contínuo em
computadores e educação que começou com o trabalho de Seymour Papert e
do MIT Logo Group nos anos 60 e também se manifestou com o trabalho
de Mitchel Resnick em Lego Mindstorms e StarLogo. O MIT App Inventor
também é compatível com a extensão Firebase Database. Isso permite que as
pessoas armazenem dados no Firebase do Google.

3.2 WEMOS D1
WEMOS D1 é uma placa de desenvolvimento WIFI baseada no ESP8266
12E. O funcionamento é semelhante ao do NODEMCU, exceto que o hardware
é construído como o Arduino UNO. A placa D1 pode ser configurada para

5
funcionar no ambiente Arduino usando o BOARDS MANAGER. Portanto, não é
necessário usar uma placa separada do Arduino, o D1 pode ser programado no
Arduino IDE. Isso é útil para usar com projetos IOT. Além disso, muitos SHIELDs
Arduino são compatíveis com a placa D1. Diferentes versões de placas D1 estão
disponíveis no mercado R1, R2, MINI. As placas R1, R2 se parecem com a placa
Arduino UNO, mas a versão não é impressa a bordo. Em algumas placas o
WEMOS D1 é impresso, já que o chip ESP12 é fabricado pela WEMOS. Em
algumas outras placas é impresso apenas D1, onde o chip ESP12 é o da AI
Thinker.
Especificações:
– Controlador ESP8266EX (datasheet)
– 11 pinos digitais de I/O
– 1 entrada analógica
– Nível de sinal pinos de I/O: 3.3V
– Conector micro usb para alimentação e programação
– Aceita alimentação externa entre 9 e 24V
– Compatível com Arduino
– Compatível com NodeMCU
– Dimensões: 70 x 53,5 x 12,5 mm

Figura 3 - Placa WeMos D1

6
3.3 COMPONENTES
DISPLAY:
Um display de cristal líquido ( LCD ) é
um monitor de tela plana ou outro dispositivo óptico
modulado eletronicamente que usa as
propriedades moduladoras de luz de cristais
líquidos . Os cristais líquidos não emitem luz
diretamente, em vez disso, usam luz de
fundo ou refletor para produzir imagens coloridas
ou monocromáticas . LCDs estão disponíveis para Figura 4 - Display
exibir imagens arbitrárias (como em um monitor de
computador de uso geral) ou imagens fixas com baixo teor de informação, que
podem ser exibidas ou ocultas, tais como palavras predefinidas, dígitos e exibe
sete segmentos , como na um relógio digital. Eles usam a mesma tecnologia
básica, exceto que imagens arbitrárias são compostas de um grande número
de pixels pequenos , enquanto outras exibem elementos maiores.
_______________________________________________________________
LM35
A série LM35 é composta por dispositivos de
temperatura com circuito integrado de precisão, com
uma tensão de saída linearmente proporcional à
temperatura dos graus centígrados. O dispositivo
LM35 possui uma vantagem sobre os sensores de
temperatura linear calibrados em Kelvin, já que o
Figura 5 - LM35 usuário não é obrigado a subtrair uma grande tensão
constante da saída para obter escalonamento centígrado conveniente. O
dispositivo LM35 não requer nenhuma calibração ou ajuste externo para fornecer
precisões típicas de ± ¼ ° C à temperatura ambiente e ± ¾ ° C ao longo de uma
faixa de temperatura de -55 ° C a 150 ° C.
_______________________________________________________________
BUZZER
Uma campainha ou bipe é um dispositivo de sinalização de áudio , que pode
ser mecânico , eletromecânico ( piezo para curto). Usos típicos de campainhas

7
e bipes incluem dispositivos de alarme , temporizadores e confirmação de
entrada do usuário, como um clique do mouse ou pressionamento de tecla.

Figura 6 - Buzzer

_______________________________________________________________
RELAY
Um relé é um interruptor operado eletricamente
da tensão de rede. Isso significa que pode ser
ligado ou desligado, deixando a corrente passar
ou não. Controlar um relé com o Arduino é tão
simples quanto controlar uma saída como um
LED.
Figura 7 - RELÉ

8
3.4 MONTAGEM
1° Acoplamos o display no Protoboard para facilitar a montagem;

Figura 8 - Placa de Protoboard com Display acoplado

2° Fazemos a ligação com a placa WeMos conforme o esquema abaixo:

Figura 9 - Placa de Protoboard com Display e WeMos acoplados

3° Adicionamos os componentes restantes e fazemos as ligações;


Lm35;
Relay;
Buzzer;

Figura 10 - Projeto Completo

9
Obs: A numeração da pinagem do WeMos D1 é diferente da especificada na
parte frontal da placa. Devemos observar o verso da placa para a obtenção
correta da pinagem, pois sem ela não é possível desenvolver de forma correta o
código de funcionamento.

Figura 11 - Pinagem da Placa WeMos

4° Desenvolvimento do Código;
No anexo que consta neste relatório mostramos o código completo e comentado,
pois desde o lançamento da plataforma de código aberto Arduino, a marca se
estabeleceu no centro de uma comunidade expansiva de código aberto. O
ecossistema do Arduino é composto por uma combinação diversificada de
hardware e software. A versatilidade do Arduino e sua interface simples fazem
dele uma escolha líder para uma ampla gama de usuários em todo o mundo,
desde amadores, designers e artistas até protótipos de produtos.
A placa do Arduino é conectada a um computador via USB, onde se
conecta com o ambiente de desenvolvimento do Arduino (IDE). O usuário grava
o código do Arduino no IDE e, em seguida, faz o upload para o microcontrolador
que executa o código, interagindo com entradas e saídas, como sensores,
motores e luzes. Iniciantes e especialistas têm acesso a uma grande quantidade
de recursos e materiais gratuitos para apoiá-los.

10
Os usuários podem procurar informações sobre como configurar sua
placa ou mesmo como codificar no Arduino. O código aberto por trás do Arduino
tornou particularmente amigável para usuários novos e experientes. Existem
milhares de exemplos de código do Arduino disponíveis online. O código deste
projeto foi desenvolvido do zero.
5° Desenvolvimento do App;
Desenvolvemos o aplicativo para controle do projeto usando o app
inventor. Essa ferramenta poderosa se mostrou de extrema utilidade ao permitir
de forma rápida e intuitiva (MECANISMOS DE ARRASTAR E SOLTAR) o
desenvolvimento de um software com sua interface gráfica completa.

Figura 12 - Screenshot de Celular com S.O - Android

Temos uma tela de login por segurança. Nossa segunda tela é onde realmente
acontece o controle dos
processos. Ao lado
temos a lógica através
do diagrama de blocos
do App Inventor:
Portanto, na criação do
programa ainda no
código do projeto na IDE
do Arduino temos que

11
escrever um código no Wemos criando um Servidor Web. Usamos em nosso
projeto o protocolo HTTP. Existem dois tipos principais métodos HTTP
chamados GET e POST. Quando passamos informações do cliente para o
servidor na URL, ele é chamado de método GET. Quando passamos
informações do cliente para o servidor no corpo ou no cabeçalho, é chamado de
método POST. Nós estaremos usamos o método HTTP GET para comunicação
entre Wemos e Android APP. Com GET significa que temos que passar
informações na URL. Portanto, o URL será algo semelhante ao abaixo.

Desligue o relé: http://192.168.43.14:/gpio/0

Ligue o relé: http://192.168.43.14:/gpio/1

12
4 RESULTADOS E DISCUSSÕES
O experimento foi satisfatório em atingir seus objetivos, sendo assim, foi
possível confirmar as características e benefícios da utilização de placas
controladoras, nas mais diversas áreas com a tecnologia implementada. A partir
disso, pudemos aprender as diversas aplicações desse circuito. Como Arduino
é uma empresa de hardware gratuita que fabrica placas com um
microcontrolador e um IDE (ambiente de desenvolvimento) com o qual qualquer
usuário pode criar projetos de todos os tipos. A ideia é que os usuários, tanto
avançados quanto novatos, possam montar uma placa criando um design
exclusivo para suas necessidades e usá-la livremente sem ter que comprar uma
que seja pré-fabricada. Percebemos quantos projetos existem e podem ser
criados usando uma placa Arduino, pois não gastamos muito dinheiro para obter
tal tecnologia.

Figura 13 – Montagem do Projeto (Implementação em Protoboard)

13
5 CONCLUSÃO
Como se pode ver no desenvolvimento do relatório, todos os objetivos
expostos foram realizados. Não foi um projeto fácil e exigiu tempo de pesquisa
para sua correta implementação. Todo este trabalho é baseado no que foi
aprendido durante o curso, expandindo o conhecimento em diferentes áreas
para obter um projeto final onde três principais partes eletrônicas se encontram;
design eletrônico (hardware), programação (software) e comunicação entre
dispositivos.
O fato de a automação ter sido escolhida como um assunto para trabalhar
tem nos mostrado uma área que está atualmente em plena expansão e tem um
futuro promissor. Esta tecnologia está em constante mudança e seu escopo está
crescendo para cobrir áreas mais importantes como segurança, acessibilidade e
conforto do usuário.

6 REFERÊNCIAS
GAIER, Micael Bronzatti. Aprendendo a Programar em arduino. Cuibá,2011.
GOMES, E.L.B; TAVARES, L.A. Uma solução com Arduíno para controlar e
monitorar processos industriais. Porto alegre:2013.
MCROBERTS, Michael. Arduino básico. Novatec: São Paulo, 2011.

14
7 - ANEXO
// CODIGO DO PROJETO
#include <ESP8266WiFi.h>
#include <LM35.h>
#include <LiquidCrystal.h>
// Inclusão de Bibliotecas

const char* ssid = "AndroidAP";


const char* password = "foru6162";
WiFiServer server(80);
// Inclusão do Nome da Rede e sua respectiva senha p/ Conexão

const int LM35 = (A0);


const int relay = 15;
const int buzz = 0;
LiquidCrystallcd(16,5,4,14,12,13);
// Declaração dos Pinos

void setup()
{
pinMode(relay, OUTPUT);
pinMode(buzz, OUTPUT);
digitalWrite(relay, LOW);
digitalWrite(buzz, LOW);
Serial.begin(9600);
lcd.begin(16, 2);
// Definição do Estados dos Pinos
lcd.print("Aguarde Inicio!");
// Conecte-se à rede WiFi
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

// Iniciar o servidor
server.begin();
Serial.println("Server started");

// Imprimir o endereço IP
Serial.println(WiFi.localIP());
}
void loop(){

// Verifique se um cliente se conectou


WiFiClient client = server.available();
if (!client) {
return;
}

// Aguarde até que o cliente envie alguns dados


Serial.println("new client");
while(!client.available()){
delay(1);
}

// Leia a primeira linha da solicitação


String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// Match the request
int val;

if (req.indexOf("/gpio/0") != -1){
val = 0;
}
else if (req.indexOf("/gpio/1") != -1){
val = 1;
}
if(val == 1){
ligaRelay(relay);
float temperatura = checkLM(LM35);
Serial.print("Temperatura: ");
Serial.println(temperatura);
lcdPreparando(temperatura);
if(val == 1){
iniciar_programa(LM35, relay);
}

ligaRelay(relay);
}if(val == 0){
desligaRelay(relay);}

client.flush();

// Prepara a resposta
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE
HTML>\r\n<html>\r\nGPIO is now ";
s += (val)? "high":"low";
s += "</html>\n";

// Envie a resposta para o cliente


client.print(s);
delay(1);
Serial.println("Client disonnected");
}

float checkLM(int pino){


delay(1000);
return ((float(analogRead(pino)/1024.0)*3300)/10);
//return (float(analogRead(pino))*5/(1023))/0.01;
// Função que Calcula a Temperatura
}

void ligaRelay(int pino){


delay(1000);
digitalWrite(pino, HIGH);
//Função que Liga Relé
}

void desligaRelay(int pino){


delay(1000);
digitalWrite(pino, LOW);
// Função que Desliga Relé
}

void lcdCafePronto(float t){


lcd.setCursor(0,0);
lcd.print("Cafe Pronto ");
lcd.setCursor(0,1);
lcd.print(t);
lcd.print(" C");
// Função que escreve NO lcd Café Pronto
}

void lcdPreparando(float t){


lcd.setCursor(0,0);
lcd.print("Preparando ");
lcd.setCursor(0,1);
lcd.print(t);
lcd.print(" C");
// Função Preparando
}

int iniciar_programa( int LM35, int relay ){


delay(3000);
float temperatura = checkLM(LM35);
Serial.print("Temperatura: ");
Serial.println(temperatura);
lcdPreparando(temperatura);
if((temperatura > 23)&&(temperatura < 35)){
if(digitalRead(relay)!= HIGH){
ligaRelay(relay);
digitalWrite(buzz, LOW);
}

}
else if(temperatura >= 35) {
lcdCafePronto(temperatura);
desligaRelay(relay);
digitalWrite(buzz, HIGH);
delay(1000);
digitalWrite(buzz, LOW);
}
// Função Principal
}

Você também pode gostar