Dans ce guide, on assemble un module IoT pour ruche : ESP32 (DFR0654) + modem LTE‑M/NB‑IoT SIM7080 (Waveshare SIM7070G compatible) + SHT85 (T°/H°) + HX711 (pesée) + OLED SSD1306 + SIM 1NCE. On couvre le câblage, l’alimentation, le firmware et l’envoi des données.
Microcontrôleur Wi‑Fi/BLE, UART pour modem, I²C pour capteurs, faible conso (Deep Sleep).
LTE‑M / NB‑IoT + GNSS (selon module), interface UART 115200 8N1, modes PSM/eDRX.
Capteur I²C très précis. Adresse par défaut 0x44.
Amplificateur ADC 24 bits pour peson. Entrées DT/SCK côté MCU.
Affichage local (128×64). Bus I²C partagé avec SHT85.
Forfait IoT. Le shield facilite le format SIM et les signaux carte.
Li‑Ion 18650 + régulateur 3.3 V et recharge solaire (optionnelle) ou step‑down.
Ces liens ont déjà l’ID affilié fourni ; ils sont insérés tels quels :
DFROBOT FireBeetle Board ESP32
Waveshare SIM7070G NB-IoT/Cat-M
Puce de convertisseur A/N 24 bits
modules d'affichage I2C
Capteur de pesage
amzn.to pointent vers Amazon et intègrent votre affiliation existante.SCL, GPIO 21 → SDASCL/ SDA, VCC 3.3 V, GNDSCL/ SDA, VCC 3.3 V, GNDSIM7080 RX, ESP32 RX (GPIO 16) → SIM7080 TXPWRKEY (GPIO 4) via transistor/NPN ou directement si supportéLe firmware suit une boucle mesurant T/H/Poids, affichant localement, puis envoyant périodiquement (MQTT ou HTTP) en LTE‑M/NB‑IoT, avant de passer en Deep Sleep.
// Pseudo-structure (Arduino)
setup():
initSerial(115200)
initI2C(SDA=21,SCL=22)
sht85.begin(0x44)
oled.begin(0x3C)
hx711.begin(DT=26,SCK=25); hx711.set_scale(K); hx711.tare()
sim7080.begin(UART2, RX=16, TX=17); powerOnSIM7080(PWRKEY=4)
attachAPN("iot.1nce.net") // exemple
syncTimeViaNTPorCell()
loop():
t = sht85.readTemperature()
h = sht85.readHumidity()
w = hx711.get_units(10)
oled.show(t,h,w)
if (cellAttach() && netReady()):
sendJSON("https://iot.quiet-bee.fr/ingest", {t,h,w}) // ou MQTT
deepSleep(minutes=5)
Adafruit_SHT31, Adafruit_SSD1306, HX711. Pour le modem : échanges AT via HardwareSerial + helpers.// Séquence AT minimale (diagnostic)
AT
ATE0
AT+CPIN?
AT+CSQ // qualité radio
AT+CGATT? // attach
AT+CGDCONT=1,"IP","iot.1nce.net"
AT+CFUN=1
AT+CGACT=1,1
// HTTP GET ping simple
AT+SHSTATE? // stack HTTP(S) (selon firmware)
// MQTT (selon firmware) ou sockets TCP pour POST/PUT
// Power save
AT+CPSMS=1,,,,"00000110","00011111" // ex. PSM (valeurs à ajuster)
// Étapes
tare() // à vide
placer masse étalon
set_scale(calculated) // diviseur trouvé
get_units(10) // moyenne
// Exemple Arduino (Adafruit_SHT31)
float t = sht.readTemperature();
float h = sht.readHumidity();
if (!isnan(t) && !isnan(h)) { /* ok */ }
// OLED SSD1306 (I²C)
display.clearDisplay();
display.setTextSize(1); display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.printf("T: %.1f°C\nH: %.1f%%\nP: %.2f kg", t, h, w);
display.display();
Partagez le bus I²C avec le SHT85 ; vérifiez les adresses (SHT85 0x44, OLED 0x3C par défaut).