Concept
Cette platine a été pensée pour faire de l'expérimentation avec un Arduino promini 3,3V 8 MHz et des modules externes et a été optimisée pour une consommation la plus faible possible.
Le promini a été choisi en raison de son faible coût et de sa consommation extrêmement faible lorsqu'on supprime les LED et le régulateur 3,3 V intégrés.
La relativement faible capacité de ce processeur est cependant suffisante pour bon nombre de projets.
Caractéristiques :
- Dimensions 65 x 90 mm
- Module Arduino promini 3,3 V / 8 MHz
- Module RFM95W avec connecteur d'antenne
- Horloge DS3231
- Support pile CR2302 de sauvegarde de l'horloge
- Support de batterie 18650
- Circuit de charge solaire ou USB CN3163
- Mesure du courant et tension de charge INA219
- Régulateur 3,3 V
- Sortie VCC commutée par MOSFET pour capteurs ou modules externes
- Borniers à vis pour I2C, Onewire, panneau solaire, interrupteur M/A, VCC_SW, et toutes les pins de l'Arduino + port USB C.
- Configurable par ponts de soudure. (JP)
- Points de tests des tensions. (TP)
- Optimisée très faible consommation.
![]() |
![]() |
Description
L'alimentation de la platine s'effectue à l'aide d'un accu Li-Ion 16850 implanté sur le circuit imprimé et qui peut être rechargé à l'aide d'un panneau solaire ou d'un port USB via un régulateur de charge CN3163. Le courant maximum de charge a été limité à 1 A.
Un capteur de tension et courant optionnel INA219 permet de mesurer le courant de charge et la tension d'entrée et de la batterie.
Si le INA219 et/ou CN3163 ne sont pas utilisés, des diviseurs de tension optionnels à résistances permettent de mesurer une tension externe et celle de la batterie.
Un bornier à vis permet d'insérer un interrupteur M/A ou de mesurer le courant consommé en intercalant un ampèremètre.
Il y a possibilité d'installer un régulateur de tension 3,3 V RT9080-33 si le besoin s'en fait sentir. Un pont à souder permet de choisir avec ou sans régulateur.
Une horloge en temps réel DS3231 sauvegardée par une pile CR2032 peut être installée et peut servir à réveiller le processeur mis en veille profonde à des heures programmées ou des intervalles réguliers par une interruption et/ou donner l'heure.
Un module LoRa RFM95W peut également être installé afin de rendre cette platine communicante en modulation LoRa.
Enfin un transistor MOSFET optionnel permet de couper la sortie VCC à l'aide de la pin de commande D5 de l'Arduino pour alimenter certains modules externes. Lui aussi peut être shunté par un pont la pin de commande peut alors servir à alimenter directement un module qui ne DOIT pas consommer plus de 20 mA.
Un pont à souder permet de choisir l'une ou l'autre option.
Un connecteur pour le port i2c a été ajouté ainsi qu'un connecteur qui permet de relier 1 ou 2 capteurs OneWire ou un autre type de capteur utilisant 2 pins de l'Arduino (HX711 par exemple)
Le capteur OneWire peut être alimenté par la sortie D6 de l'Arduino afin d'économiser l'énergie lors du mode veille.
Toutes les pins de l'Arduino sont également disponibles sur des borniers à vis afin de faire des mesures ou expérimentations.
Utilisation des pins de l'Arduino pro-mini
| A0 | DS3231 power supply | ||
| A1 | INA219 power supply | ||
| A2 | PCINT11 | DS3231 INT/SQW (jumper JP6) | |
| A3 | CN3163 DONE | ||
| A4 | SDA | ||
| A5 | SCL | ||
| A6 | Ana only | Input voltage measure | |
| A7 | Ana only | Battery voltage measure | |
| D0 | PD0 | RX | |
| D1 | PD1 | TX | |
| D2 | PD2 | INT0 | LoRa DIO0 |
| D3 | PD3 | INT1 | LoRa DIO1 (jumper JP7) |
| D4 | PD4 | LoRa RESET | |
| D5 | PD5 | VCC switch for the MOSFET or direct supply (jumper JP2) | |
| D6 | PD6 | OTHER sensors DATA1 (Onewire or another sensor) | |
| D7 | PD7 | CN3163 CHARGE | |
| D8 | PB0 | OTHER sensors PWR | |
| D9 | PB1 | OTHER sensors DATA2 (Onewire or another sensor) | |
| D10 | LoRa CS | ||
| D11 | LoRa MOSI | ||
| D12 | LoRa MISO | ||
| D13 | LoRa SCK |
Consommations
| Modules utilisés | Running | Sleep | Deep sleep |
| Arduino seul | 4 mA | 4.6 µA | 0.1 µA |
| Arduino + DS3231 + BME280 | 4.5 mA | 4.6 µA | 0.3 µA |
| Arduino + DS3231 + BME280 + INA219 | 4 mA | 0.66 mA | 5.9 µA |
| Arduino + DS3231 + BME280 + INA219 + DS18B20 (via D9) | 4 mA | 10 µA | 5.3 µA |
| Arduino + DS3231 + BME280 + INA219 + DS18B20 + RFM95W | 6 / 105 mA | 2 mA | 7.6 µA |
| Arduino + DS3231 + BME280 + INA219 (switched) + DS18B20 + RFM95W | 6 / 100 mA | 2.5 µA |
En veille, le capteur INA219 consomme à lui seul plus de 5 µA, alors que le BME280 consomme 0,1 µA.
Son alimentation a donc été coupée lors de la veille à l'aide de la pin A1, tout comme celle du DS18B20.
Avec tous les modules équipés, la carte ne consomme que 2.5 µA en veille!
Composants
| Arduino promini 3,3V 8 MHz | 1 | Platine micro-contrôleur version avec les broches A6 et A7 | |
| RT9080-33GJ5 | 1 | Régulateur de tension 3,3V | |
| DS3231 | 1 | horloge en temps réel | https://fr.aliexpress.com/item/1005006442741894.html |
| INA219BID | 1 | version SOIC mesure du courant et tension via i2c | https://fr.aliexpress.com/item/33047166203.html |
| CN3163 | 1 | régulateur de charge solaire pour batterie 18650 | https://fr.aliexpress.com/item/1005006005982053.html |
| RFM95W | 1 | Module LoRa 433 MHz | https://fr.aliexpress.com/item/1005001723778746.html |
| AO3407 | 2 | Transistor MOSFET P | https://fr.aliexpress.com/item/4000830412884.html |
| AO3400 | 1 | Transistor MOSFET N | https://fr.aliexpress.com/item/1005008067935379.html |
| SS14 | 1 | Diode Schottky 1A-40V | https://fr.aliexpress.com/item/1005006643435874.html |
| Support de batterie CR2032 | 1 | Support SMD pour batterie CR2032 | https://fr.aliexpress.com/item/1005006329002433.html |
| Support de batterie 18650 | 1 | Support SMD pour batterie 18650 | https://fr.aliexpress.com/item/1005005704957712.html |
| Connecteur HJ-SMA716 | 1 | https://fr.aliexpress.com/item/10000000835065.html | |
| Connecteur USB-C 6P | 1 | Connecteur USB-C 6 broches (6P) | https://fr.aliexpress.com/item/1005007419369264.html |
| Bornier à vis 8 plots esp. 2,5 mm | 2 | https://fr.aliexpress.com/item/1005008259103404.html | |
| Bornier à vis 4 plots esp. 2,5 mm | 3 | ″ | |
| Bornier à vis 3 plots esp. 2,5 mm | 1 | ″ | |
| Bornier à vis 2 plots esp. 2,5 mm | 4 | ″ | |
| Batterie 18650 | 1 | Batterie 18650 3500 mAh | https://fr.aliexpress.com/item/32771532107.html |
| 1 µF/10V | 4 | Condensateur SMD 1206 | |
| 0.1 µF/10V | 7 | Condensateur SMD 1206 | |
| 0.1 Ω/1 W | 1 | Résistance SMD 2512 | |
| 1 kΩ | 1 | Résistance SMD 1206 | |
| 4.7 kΩ | 3 | Résistance SMD 1206 | |
| 5.1 kΩ | 2 | Résistance SMD 1206 | |
| 10 kΩ | 2 | Résistance SMD 1206 | |
| 18 kΩ | 1 | Résistance SMD 1206 | |
| 33 kΩ | 1 | Résistance SMD 1206 | |
| 100 kΩ | 3 | Résistance SMD 1206 | |
| 1 MΩ | 1 | Résistance SMD 1206 |
Je n'ai aucun intérêt commercial avec les vendeurs proposés. Vu la volatilité de ces vendeurs, les liens ne sont peut-être plus valables.
Les composants achetés séparément sont malheureusement plus chers que les platines complètes achetées en Chine!
Pour ma part, j'ai donc démonté certains composants de ces platines (DS3231, INA219, résistance 0.1 Ω, CN3163)
Réalisation
La platine est à câbler suivant ses besoins.
A minima, il faut :
- Arduino promini débarrassé de son régulateur 3,3V et des LED afin d'obtenir une consommation très faible (0,1 µA)
- support de batterie 18650
- batterie 18650
- Connecteur CN2 ou cavalier
- JP1 ponté (pas de régulateur 3,3V)
Monter l'Arduino promini sur des broches pour plus de commodités !
On rajoutera les capteurs ou modules à convenance, ainsi que les composants concernés :
Capteur i2c (BME280 par exemple)
- CN9, R17, R18, C12
Capteur Onewire (DS18B20 par exemple)
CN8, R16, C3
Chargeur solaire CN3163
CN1,U1, Q1, D1, C1, C4, R3, R6, R7
Charge par USB
Connecteur USB1
Capteur INA219
U3, C9 (R13, R14)
DS3231
- U6, support BAT2, C11
- JP6 si on veut gérer l'interruption INT pour réveiller le processeur.
Module LoRa
- U5, RF1, C10
- JP5 si on veut utiliser le protocole LoRawan
Régulateur 3,3V
- U2 RT9080-33GJ5, C5, C7 (JP1 absent)
Commutation pour VCC externe
- CN 10, Q2, Q3, R9, R11, C13
Mesure de la tension VIN (ou externe) par entrée A6
- CN1, R4, R5, C2
Mesure de la tension BATTERIE par entrée A7
- R8, R12, C8
Si on n'utilise pas le chargeur CN3163, il y a possibilité d'utiliser l'entrée SOLAR sur CN1 pour mesurer une tension externe, comme une batterie.
Il faut alors ponté JP7.
Ne JAMAIS dépasser une tension de 3,3V sur l'entrée A6 de l'Arduino. Dimensionner le diviseur R4, R5 en conséquence!
Notamment si vous écrivez une routine de mesure qui utilise comme référence la tension 1,1V de l'Arduino, veillez à ne pas dépasser cette tension.
Configuration des cavaliers
| JP1 | VCC 3.3V regulator | JP1 ON (NO regulator) | JP1 OFF (with regulator) |
| JP2 | VCC_SW switch selector | JP2 ON (D5 output) | JP2 OFF (via MOSFET) |
| JP3 | A0 address of INA219 | ||
| JP4 | A1 address of INA219 | ||
| JP5 | DIO1 of RFM95W | JP5 ON (D3 wired to LoRa DIO1) | JP5 OFF (no DIO1 use) |
| JP6 | INT/SQW of DS3231 | JP6 ON (D8 wired to INT/SQW) | JP6 OFF (no INT/SQW use) |
| JP7 | W/O CN3163 | JP7 ON (No USB connector and needed components) | JP7 OFF (USB input used + CN3163) |
Logiciel
Mon logiciel permet de tester tous les ensembles de cette réalisation et n'est qu'un exemple à adapter au besoin de chacun.
Il est disponible en téléchargement sur mon Github.
Il permet de :
- mesurer la température d'un capteur DS18B20
- mesurer la température, humidité, pression d'un capteur BME280
- mesurer le courant de charge et la tension d'entrée et de la batterie avec l'INA219
- donner l'heure à l'aide d'une RTC DS3231 ou de réveiller tout le montage à l'aide d'une interruption programmable
- calculer la tension d'alimentation de l'Arduino à l'aide d'une routine interne.
- transmettre des informations via LoRa en APRS
- commuter la tension de la batterie à l'aide d'un MOSFET de puissance pour alimenter un montage/capteur externe
Dans le logiciel, il faut commenter ou décommenter les lignes suivantes pour utiliser les différentes parties du montage :
// LoRa parametersconst long TXFREQUENCY = 433775000; // Tx frequency in Hzconst int FREQ_ERR = -15000; // Freq error in Hz. Start with 0, and measure real frequency and correct this value.const byte TXPOWER = 20; // in dBm, output power on the SX1278 module, max 20 dBmconst int TXPERIOD = 600; // in seconds, interval between 2 transmissions
// define the sensors, uncomment//#define SHT31_ENABLED // uncomment if we want a SHT31 sensor#define BME280_ENABLED // uncomment if we want a BME280 sensor#define INA219_ENABLED#define DS3231_ENABLED#define ONEWIRE_ENABLED#define LORA_ENABLED


