[Tuto] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
conurb
Messages : 22
Inscription : 02 sept. 2018, 10:53
Localisation : Bordeaux

[Tuto] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par conurb »

Bonjour à tous,

Je suis débutant en domotique (et électronique) et, comme la plupart des débutants, j'ai voulu également faire mes propres capteurs. Après quelques déconvenues avec des ESP8266 et ESP32 (trop énergivores), j'ai opté pour l'ATtiny85. Concernant le sensor, j'ai choisi un BME280 (température, humidité et pression atmosphérique) en raison de sa plus grande précision en matière d'humidité (besoin personnel).

N'ayant rien trouvé qui me convienne pour un ATtiny85 avec un BME280 (en I2C, pas en SPI), j'ai donc opté pour le "full DIY" en matière de code. Si d'autres sont intéressés par le BME280, tout est disponible à cette adresse : https://github.com/conurb/low_energy_sensor

Je suis encore en période de test (sur une breadboard) et donc encore assez loin du stade que la plupart ont atteint dans ce fil de discussion (le circuit sur pcb made by ZONIII et le petit boitier qui va bien avec).

Image

Quelques remarques pour ceux qui voudraient tester :

Téléversement du programme :
  • Le code n'utilise pas la lib attiny de darmellis mais celle de SpenceKonde (https://github.com/SpenceKonde/ATTinyCore). Il vous faudra donc installer et utiliser cette librairie sur votre Arduino pour pouvoir compiler et téléverser sur l'ATtiny85 un programme fonctionnel. ce sont les mêmes manipulations que pour installer la lib de darmellis mais en utilsant http://drazzy.com/package_drazzy.com_index.json comme URL pour le manager de cartes (menu [Fichier >> Préférences >> URL de gestionnaire de cartes supplémentaires]) et sélectionner ATtinyCore by SpenceKonde dans [Outils >> Type de carte >> Gestionnaire de carte].
  • Lors du téléversement, SpenceKonde recommande l'usage d'un condensateur céramique de 0.1μF et précise que ce n'est pas optionnel (mettre le condensateur en travers de l'ATtiny85 entre le GND et le VCC, le machin bleu* sur la photo ci-dessous).
* Si vous avez commencé l'électronique avec un Starter Kit Arduino, il y a fort à parier que vous avez déjà ce composant à votre disposition. Si je ne raconte pas de bêtises, c'est un condensateur EMS de 0.1μF et ça fait parfaitement l'affaire.

Image
À noter qu'il n'y a pas de condensateur de XμF entre le RESET et le GND de l'Arduino car je lis partout qu'il faut ce condensateur mais il semble qu'il soit inutile depuis l'Arduino Uno Rev3. Juste pour info.

Concernant les options pour l'utilisateur, il suffit d'ouvrir le configuration.h et indiquer vos choix.

Pour les choix du menu de l'Arduino avant de téléverser, c'est :
  • Type de carte: "ATtiny25/45/85"
  • Save EEPROM: "EEPROM Retained"
  • Timer 1 Clock: "CPU"
  • LTO (1.6.11+ only): "Disabled"
  • B.O.D. Level: "B.O.D. Disabled"
  • Chip: "ATtiny85"
  • Clock: "8 Mhz (internal)"
Lors du montage, juste savoir qu'un BME280 ne supporte pas plus de 3.6v histoire de ne pas le griller (edit: faux, certains modèles vendus supportent jusqu'à 5v). Donc, soit utiliser 2 piles AA ou alors un régulateur de tension. Pour mes tests, j'utilise un HT7333-A (3.3v). C'est un régulateur LDO avec un quiescent current très faible. J'aurais préféré un régulateur 2.7v (moins de tension == moins de courant) mais je n'avais pas ça sous la main. L'ATtiny85 et le BME280 sont donc régulés mais pas l'émetteur RF (un FS1000A) pour avoir plus de puissance lors de l'émission.

Voilà, c'était juste un post pour partager, je souhaite une bonne fin de journée à tous ceux qui auront eu le courage de lire jusqu'au bout ^
conurb
Messages : 22
Inscription : 02 sept. 2018, 10:53
Localisation : Bordeaux

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par conurb »

Bonjour,

Concernant la précision du BME280 en hygrométrie, il y a par exemple cette étude détaillée dont la conclusion est :
The BME280 delivered easily the best results. The test is potentially unfair though given that they were brand new and are being compared against two-year old DHT22s and SHT71. I have not had much luck with reliability of the DHT22s, but the Sensirion SHT71 has proven itself dependable over two years so far.
Si on oublie le DHT11 (parce qu'il faut vraiment l'oublier) et sans avoir réalisé de tests personnels aussi précis que ceux de l'étude citée, j'ai constaté que les DHT22 avaient parfois un comportement surprenant (par exemple un écart d'une mesure à la suivante trop important pour être réaliste y compris sur un ligne proprement régulée). À contrario, et à ce jour, je n'ai pas encore constaté ça avec la techno Bosch (le BME280).

Concernant la température, c'est une autre histoire. Le BME280 surestime la température. Pour avoir été obligé d'écrire le driver du BME280 pour l'ATtiny85 vu que rien ne fonctionnait réellement avec les librairies que j'ai pu tester, j'en suis arrivé à des conclusions personnelles qui n'engagent que moi et ce n'est donc peut-être pas la réalité mais juste l'idée que je m'en fais (je préfère prendre des gants comme on l'aura remarqué ^).

La température est un « faire-valoir » de l'humidité et de la pression atmosphérique. C'est juste une donnée qui permet d'obtenir une hygrométrie et une pression atmosphérique la plus précise possible (sans température, pas de calcul fiable possible de l'hygrométrie et de la pression, cf la variable t_fine dans le code du datasheet de Bosch).

Par chance, il semble que cette surestimation de la température soit linéaire. Donc en ajustant la température sur son thermostat ou sur un autre sensor qu'on sait être plus réaliste en température, on obtient une température tout aussi fiable (cf présence de l'option ADJUST_TEMPERATURE_C dans le configuration.h). Par contre, n'ayant pas pu tester dans des conditions extrêmes, reste à déterminer si cette linéarité est toujours d'actualité. Ceci dit, dans des conditions extrêmes, tous les sensors actuels doivent donner des résultats « à l'ouest » donc bon... ^

Pour finir, chez moi et à titre indicatif, l'écart d'hygrométrie entre mes BME280 et mes DHT22 navigue entre 2 et 5% (tous les sensors étant au même endroit à quelques centimètres les uns des autres).
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par vil1driver »

D'accord, merci de ton retour
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
conurb
Messages : 22
Inscription : 02 sept. 2018, 10:53
Localisation : Bordeaux

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par conurb »

De rien, c'est avec plaisir.

À mon tour de te remercier pour ce topic qui permet d'échanger ses expériences. Très sympa.

J'aurais aimé intégrer mon code au tien pour n'avoir qu'une seule solution mais, malheureusement, tu utilises un pin nécessaire pour une communication en I2C (le SDA de mémoire). Ceci aurait donc interdit l'utilisation des pcbs de ZONIII et ça aurait également compliqué la vie de ceux qui veulent juste reprendre une solution sans trop se poser de questions (et ce n'est pas le but). Sinon, avec l'option LTO disponible avec le core de SpenceKonde, il aurait peut-être été possible de tout faire entrer dans l'ATtiny85.
mmikee02
Messages : 13
Inscription : 03 juin 2018, 17:04

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par mmikee02 »

Bonjour,
vu le confinement actuel, je dispose d'un peu de temps :oops: et, je suis intéressé par réaliser ce capteur à base de BME280.
J'en ai déjà réalisé qq uns "V2" à base de DHT22, & j'appréciais l'intégration possible dans ceux-ci, de 2 capteurs magnétiques supplémentaires sur les pins 6 & 7 de l'attiny. ;)
Vu qu'avec ce capteur-ci, la pin 7 est déjà occupée par le BME280 et que la pin 6 reste libre, j'aurais voulu savoir si c'était possible de reprendre un bout du code du capteur "V.2" (et lequel svp?) pour mettre un capteur magnétique sur la pin6 du capteur à base de BME280?

D'avance merci pour vos réponses,
-->Mike
Dernière modification par vil1driver le 30 mars 2020, 00:39, modifié 1 fois.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par Neutrino »

J'ai scindé le sujet d'origine, car cette version mérite son propre sujet ;)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par vil1driver »

Merci ;)
Je modifie le lien placé dans le sujet initial
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
fking
Messages : 166
Inscription : 03 nov. 2017, 10:19
Localisation : Liverdun (54)
Contact :

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par fking »

conurb a écrit : 08 sept. 2018, 09:11
Concernant la température, c'est une autre histoire. Le BME280 surestime la température. Pour avoir été obligé d'écrire le driver du BME280 pour l'ATtiny85 vu que rien ne fonctionnait réellement avec les librairies que j'ai pu tester, j'en suis arrivé à des conclusions personnelles qui n'engagent que moi et ce n'est donc peut-être pas la réalité mais juste l'idée que je m'en fais (je préfère prendre des gants comme on l'aura remarqué ^).
Je suis d'accord avec toi. J'en ai deux en fonction, et j'ai aussi constaté qu'ils voyaient "plus chaud que chaud" et "plus froid que froid".
En chaleur, je dirais que l'erreur est de l'ordre de 1-1,5°, mais au froid elle passe les 2°
Fais le ou ne le fais pas , essayer ne veut rien dire.
conurb
Messages : 22
Inscription : 02 sept. 2018, 10:53
Localisation : Bordeaux

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par conurb »

fking a écrit : 30 mars 2020, 09:58 Je suis d'accord avec toi. J'en ai deux en fonction, et j'ai aussi constaté qu'ils voyaient "plus chaud que chaud" et "plus froid que froid".
En chaleur, je dirais que l'erreur est de l'ordre de 1-1,5°, mais au froid elle passe les 2°
Bonjour,

Après env. 1 an 1/2 d'utilisation de différents modèles de BME280 et d'autres types de capteurs (le dernier en date étant du Xiaomi en zigbee), il s'avère que, si on veut une remontée à minima de la température et de l'humidité, ça reste pour moi la solution "globalement" la plus fiable et la plus réactive même si elle n'est pas parfaite (mais peut-on demander la perfection à du matériel chinois dans ces prix ?).

Par contre, de mon côté, au maximum, je n'ai pu constater qu'une erreur de l'ordre de +/- 0.7° C. Certains fabricants chinois n'utilisent pas un vrai capteur Bosch mais fabriquent les leurs, ceci peut sans doute expliquer cela.
conurb
Messages : 22
Inscription : 02 sept. 2018, 10:53
Localisation : Bordeaux

Re: [Tuto diy] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Message par conurb »

mmikee02 a écrit : 29 mars 2020, 17:54 Vu qu'avec ce capteur-ci, la pin 7 est déjà occupée par le BME280 et que la pin 6 reste libre, j'aurais voulu savoir si c'était possible de reprendre un bout du code du capteur "V.2" (et lequel svp?) pour mettre un capteur magnétique sur la pin6 du capteur à base de BME280?
Bonjour,

"oui", c'est possible mais "non", ce n'est pas aussi simple que prendre un bout de code par ici pour aller le coller par là ^

Ceci étant, il n'y a vraiment rien de compliqué à créer une interruption, ajouter la lib X10 et écrire le code nécessaire, c'est juste une histoire de temps. Avec l'option LTO du core de SpenceKonde, tout devrait dorénavant entrer dans l'ATTiny85.

Bonne journée
Répondre