Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Sonde d'humidité du sol sans fil avec hélium et DFRobot

Composants et fournitures

Module Helium Atom Xbee
× 1
Point d'accès à l'élément hélium
× 1
DFRobot Gravity :Capteur d'humidité du sol capacitif analogique
× 1
Adaptateur Hélium Arduino/mbed
× 1
Arduino UNO
× 1

Applications et services en ligne

Arduino IDE
Tableau de bord Hélium

À propos de ce projet

Donnez une voix à vos plantes avec un capteur d'humidité du sol sans fil

Avouons-le. Les plantes meurent tout le temps par manque d'arrosage. Vous êtes occupé et ces fougères ne vont pas lever la main lorsqu'elles se sentent desséchées. Ainsi, pour les passionnés de plantes en déplacement, ce prototype de sonde d'humidité du sol est votre ticket pour des fougères et des ficus heureux et en bonne santé.

Ce que nous couvrirons

De bout en bout, tout ce guide devrait vous prendre environ 60 minutes. Voici ce que nous allons aborder :

  • Construire votre sonde d'humidité du sol complète à l'aide du capteur capacitif d'humidité du sol du robot DF, d'un module de prototypage d'atomes d'hélium, d'un adaptateur Arduino d'hélium et d'une carte Arduino (nous avons opté pour l'UNO) ;
  • Enregistrement de votre module de prototypage d'éléments d'hélium et d'atomes d'hélium dans le tableau de bord d'hélium ; et la création de votre propre réseau sans fil étendu à faible consommation d'énergie ;
  • Programmation de votre sonde d'humidité du sol via l'IDE Arduino. En cours de route, nous installerons également l'Hélium et ArduinoJson Bibliothèques Arduino ;
  • Mesure et envoi des données d'humidité du sol en temps quasi réel depuis votre usine vers le tableau de bord Helium ; et le diriger vers un canal HTTP Helium.

Bien. Allons-y. Nous avons des fougères à sauver.

Construire votre sonde d'humidité du sol

Nous devons d'abord construire l'unité de détection. C'est rapide et facile. Lorsque vous avez terminé, votre sonde complète devrait ressembler à ceci :

Pour construire ceci :

  • Tout d'abord, épinglez votre module de prototypage Helium Atom dans l'adaptateur Helium Arduino, puis connectez cette unité combinée à la carte Arduino de votre choix. Assurez-vous de configurer le RX et TX saute en conséquence selon la carte que vous utilisez. Des détails complets sur la façon d'épingler toutes ces cartes ensemble, ainsi que les configurations de cavaliers correctes, peuvent être trouvés ici. Jetez un œil, complétez cela et revenez.
  • Ensuite, nous devons connecter la véritable sonde d'humidité du sol à l'adaptateur hélium Arduino à l'aide du câble de démarrage à trois fils fourni avec la sonde d'humidité du sol du robot DF. Les trois couleurs de fil sont noir , rouge , et bleu . Sur l'adaptateur Helium Arduino, le noir le fil se connecte à GND; le rouge le fil se connecte à 5V; et le bleu le fil se connecte à l'ADO entête. Il y a un excellent diagramme de l'équipe DFRobot sur le fonctionnement de cette connexion ici. Notre carte ressemble à ceci lorsque le câblage est fait correctement :

  • Enfin, connectez l'en-tête blanc du câble de démarrage à la sonde d'humidité du sol du robot DF. Bien que cela puisse être un peu délicat, cela devrait s'enclencher avec un minimum d'effort.

Déploiement de votre élément hélium

Il est maintenant temps de créer votre propre réseau Hélium. Cela prend environ 30 secondes. (Si vous voulez en savoir plus sur la façon dont une application de bout en bout est construite sur Helium et comment nous gérons le composant de réseau sans fil, commencez par cette présentation de l'architecture.)

Pour déployer l'élément et créer une couverture réseau pour vos capteurs Atom, branchez-le simplement sur l'alimentation et un port Ethernet en direct à l'aide des cordons fournis. (Remarque :Si vous disposez d'un élément à base cellulaire, l'utilisation de la connectivité Ethernet est facultative mais est recommandée en tant que sauvegarde. ) Une fois branché, vous verrez une activité LED. Votre Element sera connecté lorsque la LED frontale deviendra vert (signalisation de la connectivité Ethernet ) ou sarcelle (pour la connectivité cellulaire ). Vous pouvez regarder une courte vidéo sur l'Element et comment le connecter ici.

Enregistrement de votre élément et atome d'hélium dans le tableau de bord d'hélium

Maintenant que notre unité de détection est construite et que votre réseau Helium est déployé, il est temps d'enregistrer votre matériel dans le tableau de bord Helium. Le tableau de bord est l'interface utilisateur hébergée d'Helium pour surveiller et gérer les déploiements de matériel connecté. Tout le matériel livré par Helium est déjà enregistré dans notre système, mais nous devons savoir qui le déploie.

  • Tout d'abord, créez un compte Helium Dashboard si vous ne l'avez pas déjà fait.
  • Pour enregistrer votre Atom, commencez par sélectionner Nouvel Atom . Dans l'interface utilisateur, ajoutez un nom (par exemple, Fern Saver ) puis saisissez les quatre derniers de son adresse MAC et son code HVV à quatre chiffres . Appuyez sur Enregistrer et tu as fini.
  • L'enregistrement de l'élément se fait exactement de la même manière. Sélectionnez Nouvel élément, puis fournissez un nom, les quatre derniers de son adresse MAC et son code HVV à quatre chiffres . Assurez-vous également de saisir un emplacement pour votre élément afin que le tableau de bord puisse l'afficher sur une carte.

Vous pouvez vérifier que votre élément est en ligne en l'examinant État et signal dans le tableau de bord :

Déploiement du canal HTTP Helium

Les canaux sont une caractéristique majeure de la plate-forme d'hélium. Il s'agit de connecteurs prédéfinis vers des services Web (comme AWS IoT, Google Cloud IoT et Azure IoT) et des protocoles (comme MQTT et HTTP ). Avec Channels, Helium a fait tout le gros du travail pour vous lorsqu'il s'agit de s'intégrer à l'un de ces services ou protocoles Web. Pour Fern Saver, notre sonde d'humidité du sol, créons un canal HTTP. Cela nous permettra de rediriger les données vers n'importe quel service Web qui accepte les données via HTTP. Par exemple, vous pouvez utiliser un canal HTTP pour envoyer ces données à IFTTT et, à son tour, recevoir un texte chaque fois que Fern Saver signale une humidité inférieure à un certain niveau.

Dans cet exemple, nous allons configurer un canal HTTP qui envoie des données à requestb.in, un service Web gratuit et pratique pour tester les services HTTP. Notez que ci-dessous, lorsque nous téléchargeons le Sketch sur l'Arduino, nous ferons référence à ce nom de canal, HTTP , dans le code afin que nous sachions où envoyer les données.

Voici à quel point il est simple et rapide de configurer cette chaîne :

Configuration de votre IDE Arduino et téléchargement du croquis

Nous pouvons maintenant passer à la configuration de votre IDE Arduino et à l'importation des bibliothèques requises. Pour commencer :

  • Assurez-vous d'avoir téléchargé le dernier IDE Arduino. Obtenez-le ici si nécessaire.
  • Nous devrons ensuite ajouter deux bibliothèques :Helium et ArduinoJson . Vous pouvez ajouter des bibliothèques depuis l'IDE en allant dans Sketch -> Inclure la bibliothèque -> Gérer les bibliothèques. Recherchez "hélium", sélectionnez-le et appuyez sur Installer . Suivez ce même processus d'installation pour la bibliothèque "ArduinoJson". (Nous avons besoin de cette bibliothèque car la date d'humidité du sol que nous allons enregistrer est au format JSON.)

Une fois cela fait, il est temps de faire de la programmation Arduino réelle. La source complète du Sketch que nous allons télécharger se trouve ici sur GitHub. Ce qui suit est le Soil_Humidity.ino complet esquisser.

/* * Copyright 2017, Helium Systems, Inc. * Tous droits réservés. Voir LICENCE.txt pour les informations de licence * * Prise de mesures d'humidité à l'aide du capteur d'humidité capacitif * SEN0192. Instructions de câblage :* https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193 * * Installez les bibliothèques suivantes via Sketch->Gérer les bibliothèques :* - ArduinoJson * - Helium */ #include "Board.h " #include  #include  #include  #include  // Ce nom de canal doit correspondre au canal que vous avez déployé dans Helium// Tableau de bord pour ingérer ce Les données. #define CHANNEL_NAME "HTTP" // Retard d'une seconde #define CHANNEL_DELAY 5000 // Envoie très 60 cycles (secondes) #define CHANNEL_SEND_CYCLE 12 Helium helium(&atom_serial); Canal de canal(&hélium); int channel_counter;void report_status(int status, int result =0) { if (helium_status_OK ==status) { if (result ==0) { Serial.println(F("Succeeded")); } else { Serial.print(F("Échec - ")); Serial.println(résultat); } } else { Serial.println(F("Echec")); } } void connect() { while (!helium.connected()) { Serial.print(F("Connecting - ")); état int =helium.connect(); report_status(statut); if (helium_status_OK !=status) { delay(1000); } } } void channel_create(const char * channel_name){ int8_t result; état entier ; do { // Assurez-vous que nous sommes connectés connect(); Serial.print(F("Création du canal - ")); status =channel.begin(channel_name, &result); // Imprimer l'état et le résultat report_status(status, result); if (helium_status_OK !=status) { delay(1000); } } while (helium_status_OK !=status || result !=0); } void channel_send(const char * channel_name, void const * data, size_t len) { int status; résultat int8_t ; do { // Essayez d'envoyer Serial.print(F("Envoi - ")); status =channel.send(data, len, &result); report_status(statut, résultat); // Crée le canal si des erreurs de service sont renvoyées if (status ==helium_status_OK &&result !=0) { channel_create(channel_name); } else if (status !=helium_status_OK) { delay(1000); } } while (helium_status_OK !=status || result !=0); } void setup() { Serial.begin(9600); Serial.println(F("Démarrage")); hélium.begin(HELIUM_BAUD_RATE); channel_create(CHANNEL_NAME); compteur_canal =0 ; } #define DRY_VALUE 536 // Pris dans l'air #define WET_VALUE 303 // Pris dans l'eau #define HUM_RANGE (DRY_VALUE - WET_VALUE) void loop() { Serial.print(F("Reading - ")); lecture flottante =lecture analogique (A0) ; pourcentage flottant =100 * (1 - (lecture - WET_VALUE) / HUM_RANGE); Serial.print(lecture); Serial.print(" - "); Serial.println(pourcentage); if (--channel_counter <=0) { StaticJsonBuffer jsonBuffer; JsonObject &root =jsonBuffer.createObject(); racine[F("valeur")] =lecture ; racine[F("pourcentage")] =pourcent; tampon de caractères [HELIUM_MAX_DATA_SIZE] ; size_t utilisé =root.printTo(buffer, HELIUM_MAX_DATA_SIZE); channel_send(CHANNEL_NAME, tampon, utilisé); compteur_canal =CHANNEL_SEND_CYCLE ; } retard(CHANNEL_DELAY); } 

Avec l'Hélium et ArduinoJson bibliothèques installées, créez une nouvelle esquisse (Fichier -> Nouveau depuis l'IDE Arduino) et collez le code ci-dessus. Ensuite, avec votre package matériel complet de sonde d'humidité du sol connecté à votre poste de travail via un câble USB, cliquez sur Télécharger bouton.

Les voyants de votre module de prototypage Atom devraient commencer à clignoter après quelques instants. Il s'agit de l'Atom se connectant au réseau Hélium (via l'Element que nous avons déployé précédemment). Si l'IDE Arduino ne génère aucune erreur lors du téléchargement du code, cela a réussi et la sonde d'humidité du sol génère maintenant des lectures.

Une note sur les données d'humidité du sol

Comme indiqué ci-dessus, cette esquisse capturera les données d'humidité du sol et les encodera en tant que JSON avant envoi vers la plateforme Helium. En utilisant le croquis ci-dessus, un point de données ressemblera à quelque chose comme ceci (comme JSON ):

{ "value":433, "percent":55.5 } 

Il convient de noter que le capteur d'humidité du sol capacitif DFRobot Gravity capture en fait ces lectures sous forme de lectures analogiques entre une lecture calibrée sèche et humide. Vous pouvez obtenir tous les détails sur la façon dont cela est mis en œuvre et calibré ici. Vous voudrez peut-être modifier un peu l'étalonnage.

Vérification de la connectivité et des données du capteur dans Helium Dashboard

Maintenant que votre capteur est déployé, nous pouvons vérifier qu'il est en ligne et qu'il transmet des données. Dans le tableau de bord, nous pouvons le faire de plusieurs manières, à la fois via l'UI Atom vue pour le capteur que vous venez de déployer.

  • Si votre Atom est en ligne, le tableau de bord affichera son état et signal , ainsi que diverses autres métadonnées sur son statut. Cela ressemblera à ceci :
  • Plus bas dans la même interface Atom, nous affichons également un Journal des événements montrant chaque point de données du capteur et s'il a été transmis avec succès ou non à un canal d'hélium. Comme nous l'avons noté ci-dessus, il s'agit de connecteurs prédéfinis vers des services Web ou des protocoles bruts. Auparavant, nous avons déployé un canal HTTP pour votre organisation Helium. Et le croquis ci-dessus indique à la sonde d'humidité du sol d'envoyer des données à ce canal - appelé HTTP . Dans cet exemple illustré ci-dessous, cependant, nous envoyons nos données au canal HTTP Helium :
  • Nous fournissons également un Debug interface pour chaque atome qui affichera vos lectures au fur et à mesure qu'elles arrivent (une fois que vous avez activé cette option). Voici quelques données sur l'humidité du sol dans la visionneuse de débogage du tableau de bord :

Étapes suivantes et aide

Toutes nos félicitations! C'est la fin de ce guide. Vous avez maintenant protégé votre fougère pour l'avenir avec une sonde d'humidité du sol sans fil. Ceci est une grosse affaire. Vos fougères vous remercient.

Si vous souhaitez en savoir plus sur l'hélium et sur la façon dont vous pouvez prototyper vos propres capteurs à l'aide de ce matériel et de ces logiciels, commencez ici :

  • Documentation du développeur Helium
  • Développeur Helium Slack
  • Forum des développeurs Helium

Code

  • Soil_Humidity.ino
Soil_Humidity.inoC/C++
L'Arduino Sketch complet pour commencer à envoyer les données d'humidité du sol de votre capteur à un canal d'hélium.
/* * Copyright 2017, Helium Systems, Inc. * Tous droits réservés. Voir LICENCE.txt pour les informations de licence * * Prise de mesures d'humidité à l'aide du capteur d'humidité capacitif * SEN0192. Instructions de câblage :* https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193 * * Installez les bibliothèques suivantes via Sketch->Gérer les bibliothèques :* - ArduinoJson * - Helium */#include "Board.h "#include #include #include #include #define CHANNEL_NAME "Helium MQTT"// Retard d'une seconde#define CHANNEL_DELAY 5000// Envoi très 60 cycles (secondes)#define CHANNEL_SEND_CYCLE 12Helium helium(&atom_serial);Channel channel(&helium);int channel_counter;voidreport_status(int status, int result =0){ if (helium_status_OK ==status) { if (result ==0) { Serial.println(F("Réussi")); } else { Serial.print(F("Échec - ")); Serial.println(résultat); } } else { Serial.println(F("Echec")); }}voidconnect(){ while (!helium.connected()) { Serial.print(F("Connexion - ")); état int =helium.connect(); report_status(statut); if (helium_status_OK !=status) { delay(1000); } }}voidchannel_create(const char * channel_name){ int8_t result; état entier ; do { // Assurez-vous que nous sommes connectés connect(); Serial.print(F("Création du canal - ")); status =channel.begin(channel_name, &result); // Imprimer l'état et le résultat report_status(status, result); if (helium_status_OK !=status) { delay(1000); } } while (helium_status_OK !=status || result !=0);}voidchannel_send(const char * channel_name, void const * data, size_t len){ int status; résultat int8_t ; do { // Essayez d'envoyer Serial.print(F("Envoi - ")); status =channel.send(data, len, &result); report_status(statut, résultat); // Crée le canal si des erreurs de service sont renvoyées if (status ==helium_status_OK &&result !=0) { channel_create(channel_name); } else if (status !=helium_status_OK) { delay(1000); } } while (helium_status_OK !=status || result !=0);}voidsetup(){ Serial.begin(9600); Serial.println(F("Démarrage")); hélium.begin(HELIUM_BAUD_RATE); channel_create(CHANNEL_NAME); channel_counter =0;}#define DRY_VALUE 536 // Pris dans l'air#define WET_VALUE 303 // Pris dans l'eau#define HUM_RANGE (DRY_VALUE - WET_VALUE)voidloop(){ Serial.print(F("Reading - ")); lecture flottante =lecture analogique (A0) ; pourcentage flottant =100 * (1 - (lecture - WET_VALUE) / HUM_RANGE); Serial.print(lecture); Serial.print(" - "); Serial.println(pourcentage); if (--channel_counter <=0) { StaticJsonBuffer jsonBuffer; JsonObject &root =jsonBuffer.createObject(); racine[F("valeur")] =lecture ; racine[F("pourcentage")] =pourcent; tampon de caractères [HELIUM_MAX_DATA_SIZE] ; size_t utilisé =root.printTo(buffer, HELIUM_MAX_DATA_SIZE); channel_send(CHANNEL_NAME, tampon, utilisé); compteur_canal =CHANNEL_SEND_CYCLE ; } retard(CHANNEL_DELAY);}

Processus de fabrication

  1. Fonctionnement et applications du capteur d'humidité du sol
  2. Contrôle d'accès avec QR, RFID et vérification de la température
  3. Capteur d'humidité du sol Raspberry Pi
  4. Aéroponie avec Raspberry Pi et capteur d'humidité
  5. Créer des robots avec Raspberry Pi et Python
  6. Diriger avec persévérance et persévérance
  7. Capteur Portenta et thermocouple (avec MAX6675)
  8. Contrôle du servomoteur avec Arduino et MPU6050
  9. Appareil photo numérique standard et IA pour surveiller l'humidité du sol