[2/3] Do hardware à nuvem: Testando o MMC5883MA
Você já pensou em desenvolver seu próprio IoT do zero, mas não sabia por onde começar? Boas notícias, aqui você aprenderá como fazer isso! Fique por dentro do progresso do projeto [ aqui ].
Este é o segundo de uma série de artigos nos quais descreverei o processo de desenvolvimento do meu próprio IoT do zero. Se você ainda não leu a parte 1, recomendo que o faça primeiro para entender o contexto do projeto e se inteirar das considerações levadas em conta na seleção das tecnologias e componentes necessários para construir o primeiro protótipo.
Para construir um protótipo, é necessário conhecer os detalhes de funcionamento e as especificações técnicas de cada componente. Pela minha experiência, considero que o primeiro (e talvez o mais importante) passo é compreender os principais aspectos da folha de dados dos módulos. Em seguida, recomendo realizar testes individuais com cada um deles para entender seu comportamento.
Tendo tudo isso em mente, decidi começar pela parte mais crítica do protótipo: os sensores. O motivo é simples: é necessário garantir que os sensores selecionados sejam realmente capazes de detectar a presença de um veículo, além de compará-los para descobrir qual é o mais adequado para atender aos requisitos e objetivos da aplicação.
Ao longo deste artigo, descreverei o processo realizado para avaliar o comportamento do sensor magnético MMC5883MA e sua capacidade de detectar a presença de um veículo em uma vaga de estacionamento. Ao final, os resultados dos testes serão apresentados e analisados.
Sobre os componentes
O MMC5883MA é um sensor magnético de 3 eixos de baixo consumo que pode se comunicar, através de uma interface I2C, com um microcontrolador externo. Ao escrever e ler determinados registradores específicos do sensor, o microcontrolador pode configurar o modo de operação e iniciar o processo de medição, além de obter os dados das medições.
Para este teste, estou usando a versão de avaliação do sensor MMC5883MA, chamada MMC5883MA-B , porque componentes superficiais não podem ser testados com tanta facilidade. Como eu precisava construir um protótipo primeiro, a maioria dos componentes deveria ser conectada através de uma placa de ensaio e do MMC5883MA-B, o que me permite fazer isso sem exigir tempo e trabalho extras.
Para realizar o teste, o primeiro passo foi selecionar um microcontrolador para coletar os dados gerados pelo sensor. No entanto, como o foco do teste está na análise do comportamento do sensor, e não do microcontrolador, uma boa opção é escolher um microcontrolador simples de programar, para reduzir o tempo e a complexidade do experimento. Em resumo, eu precisava encontrar um microcontrolador (ou placa de desenvolvimento) simples e prático, com interface I2C, que também tivesse a capacidade de enviar os dados do sensor para a plataforma Ubidots para serem armazenados e processados.
Levando tudo isso em consideração, decidi usar um NodeMCU ESP8266 como microcontrolador. Esta placa de desenvolvimento compatível com Arduino é baseada no módulo Wi-Fi ESP8266 e é muito popular em aplicações de Internet das Coisas devido à sua praticidade. Este dispositivo possui diversas interfaces de comunicação, incluindo I2C. Todas essas características o tornam adequado para ser usado neste experimento.
Descrição do teste
O experimento consistiu em realizar medições periódicas do campo magnético em uma vaga de estacionamento, simulando condições reais, ou seja, com veículos entrando e saindo. Os dados dos sensores deveriam ser enviados em tempo real para a plataforma Ubidots e, em seguida, analisados para identificar se houve alguma alteração no comportamento das medições que pudesse ser relacionada à presença de veículos.
O MMC5883MA-B deve ser conectado ao NodeMCU ESP8266 através da porta I2C. Essas conexões podem ser facilmente feitas com o auxílio de uma placa de ensaio. O módulo NodeMCU precisa ser configurado corretamente para acessar uma rede Wi-Fi e enviar dados para Ubidots. O último detalhe antes de iniciar o teste foi fornecer uma fonte de alimentação para os módulos, a fim de torná-los portáteis. Como a tensão de operação dos módulos é de 3,3 volts, duas pilhas AA de 1,5 volts cada, conectadas em série, devem ser suficientes. As conexões resultantes são mostradas no diagrama abaixo.

Hora de programar
Como o NodeMCU é uma placa compatível com Arduino, ele pode ser programado através da IDE do Arduino. O código Arduino deve implementar duas tarefas principais:
- Aquisição de dados do sensor.
- Publicação de dados na plataforma Ubidots .
A parte do código responsável por ler os dados do sensor e decodificá-los para obter a medição do campo magnético foi escrita com base na folha de dados do MMC5883MA, onde os registradores do sensor são explicados em detalhes. Nesse processo, a biblioteca Wire.h do Arduino foi muito útil para realizar a comunicação I2C.
A parte do código responsável por configurar a conexão Wi-Fi e enviar os dados para a Ubidots é baseada no tutorial Ubidots Conectar um NodeMCU ESP8266 ao Ubidots via HTTP ". Para aprender como configurar a IDE do Arduino para programar a placa NodeMCU, recomendo seguir o passo 1 do tutorial.
O código resultante pode ser encontrado neste repositório do Github .
Resultados dos testes
Após concluir as configurações explicadas acima e garantir que o NodeMCU estava lendo os dados e enviando-os para Ubidots com sucesso, coloquei a placa de ensaio no chão da vaga de estacionamento, aproximadamente na posição marcada com o X verde na imagem abaixo.
Para iniciar o teste, estacionei um carro e o deixei lá por alguns minutos. Depois disso, retirei o carro e esperei alguns minutos antes de repetir o processo. Lembre-se de que o sensor fazia as medições periodicamente, aproximadamente a cada dois segundos. Repeti o mesmo processo várias vezes e finalizei o teste.
Anteriormente, configurei um dashboard na minha conta Ubidots para facilitar a visualização dos dados do sensor. Após concluir o teste, revisei os gráficos no meu dashboard e constatei o seguinte:
Ao analisar os dados, notei algumas mudanças significativas nas medições do eixo z. A primeira ocorreu quando a magnitude do campo magnético no eixo z aumentou (marcada com o "1" na imagem acima); a segunda, quando a magnitude diminuiu novamente (marcada com o "2" na imagem acima). É importante observar que a magnitude dos dados coletados entre esses pontos permanece aproximadamente no mesmo valor.
Levando tudo isso em consideração, é possível concluir que as alterações marcadas como 1 e 2 correspondem aos momentos em que estacionei o carro (1) e o movi novamente (2). Além disso, as medições feitas entre esses momentos representam o tempo em que o carro permaneceu estacionado. Esse comportamento nas medições se repetiu no ponto marcado como 3.
O resultado do experimento indica que, com o MMC5883MA, a presença de um veículo pode ser detectada por meio das alterações nas medições do campo magnético, que serão mais consideráveis em um dos eixos, neste caso, o eixo z. Em resumo, quando há um carro na vaga de estacionamento, a medição do campo magnético será maior do que quando a vaga está vazia. Com base na diferença entre esses valores, é possível definir um limiar para determinar a presença do veículo.
O próximo objetivo é realizar experimentos semelhantes com os outros sensores. Ao final, os resultados devem ser comparados para determinar qual dos sensores é o mais adequado para a construção do protótipo final do projeto.
Se quiser saber os resultados dos outros experimentos, fique de olho nas próximas publicações.