segunda-feira, 8 de agosto de 2016

Balizadora Inteligente - PARTE 5

Nessa quinta etapa do projeto, vamos entrar em detalhes sobre a programação da parte WEB. Nesse momento é importante você ter um servidor, como exemplo 000webhost que é gratuito e oferece banco de dados.


Tomando como exemplo esse servidor gratuito, vamos criar nossas tabelas que iram receber os dados de temperatura, umidade etc. No 000webhost entre em Database > phpMyAdmin clique em Enter phpMyAdmin, uma segunda janela ira abrir, nessa janela vamos criar a tabela “smart_control”.


Para isso digite a seguinte estrutura e pressione OK:

-- Table structure for table `smart_control`
CREATE TABLE `smart_control` (
  `temperature` float NOT NULL,
  `umidade` float NOT NULL,
  `T_painel` float NOT NULL,
  `status` tinyint(1) NOT NULL,
  `timestamp` datetime NOT NULL,
  PRIMARY KEY (`timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Feito isso você vai receber a mensagem de tabela criada:


Agora que os campos estão criados, precisamos criar uma interface em PHP para popular as informações no banco, visto que nesse servidor gratuito não temos acesso direto ao banco, como exemplo usando IP e Navicat. Temos acesso apenas pela pagina WEB.
A interface para inserir as informações “parser_smart.php” tem o seguinte código:


<?php
    $temperature = $_REQUEST['temperature'];
    $temperature = str_replace(',','.',$temperature);
    $umidade = $_REQUEST['umidade'];
    $T_painel = $_REQUEST['T_painel'];
    $T_painel = str_replace(',','.',$T_painel);
    $status = $_REQUEST['status'];
    $status = abs($status-=1);

    $query = "REPLACE INTO a6399975_data.smart_control(`timestamp`,`temperature`,`umidade`,`T_painel`,`status`) VALUES (NOW(),'$temperature','$umidade','$T_painel','$status');";

    $link = mysql_connect('mysql15.000webhost.com','SEU_BANCO','SENHA');
    mysql_set_charset('utf8',$link);
    mysql_select_db('SEU_BANCO`);
    mysql_query($query);
    mysql_close($link);?>

Isso faz com que, ao receber as informações da seguinte forma:

http://smart.microembarcado.vacau.com/parser_smart.php?temperature=XX.X&umidade=XX.X&T_painel=X.XX&status=X


Exemplo:

http://smart.microembarcado.vacau.com/parser_smart.php?temperature=25.4&umidade=40&T_painel=1.76&status=1


Assim o banco de dados criado anteriormente é populado com as informações passadas pelo link.

É isso, no próximo post vamos falar sobre o API do Google para gráficos, e como utilizar as informações no banco.

quarta-feira, 27 de julho de 2016

Balizadora Inteligente - PARTE 4

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

"Lua é inteiramente projetada, implementada e desenvolvida no Brasil, por uma equipe na PUC-Rio (Pontifícia Universidade Católica do Rio de Janeiro). Lua nasceu e cresceu no Tecgraf, o então Grupo de Tecnologia em Computação Gráfica da PUC-Rio. Atualmente, Lua é desenvolvida no laboratório LabLua do Departamento de Informática da PUC-Rio."

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(socketque 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



  1. tmr.alarm(0, 120000, 1, function() initSocketAndTransmitData() end)
  2. function initSocketAndTransmitData()
  3.     local socket = net.createConnection(net.TCP, 0)
  4.     socket:connect(80, "smart.microembarcado.vacau.com")
  5.     socket:on("connection", function(conn)
  6.         print("Connected to microembarcado")
  7.         sendStatus(socket)
  8.     end)
  9.     socket:on("receive", function(conn, message)
  10.             node.dsleep(180*10000000)
  11.             --node.dsleep(1000000)
  12.     end)
  13. end
  14. function sendStatus(socket)
  15.     status, temp, humi = dht.read(5)
  16.     --if status == dht.OK then
  17.          adc.force_init_mode(adc.INIT_ADC)
  18.          valadc = adc.read(0)
  19.          valadc = valadc * (5 / 1023)
  20.          gpio.mode(6,gpio.INPUT, gpio.PULLUP)
  21.          led = gpio.read(6)
  22.     --end
  23.    
  24.     local php = "GET /parser_smart.php?temperature=" ..temp..
  25.     "&umidade=" ..humi.. "&T_painel=" ..valadc.. "&status=" ..led..
  26.     " HTTP/1.1\r\nHost: smart.microembarcado.vacau.com\r\n" ..
  27.     "Connection: keep-alive\r\nAccept: */*\r\n\r\n"
  28.     socket:send(php)
  29. 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. 

quarta-feira, 20 de julho de 2016

Balizadora Inteligente - PARTE 3

Fala galera! Tudo beleza?

Se você não viu a ultimo post, de uma olhada em: Balizadora Inteligente - PARTE 2.

Nessa etapa vamos abordar testes com painel solar, e consumo de corrente de todo circuito para cálculos de autonomia.


Analisando a tensão do painel solar quando o LED se apaga e acende, cheguei a conclusão que existe um limiar de tensão para fazer o controle do LED, uma tensão abaixo de 0.9v, faz com que o LED acenda, e qualquer nível de tensão que exceda 0.9v faz o LED apagar. Não percebi nenhuma variação na intensidade do brilho, apenas controle ON/OFF. Isso é feito  pelo circuito integrado no epóxi, uma outra forma de controlar, seria a utilização de um sensor de luminosidade como um LDR, na parte plastica é visível um orifício que poderia ser utilizado para isso, pois ele deixa passar a luz.


Com isso utilizando uma bateria com capacidade de 250mA, e consumo total variando de 10mA até 60mA. Vale lembrar que o consumo do NODEMCU varia de acordo com as funcionalidades ativas, poderemos tratar isso melhor na construção do software, abaixo segue tabela de consumo:



Post curto para esclarecer alguns dados, no próximo post vamos tratar da parte de programação do ESP8266.

Fica imagem do que vem pela frente!!


quarta-feira, 13 de julho de 2016

Balizadora Inteligente - PARTE 2

Fala galera! Tudo beleza?

Se você não viu a ultimo poste, de uma olhada em: Balizadora Inteligente - PARTE 1.


Enfim vamos colocar a mão nos componentes, começando pela balizadora:



Caixa onde vem a luminária:



Componentes da caixa e manual:




Bateria de 3,2V e 250mA acompanha o kit:





É muito tranquilo montar a balizadora:




Foto no jardim, sem flash:



Já com flash a LED apaga, provavelmente um circuito de controle de luminosidade ou tensão no painel solar:



Bom, esse é o funcionamento normal, sem nenhuma modificação. Vamos agora abrir o equipamento e fazer alguns testes com multímetro. Para abrir a caixa é muito simples, basta retirar os quatro parafusos com uma chave philips, é importante retirar a bateria para evitar qualquer dano.


Após abrir a tampa, temos acesso ao painel solar, o fio vermelho indica o polo positivo e o preto negativo, interessante notar que em volta do painel existe um tipo de cola/resina para evitar a entrada de água:


Focando no circuito de controle, é possível visualizar uma placa simples, existe um circuito integrado, porém com epóxi, assim não conseguimos identificar nenhuma informação, além disso a placa possui alguns resistores e capacitores.

            

LED é do tipo SMD:


A primeira modificação feita, foi adição de dois fios, positivo e negativo, partindo da bateria para alimentar o ESP8266, lembrando que a saída da bateria é de 3.2v, assim podemos ligar direto no VIN e GND do modulo NODEMCU:

Feito a conexão para alimentação do modulo, vamos adicionar agora outros fios para coleta de informações. Com um multímetro fiz a leitura da tensão do painel solar, utilizando uma luz externa foi possível perceber a variação da tensão onde o fio verde foi soldado, nesse ponto já temos um divisor de tensão do próprio circuito, possibilitando a leitura pelo canal analógico:


Um segundo fio azul, foi soldado no anodo(+) do LED, possibilitando assim a leitura digital para definir em software se LED esta aceso ou apagado:


Conectando os sinais no ESP8266, e adicionando o sensor DHT11 e acomodando os componentes:


Feito isso, no diagrama abaixo é possível visualizar as conexões feitas no modulo.




Bom é isso!! No próximo post vamos verificar o consumo de corrente, e fazer testes com o painel solar.

quarta-feira, 6 de julho de 2016

Balizadora Inteligente - PARTE 1

Olá a todos!!

Se você perdeu o ultimo post, veja "De volta".

Como comentei no ultimo post, nessa etapa vou mostrar como foi a compra dos componentes. Inicialmente vamos adquirir o principal, para depois se necessário ir comprando mais coisas.


O primeiro item é ESP8266, que pode ser encontrado em diversas versões, nesse caso vamos utilizar o ESP8266 NODEMCU.

         Essa versão do modulo foi escolhida, pois todos os pinos ficam disponíveis e de fácil acesso, além do mais temos uma porta USB que serve para comunicação com PC e alimentação, outro grande detalhe, a placa já possui um conversor de tensão para 3,3v, que é a tensão de alimentação do ESP8266, assim tudo fica mais fácil de ser alimentado. Em contrapartida a placa é um pouco maior que as demais, o que pode ser um problema para encaixar tudo em nossa luminária balizadora.

O modulo pode ser encontrado facilmente na internet com valores variando de 40 reais até 50 reais, por exemplo, no Mercado Livre.

O segundo item do nosso projeto é a luminária balizadora, existem diversas opções no mercado, a que achei interessante foi da marca Ecoforce, que pode ser encontrada na loja web do Walmart e do Leroy Merlin, em lojas de jardim e de iluminação também é possível encontrar.

A compra foi feita na loja física do Leroy Merlin em Contagem/MG o modelo 16738


Esse modelo foi escolhido por causa do seu espaço interno, é fácil adicionar uma bateria com maior capacidade e acomodar o modulo ESP8266. 




É isso ai pessoal, no próximo post vamos desmontar a luminária e fazer alguns testes em campo, até mais!!

quarta-feira, 29 de junho de 2016

De volta

A ideia de voltar a escrever no blog sempre vem na cabeça, mas o tempo sempre era curto.
Pois enfim, estou de volta, depois de um ano sem nenhuma postagem ou novidade, volto com nova bagagem e conhecimentos para compartilhar.

Como primeira novidade, é o site www.microembarcado.com.br, voltado a desenvolvimento de projetos sob medida. Visitem a pagina e compartilhem.

Vamos voltar com um projeto aplicando IoT, Internet of Things, ou para os mineiros como eu Internet dos Trem.  A ideia é utilizar uma luminária balizadora LED com painel solar como a da imagem:



De acordo com site do fabricante (ecoforce), essa luminária solar possui as seguintes características:

Painel Solar 0,4W.
Bateria de 3,2V – 600mAh.
2x LED de 0,2W.

A iluminação não é o foco do projeto, até porque os LEDs tem uma potência muito baixa, e são apenas decorativos. A parte interessante vai ficar por conta da adição de um modulo ESP8266 rodando NODEMCU para aplicar IoT.
O uso do modulo ESP8266 esta sendo muito difundido devido seu preço e facilidade de utilização, não vou entrar em muitos detalhes sobre o modulo, quem tiver interesse de conhecer mais eu recomendo a seguinte leitura no site Embarcados - Apresentando o módulo ESP8266.

Utilizando o ESP8266 a ideia é adicionar os seguintes recursos à luminária balizadora:

Leitura Temperatura e Umidade  ambiente.
Gerenciamento de bateria/painel solar.
Conexão com internet e banco de dados.

Com isso, a ideia é mesclar o uso de diferentes áreas, para construir esse objeto inteligente de forma simples. Vou abordar a programação em LUA, NODECMU, analise de circuitos, construção de pagina WEB utilizando PHP/HTML e banco de dados.
Os posts vão acontecer a cada semana, e no próximo vou cobrir a compra dos componentes necessários.

Até mais!