BMV080 – capteur de particules SparkFun Qwiic (Revue)
Si vous développez un projet de surveillance de la qualité de l’air avec des contraintes d’espace, la dernière carte Qwiic de SparkFun intégrant le capteur BMV080 de Bosch Sensortec pourrait bien être la solution idéale. Il ne s’agit pas simplement d’une version miniaturisée d’un capteur de particules classique, mais d’un dispositif performant dans un format incroyablement compact.
Si vous développez un projet de surveillance de la qualité de l'air avec des contraintes d’espace, la dernière carte Qwiic de SparkFun intégrant le capteur BMV080 de Bosch Sensortec pourrait être la solution idéale. Il ne s’agit pas simplement d’une version miniaturisée d’un capteur de particules classique, mais d’un dispositif performant dans un format incroyablement compact.
Un design ultra-compact
Avec des dimensions de seulement 4,4 mm × 3,0 mm × 3,0 mm, le BMV080 est actuellement le plus petit capteur de particules disponible sur le marché. Selon Bosch Sensortec, il est plus de 450 fois plus compact que les dispositifs comparables. Sa taille rend son montage sur une carte d’évaluation particulièrement pratique, un aspect que SparkFun a su exploiter intelligemment. Mieux encore, SparkFun a conçu un boîtier adapté, simplifiant davantage son utilisation.
Le BVM080 (à l’intérieur du cercle vert) mesure 4,4 mm × 3,0 mm × 3,0 mm.
Sans ventilateur
Le BMV080 utilise des lasers intégrés et des photodiodes pour détecter en temps réel les particules de diamètre inférieur ou égal à 2,5 µm (PM2.5). Il calcule également les concentrations PM1.0 et PM10. Il mesure les particules en suspension directement dans le flux d’air ambiant, ce qui élimine le besoin de ventilateurs, d’orifices ou de conduits spécifiques. Cela le rend plus silencieux, plus économe en énergie et plus facile à intégrer dans des boîtiers compacts.
Bosch propose le BMV080 sous forme de module miniature, intégré par SparkFun sur une carte dotée d'un connecteur Qwiic I²C standard. Si l’I²C pas adapté à votre application, il est possible de souder un connecteur à pas de 0,1 pouce pour utiliser une interface SPI, bien que cela nécessite une modification du circuit imprimé.
Fragile mais bien protégé
Le capteur BMV080 est un composant délicat. C’est pourquoi SparkFun a conçu un boîtier avec un filtre intégré protégeant le capteur contre les contaminations (poussières, traces de doigts). Cela le rend particulièrement adapté aux conceptions scellées ou résistantes aux intempéries. Le filtre, d’apparence noire, n’entrave pas la lumière du laser. Celui-ci, d’une longueur d’onde de 850 nm (infrarouge proche), est de Classe 1, ce qui signifie qu’il est sans danger dans toutes les conditions normales d’utilisation, y compris lors d’une observation directe à l’œil nu.
Pour utiliser le capteur de qualité de l’air, une bibliothèque logicielle est nécessaire. Bosch Sensortec propose un SDK pour le BMV080 autour duquel SparkFun a développé une bibliothèque Arduino. Celle-ci s’installe comme une bibliothèque Arduino classique. Toutefois, pour accéder au SDK de Bosch Sensortec, il faut d’abord remplir un formulaire afin de pouvoir télécharger l’archive. Ensuite, il est nécessaire de copier manuellement un ensemble de bibliothèques précompilées (au nombre de 16 pour une installation complète) depuis l’archive de Bosch vers la bibliothèque SparkFun. Cette procédure est quelque peu fastidieuse, mais elle permet de connaître les microcontrôleurs pris en charge.
Plates-formes prises en charge
Les microcontrôleurs compatibles avec le capteur BMV080 sont les suivants : ESP32 (y compris les variantes S2 et S3) ainsi que les cœurs Arm Cortex M0+, M33, M4(F) et M7(F). En revanche, les cartes Arduino UNO R3 (AVR) et UNO R4 (Renesas) ne sont pas compatibles. C’est regrettable, notamment pour la UNO R4 qui intègre un connecteur Qwiic et que j’avais initialement prévue pour mes essais. J’ai donc dû souder des fils sur un Raspberry Pi Pico, équipé d’un cœur Arm Cortex M0+ (ou utiliser un module ESP32). Ce manque de compatibilité provient de Bosch Sensortec, et non de SparkFun. Espérons qu’un support soit ajouté à l’avenir. Le montage de test avec SDA sur la broche 2 et SCL sur la broche 3. Le fil blanc correspond à la ligne IRQ.
Premier essai
Avec un connecteur Qwiic soudé sur un Raspberry Pi Pico (SDA sur la broche 4, SCL sur la broche 5), j’ai téléversé le sketch d’exemple Example_01_BasicReadings. Cela a généré les relevés suivants dans le moniteur série :
Donc, soit il y a un dysfonctionnement, soit je me trouve dans un environnement particulièrement pollué. Malheureusement, ces deux hypothèses sont plausibles, car je ne dispose d’aucune référence pour comparaison. L’exécution du sketch d’exemple Example_02_DutyCycle a produit des résultats similaires.
Le meilleur SDK jamais utilisé ?
Avant de renvoyer ou d’abandonner le module, j’ai décidé d’examiner de plus près le SDK fourni par Bosch. À ma grande surprise, il s’est avéré très complet et bien documenté, loin d’un simple ensemble de bibliothèques précompilées. J’y ai trouvé un exemple destiné aux microcontrôleurs Arm Cortex-M0+, spécifiquement pour une carte Adafruit RP2040 Feather. Pour l’utiliser avec mon Raspberry Pi Pico, j’ai dû connecter SDA à la broche 2, SCL à la broche 3, et souder un fil entre la broche IRQ du module BMV080 (située à côté du connecteur Qwiic) et la broche 7 du Pico. J’ai également dû adapter le fichier main.cpp afin qu’il utilise la LED intégrée du Pico (broche 25) à la place de la broche 13 prévue initialement. Cela implique de modifier la définition de BSP_IO_PORT_PIN_13, mais aussi de corriger la ligne 181 (environ), où l’on active ou désactive la LED, et où la broche 13 est codée en dur. Voici les modifications apportées :
Dans le fichier combridge.cpp, il est nécessaire de modifier l’adresse I²C du module pour la passer à 0x57, qui est l’adresse par défaut du module SparkFun :
cpp
#define BMV080_I2C_ADDRESS 0x57
Compilation en une seule commande
La compilation du programme devient alors aussi simple que de se rendre, via un terminal en ligne de commande (comme Windows PowerShell par exemple), dans le dossier du SDK api_examples\arm_cortex_m0plus puis d’exécuter la commande suivante :
./build_arm_cortex_m0plus.cmd i2c
Une connexion Internet est requise pour cette opération, car le script télécharge et installe automatiquement la chaîne d’outils nécessaire avant de compiler l’exemple. Dans mon cas, tout a fonctionné parfaitement. N’étant pas habitué à des SDK aussi fluides et bien conçus, j’ai été sincèrement impressionné. Bravo à Bosch Sensortec !
Pour téléverser l’exécutable, il faut localiser le fichier UF2 qui, pour une raison quelconque, ne se trouve pas dans le dossier Bin comme les autres binaires, mais reste dans le dossier Build. Une fois le Pico passé en mode bootloader, il suffit de copier ce fichier UF2 dessus. Et là, surprise : le module BVM080 s’est mis à transmettre des données réelles !
Valeurs de particules relevées après avoir allumé quelques allumettes.
RTOS Requis
Au cours de mes essais, j’ai remarqué que le SDK de Bosch Sensortec faisait référence à Mbed RTOS. Cela m’a donné l’idée de recompiler l’exemple de SparkFun en utilisant la plateforme Arduino Mbed OS RP2040 Boards (jusqu’alors, j’utilisais le paquet Arduino RP2040 d’Earle Philhower). Cette fois-ci, cela a parfaitement fonctionné ! (Rappel : la bibliothèque SparkFun attend SDA sur la broche 4 et SCL sur la broche 5 ; la broche IRQ n’est pas utilisée dans l’exemple que j’ai testé.)
Conclusion
Le capteur de particules SparkFun Qwiic, basé sur le BMV080 de Bosch, est une solution de surveillance de la qualité de l’air à la fois compacte et performante, particulièrement adaptée aux applications où l’espace, la consommation énergétique et la simplicité d’intégration sont des critères essentiels. Grâce à la détection en temps réel des particules fines, à ses interfaces de communication flexibles et à son boîtier ingénieux, il représente un excellent choix pour les systèmes de capteurs environnementaux.
Le support logiciel fourni par SparkFun manque quelque peu de documentation, mais le SDK de Bosch Sensortec compense largement par sa qualité. Une fois que l’on sait que la plupart des exemples nécessitent un système d’exploitation temps réel (RTOS) tel que Mbed OS (désormais obsolète), il devient tout à fait possible de mesurer efficacement les concentrations de particules avec le BMV080.
Veuillez saisir votre adresse électronique. Les instructions de réinitialisation de votre mot de passe vous seront immédiatement envoyées par courriel.
Discussion (0 commentaire(s))