Expansão de portas analógicas com NodeMCU e Arduino 5

O NodeMCU é uma placa de desenvolvimento muito atrativa e com ótimo custo/benefício, pois além de compacta possui conetividade wifi, I/Os e é programável pela Arduino IDE. Mas como toda placa de desenvolvimento, ela possui limitações, sendo a maior delas a dificuldade de expansão de portas analógicas, já que ela possui apenas um pino para essa função.

NodeMCU e Arduino Nano

O projeto deste post tem como objetivo justamente contornar esta limitação, utilizando para isso um Arduino para ler entradas analógicas e transmitir as leituras ao NodeMCU serialmente, ficando a cargo dele o envio dos dados à nuvem. Pode-se utilizar qualquer Arduino, porém pra este projeto escolheu-se o Arduino Nano V3.0 devido ao seu reduzido tamanho físico e por possuir 8 entradas analógicas.

Material necessário

Para fazer este projeto de expansão de portas analógicas você precisará de:

Overview do projeto de expansão de portas analógicas

O funcionamento do projeto consiste em utilizar o Arduino Nano V3.0 como uma placa de aquisição de sinais analógicos (de até 8 entradas) e, via serial, transmitir as informações lidas ao NodeMCU. Este, por sua vez, irá enviar por MQTT as leituras obtidas, de forma a permitir monitoramento remoto das entradas analógicas lidas. Observe o diagrama em blocos da figura 1.

 

Expansão de portas analógicas
Figura 1 – diagrama em blocos do projeto

Observações sobre debug e gravação

Como o Arduino Nano e NodeMCU irão se comunicar pela UART, o debug via serial monitor é impossibilitado. Uma forma de contornar isso é utilizando seriais por software. Entretanto, por reduzirem o desempenho dos dispositivos (utilizam considerável parcela de processamento), não serão abordadas nesse artigo.

Quanto à gravação, o Arduino Nano e o NodeMCU devem ser gravados em separado e fora do circuito. Isto é necessário pois a mesma serial utilizada para gravação é a que é usada para comunicação serial entre eles.

Parte 1: programação do Arduino Nano

A programação do Arduino Nano é relativamente simples: tudo que ele deve fazer é, periodicamente, ler os 8 canais de ADC, colocar as leituras numa string e enviá-la ao NodeMCU pela serial. Neste projeto de expansão de portas analógicas, a periodicidade destas ações será de 1 segundo, porém você pode mudar isso para o tempo que desejar.

Sendo assim, o código-fonte do programa que vai ser carregado no Arduino Nano é o seguinte:

Parte 2: programação do NodeMCU

Nesta parte, muito do que foi abordado no artigo Controle e Monitoramento IoT com NodeMCU e MQTT será aproveitado. Portanto, é fortemente recomendada a leitura deste artigo.

Aqui, a tarefa a ser realizada também é relativamente simples: após conexão ao WiFi e ao broker MQTT, o NodeMCU vai publicar no broker (no tópico definido no código-fonte) a string de leituras analógicas recebida. Pelo fato de a recepção de strings ocorrer a cada segundo (conforme explicado no tópico anterior), as informações serão publicadas no broker a cada segundo também.

O código-fonte do programa a ser gravado no NodeMCU está abaixo:

Parte 3: circuito esquemático

O circuito esquemático do projeto pode ser visto abaixo. É muito importante se atentar ao seguinte:

  1. O Arduino Nano V3.0 trabalha originalmente com alimentação 5V em seu microcontrolador (ATMega 328P), enquanto o ESP8266 12-E do NodeMCU trabalha com 3,3V.
    Desta forma, conforme mostrado no circuito esquemático, é necessário que no TX do Arduino Nano para o NodeMCU haja um divisor de tensão, de forma que a tensão no pino de RX do NodeMCU não ultrapasse 3,3V. Se isto não for feito, há grandes chances de o NodeMCU ser danificado.
  2. No lugar dos potenciômetros, você pode colocar quaisquer sensores ou componentes analógicos que trabalhem com tensão 5V. Os potenciômetros estão no circuito esquemático somente para ilustrar o uso das entradas analógicas do Arduino Nano V3.0.

Circuito Nodemcu e Arduino Nano

 

Projeto em ação!

Ao se conectar com um cliente de MQTT qualquer (exemplo: MQTTLens) e dar subscribe no tópico que o NodeMCU está publicando as informações, você verá uma string com as leituras:

Saída MQTT

Portanto, o NodeMCU agora é capaz de publicar leituras de até 8 canais analógicos.

Gostou deste post sobre expansão de portas analógicas com NodeMCU? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

5 Comentários

  1. Olá.
    Estou tentando fazer esta comunicação via I2C bus. Já tentaste?
    Estou com um pouco de dificuldade, pois acho pouco material conclusivo sobre o assunto!

    Abraço e gosto muito da sua loja, sou comprador assíduo!

    1. Felipe, boa tarde.

      Obrigado pela preferência pela loja! Ficamos felizes com seu feedback.
      Infelizmente, não tentei ainda ler entradas analógicas com I²C. Vou ficar devendo essa pra você, desculpe.

      Atenciosamente,
      Pedro Bertoleti

  2. Boa tarde, sou cliente de vcs e tenho um arduino e queria saber se existe dentro do arduino o protect dos pics, ou seja para evitar a leitura..obrigado, Carlos

  3. Boa Noite estou tentando enviar do arduino mega para o nodemcu, porem ja realizo algumas leituras pelo node mcu como temperatura umidade e vazao. e quero enviar 3 leituras de corrente mais dados de um inversor solar para ele. estou colocando seu codigo no lado do arduino mega, mas nao consigo ler do lado do nodemcu na serial dele. coloquei a biblioteca soft serial e utilizo os pinos d7 e d8 para isso conforme biblioteca. teria alguma maneira de enviar esses valores de uma placa para outra? são 4 valores double

    1. Juliano, boa tarde.

      Por gentileza, coloque aqui seu código (ou coloque-o em alguma ferramenta de compartilhamento de código-fonte, como o code-share, por exemplo). Dessa forma consigo entender melhor o que está ocorrendo.

      Atenciosamente,
      Pedro Bertoleti