Bonjour et merci pour tes explication claires et précises!
Déjà je peux virer le connecteur Dupont et refaire des essais ! 
Voici comment j'ai procédé pour la calibration + etallonnage:
J'ai chargé le code calibration suivant:
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
// Calibrating the load cell
#include "HX711.h"
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 02;
const int LOADCELL_SCK_PIN = 15;
HX711 scale;
void setup() {
Serial.begin(9600);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}
void loop() {
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
}
else {
Serial.println("HX711 not found.");
}
delay(1000);
}
//calibration factor will be the (reading)/(known weight)
J'ai attendu que la tare soit faite puis mis un objet dont je connaissais le poids. Le code me renvoi un nombre que j'ai divisé par le poids de l'objet connu. (cf commentaire en bas du code)
D'une fois que j'ai cette valeur de calibration, je l'ajoute à mon code et je le téléverse. Voici mon code principal:
//VERSION FONCTIONNELLE AU 06/05/2023
//Ajout de la fonctionnalitée Deep sleep
// Mise en commentaire du bouton
#include <DFRobot_DHT20.h>
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include "SSD1306.h"
#include "images.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include "HX711.h"
#include <soc/rtc.h>
#define SCK 5 // GPIO5 -- SX1278's SCK
#define MISO 19 // GPIO19 -- SX1278's MISnO
#define MOSI 27 // GPIO27 -- SX1278's MOSI
#define SS 18 // GPIO18 -- SX1278's CS
#define RST 14 // GPIO14 -- SX1278's RESET
#define DI0 26 // GPIO26 -- SX1278's IRQ(Interrupt Request)
#define ONE_WIRE_BUS 25
#define DOUT 02
#define CLK 15
#define BAND 8695E5 // Plutôt que 868E6 plus encombrée (868E6 bande de fréquences pour l'Europe)
#define uSc_Sc 1000000 // Facteur de conversion de micro-seconde à seconde
#define Sc_Mn 60 //Facteur de conversion de seconde à minute
#define Time_To_Sleep 15 // Définit le temps d'endormissement en minutes
const uint8_t vbatPin = 35;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
HX711 scale;
DFRobot_DHT20 dht20;
unsigned int counter = 0;
float data1E[7];
float poids;
float tempINT;
float tempEXT;
float humEXT;
SSD1306 display(0x3c, 21, 22);
String rssi = "RSSI --";
String packSize = "--";
String packet ;
float VBAT;
int bouton = 0;
int etatbouton = 0;
long temps1;
long temps2;
int memoirebouton;
int Xtime;
void setup() {
pinMode(bouton, INPUT);
pinMode(vbatPin, INPUT);
pinMode(16,OUTPUT);
digitalWrite(16, LOW);
digitalWrite(16, HIGH); // set GPIO16 low to reset OLED // while OLED is running, must set GPIO16 in high
temps1 = millis();
temps2 = millis();
memoirebouton = 1;
delay(50);
rtc_clk_cpu_freq_set(RTC_CPU_FREQ_80M); // ramène la fréquence à 80MHz bien meilleur pour le bon fonctionnement du HX711
Serial.begin(9600);
while (!Serial);
Serial.println();
Serial.println("LoRa Sender Test");
scale.begin(DOUT, CLK);
Serial.println("Demarrage en cours");
sensors.begin(); // Start up the library
SPI.begin(SCK,MISO,MOSI,SS);
LoRa.setPins(SS,RST,DI0);
if (!LoRa.begin(BAND)) {
Serial.println("Starting LoRa failed!");
while (1);
}
while(dht20.begin()){
Serial.println("Initialize sensor failed");
}
LoRa.setSpreadingFactor(10); // Facteur d'étalement 7 est la valeur par défaut. Permet de discriminer deux émissions
Serial.println("LoRa Initial OK!");
display.init();
void invertDisplay(void);
display.setFont(ArialMT_Plain_10);
//Calibration du pese-ruche
scale.set_scale(22867); //Cette valeur est obtenue par le programme calibration
// *************************** Notice de la tare: ***************************
//Pour la tare:
//- Décommenter scale.tare(); ligne 111 - 114
//- Se mettre en liaison série et relever le "Zero factor: "
//- Mettre le résultat de zero factor dans scale.set_offset(***);
//- Recommenter la ligne scale.tare();
/*
scale.tare(); // Tare
Serial.print("Tare faite ");
Serial.print("Mettre la ruche vide");
delay(5000);*/
long zero_factor = scale.read_average();
Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
Serial.println(zero_factor);
scale.set_offset(185452); //fixe le zero (la tare) a partir d'un zero_factor Nouvelle valeur
// préalablement enregistre avec scale.tare active.
delay(1500);
}
void loop() {
// Prise de la tension
VBAT = (float)(analogRead(vbatPin)) / 4095*2*3.3*1.1;
data1E[6] = VBAT;
Serial.print("Vbat = ");
Serial.print(VBAT);
Serial.println(" Volts");
data1E[0] = 1; // numéro de la ruche
//Prise de la température DS180
Serial.print("Requete en cours...");
sensors.requestTemperatures(); // Send the command to get temperatures
tempINT = sensors.getTempCByIndex(0);
data1E[1] = tempINT ;
if(tempINT != DEVICE_DISCONNECTED_C)
{
Serial.print("Temperature interieure: ");
Serial.println(tempINT);
}
else
{
Serial.println("Error: Could not read temperature data");
}
//Prise de la température + hygro DHT20
tempEXT = dht20.getTemperature();
Serial.print("temperature DHT20:");
Serial.print(tempEXT);
Serial.print("C");
data1E[2] = tempEXT;
humEXT = dht20.getHumidity()*100;
Serial.print(" humidity DHT20:");
Serial.print(humEXT);
Serial.println(" %RH");
data1E[3] = humEXT;
data1E[4] = counter;
//Pesée
poids = scale.get_units();
data1E[5] = poids ; // met la donnée dans la première ligne (ou colonne) du tableau
Serial.print("Poids= ");
Serial.print(poids, 3);
Serial.print(" kg");
Serial.println();
// send packet
LoRa.beginPacket();
LoRa.write((uint8_t*)&data1E, sizeof(data1E)); // &data signifie adresse de data stocké dans la mémoire sous forme unsigned integer
LoRa.print(counter);
LoRa.endPacket();
counter++;
esp_sleep_enable_timer_wakeup(uSc_Sc * Sc_Mn * Time_To_Sleep); // Timer d'endormissement en microsecondes
Serial.print("deepsleep:");
esp_deep_sleep_start(); // Mise en sommeil durant le temps d'endormissement défini ci-dessus
}
Je décommente les lignes de tare puis je téléverse. La tare se fait, je pose ma ruche sur la balance et je récupère la valeur "zero factor " . Cette valeur me sert à décaler ma tare. C'est un genre d'offset pour que lorsque l'esp32 se réveille, l'offset remplace la tare de la ruche et je ne recommence pas à mesurer de zero.
Du coup je remet en commentaire la tare, rentre la valeur du zero factor et téléverse.
Fin de la manipulation. A partir de ce moment, ma ruche pèse le bon poids mais à fur et à mesure des jours, le poids dégringole jusqu'à 2k.5g.
Voici l'illustration du poids sur 24h:
Je vais quand même essayer de mettre des résistances en ponts comme ton schéma afin de m'assurer que le CI soit OK.
Que veux-tu dire par la ?