A IoT (Internet das Coisas, em tradução livre) da margem a aplicações incríveis. Em seu contexto, dispositivos podem se conectar à Internet e interagir com outros dispositivos e/ou humanos. Os usos possíveis disso são praticamente infinitos, indo desde uma telemetria simples até a aplicações de inteligencia artificial.
Sendo assim, este artigo mostra uma aplicação de IoT que pode virar realidade / um produto: uma balança IoT. Tal aplicação poderia ser utilizada – com as devidas melhorias de software e hardware (eletrônica e mecânica) que o ambiente e os órgãos regulamentares exigem – no mundo Agro, de forma a maximizar o rendimento e produtividade de todo o segmento. Tal projeto consta na grade do 1° Encontro Tecnológico INCB de 2017.
Considerações iniciais
- Este projeto, enquanto balança e DA FORMA QUE SE APRESENTA, não possui validade metrológica. Ou seja, este projeto, da forma que se apresenta, não pode ser usado comercialmente como uma balança e também não pode ser submetido à avaliação metrológica no INMETRO. Se forem feitas as implementações e ajustes necessários em software e hardware (eletrônica e mecânica), é possível construir uma balança IoT real com base nos conceitos aqui apresentados.
- O objetivo deste projeto é montar uma balança o mais fácil e intuitiva possível, de modo a ser possível se destacar suas funcionalidades atreladas a IoT.
Vídeo do projeto em funcionamento
Hardware utilizado
Para o projeto, foi utilizado o seguinte hardware:
- 1 NodeMCU (placa de desenvolvimento com um ESP8266-12E)
- 1 Fonte 5V/1A USB (aqui, um simples carregador de celular com conexão micro-USB se encaixa bem)
- 1 sensor de força resistivo 0,5″
- 1 resistor de 1k/0.25W
- 1 protoboard de 440 pontos
- Jumpers macho-macho e macho-fêmea
Requisitos e conhecimentos necessários
Para uma leitura fluida e reprodução deste projeto, os seguintes requisitos e conhecimentos são necessários:
- Conhecimento de Arduino (programação)
- Noções sobre funcionamento da plataforma Cloud ThingSpeak
- Noções sobre funcionamento de MQTT
- Noções básica de montagem de circuitos em protoboard
Circuito esquemático – Balança IoT
Em termos de hardware e circuito esquemático, este projeto é muito simples . Veja na figura abaixo:
Onde:
- Sensor de força resistivo: utilizado neste projeto como célula de carga (os motivos da escolha serão explicados mais a frente no artigo).
- Botão: utilizado como botão para ajuste / calibração(os motivos da escolha serão explicados mais a frente no artigo).
IMPORTANTE: este projeto se trata de um protótipo, não podendo ser avaliado metrologicamente nem vendido como uma balança real.
Balança – funcionamento simplificado
De forma simples, o diagrama de funcionamento de uma balança pode ser representado conforme a figura 2.
Abaixo, segue a explicação de cada parte do diagrama.
Célula de carga e sinal analógico
Em termos gerais, a célula de carga é um elemento eletro-mecânico capaz de entregar um sinal elétrico (analógico) que possui relação matemática com a massa aplicada sobre ela. Por relação matemática, entende-se que o sinal entregue varia conforme a massa aplicada, porém nem sempre de forma linear.
Por ser o elemento transdutor de massa para a balança, a qualidade da célula de carga tem enorme influência sobre a qualidade da balança como um todo. Isso significa que, se for utilizada uma célula “ruim”/inadequada, não há como se fazer uma balança metrologicamente “boa” (que atenda os requisitos metrológicos). Por esta razão, a escolha de uma célula de carga é um ponto-chave em qualquer projeto de balança.
As células de carga normalmente são parametrizadas e classificadas em função de alguns fatores, como por exemplo:
- Carga máxima: máxima massa suportada (em kg).
- Local de operação: dependendo do ambiente em que a célula de carga operará (ambiente comercial, ambiente industrial, área classificada, etc.), há um tipo / categoria especial.
- Formato físico: o formato físico das células de carga variam conforme sua aplicação.
Por exemplo, para pesagem de cargas suspensas, células de carga do tipo S (são feitas no formato de uma letra S, possuindo fixação à plataforma e ao “teto” nas extremidades) são mais adequadas.
No geral, as recomendações na escolha de uma célula de carga são:
- Linearidade: sempre escolha a célula mais linear possível para sua aplicação. Quanto mais linear uma célula for, menor a complexidade de hardware e software para que o erro na pesagem seja o menor possível.
- Evitar super-dimensionamento e sub-dimensionamento: as células de carga são fabricadas para operarem até uma determinada carga. Utilizar células de carga sub-dimensionadas significa que, certamente, as células irão se danificar em sua aplicação (já que estarão sujeitas a cargas maiores que as suportadas). Já ao utilizar uma célula de carga super-dimensionada, significa que muito provavelmente a pesagem será menos precisa e exata, prejudicando ou inviabilizando determinado tipo de pesagem. Portanto, escolha a célula de carga com sabedoria!
- Opte por fornecedores de confiança: como a qualidade da célula de carga é o que mais influi na qualidade da balança como um todo, opte por fornecedores de confiança. Isso será bom em termos operacionais do seu projeto e em termos comerciais (negociação, garantia de ciclo de vida, certificações, atendimento à normas específicas de um determinado projeto, etc.).
Sobre o sinal analógico, deve-se ter muito cuidado com a circuitaria de aquisição de sinais da célula de carga. Aqui, falamos de tensões na ordem de mili-volts a micro-volts, portanto os circuitos (pontes de Wheatstone, pré-amplificadores, condicionadores de sinal, etc.) devem ser bons o bastante (em termos de estabilidade e imunidade a ruído) para não interferirem no sinal da célula de carga.
Neste projeto em específico, utiliza-se um sensor de força resistivo (FSR) como célula de carga. Esta escolha é efetiva se for desejado pesar até 10kg, pois possui excelente linearidade. Para mais informações técnicas deste sensor, clique aqui.
Conversor Analógico-Digital (ADC)
Um circuito conversor analógico-digital (frequentemente referenciado como ADC, Analog-Digital Converter) é o circuito responsável por transformar a leitura analógica do sinal da célula de carga em um dado digital, num tal formato que a etapa seguinte (processamento) consiga trabalhar.
Um ADC é vendido como um circuito integrado, havendo uma gama de modelos disponíveis no mercado. Em termos gerais, as principais características de um ADC são:
- Resolução: trata-se do número de bits que o dado convertido contém. Quanto maior a resolução, maior o número de bits do dado final convertido e, portanto, é mais sensível à variação de tensão. Em outras palavras, quanto maior a resolução, menor será o “step” (tensão representada pela variação de 1 bit do dado convertido). Balanças, no geral, utilizam ADC com resoluções iguais ou superiores a 24 bits.
- Polaridade: um ADC pode ser unipolar (trabalha somente com valores positivos de tensão) ou bipolar (trabalha com valores positivos e negativos de tensão).
Macete para trabalhar com sinais bipolares usando ADCs unipolares: os ADCs bipolares podem ser, muitas vezes, mais caros e mais difíceis de se encontrar que os unipolares. Ainda, em projetos de extremo baixo-custo ou em projetos mais velhos que precisam ser refatorados, o uso de um ADC bipolar pode ser proibitivo. Sendo assim, segue aqui um macete para utilizar um ADC unipolar como um bipolar.
Se o sinal analógico que você estiver trabalhando possuir baixa excursão (nesse caso, sua tensão de pico-a-pico for menor ou igual ao range de tensão aceito pelo ADC unipolar que você está trabalhando), pode-se aplicar um offset (sinal DC, positivo) ao sinal com valor de tensão correspondente a 50% da suportada pelo ADC (ou seja, offset igual a metade do range de tensão de trabalho). Desta forma, é possível trabalhar com sinais bipolares usando um ADC unipolar, algo vantajoso considerando que um ADC bipolar possa ser mais caro que um unipolar.
Neste projeto, por questões de manter a simplifcidade de projeto, foi utilizado o próprio ADC do NodeMCU. Está longe de ser ideal (possui somente 10-bits de resolução), mas atende para fins de exemplo.
Processamento
Definindo em poucas palavras, esta é a etapa em que a leitura digitalizada da célula de carga (obtida do ADC) vira, efetivamente, massa medida (ou, em jargão do ramo, “vira peso”). Tudo que se refere a regras metrológicas e comportamento da balança como um todo é feito aqui. Em termos de hardware, aqui pode-se utilizar quaisquer microcontroladores ou microprocessadores, desde que atendam às especificações da balança enquanto produto. Normalmente, os principais fatores na escolha de um microcontrolador ou microprocessador são preço, frequência máxima de operação, consumo de energia, ciclo de vida, memória Flash e RAM (no caso de microcontroladores) e disponibilidade no mercado.
No projeto aqui proposto, utiliza-se o processamento do próprio ESP8266-12E pois, além de possuir poder de processamento mais do que suficiente para este projeto, já possui em seu SoC a parte de conectividade WI-FI pronta (logo, acaba resolvendo duas coisas num componente só).
Publicação do peso
A etapa de publicação consiste na exibição do peso obtido (em unidade dependente da balança e aplicação da mesma), seja o meio qual for: em um display, via FieldBus/Profibus para um CLP, via Ethernet para um sistema supervisório, entre outras inúmeras maneiras possíveis.
No caso deste projeto, a publicação é feita exclusivamente pela Internet, ou seja, não há qualquer tipo de “display físico” no projeto.
Ajuste / calibração de balança
O ajuste de uma balança consiste em uma operação obrigatória, pois é nela em que se estabelece a correta relação entre leitura do ADC da célula de carga e massa. Matematicamente, nesta etapa é determinado um polinômio que relaciona counts de ADC à massa, sendo este polinômio utilizado dali em diante para a etapa de pesagem (até que a balança seja re-ajustada). A este importante polinômio dá-se o nome de polinômio de ajuste. É importante ressaltar que este processo é comumente chamado de calibração, porém isto deve ser evitado devido a, metrologicamente, calibração e ajuste serem coisas distintas (e a determinação do polinômio de ajuste se classifica, metrologicamente falando, como ajuste).
Para fins de simplificação, o processo de ajuste do projeto aqui proposto considera o polinômio de ajuste (ou seja, a relação entre counts de ADC e massa) como de grau 1. Isso é válido nesse projeto pois, o elemento utilizado como célula de carga (sensor de força resistivo), tem linearidade excelente. Na prática, com células de carga “reais”, o polinômio de ajuste normalmente tem grau 2 ou superior. Portanto, segue abaixo processo de ajuste considerando o polinômio de ajuste como um polinômio de grau 1:
- Definição do peso mínimo e peso máximo: primeiramente, é preciso definir quais são os peso mínimo e peso máximo de ajuste, algo altamente dependente da célula de carga utilizada, material da plataforma da balança e da aplicação da balança. Desta forma, será possível relacionar os counts de ADC de cada situação e determinar, mais a frente neste processo, o polinômio de ajuste.
- Obtenção dos counts de ADC em peso mínimo: coloca-se nenhuma massa na plataforma (ou diretametne sobre o sensor de força resistivo, se você não utiliza plataforma) e faz-se 100 leituras consecutivas de counts de ADC. Se todos os counts se mantiverem dentro de uma janela de valores pre-determinada, é feita uma média dos counts lidos e este valor atribuído aos counts de ADC em peso mínimo. Caso qualquer valor de count de ADC obtido variar de forma a extrapolar a janela pré-determinada, a obtenção dos counts de ADC em peso mínimo é reiniciada (reinicia-se este processo).
- Obtenção dos counts de ADC em peso máximo: similar ao item anterior, porém é colocado o peso máximo (fundo de escala) desejado.
- Em posse dos counts de ADC em peso mínimo e peso máximo, é chegada a hora da determinação do polinômio de ajuste. Neste projeto, pelo fato deste ser um polinômio de grau 1 (graficamente, uma reta), há somente dois coeficientes a serem determinados: coeficiente linear (também chamado de coeficiente independente) e coeficiente angular.Portanto, o polinômio de ajuste terá o seguinte formato:
– ADCCounts: counts de ADC (proveniente da conversão digital da leitura analógica do sinal da célula de carga)
– Clin: coeficiente linear
– Cang: coeficiente angular.Ainda, de forma gráfica:
Onde: - Determinação do coeficiente angular: o coeficiente angular, ou seja, tangente do ângulo feito entre o eixo x (na figura 3, eixo dos ADC Counts) e reta do polinômio de ajuste, considerando o gráfico da figura 3, pode ser determinado por:
- Determinação do coeficiente linear: para esta determinação, considere a equação da reta no seguinte formato:
Ou seja, para definir a equação da reta, precisamos de um ponto conhecido, de coordenadas x0 e y0 e do coeficiente angular (previamente determinado). Adotando como ponto conhecido o ponto formado por coordenadas Ci e Pi, tem-se:
Portanto, o coeficiente linear / coeficiente independente é definido por:
Desta forma, substituindo os coeficientes linear e angular na equação 1, é determinado o polinômio de ajuste, sendo este portanto utilizado para a conversão de Counts de ADC em massa.
Parte IoT da solução
Até o momento, este artigo mostrou simplificadamente como funciona uma balança e como é feito seu processo de ajuste. Agora, é chegada a hora de explanar a parte IoT deste projeto.
A integração IoT deste projeto tem como objetivo atender a quatro funcionalidades: telemetria da balança, comando remoto, permitir geração de alertas de manutenção preventiva e automação da solução como um todo (incluindo integração com outros serviços. Observe a figura 4.
Para atender tais funcionalidades, serão utilizadas as seguintes plataformas Cloud, linguagens de programação e protocolos IoT:
- ThingSpeak: plataforma Cloud com ótimas opções para uso gratuito. Seu funcionamento se baseia em armazenar histórico de valores numéricos, os quais podem ser consultados em tempo-real a qualquer momento e, inclusive, serem “embedados”/embutidos em páginas web (veja mais detalhes na figura 5).
- MQTT, JavaScript e HTML: estes três itens combinados formam uma página de monitoramento e controle remoto da balança, sendo responsáveis portanto pela interface de usuário (UI). Nela, neste projeto, também é feita a parte de configuração e geração de alerta de manutenção preventiva por tempo de funcionamento (veja mais detalhes nas figuras 6 e 7).
Observações:
- Sobre o uso do ThingSpeak, é necessário ressaltar que este só permite atualizações num período mínimo de quinze segundos. Desta forma, para permitir atualização em tempo-real de todas as informações durante o funcionamento do projeto, utiliza-se um canal dedicado ao histórico de funcionamento / keep-alive e outro para demais informações (histórico de pesagens confirmadas e histórico de valores arrecadados, sendo estas sempre enviadas simultaneamente).
- Sobre o ThingSpeak, será necessário criar dois canais, conforme observação anterior. Para saber como criar um canal no ThingSpeak, por favor clique aqui.
- Quanto ao uso de MQTT, recomenda-se, se possível, utilizar um broker particular (em uma VPS, por exemplo). Isto garantirá maior estabilidade do mesmo e máxima velocidade de entrega e comunicação, uma vez que o broker terá uso dedicado ao projeto.
Código-fonte do projeto
O código-fonte do projeto encontra-se em um repositório GitHub na minha conta. Para acessá-lo, clique aqui ou na figura abaixo.
IMPORTANTE: o código-fonte é para Arduino (no caso, o NodeMCU programado como um Arduino). Portanto, recomendo fortemente o uso da Arduino IDE para visualização, edição, compilação e upload do programa para o NodeMCU.
Aplicações no mundo Agro
Um dos grandes pontos fortes deste projeto é sua aplicação no mundo Agro, ramo de atividade que está hoje demandando muita tecnologia em prol de maximização de produtividade. A fim de ilustrar tal aplicabilidade deste projeto no mundo Agro (e servir também de sugestões de projetos futuros), foram feitos quatro casos de uso:
1- Armazenamento e tratamento de dados de colheita
O primeiro caso de uso da Balança IoT no mundo Agro trata-se do armazenamento de dados e tratamento dos mesmos.
No caso de uso abordado, tem-se o seguinte fluxo:
- A colheita, feito pelos trabalhadores, é embalada e transportada até o caminhão.
- O caminhão é simultaneamente carregado e pesado. Desta forma, permite-se que a quantidade máxima exata de material seja carregada, evitando sobrecarga do caminhão (danos mecânicos) e danos às rodovias / riscos de acidentes (causados pelo sobrepeso por eixo).
- Em complemento: os dados de pesagem são armazenados em banco de dados para uso futuro (inclusive, podendo servir como input em sistemas corporativos e empresariais), alertas de caminhões cheios / mercadoria em transporte podem ser gerados automaticamente (seja para os compradores ou para as pessoas que gerenciam a parte agrícola) e a visualização dos dados pode ser feita a qualquer momento também.
2 – Prever, com precisão, dados da(s) próxima(s) colheita(s) para melhor gerenciamento
Como segundo caso de uso, é abordado o uso dos dados de pesagem para prever, com precisão, dados da(s) próxima(s) colheita(s), a fim de se obter um melhor gerenciamento de recursos.
Com as ferramentas corretas de inteligência artificial e machine learning , os dados de pesagem armazenados podem servir para prever o futuro da plantação nos seguintes aspectos: consumo de insumos das plantações (agrotóxicos, adubos, etc.), lucro a ser obtido, equipamentos necessários (para compra ou venda) e mão-de-obra necessária a ser contratada.
3 – Controle de peso de gado e indicação do momento do abate
No terceiro caso de uso, é abordado uma aplicação com gado.
Aqui, a Balança IoT, utilizada junto com ferramentas adequadas para Cloud e Big Data, pode fazer o controle de peso de cada cabeça de gado.
Desta forma, pode-se dizer com precisão o momento de abate de cada cabeça de gado, maximizando a eficiência e lucro para criadores e abatedouros.
4 – Gerenciamento de criadores à nível nacional
De forma similar ao caso de uso anterior, aqui uma empresa pode gerenciar, a nível nacional, o gado de vários criadores / pecuaristas, tudo isso sem nem ao menos sair do escritório.
Além de saber exatamente quais cabeças de gado estão prontas para o abatimento, pode-se ter um real valor de faturamento e lucro (em tempo-real). Ainda, pode-se utilizar os dados de pesagem, atrelados a ferramentas adequadas, para saber qual cabeça de gado precisa de cada uma das vacinas necessárias, permitindo assim um gerenciamento completo da vida de cada cabeça de gado de cada pecuarista.
Indo além: os próximos passos para uma melhor integração IoT
Plataformas Cloud
Como qualquer coisa na tecnologia, este projeto pode ser melhorado. No ponto de vista de integração IoT, esta melhora está concentrada em utilização de plataformas Cloud cada vez mais robustas. Desta forma, garante-se que os dados de pesagem serão recebidos, tratados, armazenados e utilizados para previsão de custos e lucro de forma cada vez melhor, gerando mais valor ao negócio em que o projeto é aplicado.
Até o momento da escrita deste artigo, os três grandes das plataformas Cloud são: Microsoft Azure, Amazon Web Services (AWS) e IBM BlueMix. Estas possuem recursos completos e complexos que gerarão o máximo de valor possível ao seu negócio que utiliza integração em nuvem.
Segurança
Assim como na vida “real” / virtual precisamos nos proteger de ladrões e prezar pela nossa privacidade, com projetos IoT isso não é diferente. Segurança de informações críticas é uma etapa crucial em um projeto IoT que será aplicado em campo / entrará em produção.
Sendo assim, segue uma lista de alguns pontos de segurança de informação que devem receber especial atenção:
- Criptografia (preferencialmente TLS/SSL)
- Se usar Linux Embarcado, utilize OpenSSL
- Mantenha atualizadas suas bibliotecas de segurança
- Fechar toda e qualquer porta de acesso remoto ao sistema operacional de seu produto
- Se precisar de acesso remoto, definir passwords de alta complexidade
Conclusão e agradecimentos
Neste artigo, foi explanado o projeto de uma balança IoT, desde a concepção de uma balança simples (incluindo a cadeia de obtenção do valor de peso e processo de ajuste/calibração) até sua integração com nuvem, com projeto completo (código-fonte e circuito esquemático) disponibilizado na íntegra. Ainda, foram exemplificados casos de uso deste projeto no mundo Agro, bem como ressaltada a importância da segurança de informações em um projeto que envolva IoT.
Agradeço ao Instituto Newton Braga, em especial ao Renato Paiotti, pela oportunidade em apresentar este projeto no 1º Encontro Tecnológico Newton C. Braga, evento fantástico da área de tecnologia. Agradeço também aos meus amigos da área de sistemas embarcados (vocês sabem quem são) que viram o projeto em funcionamento e opinaram sobre, contribuindo para a melhora do mesmo.
2 comentários
Franklin S.C. Bonfim · 20/11/2017 às 11:32 pm
Artigo ficou excelente. Deu uma boa clareza!
Parabéns!
Douglas Zuqueto · 21/11/2017 às 10:24 am
Parabéns por mais um excelente artigo Pedro. Gostei muito do tema envolvido como também da sua abordagem. Novamente – meus parabéns.
Os comentários estão fechados.