Mandar dados dos sensores para um computador pela wi-fi

Quando aprendemos a fazer projetos com Arduino, ESP, ou Raspberry, chega um ponto em que queremos deixar de usar o cabo USB e começar a enviar os dados coletados pelos nossos sensores para um computador via rede sem fio (wi-fi). Por exemplo, em um projeto de automação residencial queremos ver no nosso computador ou celular qual é a temperatura de cada quarto, quais janelas estão abertas, e como está a água das nossas plantinhas.

Usando frameworks em Python, é fácil fazer um sistema para receber e armazenar esses dados. Quer dizer… fácil para quem já sabe Python e já é fera em desenvolvimento web, né? Se esse não é o seu caso, uma ótima saída é utilizar sistemas já prontos, como ThingsBoard ou Thinger (veja um comparativo dessas diferentes plataformas).

Essas ferramentas são maravilhosas, oferecendo muita robustez, customização, e diversos recursos de visualização. No entanto, essa riqueza de recursos traz consigo uma certa complexidade, tornando essas ferramentas intimidadoras para aqueles hobbystas e estudantes que estão dando os seus primeiros passos na Internet das Coisas, que talvez não precisem de todos esses recursos. Por isso, neste artigo nós iremos explicar como utilizar o Simple IoT Monitor, um sistema open source desenvolvido por uma equipe da Universidade Federal Rural de Pernambuco.

O Simple IoT Monitor é um sistema web que irá rodar no seu próprio computador, sem que você precise mexer em uma linha de código sequer dele. Ele irá receber os dados dos seus sensores, guardá-los em um banco de dados, e exibi-los de forma organizada em uma página web. A Figura 1 mostra a página gerada pelo sistema para uma sala de aula que tem dois sensores: um de luminosidade e outro de temperatura. Essa página está mostrando um resumo das leituras do sensor de temperatura: maior valor, menor valor e valor médio, além de um gráfico e uma tabela com as leituras mais recentes.

dados dos sensores
Figura 1 – Screenshot do Simple IoT Monitor em funcionamento, mostrando os dados de uma “coisa” monitorada pelo sistema: neste caso, é a sala 604.

Além disso, os dados do sensor podem ser baixados por completo no formato CSV, para que possa ser feita uma análise mais aprofundada em ferramentas de Data Science, ou mesmo para visualização no Calc ou Excel, como ilustrado na Figura 2.

dados dos sensores
Figura 2 – Arquivo CSV com as leituras do sensor de temperatura, aberto no Microsoft Excel

O Simple IoT Monitor adota a famosa arquitetura cliente-servidor: o servidor é um PC ou microcomputador onde será executado o Simple IoT Monitor, enquanto os dispositivos que estão coletando os dados dos sensores são os clientes. Quando os dados são coletados pelos sensores, o cliente manda os dados para serem salvos no banco de dados do servidor. Mas se liga que esse sistema deve ser utilizado apenas na sua rede local, ou seja, na rede da sua casa ou faculdade. Se for necessário enviar os dados entre redes diferentes, o mais recomendável é utilizar outros sistemas, como ThingsBoard ou Thinger. Já se você quer enviar os dados dos sensores para vários outros dispositivos, uma boa opção seria usar o MQTT.

Então vamos ver como usar essa ferramenta, desde a sua instalação até um exemplo de como enviar os dados de um ESP8266 para o seu PC pela wi-fi. Este tutorial está dividido em etapas, e cada etapa tem 1 ou 2 passos. Antes de executar cada passo vale a pena ler a explicação completa daquele passo, para evitar possíveis problemas. Mãos à obra!

1ª Etapa – Instalação

Passo 1.1 – Instalação do Python 3

Pode pular este passo se você já tiver o Python 3 instalado no seu computador. Se ainda não tiver, precisará fazer o download dele no site oficial e instalá-lo. Se você for instalar no Windows, vai aparecer uma tela igual à da Figura 3, onde você precisa selecionar a opção “Add Python 3.X to PATH” antes de clicar em Install Now, para garantir que você vai conseguir executar o Python quando precisar.

dados dos sensores
Figura 3 – se estiver instalando o Python no Windows, se lembre de escolher a opção “Add Python 3.X to PATH” antes de clicar em Install Now

Para garantir que dê tudo certo, veja esses tutoriais ensinando a instalar o Python 3 no Windows, Linux e MacOS.

Passo 1.2 – Instalação do Simple IoT Monitor

Com o Python 3 já instalado podemos instalar o Simple IoT Monitor. Vamos começar com o download: clique aqui para baixar a versão mais recente do Simple IoT Monitor.

Após o download, extraia o arquivo para uma pasta de sua preferência.

Agora vamos abrir a pasta descompactada (simple-iot-monitor-master) em um terminal como, por exemplo, o Prompt de Comandos do Windows. Se você usa uma IDE, como PyCharm ou VS Code, pode abrir a pasta na IDE e usar o terminal dela. Mas se você não usa uma IDE não tem problema, é só usar o terminal do seu Sistema Operacional (SO) mesmo. Se você está usando o Windows e não tem familiaridade com o Prompt de Comandos, vale a pena ler um tutorial sobre o assunto, especialmente os comandos cd e dir (ou ls).

Uma vez que você entrou na pasta simple-iot-monitor-master com o seu terminal, execute o comando a seguir, que irá instalar os pacotes Python que o sistema precisa para funcionar:

ou então

OBS: dependendo do SO e das versões do Python que já estiverem instaladas no seu computador será preciso executar pip3 ou pip. Na dúvida, tente da primeira forma e, se não der certo, tente da outra forma.

Sua tela vai ficar parecida com a Figura 4. O importante aqui é que na parte de baixo apareça “Successfully installed…” (retângulo azul), mas o que exatamente será instalado vai depender de computador para computador.

Figura 4 Resultado da instalação bem sucedida das dependências do Simple IoT Monitor. Pode ser que apareça esse warning em amarelo, mas também pode ser que não apareça.

Se aparecer algum erro como “command not found” ou “pip não é reconhecido como um comando interno…” vale a pena tentar desinstalar o Python e instalá-lo novamente, seguindo os tutoriais mencionados no passo 1.1. Se mesmo assim não der certo, pergunta nos comentários que faremos o possível para ajudar.

OBS: se você já usa o Python para outros projetos, vale a pena ativar um ambiente virtual antes de executar o comando acima.

2ª Etapa – Execução local

Passo 2.1 – Executar o servidor

Agora vamos continuar usando o terminal para executar o Simple IoT Monitor e verificar se a instalação deu certo. Para isso, vamos entrar na pasta iotproject que se encontra dentro da pasta simple-iot-monitor-master. No caso, já estávamos dentro de simple-iot-monitor-master, então basta digitar

e, depois do enter,  executar o comando a seguir, que você precisará digitar a cada vez que quiser inicializar o Simple IoT Monitor:

ou

OBS: dependendo do SO e das versões do Python que já estiverem instaladas no seu computador será preciso executar python3 ou python. Na dúvida, tente da primeira forma e, se não der certo, tente da outra forma.

Depois da execução desse comando o seu terminal deverá estar assim (Figura 5):

Figura 5 – Resultado da execução bem sucedida do Simple IoT Monitor. Caso deseje que o sistema pare de ser executado, basta voltar para este prompt de comando e apertar Ctrl+C.

Pronto, agora que o sistema já está ativo, é possível acessar a página principal através de seu navegador. Se ele não tiver sido aberto automaticamente, abra o navegador de sua preferência e digite o endereço http://localhost:8000/iotmonitor para acessar uma tela parecida com a Figura 6. Por outro lado, pode ser que o seu navegador tenha sido aberto mas tenha aparecido uma mensagem como “Não é possível acessar esse site”, caso no qual você pode tentar atualizar a página após alguns segundos (F5).

dados dos sensores
Figura 6 – Página inicial do Simple IoT Monitor. Se quiser pode clicar em “Something” para ver uma página com dois sensores de exemplo.

Se você chegou até aqui é porque a instalação deu certo. Que coisa boa! Mas para que o sistema possa receber os dados dos nossos sensores é preciso fazer uma configuração adicional, que é a terceira etapa deste tutorial. Então volte para o terminal, aperte Ctrl+C para encerrar o servidor, e siga para a próxima etapa.

3ª Etapa – Execução na rede local

Passo 3.1 – Configuração do endereço IP

Para que possamos enviar os dados de um outro dispositivo para o Simple IoT Monitor, precisamos definir qual o endereço IP interno do computador que vai rodar o servidor. Acesse a pasta iotproject, dentro de simple-iot-monitor-master, e abra o arquivo ip.txt, ilustrado na Figura 7.

dados dos sensores
Figura 7 -Abra o arquivo ip.txt, dentro da pasta simple-iot-monitor-master/iotproject

Substitua o texto que estiver no arquivo ip.txt pelo endereço IP do seu computador, conforme o exemplo da Figura 8, e salve o arquivo.

dados dos sensores
Figura 8 – Escreva o endereço IP do seu computador no arquivo ip.txt

Mas como eu descubro qual é o meu endereço IP? Confira as instruções para Windows, Mac e Linux.

Passo 3.2 – Execução do servidor

A execução do servidor será exatamente igual ao passo 2.1: basta utilizar o terminal para entrar na pasta simple-iot-monitor-master/iotproject e executar “python3 manage.py runiotmonitor” ou “python manage.py runiotmonitor”. Agora o seu terminal ficará como a Figura 9. Nesse momento é possível que o firewall do seu computador apareça; para continuar é preciso que você aperte no botão “permitir acesso” ou similar.

dados dos sensores
Figura 9 – Resultado da execução bem sucedida do Simple IoT Monitor depois da configuração do endereço IP. No destaque azul é possível ver o endereço IP que foi digitado no arquivo ip.txt.

Assim como da outra vez que executamos o servidor, o navegador deverá abrir automaticamente. Da mesma forma, pode ser que o seu navegador tenha sido aberto mas tenha aparecido uma mensagem como “Não é possível acessar esse site”, caso no qual você pode tentar atualizar a página após alguns segundos (F5).

A novidade agora é que, em vez de rodar no localhost, o servidor usará o endereço IP que você escreveu no arquivo ip.txt, ficando acessível através da rede local. A Figura 10 mostra um exemplo do sistema sendo acessado através de um celular conectado à mesma rede que o computador com o servidor.  Para acessar a página, pelo seu smartphone ou por qualquer outro dispositivo que esteja conectado na sua rede, digite na barra de pesquisa a url http://<meu_ip>:8000/iotmonitor substituindo o <meu_ip> pelo seu IP, sem os símbolos < e >.

dados dos sensores
Figura 10 – Exemplo do sistema sendo visualizado simultaneamente em um computador e em um smartphone, conectados à mesma rede que o servidor.

OBS: se você encontrar erros do tipo “Error: That IP address can’t be assigned to” ou “This site can’t be reached”, provavelmente foi utilizado o endereço IP errado. A sugestão é verificar novamente o IP do seu computador e voltar para o passo 3.1.

4ª Etapa – Envio dos dados pelos sensores

Passo 4.1 – Programação do cliente

Os clientes são os dispositivos que controlam os sensores do seu projeto e que vão enviar os dados coletados pelos sensores para o nosso servidor. Aqui vamos ver como enviar os dados de um dispositivo ESP programado em C++, mas no arquivo que você baixou se encontram também exemplos em ESP com MicroPython e também para Raspberry Pi.

Se você ainda não sabe programar um ESP, vale a pena ver este tutorial antes de continuar.

O código C++ para ESP está localizado no arquivo ESP_arduinoIDE.ino, que se encontra dentro da pasta simple-iot-monitor-master/client/ESP/ESP_arduinoIDE. No início do código você encontrará essas 5 linhas que precisarão ser modificadas:

Na segunda linha é preciso substituir “WIFI_NAME” pelo nome da sua rede sem fio, entre aspas. Na linha seguinte, em lugar de “WIFI_PASSWORD”, coloque a senha da sua rede sem fio, entre aspas. No lugar de “SERVER_IP_ADDRESS”, coloque o mesmo endereço IP que você havia colocado no arquivo ip.txt durante a terceira etapa deste tutorial, entre aspas. 

As variáveis SENSOR_NAME e SENSOR_PASSWORD já estão com o nome e senha do sensor pré-cadastrado no sistema, para você utilizar como exemplo, então não é preciso modificá-las neste momento.

Dentro da função loop é possível encontrar o seguinte código:

Neste exemplo, o valor passado para o sistema será 5.2. Posteriormente será preciso que você altere esta parte do código para que seja enviado o dado lido pelo seu sensor, mas por enquanto deixe como está.

Passo 4.2 – Conferindo o resultado

Se você tiver fechado o servidor, abra-o novamente antes de continuar (Passo 3.2). Com o código já pronto (Passo 4.1), passe o código compilado para o seu dispositivo ESP. Em seguida, abra o Monitor Serial (menu Ferramentas) para ver as mensagens enviadas pelo seu dispositivo. Atenção para a velocidade, marcada em amarelo na Figura 11, que deve ser 115200. Caso tudo esteja configurado corretamente você deve receber a mensagem exibida na porção inferior da Figura 11: “Sensor authenticated and data successfully recorded”.

dados dos sensores
Figura 11 – Resultado do envio bem sucedido do dado para o servidor.

Pronto, o sistema está comprovadamente funcionando! Agora você pode usar esse código como base e modificá-lo para, em vez de enviar sempre o valor 5.2, enviar o valor lido pelo seu sensor.

5ª Etapa – Personalização (opcional)

O Simple IoT Monitor já vem com dois sensores pré-cadastrados, a título de exemplo. Mas certamente você quer monitorar mais coisas, não é mesmo? Para cadastrar as coisas que serão monitoradas, assim como os seus sensores, você pode acessar a interface administrativa (admin) do sistema. Depois que entrar na página inicial do sistema (exemplo: Figura 6), basta clicar no botão “Admin” no canto superior da tela e fazer login com o Username admin e o password ukJX^jhFo:re%?ZG.De#

OBS: depois do login você pode clicar em “Users” para mudar essa senha

dados dos sensores
Figura 12 – Login na interface administrativa do sistema. O username padrão é admin, enquanto a senha padrão é ukJX^jhFo:re%?ZG.De#

Após o login você encontrará uma tela igual à Figura 13, com a qual você pode visualizar, editar, apagar ou adicionar novos dados. Por exemplo, para visualizar quais as coisas que estão cadastradas, basta clicar em “Things”. Para adicionar uma nova coisa você pode clicar diretamente no botão “+ Add” localizado à direita de Things, conforme destacado na Figura 13.

dados dos sensores
Figura 13 – Menu principal da interface administrativa do sistema.

Cada coisa pode estar associada a um tipo de coisa (Type of things), que é usado para deixar a página inicial do sistema mais organizada. Por exemplo, é possível separar as plantinhas da sua horta e os cômodos da sua casa, criando um tipo “Planta” e outro tipo “Cômodo”.

Cada coisa cadastrada pode ter quantos sensores você quiser. Para adicionar um novo sensor, é preciso clicar no botão “+ Add” à direita do nome “Users”. Isso acontece porque os sensores estão associados a um usuário, cujos dados são utilizados na autenticação, para saber se os dados foram realmente enviados pelo seu sensor.

A tela para acrescentar um sensor está representada na Figura 14. O “Username” e o “Password” são os dados que você utilizará na programação do seu cliente (Etapa 4). Já “Sensor Name” é uma versão “bonitinha” do nome do sensor, que será exibido nas páginas do sistema. Em “Thing monitored” você irá dizer qual a coisa que será monitorada por esse sensor. “Description” é um campo opcional onde você pode fazer uma breve descrição desse sensor. Uma dica para a descrição é indicar qual a unidade dos seus dados (ex: milímetros, centímetros, metros, etc.). Por último, “Created date” representa a data/hora em que o sensor foi cadastrado; você pode deixar com os valores que já estão preenchidos. Agora é só clicar em “SAVE” e você poderá passar a enviar os dados deste sensor para o sistema, utilizando os seus Username e Password no código do cliente.

dados dos sensores
Figura 14 – Tela de cadastro de sensor

Conclusão

O Simple IoT Monitor é uma alternativa para sistemas mais completos como Thingsboard e Thinger. Ele foi criado com o objetivo de facilitar a vida dos estudantes, permitindo armazenar os dados coletados pelos sensores via wi-fi sem ser preciso aprender programação web. Esses dados poderão ser visualizados em uma interface amigável, que exibe tabelas e gráficos, além de permitir o download dos dados no formato CSV. 

Se você tiver encontrado algum problema durante a instalação do sistema, deixe o máximo de informações possível nos comentários aqui embaixo que faremos o possível para ajudar.

Autores

Davi de Almeida Melo é estudante de Engenharia Eletrônica na Universidade Federal Rural de Pernambuco (UFRPE), além de autodidata na área de programação para WEB e IOT. LinkedIn: https://www.linkedin.com/in/davi-m-794354197/
José Otávio C. Maciel é aluno de graduação pela Universidade Federal Rural de Pernambuco na Unidade Acadêmica do Cabo de Santo Agostinho no curso de Engenharia Eletrônica. Cursando o 7º Período do curso, atua como monitor da disciplina de Linguagem de Programação, participou da Iniciação Científica (PIBIC) intitulada “Aumento da Qualidade de Código na Programação de Controladores Eletrônicos”, com ênfase em Python e Django Framework. Atualmente participa também do projeto de extensão “Projeto de um veículo elétrico para competições Fórmula SAE”, no setor de Eletrônica. Atua como projetista na JMaciel Eletrônica LTDA.
João H. C. Pimentel – O Prof. Dr. João Henrique Correia Pimentel ama ensinar computação para os estudantes de engenharia na Unidade Acadêmica do Cabo de Santo Agostinho da Universidade Federal Rural de Pernambuco (UFRPE). Faz parte dos grupos de pesquisa Grupo de Engenharia Elétrica e Eletrônica (GEEE) e Laboratório de Engenharia de Requisitos (LER)

Agradecimentos

Agradecemos a Erick Gabriel e a Kelvin Maia pelo teste dos passos apresentados neste tutorial. A escrita deste tutorial é resultado de projetos de Iniciação Científica financiados pela Universidade Federal Rural de Pernambuco (UFRPE) e pela Fundação de Amparo à Ciência e Tecnologia do Estado de Pernambuco (FACEPE).

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Mandar dados dos sensores para um computador pela wi-fi
Comentários:
Notificações
Notificar
guest
10 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Kiyoshi Araki
Kiyoshi Araki
04/03/2021 12:27

Excelente tutorial!Parabéns

Luiz Sampaio
Luiz Sampaio
01/03/2021 21:20

Muito bom, parabéns !

Alfonso Favoretti Fonseca
01/03/2021 14:26

Prezados, Gostei bastante do tutorial , mesmo não o tendo executado na sua totalidade, pois parei no que os senhores devem considerar um erro primário, segue:
“C:\Users\alfon\Desktop\simple-iot-monitor-master\iotproject>python manage.py runiotmonitor
 File “manage.py”, line 16
  ) from exc
pelo que consegui entender, é como estivesse faltando um path para a variável de ambiente. Qual serial esse path? poderiam me ajudar.
Parabéns pelo tutorial e acredito que venha a ser uma ótima solução para aquisição de dados da sensores remotos.
Obrigado!

Eduardo Mendes
Eduardo Mendes
27/02/2021 18:13

Parabéns. Muito didático.

Adriano
Adriano
25/02/2021 23:42

Muito informativo, obrigada!

Talvez você goste:

Nenhum resultado encontrado.

Séries

Menu