Projetos

Monitorando o pH de líquidos com ESP32 e Sensor PH-4502c

Eletrogate 8 de agosto de 2024

Introdução

A medição do pH é uma prática essencial em diversas áreas, desde a agricultura e hidroponia até a aquicultura e tratamentos de água. O pH de uma solução indica sua acidez ou alcalinidade, e manter o pH dentro de faixas específicas é crucial para processos biológicos e químicos. Medidores de pH são ferramentas vitais que permitem monitorar e ajustar esses níveis, garantindo a eficiência e segurança de várias aplicações.

Neste tutorial, vamos abordar a construção de um medidor de pH utilizando um microcontrolador ESP32, um módulo ADS1115 e um sensor de pH modelo PH-4502c. Este projeto é particularmente útil para sistemas hidropônicos, onde o controle preciso do pH da solução nutritiva é fundamental para o crescimento saudável das plantas.


O que é um Conversor Analógico-Digital (ADC ou ADS)?

Um conversor analógico-digital (ADC) é um dispositivo que converte sinais analógicos (contínuos) em sinais digitais (discretos). Em nosso projeto, utilizaremos o módulo ADS1115, que é um ADC de 16 bits com quatro canais de entrada analógica. Ele permite a leitura precisa de sinais analógicos, como os fornecidos pelo sensor PH-4502c, convertendo-os para valores digitais que podem ser processados pelo ESP32. Conheça mais sobre o que é uma ADC nesse artigo do nosso blog: Conversores ADC o que são, tipos e princípios de funcionamento


O que é pH?

O potencial de hidrogênio (pH) é uma medida que indica a acidez ou basicidade de uma solução aquosa. A escala de pH varia de 0 a 14, onde 7 é neutro, valores menores que 7 indicam acidez e valores maiores que 7 indicam basicidade, ou seja, uma solução alcalina. Várias coisas no nosso cotidiano tem valores diversos de pH, os quais podemos visualizar alguns exemplos na figura a baixo.

Fonte: https://emsinapse.wordpress.com/2018/03/18/o-que-e-ph/


Hidroponia: Cultivo de Plantas sem Solo

A hidroponia é uma técnica de cultivo que tem se tornado cada vez mais popular devido à sua eficiência e economia de recursos. Com esse método de cultivo de plantas que dispensa o uso de solo, as plantas são cultivadas em uma solução nutritiva rica em minerais essenciais dissolvidos em água.

Este sistema permite um controle preciso sobre o ambiente de crescimento das plantas, proporcionando várias vantagens em relação ao cultivo tradicional em solo. Alguns benefícios da Hidroponia são: O uso eficiente da água, cultivo em qualquer local, redução de pragas e doenças e controle preciso de nutrientes das plantas.

Um grande desafio da hidroponia é a necessidade de monitoramento contínuo e ajustes regulares para manter um ambiente de crescimento ideal. Para garantir que as plantas cresçam saudáveis, é essencial monitorar constantemente o pH da solução nutritiva: o pH ideal para a maioria das plantas hidropônicas está entre 5.5 e 6.5.

A hidroponia é uma técnica avançada de cultivo que oferece inúmeras vantagens em termos de eficiência de recursos, controle ambiental e produtividade. Com o conhecimento adequado e a implementação de sistemas bem projetados, a hidroponia pode ser uma solução sustentável e inovadora para a produção de alimentos, especialmente em um mundo com recursos naturais cada vez mais limitados. Neste tutorial, vamos criar um projeto para monitorar o pH, que pode ser utilizado no monitoramento da solução nutritiva em um sistema hidropônico. Para saber mais sobre hidroponia acesse esse link.

Plantação de alface hidropônica

Plantação de alface hidropônica, Fonte: gruposarlo.com.br/2023/10/06/tipos-sistemas-hidroponicos


Materiais Necessários


Construindo o medidor de pH

Nós vamos construir um medidor de pH capaz de fazer a leitura em substâncias aquosas e mostrar no monitor serial os valores de pH. Para uma melhor leitura vamos utilizar o conversor analógico digital ADS1115 tendo em vista que o ADC do ESP32 não é muito confiável.

Sensor de pH-4502c

Sensor de pH-4502c

O sensor PH-4502C é um dispositivo amplamente utilizado para medir o pH de soluções aquosas. Este sensor é composto por uma haste onde está a sonda de vidro de alta precisão e um módulo amplificador que converte o sinal analógico gerado pela sonda.

Características do Sensor

  • Haste com sonda de Vidro:
    • A sonda de vidro do sensor é projetada para medir a concentração de íons de hidrogênio (H+) em soluções aquosas, proporcionando leituras precisas do pH.
    • A sonda é submersível, permitindo medições diretas no líquido alvo.
  • Módulo Amplificador:
    • O módulo amplificador do PH-4502C amplifica o sinal analógico gerado pela sonda, tornando-o adequado para leitura por um ADC (Conversor Analógico-Digital).
    • O módulo possui um potenciômetro ajustável para calibração do sensor, garantindo leituras precisas.
  • Faixa de Medição:
    • O sensor pode medir o pH na faixa de 0 a 14, cobrindo toda a escala de pH.
  • Saída Analógica:
    • O módulo fornece uma saída analógica (Po) que varia com o pH da solução.

 

Módulo ADC ADS1115

O módulo ADS1115 é um conversor analógico-digital (ADC) de alta precisão que pode ser utilizado para converter sinais analógicos em dados digitais que podem ser processados por um microcontrolador, como o ESP32.

Características do Módulo ADS1115

  • Resolução de 16 Bits permitindo medições muito precisas e detalhadas de sinais analógicos.
  • Quatro Canais de Entrada (A0 a A3), permitindo a conexão de até quatro sensores diferentes. Estes canais podem ser configurados como entradas diferenciais.
  • Interface I2C para a comunicação com microcontroladores. A interface I2C usa apenas dois pinos (SDA e SCL), economizando pinos GPIO do microcontrolador.

Esquemático

 


Instalação das Bibliotecas e programação

Para esse projeto iremos usar o VS Code. Se você não conhece essa IDE, recomendo fortemente que leia esse artigo sobre a instalação e configuração do VS Code com PlatformIO. Vamos mudar apenas a placa alvo para qual iremos escrever o código, ao invés de ser a placa “Arduino Uno” vamos escolher a placa “Espressif ESP32 Dev Module”.

Adicione a biblioteca ao projeto usando o arquivo de configuração do projeto platformio.ini, inserindo a opção lib_deps e colocando como parâmetro o link da biblioteca Adafruit ADS 1X15 ou a tag “adafruit/Adafruit ADS1X15@^2.5.0”.

Antes de irmos para o código principal, temos que definir um offset e calibrar o sensor de pH.

Definir um offset

No contexto de calibração de sensores, definir um offset significa ajustar a leitura do sensor para compensar qualquer desvio ou erro sistemático presente na medição. Este ajuste garante que as leituras do sensor sejam precisas e reflitam corretamente a condição real que está sendo medida.

Para definir um offset você precisará de um fio para curto-circuitar a parte externa e o centro do conector da sonda. Isso causa uma tensão de 2,5 volts no pino de saída analógica Po. Primeiro conecte a parte externa do conector BNC ao centro do conector da sonda BNC. Após isso, conecte o pino V+ ao VCC 5V do ESP32 e conecte o pino GND ao pino GND do ESP32, por fim, conecte o pino de saída analógica Po ao pino 35 do ESP32.

Conexão para calibração – Fonte: www.electroniclinic.com/ph-meter-arduino-ph-meter-calibration-diymore-ph-sensor-arduino-code

Conecte o ESP32 no computador para carregar o código de cabibração do offset do sensor de pH.

Código para offset

const int potPin=35;
float ph;
float Value=0;
 
void setup() {
  Serial.begin(115200);
  pinMode(potPin,INPUT);
  delay(1000);
}
 void loop(){
 
    Value= analogRead(potPin);
    Serial.print(Value);
    Serial.print(" | ");
    float voltage=Value*(3.3/4095.0);
    ph=(3.3*voltage);
    Serial.println(ph);
    delay(500);
 }

Caso o valor apresentado no monitor serial esteja acima ou abaixo de 2.5, utilize o trimpot de “calibração de leitura” – o que está perto do conector da sonda BNC – para chegar o mais próximo possível deste valor.

Calibração

Para calibração das medições você pode usar as soluções, conhecidas como tampões, que são soluções aquosas com níveis pH conhecidos. Geralmente essas soluções vêm com o kit do sensor de pH. Para utilizar esse método você pode seguir esse tutorial.

Outro método menos preciso é utilizar uma solução com pH 7 conhecido como parâmetro. Com essa solução vamos medir o pH dela com o código principal logo abaixo. Esse código mostra no monitor serial o valor de pH, acompanhe esse valor e vá realizando pequenos ajustes na variável calibration_value (linha 21) e reprogramando o ESP32 com esse novo valor até que o valor de pH mostrado seja igual a 7.

Código principal

/**
 * @file main.cpp
 * @author Saulo Aislan (aislansaulo@gmail.com)
 * @brief Firmware para um monitor de pH com ESP32, módulo ADS1115
 * 			e sensor pH-4502C.
 * @version 0.1
 * @date 2024-07-12
 *
 * @copyright Copyright (c) 2024
 *
 */
#include <Arduino.h>
#include <SPI.h>
#include <Adafruit_ADS1X15.h>

Adafruit_ADS1115 ads;

int buffer_arr[10], temp;
unsigned long int avgval;
float ph_act;
float calibration_value = 20.5;

void setup(void)
{
    Serial.begin(115200);
    Serial.println("::::: Monitor de pH ::::");

    // A faixa de entrada ADC (ou ganho) pode ser alterada através das seguintes
    // funçoes, mas tome cuidado para nunca exceder VDD +0,3V.
    // Definir esses valores incorretamente pode destruir seu ADC!
    //                                                                ADS1015  ADS1115
    //                                                                -------  -------
    // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
    // Seta o ganho do ADC
    ads.setGain(GAIN_ONE); // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
    // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
    // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
    // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
    // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV

    if(!ads.begin())
    {
        Serial.println("Falha ao iniciar o ADS.");
        while(1)
            ;
    }
}

void loop(void)
{
    avgval		  = 0;
    float voltage = 0.0;
    // Ler o ADC do canal especificado
    int16_t adc0 = ads.readADC_SingleEnded(0);
    // Calcular a tensão
    float volts0 = ads.computeVolts(adc0);

    // Armazenar os valores de tensão em um buffer
    for(int i = 0; i < 10; i++)
    {
        buffer_arr[i] = volts0;
        delay(30);
    }

    // Ordenar os valores do buffer
    for(int i = 0; i < 9; i++)
    {
        for(int j = i + 1; j < 10; j++)
        {
            if(buffer_arr[i] > buffer_arr[j])
            {
                temp		  = buffer_arr[i];
                buffer_arr[i] = buffer_arr[j];
                buffer_arr[j] = temp;
            }
        }
    }

    // Calcular a média dos valores do buffer
    for(int i = 2; i < 8; i++)
        avgval += buffer_arr[i];
    float volt = (float)avgval * 3.3 / 4096 / 6;

    Serial.print("Tensão: ");
    Serial.println(volts0);
    // Calcular o valor de pH com base na tensão lida e no valor de calibração
    ph_act = -5.70 * volts0 + calibration_value;

    Serial.print("Valor de pH: ");
    Serial.println(ph_act);
    delay(1000);
}

 


Resultado e Demonstração

O resultado do projeto você pode conferir no vídeo abaixo. No vídeo é mostrado o monitor serial e a sonda de medição, no decorrer do vídeo podemos visualizar a medição de diferentes líquidos e a mudança no valor de pH. Na tela, temos 4 soluções de medição (água, água com sabão, leite e vinagre (ácido acético)) e uma solução (água destilada) para a limpeza da sonda. Uma observação sobre o projeto e a sua utilização: se utilizarmos o método de medição apresentado no vídeo devemos ter muito cuidado com a contaminação cruzada! O que quero dizer com isso é não levar a sonda de uma solução para outra ou de uma amostra líquida para uma solução tampão sem primeiro enxaguá-la completamente com água destilada e secar a sonda. Se não fizer isso você irá alterar o pH da solução tampão e isso irá inutilizá-la.


Conclusão

Com este projeto é possível realizar o monitoramento de pH de diversas soluções, além de ser essencial para quem está iniciando no cultivo por hidroponia. Existem várias outras aplicações para um medidor de pH de baixo consumo, baixo custo de implementação e manutenção e de implementação simples em alguns casos, qual projeto vem na sua mente? Conte-nos na caixa de comentários.

Para mais materiais como esse, continue acompanhando as postagens semanais do blog e não deixe de visitar nossa loja. Lá você encontra todos os componentes necessários para desenvolver esse e muitos outros projetos!

Que a força esteja com você!

NÃO ENTREM EM PÂNICO!

Até mais!


Sobre o Autor


Saulo Aislan

Graduando em Tecnologia em Telemática pelo IFPB – Campus de Campina Grande – PB. Tenho experiência com os microcontroladores da família Arduino, ESP8266, ESP32, STM32 e microprocessador Raspberry Pi. Tenho projetos na áreas de IoTs voltada para a indústria 4.0, agroindústria e indústria aeroespacial civil utilizando LoRa, Bluetooth, ZigBee e Wi-Fi. Atualmente estudando e desenvolvendo em FreeRTOS para sistemas em tempo real com ESP32 e LoRaWan para Smart City e compartilhando alguns projetos no blog da Eletrogate.


Eletrogate

8 de agosto de 2024

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Assine nossa newsletter e
receba  10% OFF  na sua
primeira compra!