Raspberry PI Actualité

Article invité – Construire un capteur de température personnalisé alimenté par Raspberry Pi Pico à l’aide de MQTT et CircuitPython

Par Thomas, le 24 avril 2021 — 7 minutes de lecture
Article invité - Construire un capteur de température personnalisé alimenté par Raspberry Pi Pico à l'aide de MQTT et CircuitPython

David Booth est ici avec un autre message d’invité. Cette fois, un capteur de température personnalisé utilisant un Raspberry Pi Pico et un PCB auto-conçu.

Aperçu

Un capteur de température personnalisé à faible consommation alimenté par un Raspberry Pi Pico avec un écran LCD et une connectivité WiFi pour l’intégration dans un MQTT hub domotique.

Caractéristiques

Depuis un certain nombre d’années, je souhaite surveiller la température des pièces dans toute ma maison pour évaluer l’effet de plusieurs sources de chauffage et l’efficacité de l’isolation. Les meilleures pratiques voudraient que je dispose de plusieurs capteurs fonctionnant en parallèle pour obtenir des points de données qui sont relatifs les uns aux autres. Pour que plusieurs capteurs fonctionnent en permanence, je préférerais qu’il soit de faible puissance et de faible coût afin de maximiser le nombre d’unités que je peux avoir dans la configuration. Pour faciliter la configuration, il serait préférable que chaque unité soit sans fil pour permettre la collecte des données de température à un seul endroit et pour chaque unité de ne nécessiter qu’une connexion électrique.

1. Dans les premiers jours

Depuis la naissance du Pico, il est devenu le choix évident par rapport à un Pi Zero en raison de sa faible consommation d’énergie et du fait que peu importe si l’appareil perd de l’énergie à tout moment. La première étape consistait à apprendre à intégrer le Pico avec un écran et un capteur de température. Le Pico Omnibus de Pimoroni avec deux broches de carte d’extension, je pouvais commencer par ajouter un Pico Display dédié et avoir toujours un accès facile aux broches GPIO pour connecter d’autres cartes. Au moment du lancement, il n’y avait pas de cartes d’extension Pico avec des capteurs de température que je pouvais trouver, j’ai donc choisi un Capteur I2C de température / humidité BMP280 en raison de son faible coût et de sa petite taille.

Le premier prototype fonctionnel stockait la température moyenne sur une heure et l’affichait sous forme de graphique pendant une période de 24 heures.

2. Progression temporelle

Pour faire avancer le projet, l’étape suivante consistait à rendre le Pico capable de transmettre sans fil les données à une sorte de hub. J’ai déjà un courtier MQTT pour ma sonnette réseau personnalisée alimentée par Raspberry Pi et mes lumières de porche à LED automatisées, il était donc logique de relier les deux systèmes ensemble.

Lors de la conception, le Pico était nouveau, il n’y avait donc pas de systèmes WiFi dédiés avec de la documentation sur la façon de les connecter entre eux. C’était jusqu’à Les Pounder de Tom’s Hardware a fait un excellent article sur la façon d’utiliser l’AirLift WiFi Featherwing avec le Pico. Par coïncidence, j’avais déjà acheté un AirLift avec l’intention de le «mailler» avec le Pico. Ceci, cependant, est venu avec l’avertissement que je devrais passer du micrologiciel Raspberry Pi MicroPython par défaut au micrologiciel CircuitPython. Pensant que cela allait être un cauchemar, j’étais heureux de découvrir que c’était indolore et que cela rendait le développement beaucoup plus facile. Avec CircuitPython, le Pico était maintenant accessible en tant que périphérique de stockage USB afin que je puisse éditer les fichiers directement sur le Pico en utilisant un éditeur de texte standard de mon choix (pas obligé d’utiliser quelque chose comme Thonny). Cela avait également l’avantage supplémentaire que le Pico rechargeait automatiquement mon code lorsque les fichiers de code source étaient modifiés. Je devais juste me rappeler de copier les packages Adafruit CircuitPython nécessaires pour interagir avec le module WiFi ESP32 SPI et le capteur de température BMP280.

Le seul inconvénient que j’ai trouvé était que les packages Adafruit CircuitPython pour le Pico Display fonctionnaient différemment des packages Pimoroni MicroPython et étaient moins utiles en ce qui concerne le code d’exemple. Je devrais être clair: il y avait quelques exemples, mais ils étaient destinés à l’affichage statique d’informations, non à des données modifiables et constamment mises à jour comme j’en aurais besoin. Il a donc fallu un peu «d’expérimentation» pour porter mon code vers le nouveau style.

3. S’éloigner de la «maquette»

Le prototype était maintenant opérationnel mais était un désordre de fils reliant le WiFi et le capteur de température au Pico car aucun des deux modules n’était installé sur la carte Pimoroni Pico Omnibus et je devais utiliser des fils de liaison pour arriver à ce stade.

Voulant faire un PCB personnalisé pour tout ranger, j’ai commencé avec un morceau de stripboard et j’ai soudé les broches d’en-tête nécessaires pour loger les quatre cartes comme je les voulais, mais après avoir soudé quatre-vingt-treize broches d’en-tête et avoir encore à souder vingt-sept supplémentaires. fils (dans un ordre spécifique) à l’arrière pour tout connecter, j’ai réalisé qu’il était tout aussi facile (et probablement plus rapide) de dessiner un PCB dans KiCad et de le fabriquer.

Ayant déjà utilisé KiCad pour concevoir des HAT Raspberry Pi pour mon entrée Pi Wars au cours des dernières années, j’ai trouvé cela assez facile. La conception de la carte serait basique: des broches d’en-tête et des traces pour les relier entre elles en fonction de mon nid de fils de rats. J’ai eu cela conçu en une heure ou deux. Sachant que le fabricant de PCB ne se soucierait pas de la forme de la carte, j’ai décidé que ce ne serait pas un simple rectangle. C’est pourquoi j’ai choisi d’ajouter des trous de montage sur les «ailes» qui font saillie pour lui donner un aspect distinctif.

Une autre considération pour la conception de la carte était qu’elle utiliserait le WiFi. Je savais que l’ajout d’un plan au sol réduirait potentiellement le signal sans fil (cela crée une cage de Faraday de base), alors j’ai sauté cette étape.

4. Fabrication et résultats

Suivant le JLCPCB, c’était un cas simple d’exporter les fichiers gerber et de les envoyer à JLCPCB pour la fabrication. Le coût de fabrication était d’un peu plus de 15 £ pour cinq planches qu’ils ont fabriquées et livrées en un peu moins de deux semaines.

La première chose que j’ai faite a été de souder les broches d’en-tête, puis j’ai branché les quatre cartes.

Étonnamment, mon design a fonctionné la première fois (il y a normalement quelque chose que j’oublie de lier ou d’ajouter).

Le montage au mur était facile avec les quatre trous de montage pré-percés dans la conception. J’ai trouvé que l’orientation est la clé car le capteur de température lit un degré ou plus s’il est orienté directement au-dessus du Pico et de l’écran. Il suffit de tourner le tout pour que le capteur de température soit en bas pour résoudre ce problème et l’écran peut être tourné dans le code pour qu’il se lise dans le bon sens.

Dans l’ensemble, je suis très satisfait de la conception et je vais commencer à assembler plusieurs cartes prêtes à être déployées. Il ne reste plus qu’à ajouter un processus dans le hub MQTT pour collecter les lectures de température et les afficher sur une page Web interne.

Fichiers de code et PCB

Pour toute personne intéressée par la réplication du projet, voici un lien vers mon référentiel Github qui contient le code source et les fichiers PCB KiCad.

Thomas

Thomas

Fan de Raspberry Pi de la première heure, je suis l'évolution de ces micro-pc depuis maintenant 5 ans. En plus de l'actualité je propose de nombreux tutoriels pour vous aider à exploiter pleinement votre nano-ordinateur côté domotique ou retro-gaming.