Table des matières:
- Fournitures
- Étape 1: préparer l'environnement Arduino pour ESP8266
- Étape 2: Inclure les bibliothèques requises
- Étape 3: Personnaliser l'exemple d'esquisse standard
- Étape 4: Télécharger l'interface utilisateur Web
- Étape 5: ajouter le capteur BME680
- Étape 6: ajouter le capteur PMS5003
- Étape 7: Ajout de certaines fonctionnalités réseau
- Étape 8: ajouter de la journalisation
- Étape 9: Actions
- Étape 10: Images et fichiers de configuration
Vidéo: Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis : 10 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
La qualité de l'air intérieur ou extérieur dépend de nombreuses sources de pollution et aussi de la météo.
Cet appareil capture certains des paramètres communs et certains des paramètres les plus intéressants en utilisant 2 puces de capteur.
- Température
- Humidité
- Pression
- Gaz organique
- Micro-particules
Les capteurs utilisés ici sont le BME680 pour obtenir les valeurs de température, d'humidité, de pression et de gaz organiques et le PMS5003 pour obtenir la densité des microparticules.
En utilisant la bibliothèque HomeDing, il est facile de créer un appareil connecté uniquement à votre réseau domestique et pouvant être atteint et contrôlé par n'importe quel navigateur sur le réseau. Il est livré avec une sélection d'éléments qui permettent d'utiliser les puces de capteurs, les appareils et autres services les plus courants.
Il apporte également une solution complète pour héberger un appareil côté Web à l'intérieur au lieu d'utiliser une solution basée sur le cloud pour afficher les données du capteur et interagir avec l'appareil.
Fournitures
Tout ce dont vous avez besoin pour construire ce projet est une carte basée sur ESP8266 comme la carte nodemcu et un ensemble de capteurs pour mesurer la qualité de l'air. La bibliothèque HomeDing utilisée dans ce projet prend en charge certaines des puces de capteur courantes pour la température, l'humidité, la pression et la qualité. Ici, la puce BMP680 est utilisée.
- Une prise USB et un câble micro-usb pour l'alimentation.
- 1 carte nodemcu avec le CPU ESP8266.
- 1 carte de dérivation de capteur BME680.
- 1 capteur laser à particules d'air PM2.5 type PMS5003
Il est facile d'échanger le capteur BME680 avec un capteur DHT22 car ils sont également pris en charge par la bibliothèque parmi beaucoup d'autres.
Étape 1: préparer l'environnement Arduino pour ESP8266
- Installez la dernière version d'Arduino IDE (actuellement la version 1.8.2).
- Utilisez Board Manager pour installer l'installation du support esp8266. Une instruction détaillée peut être trouvée ici:
- Configurez les options de la carte pour un NodeMCU 1.0 avec un système de fichiers SPIFFS de 1 Mo, comme indiqué dans la capture d'écran
Étape 2: Inclure les bibliothèques requises
La bibliothèque HomeDing s'appuie sur certaines bibliothèques supplémentaires courantes pour que les capteurs et les écrans fonctionnent.
Lorsque vous installez la bibliothèque HomeDing, vous verrez une fenêtre contextuelle avec ces bibliothèques requises qui peuvent être installées automatiquement comme illustrées sur l'image et il est facile de toutes les installer.
Parfois (pour des raisons inconnues), l'installation des bibliothèques échoue, donc toutes les bibliothèques requises doivent être installées manuellement.
Vous trouverez plus de détails sur les bibliothèques requises sur le site Web de documentation à l'adresse
Voici la liste des bibliothèques actuellement requises:
- Adafruit NeoPixel
- LiquidCrystal_PCF8574.h
- Pilote Oled ESP8266 et ESP32 pour écran SSD1306
- Codeur rotatif
- Bibliothèque de capteurs DHT pour ESPx
- Un fil
Le capteur laser à particules d'air PMS5003 communique en utilisant un signal de ligne série de 9600 bauds. Ce signal est capturé à l'aide de la bibliothèque SoftwareSerial fournie avec l'installation des outils ESP8266. Assurez-vous de ne pas avoir une ancienne version installée en tant que bibliothèque.
Étape 3: Personnaliser l'exemple d'esquisse standard
L'exemple standard comprend déjà certains des capteurs les plus courants en tant qu'éléments, de sorte que seule une certaine configuration sera requise.
Cela s'applique au capteur BME680 pris en charge par le BME680 Element.
Le capteur PMS5003 est moins courant et doit être activé en incluant l'élément PMS dans le micrologiciel. Ceci est fait en définissant #define HOMEDING_INCLUDE_PMS dans la section de registre d'élément de l'esquisse
#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS
Pour simplifier l'ajout du nouvel appareil au réseau, vous pouvez ajouter le SSID et la phrase secrète de votre réseau Wi-Fi domestique dans le fichier secrets.h à côté du fichier de croquis standard.ino. Mais vous pouvez également utiliser le gestionnaire WiFi intégré pour ajouter l'appareil au réseau sans cette configuration codée en dur.
Maintenant, tout ce qui concerne la mise en œuvre du croquis est terminé et le firmware peut être compilé et téléchargé.
Étape 4: Télécharger l'interface utilisateur Web
L'exemple standard est fourni avec un dossier de données qui contient tous les fichiers de l'interface utilisateur Web.
Avant de télécharger ces fichiers, vous pouvez ajouter les fichiers env.json et config.json que vous pouvez trouver avec cet article, car cela facilitera les choses.
Le contenu de ces fichiers est ce qui rend l'appareil IoT spécial et se comporte comme un capteur de qualité de l'air. C'est expliqué en détail dans cette histoire.
Utilisez l'utilitaire de téléchargement de fichiers ESP8266 et téléchargez tous les fichiers. Il faut un redémarrage pour activer la configuration.
Étape 5: ajouter le capteur BME680
Le capteur BME680 communique avec la carte via le bus I2C.
Comme cela est éventuellement partagé avec d'autres extensions comme d'autres capteurs ou affichages, il est configuré au niveau de l'appareil dans env.json avec le nom de réseau de l'appareil. Voici un exemple extrait des paramètres de périphérique et I2C:
"dispositif": {
"0": { "name": "airding", "description": "Air Quality Sensor", … "i2c-scl": "D2", "i2c-sda": "D1" } }
Sur la maquette, vous pouvez voir les câbles de connexion au capteur: 3,3 V=rouge, GND=noir, SCL=jaune, SDA=bleu
La configuration du BME680 peut être utilisée dans config.json:
"bme680": {
"bd": { "address": "0x77", "readtime": "10s" } }
Nous ajouterons les actions plus tard.
Pour tester la configuration, utilisez simplement un navigateur et ouvrez https://airding/board.htm et vous verrez les valeurs réelles du capteur affichées et elles seront mises à jour environ toutes les 10 secondes:
Étape 6: ajouter le capteur PMS5003
Je n'avais pas de capteur avec un connecteur compatible avec la planche à pain, j'ai donc dû couper l'un des connecteurs du câble, utiliser mon fer à souder pour le fixer directement à la carte nodemcu. Vous pouvez le voir encore sur les photos finales.
L'alimentation de ce capteur doit être prise sur le Vin qui est normalement alimenté par le bus USB. GND est le même mais également disponible à côté de la broche Vin.
Les données du capteur sont transférées dans un format série standard de 9600 bauds, les broches rx et tx et le temps de lecture doivent donc être configurés:
"pms": {
"pm25": { "description": "capteur de particules pm25", "pinrx": "D6", "pintx": "D5", "readtime": "10s" } }
Nous ajouterons les actions plus tard.
Pour tester à nouveau la configuration, redémarrez simplement l'appareil et utilisez un navigateur et ouvrez https://airding/board.htm et vous verrez la valeur pm35 réelle du capteur affichée et ils seront mis à jour environ toutes les 10 secondes mais cette valeur est normalement ne change pas souvent.
Vous pouvez obtenir des valeurs plus élevées en plaçant une bougie à côté du capteur, car une bougie produit une grande partie de ces particules.
Maintenant, vous pouvez tout mettre dans un joli boîtier car toutes les autres configurations et même les mises à jour logicielles peuvent être effectuées à distance.
Étape 7: Ajout de certaines fonctionnalités réseau
L'extrait de configuration suivant dans env.json active
- mise à jour du firmware par liaison radio
- permet de détecter le réseau à l'aide du protocole réseau SSDP et récupère l'heure actuelle à partir d'un serveur ntp.
{
… "ota": { "0": { "port": 8266, "passwd": "123", "description": "Écouter les mises à jour OTA 'over the air'" } }, "ssdp": { "0 ": { "Fabricant": "votrenom" } }, "ntptime": { "0": { "readtime": "36h", "zone": 2 } } }
Vous devez ajuster le fuseau horaire à votre emplacement. En cas de doute, vous pouvez utiliser le site Web https://www.timeanddate.com/ pour obtenir le décalage par rapport à UTC/GMT. "2" correspond à l'heure d'été en Allemagne.
Vous pouvez également ajuster le mot de passe ota après avoir lu les instructions concernant le mode de sauvegarde dans la documentation à l'adresse
Après un redémarrage, vous pouvez trouver le périphérique de diffusion sur le réseau et après avoir reçu une réponse du serveur ntp, l'heure locale est disponible.
Étape 8: ajouter de la journalisation
Seules les valeurs réelles peuvent ne pas être suffisantes, donc d'autres éléments peuvent être utilisés.
Pour cette histoire, l'élément Log et l'élément NPTTime sont utilisés pour enregistrer l'historique des valeurs des capteurs dans un fichier journal et la carte d'interface utilisateur Web pour cet élément peut l'afficher sous forme de graphique.
La configuration suivante crée les 2 éléments de log pour le gaz et les particules:
{
"log": { "pm": { "description": "Log de pm25", "filename": "/pmlog.txt", "filesize": "10000" }, "aq": { "description": " Journal de la qualité du gaz", "filename": "/aqlog.txt", "filesize": "10000" } } }
Étape 9: Actions
Nous devons maintenant transférer les valeurs réelles vers les éléments du journal en utilisant des actions. Les actions utilisent une notation URL pour transmettre un kay et une valeur à l'élément cible. De nombreux éléments prennent en charge l'émission d'actions sur certains événements qui se produisent, comme la capture d'une nouvelle valeur de capteur.
Les actions sont configurées au niveau de l'élément qui émet les actions 2 entrées sont requises:
- L'événement pms/p25 onvalue envoie la valeur réelle à l'élément log/pm à l'aide d'une action de valeur.
- L'événement bme680/bd ongas envoie la valeur réelle à l'élément log/pm à l'aide d'une action de valeur.
{
"pms": { "pm25": { … "onvalue": "log/pm?value=$v" } }, "bme680": { "bd": { … "ongas": "log/aq?value= $v" } } }
Maintenant, tous les éléments sont configurés.
Étape 10: Images et fichiers de configuration
Voici quelques photos de mon capteur de qualité de l'air IoT final.
Les fichiers de configuration à télécharger doivent être renommés en *.json (pas de.txt) avant d'être téléchargés.
Liens et références
- Référentiel de code source HomeDing:
- Documentation:
- Exemple standard:
- Élément BME680:
- Élément PMS:
- Élément de journal:
- Élément NtpTime:
Conseillé:
Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis : 4 étapes
Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis : Mise à jour du 6 juillet 2018 : Une version 3G/2G de ce projet, utilisant SIM5320, est disponible iciMise à jour : 19 mai 2015 : Utilisez la bibliothèque pfodParser Version 2.5 ou plus haut. Il corrige un problème signalé de ne pas laisser assez de temps pour que le bouclier se connecte à th
Commandes personnalisées Redbear BLE Nano V2 avec PfodApp - Aucun codage requis : 6 étapes
Commandes personnalisées Redbear BLE Nano V2 avec PfodApp -- Aucun codage requis : Mise à jour : 15 septembre 2017 -- Cette instructable a été mise à jour pour utiliser la dernière version de RedBear BLE Nano, V2. La version précédente de cette instructable, qui ciblait RedBear BLE Nano V1.5 est disponible ici. Mise à jour 15 novembre - 2017 Alors
Arduino/Android pour les débutants, aucun codage requis - Données et contrôle : 15 étapes
Arduino/Android pour les débutants, aucun codage requis - Données et contrôle : mise à jour du 23 avril 2019 - Pour les tracés de date/heure utilisant uniquement Arduino millis(), voir Arduino Date/Time Plotting/Logging utilisant Millis() et PfodApp Le dernier pfodDesigner V3 gratuit .0.3610+ généré des croquis Arduino complets pour tracer des données par rapport à la date/heure u
Commandes personnalisées Adafruit Feather NRF52, aucun codage requis : 8 étapes (avec photos)
Contrôles personnalisés Adafruit Feather NRF52, aucun codage requis : mise à jour du 23 avril 2019 - Pour les tracés de date/heure utilisant uniquement Arduino millis(), voir Arduino Date/Time Plotting/Logging utilisant Millis() et PfodApp Le dernier pfodDesigner gratuit V3.0.3610+ généré compléter des croquis Arduino pour tracer des données par rapport à la date/heure u
Rétrofit du contrôle BLE aux charges de puissance élevée - Aucun câblage supplémentaire requis : 10 étapes (avec photos)
Retrofit BLE Control to High Power Loads - Aucun câblage supplémentaire requis : Mise à jour : 13 juillet 2018 - ajout d'un régulateur à 3 bornes à l'alimentation toroïdale. L'alimentation est commutée à distance depuis votre mobile Android via pfodApp. Non