Page 1 sur 2

[Tuto] Fabriquer sonde radio Oregon ATtiny85 avec un BME280

Publié : 03 sept. 2018, 15:01
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 ^

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

Publié : 08 sept. 2018, 09:11
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).

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

Publié : 08 sept. 2018, 11:14
par vil1driver
D'accord, merci de ton retour

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

Publié : 08 sept. 2018, 11:54
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.

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

Publié : 29 mars 2020, 17:54
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

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

Publié : 30 mars 2020, 00:22
par Neutrino
J'ai scindé le sujet d'origine, car cette version mérite son propre sujet ;)

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

Publié : 30 mars 2020, 00:35
par vil1driver
Merci ;)
Je modifie le lien placé dans le sujet initial

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

Publié : 30 mars 2020, 09:58
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°

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

Publié : 30 mars 2020, 10:59
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.

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

Publié : 30 mars 2020, 11:11
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