Table des matières:

Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis : 10 étapes
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis : 10 étapes

Vidéo: Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis : 10 étapes

Vidéo: Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis : 10 étapes
Vidéo: L'IOT, TROISIEME REVOLUTION DE L'INTERNET 2024, Novembre
Anonim
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis
Construisez un capteur de qualité de l'air IoT en interne, aucun cloud requis

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

Préparer l'environnement Arduino pour ESP8266
Préparer l'environnement Arduino pour ESP8266
  1. Installez la dernière version d'Arduino IDE (actuellement la version 1.8.2).
  2. Utilisez Board Manager pour installer l'installation du support esp8266. Une instruction détaillée peut être trouvée ici:
  3. 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

Inclure les bibliothèques requises
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

Personnaliser l'exemple d'esquisse standard
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

Ajouter le capteur BME680
Ajouter le capteur BME680
Ajouter le capteur BME680
Ajouter le capteur BME680
Ajouter le capteur BME680
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

Ajouter le capteur PMS5003
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

Actions
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

Images et fichiers de configuration
Images et fichiers de configuration
Images et fichiers de configuration
Images et fichiers de configuration
Images et fichiers de configuration
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é: