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

Communicateur d'usine

Composants et fournitures

Arduino MKR IoT Bundle
× 1

Applications et services en ligne

Zapier
API ThingSpeak

À propos de ce projet

Remarque :Ce tutoriel est peut-être obsolète, veuillez y aller ici pour une version plus récente.

Présentation

Comme l'a dit un jour le poète anglais William Wordsworth :

"Votre esprit est le jardin, vos pensées sont les graines, la récolte peut être soit des fleurs, soit des mauvaises herbes."

Garder vos plantes en vie peut être tout un défi car elles sont très mauvaises en communication.

Une façon de les garder heureux est d'apporter vos plantes avec vous, mais peut-être que vous ne voulez pas trimballer avec ce gros cactus ou cette fougère qui sort des poches de votre veste d'hiver. De plus, la plupart des plantes n'aiment pas le froid.

Après avoir passé des mois à essayer de communiquer avec notre Spider Plant, nous avons abandonné et utilisé les composants MKR IoT Bundle pour créer un appareil qui surveille à distance le bien-être de n'importe quelle plante à la place.

En bref :

Dans cette expérience, vous apprendrez à protéger vos plantes et à vous assurer qu'elles survivent, ainsi qu'à utiliser la magie Arduino.

En surveillant l'humidité, la température et la lumière, vous pouvez vous assurer que vos plantes sont heureuses. Il peut envoyer quotidiennement des e-mails et des graphiques et vous informer de ses besoins.

Composants

  • Capteur de température TMP36
  • Phototransistor
  • Capteur d'humidité DIY

Objectifs d'apprentissage

  • Présentation du service Internet Zapier
  • Envoi de requêtes HTTP
  • Gestion de l'horloge en temps réel et des alarmes
  • Créer un capteur d'humidité DIY
  • Tracer des valeurs avec thingSpeak #ProTips
  • Stylisez votre e-mail avec HTML et CSS #ProTips
  • Testez les API avec PostMan #ProTips

Vous voulez en savoir plus ?

Ce tutoriel fait partie d'une série d'expériences qui vous familiarisent avec le MKR1000 et l'IoT. Toutes les expériences peuvent être construites à l'aide des composants contenus dans le MKR IoT Bundle.

  • Oreiller Love You
  • Boîte à énigmes
  • Le chat de Pavlov
  • Le nerd
  • Communicateur d'usine

Configurer Zapier

Zapier est un outil d'automatisation en ligne qui peut facilement gérer les API d'autres applications pour nous. C'est un excellent outil pour combiner plusieurs tâches ou si l'application que nous voulons utiliser a une API complexe qui ne peut pas être gérée par un Arduino.

Dans notre cas, nous l'utiliserons pour envoyer un e-mail avec les données récupérées de l'Arduino.

Suivez ces quelques étapes simples pour créer votre propre zap !

Pour continuer, nous devons d'abord tester notre hook en copiant l'URL donnée, puis en sélectionnant le bouton Test and Review qui apparaît lorsque vous appuyez sur Continuer. Ajoutez ces paramètres à l'URL :

custom_webhook_URL?temperature=0&moisture=0&light=0&warning=0

Maintenant, copiez et collez cette URL sur une nouvelle page de navigateur.

Vous devriez voir une réponse comme celle-ci :

Toutes nos félicitations! Vous venez d'envoyer une requête http !

C'est exactement ce que nous allons faire avec notre carte Arduino. Mais au lieu de coller cette URL dans une page de navigateur, nous l'enverrons directement au serveur Zapier. Nous allons également modifier les valeurs des paramètres qui sont maintenant mis à zéro avec les valeurs de nos capteurs.

Pour une manière plus avancée de tester et de travailler avec l'API, consultez le #ProTip en bas de la page.

Après avoir testé votre demande, vous pouvez continuer à créer le Zap.

Procédez à l'édition avec le Do This...

Vérifiez votre boîte aux lettres pour voir l'e-mail généré par Zapier. Il proviendra du compte que vous avez utilisé lors de la première étape de la configuration de gmail.

Mettre en place le Conseil

Afin de mettre en œuvre toutes les fonctionnalités, nous allons utiliser les bibliothèques suivantes :

  • WiFi101 // pour se connecter à internet et scanner les réseaux
  • RTCZero // pour gérer les événements déclenchés par le temps

Vous pouvez les télécharger depuis le gestionnaire de bibliothèque comme expliqué dans ce guide.

Pour utiliser l'API de Zapier, nous devons d'abord télécharger les certificats sur le MKR1000. Cela s'applique à la plupart des services en ligne et des API !

Téléchargez l'exemple Firmware Updater de la bibliothèque WiFi101 et ajoutez hooks.zapier.com aux domaines.

> exemples> WiFi101> FirmwareUpdater  

Si vous utilisez l'éditeur Web Arduino, cette fonctionnalité n'est pas encore implémentée et vous devez le faire via Application de bureau Arduino.

Envoi d'une requête HTTP

Nous sommes maintenant prêts à envoyer la requête HTTP depuis la carte Arduino.

Pour l'instant, nous allons définir une valeur arbitraire pour notre paramètre qui sera plus tard remplacée par des valeurs de capteur réelles.

 température du flotteur =22 ; humidité int =150; lumière int =40; String warning ="Ceci est un message d'avertissement" ; avertissement.replace(" ", "%20");  

Notez que la chaîne doit être encodée , car les espaces vides ne peuvent pas être envoyés dans une requête HTTP. Tous les espaces vides sont remplacés par l'équivalent codé %20

Après avoir configuré nos paramètres, nous appellerons le send_email() fonction, qui les convertira tous en chaînes et reconstruira la même URL que nous avons utilisée auparavant pour ensuite le poster sur le serveur Zapier.

Remplissez ce croquis avec vos identifiants WiFi et l'URL que vous avez reçue de Zapier et téléchargez.

#include  #include const char* ssid =SECRET_SSID; // votre réseau SSID (nom) const char* mot de passe =SECRET_PSWD; // votre mot de passe réseau String httpsRequest =SECRET_REQUEST; // votre URL Zapier const char* host ="hooks.zapier.com"; Client WiFiSSLClient ; void setup() { Serial.begin(9600); tandis que (!Série); retard (2000); Serial.print("Connexion Wifi :"); Serial.println(ssid); while (WiFi.begin(ssid, mot de passe) !=WL_CONNECTED) { Serial.print("."); retard (500); } Serial.println(""); Serial.println("Wi-Fi connecté"); } boucle vide() { température flottante =22; humidité int =150; lumière int =40; String warning ="Ceci est un message d'avertissement" ; avertissement.replace(" ", "%20"); send_email(température, humidité, lumière, avertissement ); delay(20000) } void send_email(float temperature, int humidité, int light, String warning) { // convertir les valeurs en String String _temperature =String(temperature); String _moisture =String(humidité); String _light =String(lumière); Chaîne _warning =avertissement ; if (client.connect(host, 443)) { client.println("POST " + httpsRequest + "?temperature=" + _temperature + "&moisture=" + _moisture + "&light=" + _light + "&warning=" + _warning) + " HTTP/1.1"); client.println("Hôte : " + Chaîne(hôte)); client.println("Connexion :fermer"); client.println(); retard(1000); while (client.available()) { // Affiche sur la console la réponse du serveur char c =client.read(); Serial.write(c); } client.stop(); // Déconnexion du serveur } else { Serial.println("Échec de la connexion au client"); } }  

Il enverra un e-mail à l'adresse que vous choisissez toutes les 20 secondes.

Attention aux demandes, Zapier ne vous permet que 100 demandes gratuites par mois.

RTC et alarmes

Nous pouvons utiliser l'horloge temps réel du MKR1000 pour envoyer un e-mail tous les jours à une certaine heure.

Ce croquis réglera l'heure et la date à 16h00 du 4 décembre 2017 puis déclenchera une alarme tous les jours à 16h01.

Notez que puisque l'alarme est associée à une interruption fonction nous ne pouvons pas inclure de retards , mais nous pouvons utiliser une variable booléenne pour déclencher des actions dans la loop()

#include  RTCZero rtc ; // crée un objet RTC /* Modifiez ces valeurs pour définir l'heure initiale actuelle */ const byte seconds =0; octet const minutes =0 ; octet const heures =16 ; /* Modifiez ces valeurs pour définir la date initiale actuelle */ const byte day =4; octet const mois =12 ; octet const année =17 ; bool email_already_sent =false; void setup() { Serial.begin(9600); tandis que (!Série); retard (2000); rtc.begin(); // initialise le format RTC 24H rtc.setTime(heures, minutes, secondes); rtc.setDate(jour, mois, année); rtc.setAlarmTime (16, 1, 0); // Définissez l'heure à laquelle Arduino doit envoyer l'e-mail rtc.enableAlarm(rtc.MATCH_HHMMSS); rtc.attachInterrupt(alarmMatch); } void loop() { if (!email_already_sent) { // send_email(); email_already_sent =vrai ; } } void alarmMatch() { // déclenché lorsque l'alarme se déclenche Serial.println("Alarm Match!"); email_already_sent =false; }  

Capteur d'humidité du sol bricolage

Deux fils placés dans le pot de terre forment une résistance variable, dont la résistance varie en fonction de l'humidité du sol .

Cette résistance variable est connectée dans une configuration de diviseur de tension, et Arduino collecte une tension proportionnelle à la résistance entre les 2 fils.

Cela signifie que plus le sol est humide, moins la tension sera mesurée à partir de l'Arduino.

Utilisation de la résistance 1 Méga Ohm et deux fils, nous pouvons créer notre capteur d'humidité du sol DIY !

En téléchargeant le croquis suivant, vous pouvez commencer à lire les valeurs du capteur, nous vous suggérons de commencer à le tester d'abord dans un sol sec et et notez la valeur que vous lisez.

Cette valeur sera utilisée pour définir un seuil afin que l'Arduino sache quand vos plantes ont besoin d'eau et vous envoie un e-mail d'urgence.

int humiditéPin =A2; // Réglez ce seuil en fonction de la résistance que vous avez utilisée // Le moyen le plus simple de calibrer cette valeur est de tester le capteur dans un sol sec et humide int threeshold =800; void setup() { Serial.begin(9600); tandis que (!Série); retard (2000); } boucle vide() { Serial.println(get_average_moisture()); retard (5000); } int get_average_moisture() { // faire une moyenne de 10 valeurs pour être plus précis int tempValue =0; // variable pour stocker temporairement la valeur d'humidité pour (int a =0; a <10; a++) { tempValue +=analogRead(moisturePin); retard (100); } return tempValue / 10; }  

Ajouter un capteur de température et de lumière

Voir le schéma ci-dessous pour câbler les deux capteurs. Nous allons utiliser ces deux fonctions pour lire les valeurs des capteurs :

float get_temperature(){ int lecture =analogRead(A1) ; tension flottante =lecture * 3,3 ; tension /=1024,0 ; // Imprimer la température en Celsius float temperatureC =(voltage - 0.5) * 100; // conversion de 10 mv par degré avec un décalage de 500 mV // Convertir en Fahrenheit float temperatureF =(temperatureC * 9,0 / 5,0) + 32,0 ; température de retourC; } int get_light(){ int light_value=analogRead(A0) ; return light_value; }  

Notez que vous pouvez utiliser les unités Fahrenheit en retournant temperatureF au lieu de températureC

#ProTip :Tracer des valeurs à l'aide de ThingSpeak

Pour tous les amateurs de contrôle, voici les instructions pour tracer toutes les données collectées dans un beau graphique comme celui-ci :

Nous utiliserons la plate-forme ThingSpeak pour tracer des graphiques, suivez ces étapes pour commencer.

Téléchargez la bibliothèque ThingSpeak et commençons. Ce croquis ci-dessous téléchargera les valeurs des capteurs sur le cloud chaque minute, il vous suffit de renseigner vos informations d'identification WiFi et les clés API de votre chaîne et de les télécharger.

#include  #include #include "ThingSpeak.h" const char* ssid =SECRET_SSID; // votre réseau SSID (nom) const char* mot de passe =SECRET_PSWD; // votre mot de passe réseau WiFiClient ThingSpeakClient; myChannelNumber long non signé =356392 ; const char * myWriteAPIKey =SECRET_WRITE_API; int lightPin =A0; //la broche analogique sur laquelle le capteur de lumière est connecté int tempPin =A1; //la broche analogique La broche Vout (sens) du TMP36 est connectée à int wetPin =A2; void setup() { Serial.begin(9600); tandis que (!Série); retard (2000); Serial.print("Connexion Wifi :"); Serial.println(ssid); while (WiFi.begin(ssid, mot de passe) !=WL_CONNECTED) { Serial.print("."); retard (500); } Serial.println(""); Serial.println("Wi-Fi connecté"); ThingSpeak.begin(ThingSpeakClient);} void loop() { ThingSpeak.setField(1, get_light()); ThingSpeak.setField(2, get_temperature()); ThingSpeak.setField(3, get_average_moisture()); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); Serial.println("message envoyé au cloud"); retard (60000); // envoie des valeurs toutes les 1 minute } float get_temperature() { int lecture =analogRead(tempPin); tension flottante =lecture * 3,3 ; tension /=1024,0 ; // Imprimer la température en Celsius float temperatureC =(voltage - 0.5) * 100; // conversion de 10 mv par degré avec un décalage de 500 mV // Convertir en Fahrenheit float temperatureF =(temperatureC * 9,0 / 5,0) + 32,0 ; température de retourC; }int get_average_moisture() { // faire une moyenne de 10 valeurs pour être plus précis int tempValue =0; // variable pour stocker temporairement la valeur d'humidité pour (int a =0; a <10; a++) { tempValue +=analogRead(moisturePin); retard(10) ; } return tempValue / 10; } int get_light() { int light_value =analogRead(A0) ; return light_value; }  

Dans le esquisse Pro complète ci-dessous vous pouvez voir comment attacher ce téléchargement à une alarme RTC qui se déclenche toutes les minutes.

Malheureusement, Gmail ne nous permet pas d'intégrer graphiques et iframes dans le corps de l'e-mail, mais nous pouvons envoyer le lien par e-mail dans un beau bouton, voir l'astuce ci-dessous.

Nous avons choisi ThingSpeak, mais il existe des tonnes d'alternatives ! Jetez un œil à Dweet.io et freeboard.io par exemple.

#Astuce de pro :stylisez votre e-mail

Zapier nous permet d'intégrer du code html et css dans le corps de l'e-mail. Nous pouvons l'utiliser pour envoyer un e-mail assez stylisé comme celui-ci :

Pour obtenir ce résultat, changez simplement le type de corps en html sur l'interface Zapier et ajoutez votre code HTML et CSS personnalisé.

Copiez et collez ce modèle :

       

BONJOUR !

Voici votre mise à jour quotidienne sur votre jardin ☘

♨ Température :{{querystring__temperature}} C
☔ Humidité :{{_querystring__moisture}}
☀ ; Lumière :{{querystring__light}}
{{querystring__warning}}
VOIR LE GRAPHIQUE

#ProTip :Testez l'API avec PostMan

Travailler avec une requête HTTP peut être difficile, heureusement, il existe de nombreux outils qui peuvent nous aider à créer l'URL dont nous avons besoin.

Le facteur est un bon exemple :

Il suffit de coller l'URL initiale donnée par Zapier, d'ajouter des paramètres et de l'envoyer. Il imprimera la réponse du serveur et composera l'URL pour vous.

Code

Esquisse complète
Croquis complet de #ProTips

Schémas


Processus de fabrication

  1. Composants de circuit
  2. Engrais
  3. Présentation d'une usine fiable
  4. MOSMusique
  5. Qu'est-ce que l'entretien des plantes ?
  6. Tirer le meilleur parti des usines de produits chimiques en vrac
  7. Composants de perceuse
  8. Comprendre la maintenance de l'usine
  9. Composants du moteur à combustion interne