No curso de Ciências da Computação da FURB, na matéria de tópicos especiais tive meu primeiro contato prático com microcontroladores.
O objeto de estudo em questão foi o NodeMCU, para quem nunca ouviu falar, é um kit de desenvolvimento, com processador ESP8266, GPIO, wifi integrado e etc. Mais detalhes podem ser encontrados no site oficial ou na Wikipédia, pois não é o objetivo do post.
Como atividade, deveríamos desenvolver um fotosensor, que deveria abrir um webservice para ser configurado com e-mail e luminosidade limite.
Após configurado o limite seria usado para quando a iluminação atingisse valor inferior ao definido seria enviado e-mail.
Também a cada 5 segundo deveria atualizar os valores no site ThingSpeak.
O ThinkSpeak na versão gratuita aceita atualização a cada 15 segundos, o excedentes são descartados, bem como o máximo de 3 milhões de mensagens por ano.
Outro serviço que foi utilizado foi o SMTP2Go para facilitar o envio do e-mail sem necessidade de desabilitar as seguranças do gmail enviando os comandos de e-mail via telnet.

NodeMCU

Protoboard

Foto ressistor


Resistor 10K Ohm

Fio jumper

Montagem
Assim, ligamos o foto resistor na alimentação de 3v em uma perna, o resistor de 10k Ohm a outra perna e o terra a outra perna do resistor. Também ligamos esta perna ao pino A0 que receberá as medições.
Temos que utilizar um resistor de 10K Ohm pois em uma escuridão total o foto resistor não teria nenhuma resistência, virando um fio e colocando o sistema em curto.
Foto do projeto:

Saindo da parte física do projeto, partimos para a programação. O NodeMCU pode ser programado em várias linguagens, MicroPython, Lua, Basic e C++ do Arduino.
Escolhi escrever o código de C++ pois além de ter vasto material, é bastante similar a Java, que já estou mais habituado, também é possível utilizar a IDE do Arduino, disponível também na loja Microsoft, que além de fazer a compilação do código, envia diretamente ao NodeMCU.
TELAS


Conectando no WiFi:

Configuração do e-mail e limite:

Carregando as configurações:

ThingSpeak atualizando:

Enviando email:

CÓDIGO

Setando o pino A0 como foto sensor e objetos:
Constantes e variáveis de configuração:
Método do WebServer:
Método para tratamento das configurações recebidas pelo WebServer:
Método para envio do email conforme as configurações iniciais:
Método para verificar o correto envio do email:
Método para tratamento de erro do envio do email:
Método para atualização do ThingSpeak:
Método para salvar as configurações:
Método para carregar as configurações salvas:
Método de inicialização do NodeMCU, primeiro a ser executado quando ligado:
Método de repetição do NodeMCU, que repete enquanto o mesmo estiver ligado:
CÓDIGO COMPLETO
Fontes utilizadas:
Links nas próprias palavras;
Comentários no código.


Nenhum comentário:
Postar um comentário