[2/3] Do hardware à nuvem: Testando MMC5883MA

Você já pensou em desenvolver sua própria IoT do zero, mas não sabia por onde começar? Boas notícias, aqui você aprenderá como fazer! Fique por dentro do andamento 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 faça isso primeiro , para poder entender o contexto do projeto e ficar em dia com as considerações levadas em consideração para selecionar as tecnologias e componentes necessários para construir o primeiro protótipo.

Para poder construir um protótipo, torna-se necessário conhecer os detalhes de funcionamento e especificações técnicas de cada componente. Pela minha experiência, considero que o primeiro (e talvez o mais importante passo) é entender os principais aspectos da ficha técnica dos módulos. Depois, recomendo fazer 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: é preciso ter certeza de que os sensores selecionados são realmente capazes de detectar a presença de um veículo, além de compará-los para saber 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 mostrados e analisados.

Sobre os componentes

O MMC5883MA é um sensor magnético de 3 eixos de baixa potência que pode se comunicar, através de uma interface I2C, com um microcontrolador externo. Ao escrever e ler determinados registros 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 utilizando a versão de avaliação do sensor MMC5883MA, chamada MMC5883MA-B , pois componentes superficiais não podem ser testados tão facilmente. Como eu precisava construir primeiro um protótipo, 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 extra.

Para poder realizar o teste, o primeiro passo foi selecionar um microcontrolador para coletar os dados gerados pelo sensor. Porém, como o foco do teste está na análise do comportamento do sensor e não do comportamento do microcontrolador, uma boa opção pode ser escolher um microcontrolador simples de programar, para reduzir o tempo e a complexidade do experimento. Resumindo, 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.

Tendo tudo isso em mente, decidi usar um NodeMCU ESP8266 como microcontrolador. Esta placa de desenvolvimento compatível com Arduino é baseada no módulo WiFi ESP8266 e é muito popular entre as aplicações de Internet das Coisas devido à sua praticidade. Este dispositivo possui uma variedade de interfaces de comunicação, incluindo I2C. Todos esses recursos o tornam apropriado para uso no 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 entrada e saída de veículos. Os dados dos sensores deverão ser enviados em tempo real para a plataforma Ubidots e depois analisados ​​para identificar se houve alguma alteração no comportamento das medições que pudesse estar relacionada à presença do veículo.

O MMC5883MA-B deve ser conectado ao NodeMCU ESP8266 através da porta I2C. Essas conexões podem ser feitas facilmente com a ajuda de uma placa de ensaio. O módulo NodeMCU deve estar devidamente configurado para poder acessar uma rede WiFi e enviar dados para Ubidots . O último detalhe antes de iniciar o teste foi fornecer alimentação aos módulos, de forma a torná-los portáteis. Como a tensão de trabalho dos módulos é de 3,3 volts, deverá ser suficiente a utilização de duas pilhas AA de 1,5 volts cada uma, ligadas em série. As conexões resultantes são mostradas no diagrama abaixo.

Hora de codificar

Como o NodeMCU é uma placa compatível com Arduino, ele pode ser programado através do Arduino IDE. O código Arduino deve implementar duas tarefas principais:

  • Aquisição de dados de sensores.
  • Postagem 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 ficha técnica do MMC5883MA, onde são explicados detalhadamente os registros do sensor. Aqui, a biblioteca Arduino Wire.h foi muito útil para conseguir a comunicação I2C.

A parte do código responsável por configurar a conexão WiFi e enviar os dados para a Ubidots é baseada no tutorial Ubidots Conecte um NodeMCU ESP8266 ao Ubidots via HTTP ". Para aprender como configurar o Arduino IDE para programar a placa NodeMCU, recomendo seguir o passo 1 encontrado no tutorial.

O código resultante pode ser encontrado neste repositório Github .

Resultados do teste

Após concluir as configurações explicadas acima e garantir que o NodeMCU estava lendo os dados e enviando para Ubidots com sucesso, coloquei a protoboard no chão da vaga de estacionamento, próximo à posição marcada com o X verde na imagem abaixo.

Para iniciar o teste, estacionei um carro e deixei-o ali por alguns minutos. Depois disso, tirei o carro e esperei alguns minutos antes de repetir o processo. Lembre-se de que o sensor fazia medições periodicamente, aproximadamente a cada dois segundos. Repeti o mesmo processo várias vezes e terminei o teste.

Anteriormente, configurei um dashboard na minha conta Ubidots para facilitar a visualização dos dados dos sensores. Depois de terminar o teste, revisei os gráficos em meu dashboard e foi isso que encontrei:

Ao analisar os dados, percebi que houve algumas mudanças significativas nas medidas do eixo z. O primeiro ocorreu quando a magnitude do campo magnético no eixo z aumentou (marcado com “1” na imagem acima); a segunda foi quando a magnitude diminuiu novamente (marcada com o “2” na imagem acima). É importante notar que a magnitude dos dados obtidos entre esses pontos fica aproximadamente em torno do mesmo valor.

Tendo tudo isto em mente, é possível concluir que as alterações assinaladas como 1 e 2 correspondem aos momentos em que estacionei o carro (1) e voltei a movê-lo (2). Além disso, as medidas feitas entre eles significam o tempo que o carro ficou estacionado. Esse comportamento nas medições se repetiu novamente no ponto marcado como 3.

O resultado do experimento implica que, com o MMC5883MA, a presença de um veículo pode ser detectada através das mudanças nas medições do campo magnético, que serão mais consideráveis ​​em um dos eixos, neste caso, o eixo z. Resumindo, quando há um carro estacionado, a medição do campo magnético será maior do que quando ele está sozinho. De acordo com a diferença entre estes valores, é possível definir um limite para tomar uma decisão sobre a presença do veículo.

O próximo objetivo a alcançar é realizar experimentos semelhantes com os demais sensores. Ao final, os resultados devem ser comparados para descobrir qual dos sensores é o mais adequado para construir o protótipo final do projeto.

Se quiser saber como foram os resultados dos outros experimentos, fique de olho nos próximos posts.