Sonde EC DFROBOT ET ESP32

Bonjour,
Je voudrais adapter le code de l'exemple de la librairie DFRobot_ECPRO sur un ESP32 TTGO LoRa.
Il doit y avoir des ajustements sur la tension d’entrée.....?
Voici le lien vers la fiche technique de la sonde :slightly_smiling_face:

Merci d'avance pour votre aide.

/*!
  * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  * @licence     The MIT License (MIT)
  * @author      PengKaixing(kaixing.peng@dfrobot.com)
  * @version     V0.1
  * @date        2021-05-31
  * @get         from https://www.dfrobot.com
  * @url         https://github.com/dfrobot/DFRobot_ECPRO
  */
#include "DFRobot_ECPRO.h"

#define EC_PIN A1
#define TE_PIN A2

#define ADC_DIGIT 1024.0
#define REFERENCE_VOLTAGE 5.0

/**
 * 获取的电导率电压值和温度电压值
 */
float EC_voltage,TE_voltage;
float temp,conductivity;

DFRobot_ECPRO ec;
DFRobot_ECPRO_PT1000 ecpt;

void setup()
{
  Serial.begin(115200);

  /**
   * 校准 ETALONNAGE
   */
  EC_voltage = analogRead(EC_PIN) / ADC_DIGIT * REFERENCE_VOLTAGE;
  ec.setCalibration(ec.calibrate(EC_voltage));
  Serial.print("calibration value is :");
  Serial.println(ec.getCalibration());
}

void loop()
{
/**
 * 获取温度值 VALEUR TEMPERATURE
 */  
  TE_voltage = analogRead(TE_PIN)/1024.0*5;
  temp= ecpt.convVoltagetoTemperature_C(TE_voltage); 
  
/**
 * 获取电导率值 VALEUR CONDUCTIVITE
 */
  EC_voltage = analogRead(EC_PIN) / ADC_DIGIT * REFERENCE_VOLTAGE;
  conductivity = ec.getEC_us_cm(EC_voltage,temp);
  
  Serial.print("temperature:");
  Serial.print(temp);
  Serial.print("^C  EC:");
  Serial.print(conductivity);
  Serial.println("us/cm");
  delay(1000);
}

J'au jeté un coup d'œil à la librairie et j'ai l'impression qu'il n'y a rien à modifier dans celle-ci
Concernant le programme donné en exemple, je pense qu'il n'y a que les lignes ci-dessous à changer pour les faire correspondre aux paramètres de l'ESP32.

En fait, le plus simple serait des les supprimer et de lire directement la tension avec la fonction analogReadMillivolts() décrite dans l'API en faisant:
TE_voltage = analogReadMillivolts(TE_PIN) / 1000.0;
et
EC_voltage = analogReadMillivolts(EC_PIN) / 1000.0;

https://docs.espressif.com/projects/arduino-esp32/en/latest/api/adc.html

A noter quand même l'ESP32 n'est pas réputé pour la qualité de son ADC.

Bonjour fdufnews,
Merci pour ta réponse, je vais tester tes différentes solutions :slightly_smiling_face:

  • Remplacer les valeurs par 4095 et 3.
  • Utiliser analogReadMillivolt()
    Et en cas je vais récupérer les données sur un Nano et les envoyer par liaison série sur l'ESP32 LoRa.....

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.