Le Schéma pour commencer :

D'une simplicité déconcertante, car tout est géré par un traditionnel Arduino Nano (la version Uno peut être utilisée également, mais il faudra revoir le circuit et le boitier ). Un petit circuit inclus le capteur BMP280 et communique avec le Nano par bus I2C (Add 0x77) Ce circuit à l'avantage de pouvoir fonctionner en bus I2C ou SPI, sous une tension de 3,3 à 5 volts; il comprend tous les composants d'adaptation de tension et les résistances de tirage à VCC du bus ! Les librairies disponibles permettent de le mettre en fonction relativement facilement ...
La communication avec le µcontrôleur se fait par les deux lignes SCL/SDA de façon bi-dierctionnelle; l'alimentation est fournie par le régulateur du Nano en 5 volt via VCC et GND.
L'afficheur est un 2 lignes, 16 caractères avec rétro éclairage; pour le mettre en oeuvre, en plus de l'alimentation VCC et GND, on prélève une tension VO par le curseur d'un potentiomètre (R2 de 10K) pour ajuster le contraste... Deux commandes sont nécessaires E (validation) et RS (instruction / données) puis 4 lignes de datas parallèles, découpées en demi-octet (D4 à D7). Un transistor (2N2222 SMS) pilote le rétro éclairage via le résistance de base (R6 de 22K-SMD) et une limitation de courant (R4 de 100-SMD). La pin utilisée sur le micro est une sortie PWM pour ceux qui voudraient jouer sur la douceur des variations du rétro éclairage ...Pour le fun, j'ai également fait des essais avec un pilote d'afficheur I2C <=> // : bien que le fonctionnement soit correct en modifiant quelque peu le programme, je l'ai supprimé car il y a bien assez d'entrées/sorties sur le micro pour traiter en parallèle et ça limite le coût de la réalisation .
Le bouton vient tirer à la masse la pin D8 de l'Arduino que l'on a déclarée en 'pull-up' puisque ce fabuleux micro nous le permet (pas avare mais économe d'une résistance et des pistes sur le circuit !)
Voilà en tout et pour tout de quoi se compose le 'hard'.
Le circuit Imprimé :


Pas de difficulté majeure à la réalisation par les moyens habituels ! Le JPEG est à l'échelle 1 et tout les fichiers sont disponibles dans le Zip plus bas. Un soin sérieux est à apporter à la découpe et l'ajustement de l'époxy, de par sa forme. Une seule face sur ce PCB et un strap à ne pas oublier .... Les composants SMD se soudent côté 'cuivre' et également l'afficheur. Pour ce dernier, j'ai soudé de la barrette sécable femelle (genre support tulipe de circuits intégrés) sur l'afficheur et une rangée de picots mâle/mâle sur le circuit . Les deux vis de fixation inférieure du LCD servent au maintient du montage, grace à deux entretoises (spacer), et dont la longueur traverse l'ensemble de part en part ...

Le programme qui mouline tout ça !
Le programme est développé avec l'IDE Arduino... Les capteurs utilisés ont souvent leur 'library' disponible, ce qui évite d'avoir à réinventer le fil à couper le beurre à chaque développement... Rien de particulier là ! le sketch est abondamment commenté, ce qui permet de suivre ce que j'ai voulu faire, et à moi-même de rafraîchir ce que ma mémoire va gommer au fil du temps . Juste une particularité: j'ai du créer des caractères car les flèches montée / descente ne sont pas accessibles dans tous les codes ASCII embarqués dans tous les afficheurs du commerce ...Voici l'extrait :
BMP280 bmp;
float Tmin,Tmax,Pmin,Pmax,Tprevious,Pprevious; // Decleration des variables utilisees ...
byte progress = ' '; // Assignement du caractère fabrique .
byte Ptend; // Sens de la tendence de la pression
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Connection du LCD : RS,E, D4-D7,RW>0V,
byte up[8] = { // Fabrication caractere progression
B00100,
B01110,
B11111,
B00100,
B00100,
B00100,
B00100,
};
byte down[8] = { // Fabrication caractere regression
B00100,
B00100,
B00100,
B00100,
B11111,
B01110,
B00100,
};
void setup()
{
Un sous menu (nAnalyse) est appelé si l'on appuie sur le bouton et va passer lentement les menus disponibles, pour laisser le temps de la consultation ou de l'action si celle-ci est souhaitée ... avec incrémentation à chaque phase et retour à la boucle principale si la totalité est passée !
A chaque loop, les valeurs enregistrées sont comparées avec les valeurs du capteur et burinées en EEPROM si elle sont pire que les précédentes . Et ainsi de suite...