Chegamos a 4º etapa do projeto Balizadora Inteligente, se você perdeu algum post, sugiro fazer a leitura:
Nesse post vamos tornar nosso objeto inteligente, dando inicio a programação do modulo ESP8266 com NODEMCU, vale lembrar que para esse projeto vamos precisar dos seguintes pacotes:
Para gerar seu pacote customizado basta acessar: http://nodemcu-build.com/
Feito o pacote do NodeMCU é necessário gravar na sua placa ESP8266, no Windows podemos utilizar o nodemcu-flasher. É simples basta conectar sua placa no computador, e seguir o passo a passo: https://github.com/nodemcu/nodemcu-flasher
Com o firmware gravado, agora podemos escrever nosso software utilizando a linguagem LUA. Para conhecer mais sobre a linguagem acesse: https://www.lua.org/portugues.html
Para fazer a interface de comunicação entre o modulo e a linguagem LUA, assim como programação vamos utilizar o software ESPlorer. Com ele basta conectar via porta serial, assim é possível enviar comandos, assim como gramar seu script init.lua, que será executado sempre que o modulo for reiniciado automaticamente.
Falando em script, a ideia aqui foi criar uma conexão TCP com o meu servidor gratuito hospedado no 000webhost, então conectando no servidor smart.microembarcado.vacau.com utilizando porta 80, ao conectar executamos a função sendStatus(socket) que se encarrega de fazer a leitura dos dados e enviar para pagina parser_smart.php, que se encarrega de escrever as informações no banco de dados.
Não conseguimos acessar o banco de dados diretamente desse servidor gratuito, por isso é necessário utilizar uma pagina em PHP para se encarregar disso.
A pagina deve ser construída com as informações lidas pelo modulo:
http://smart.microembarcado. vacau.com/parser_smart.php? temperature=XX&umidade=XX&T_ painel=XX&status=XX
- tmr.alarm(0, 120000, 1, function() initSocketAndTransmitData() end)
- function initSocketAndTransmitData()
- local socket = net.createConnection(net.TCP, 0)
- socket:connect(80, "smart.microembarcado.vacau.com")
- socket:on("connection", function(conn)
- print("Connected to microembarcado")
- sendStatus(socket)
- end)
- socket:on("receive", function(conn, message)
- node.dsleep(180*10000000)
- --node.dsleep(1000000)
- end)
- end
- function sendStatus(socket)
- status, temp, humi = dht.read(5)
- --if status == dht.OK then
- adc.force_init_mode(adc.INIT_ADC)
- valadc = adc.read(0)
- valadc = valadc * (5 / 1023)
- gpio.mode(6,gpio.INPUT, gpio.PULLUP)
- led = gpio.read(6)
- --end
- local php = "GET /parser_smart.php?temperature=" ..temp..
- "&umidade=" ..humi.. "&T_painel=" ..valadc.. "&status=" ..led..
- " HTTP/1.1\r\nHost: smart.microembarcado.vacau.com\r\n" ..
- "Connection: keep-alive\r\nAccept: */*\r\n\r\n"
- socket:send(php)
- end
Esse script é muito simples, basicamente o que ele faz é tentar uma conexão no servidor, se a conexão for OK, faz a leitura dos dados (temperatura,umidade,tensão no painel solar...) encapsula todas informações, e envia utilizando a pagina parser_smart.php, logo apos o modulo dorme por 30 minutos para economia de energia, repetindo isso ciclicamente.
No próximo post vamos continuar falando sobre a programação do modulo ESP8266, e sobre o servidor WEB com banco de dados e paginas PHP.