Sistema de olfato artificial com Arduino + NodeMCU

Um Sistema olfativo artificial tem uma matriz de sensores que sofrem mudança de resistência quando algum composto volátil é detectado. A informação, traduzida pelos sensores como mudanças de resistência, é adquirida para depois ser processada e, então, a amostra é classificado. O processo de funcionamento do sistema olfativo é mostrado abaixo. Uma aplicação do sistema para reconhecimento de vinhos pode ser vista aqui.

eos2

Neste post, é apresentado um sistema de aquisição de dados para sistemas de olfato artificial usando o Arduino Uno para capturar sinais de um conjunto de seis sensores de gás que compõem a matriz de sensoreamento (mais detalhes sobre sensores de gás aqui), bem como a conexão pela porta serial com o NodeMcu ESP 8266 para publicação da informação coletada dos sensores na nuvem via MQTT.

img_20161201_230055

Matriz de sensoreamento construída com sensores MQ-3, MQ-4 e MQ-6 (dois de cada)

Funcionamento

Cada um dos seis sensores de gás são conectados as portas analógicas do Arduino Uno. O Arduino foi programado para realizar o processo de coleta dos voltagens em três etapas como mostradas na figura abaixo.

diagram-page-1-1

1. Fase de concentração. Antes do início desta fase, a amostra é colocada na câmara de concentração. Ao iniciar o processo, que demora três minutos, a amostra fica na câmara fechada pelas válvulas solenóides controladas pelo Arduino. O objetivo da fase é conseguir que sejam liberados os voláteis que serão levados ate a câmara de sensoriamento na seguinte etapa 2.

2. Fase de medida. No início desta etapa o Arduino envia o valor lógico para as portas configuradas como saídas digitais encargadas de ativar os relés que governam as válvulas solenóides e a bomba de ar. Neste caso são ligadas a bomba de ar e abertas as válvulas solenoides que controlam o fluxo de voláteis na câmara de concentração e na câmara de medições. Simultaneamente, o processo de envio dos dados coletados dos seis sensores é feito pela porta serial comunicando o Arduino com o NodeMcu do qual são aproveitadas as vantagems e funcionalidades para publicar informação via MQTT. O tempo estimado nesta etapa é de dois minutos.

3. Fase de Limpeza. Precisa-se  limpar as duas câmaras (concentração e medição) para o início de um novo ciclo de medição. Para isso, a bomba injeta ar limpo nas câmaras tendo as válvulas abertas com o objetivo de ter fluxo dos gases para fora das mesmas. O tempo nesta etapa é de dois minutos.

Finalmente, o NodeMCU envia os dados recebidos pela porta serial ao broker MQTT que, por sua vez, entrega esta informação às aplicações inscritas no tópico que realizarão as tarefas de processamento e classificação ou regressão. O esquema abaixo ilustra a ligação dos principais componentes do sistema olfativo.

blank-diagram-page-1-4
Diagrama esquemático da conexão Arduino-Node Mcu

Captura de tela do aplicativo celular com os dados enviados por meio do protocolo MQTT para o aplicativo Android MQTT Dashboard para observação.

screenshot_2016-12-01-23-40-01 screenshot_2016-12-01-23-39-28

Códigos:

Os códigos para execução no Arduino e no NodeMcu estão disponibilizados a seguir.

Código usado no Node-MCU:

Código usado no Arduino:

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s