voici le type de programme que j'ai testé simple pourtant :
const int uvPin = 34;
void setup() {
Serial.begin(115200);
// Initialiser la broche analogique pour lire les valeurs
analogReadResolution(12);
}
void loop() {
// Lire la valeur analogique du capteur UV
int uvAnalogValue = analogRead(uvPin);
// Convertir la valeur analogique en tension (esp32 est en 3.3V)
float voltage = uvAnalogValue * (3.3 / 4095.0);
// Convertir la tension en intensité de rayonnement UV (mW/cm^2)
// Selon la datasheet, 1V correspond à 307mW/m^2
float uvIntensity = voltage * 307.0; // en mW/m^2
// Convertir l'intensité de rayonnement UV en Indice UV
// Conversion simplifiée, peut nécessiter des ajustements selon le capteur exact
float uvIndex = uvIntensity / 25.0; // Environ 1 UV Index pour chaque 25 mW/m^2
// Afficher les valeurs
Serial.print("Valeur analogique: ");
Serial.print(uvAnalogValue);
Serial.print(" | Tension: ");
Serial.print(voltage, 2);
Serial.print(" V | Intensité UV: ");
Serial.print(uvIntensity, 2);
Serial.print(" mW/m^2 | Indice UV: ");
Serial.println(uvIndex, 2);
// Attendre 1 seconde avant de refaire une lecture
delay(1000);
}
Je fais peut être une erreur basique mais je le trouve pas.
Le branchement est assez simple 3.3V ground et pin 34
Comme tu as des println dans ton programme, si tu pouvais donner ce qui s'affiche sur le moniteur série, cela serait un plus.
et nous dire combien tu mesure au VoltMètre, je crois que tu avais 56mV dans le noir, mais tu n'avais pas donné une valeur exposé à la lumière du jour?
Je n'ai pas vu dans le setup, la fonction pinmode pour fixer ta broche en input?
Merci pour vos premiers retours et comme souvent vos questions m'ont fait creuser des choses.
Apperement j'ai des broches compatibles analogiques de 2 types (je découvre):
"Sur l’ESP32, les pins 36, 39, 34 et 35 peuvent être utilisés comme entrée analogique"
et d'autres
"Deux broches peuvent servir de sortie analogique: GPIO 25 et GPIO 26."
Donc j'ai fait un essai sur la 25 et là j'ai une mesure :
Les valeurs sont trés trés faibles, pas de réel différence même quand je masque le capteur, il faut dire qu'aujourd'hui il n'y a pas vraiment d'UV!!!!.
La "logique" voudrait que tu utilises une entrée analogique, plutôt qu'une broche qui une sortie analogique, bien que cette même broche puisse aussi faire entrée analogique.
Tu ne définis toujours pas le mode de la broche que tu utilises, c'est pourtant une bonne habitude.
Ah voila pourquoi ça fonctionnait sur mon ESP32 de test sans wifi par contre celui de ma station meteo (wifi actif) ça ne marche plus, dommage, je me suis un peu emballé.
Donc je repars à 0,
Je ne peux pas faire de test ce week end mais je partirai bien sur cette version et je prends en compte la remarque de
Par contre je suis toujours à la recherche de la broche compatible j'ai regardé l'article proposé par fdufnews mais je suis un peu perdu :
Oui. Assure-toi quand même que celle que tu choisis n'est pas utilisée sur la carte. Certaines cartes qui peuvent fonctionner sur batterie utilisent une entrée analogique pour mesurer l'état de la batterie
Tu as essayé avec un potentiomètre sur les entrées analogiques à la place d'un senseur.
Tu pourrais aussi faire afficher la valeur brute après analogRead() avant d'afficher la valeur convertie.
Je peux essayer de m'en procurer un si tu penses que ça peut débloquer la situation et mieux comprendre.
Ce qui est étrange c'est que ce genre de mesure semble simple en lisant des posts et pourtant je bloque avec un programme simple.
En l'état, tu es incapable de dire si le problème vient du capteur ou de l'ESP32.
En replaçant le capteur par un potentiomètre tu pourras lever le doute. Le potentiomètre te permet d'appliquer une tension variable à l'entrée de ton circuit et de confirmer que la conversion se passe bien (ou pas).
N'importe quel potentiomètre, même un truc de récup d'un appareil qui par à la poubelle, peut faire l'affaire.
C'est juste pour faire un essai quelques minutes.