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

Système de surveillance d'usine utilisant AWS IoT

Composants et fournitures

Arduino Yun
× 1
Kit de démarrage Seeed Grove plus pour Intel Edison
Utilisation du bouclier et du capteur de température et de lumière du kit
× 1
Seed Grove - Capteur d'humidité
× 1
LED 5 mm :Rouge
× 1
Résistance 330 ohm
× 1

Outils et machines nécessaires

Imprimante 3D (générique)

Applications et services en ligne

Amazon Web Services AWS IoT
Amazon Web Services AWS IAM
Amazon Web Services AWS DynamoDB
Amazon Web Services AWS SNS
dweet.io
Arduino IDE

À propos de ce projet

Imaginez que vous partez en vacances pendant environ une semaine et que vous vous inquiétez pour votre plante d'intérieur à la maison. Voici un excellent projet à réaliser une semaine avant de partir en vacances.

Créez vous-même un système de surveillance et de notification de l'usine avec la fonctionnalité suivante

  • Surveillez la température, la valeur lumineuse et la valeur d'humidité du sol à l'aide de dweet.io
  • OU en utilisant le nouveau service Amazon IoT pour enregistrer les données sur AWS - DynamoDB
  • Utilisez la notification AWS -SNS, pour vous envoyer un e-mail, afin que vous puissiez informer votre cousin/voisin d'arroser rapidement l'usine ou de vérifier votre thermostat à la maison.

De plus, j'ai conçu un boîtier imprimé en 3D, pour abriter l'Arduino Yun , le bouclier du bosquet et les capteurs.

Si vous souhaitez voir comment se porte mon usine, voici le lien 

http://dweet.io/follow/PlantMonitorTorontoON



Voici les étapes à suivre pour terminer la compilation 

#1 Construire le circuit   à l'aide du blindage de connecteur Grove  comme indiqué dans la section schématique du projet, connectez essentiellement le 

  • Capteur de température vers A0
  • Capteur d'humidité du sol vers A1
  • Capteur de lumière vers A2
  • Et en utilisant une résistance de 220 Ohms, connectez une LED à la broche 2 

#2 imprimer en 3D les fichiers STL , joint dans le   partie personnalisée et section boîtier , ici vous avez 3 fichiers STL à imprimer , réglez votre logiciel de tranchage sur hauteur de couche 0,3 mm et une densité de remplissage d' au moins 25 % ou supérieur

L'impression 3D devrait prendre environ 2 heures, alors téléchargez les fichiers STL et lancez votre imprimante 3D pendant que vous effectuez les autres étapes ci-dessous


 #3 Détermination de la valeur d'humidité du sol

Téléchargez le code ci-dessous (valeur d'humidité du sol) sur votre Arduino Yun et déterminez la tooDryValue dans le code ci-dessous. Fondamentalement, si la valeur de l'humidité du sol tombe en dessous de tooDryValue, vous devez arroser la plante. (et cette valeur est la valeur que vous utilisera dans la condition AWS-SNS pour envoyer un e-mail)

Voici la vidéo montrant la méthode que j'ai utilisée pour déterminer la valeur toodry

#4 Téléchargez le code Arduino sur Yun pour publier des données sur dweet.io

Maintenant, une fois que vous avez décidé de la valeur toodry , téléchargez le fichier ArduinoYunDweetIO.ino sur le Yun. Dans le cadre du code, remplacez également "PlantMonitorTorontoON" par quelque chose de plus significatif pour vous.

Voici une vidéo testant le téléchargement des données du capteur sur dweet.io


#5 Configuration de l'AWS CLI sur votre ordinateur (ici j'utilise un Mac)

Maintenant, pour enregistrer des données à l'aide d'AWS IoT dans DynaamoDB, vous devrez créer un compte sur https://aws.amazon.com/free, ici vous devrez également fournir les détails de votre carte de crédit, mais pour le tutoriel ci-dessous, vous ne devriez pas engager des frais (encore une fois, cela dépend de la région d'installation d'AWS)  

Une fois cela fait, créez un dossier "AWS " sur votre mac et suivez le lien ci-dessous pour télécharger et installer l'AWS CLI

http://docs.aws.amazon.com/iot/latest/developerguide/installing-aws-cli.html

J'utilise un mac, voici les instructions que j'ai suivies

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"$ unzip awscli-bundle.zip$ sudo ./awscli -bundle/install -i /usr/local/aws -b /usr/local/bin/aws 

Remarque :au terminal, vous devez être dans le dossier AWS que vous venez de créer

#6 Création d'un élément à l'aide de la CLI qui doit s'afficher dans la console AWS IoT

Nous allons maintenant créer un objet dans AWS IoT à l'aide de la commande suivante 

aws iot create-thing --thing-name "plantSystem" 

Pour plus d'informations, reportez-vous au lien

http://docs.aws.amazon.com/iot/latest/developerguide/create-thing.html


#7 Création de certificats 

Pour créer et activer les certificats dont vous aurez besoin, donnez la commande suivante

aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey .pem 

cette commande créera les certificats (3 fichiers pem) pour vous dans le dossier AWS comme indiqué dans la capture d'écran ci-dessous



#8 Créez et attachez une stratégie AWS IoT à vos certificats

Commencez par créer un fichier json dans le dossier AWS, en utilisant votre éditeur de texte préféré (je préfère le texte sublime 2) - nommez le fichier policy.json

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Autoriser", "Action":["iot:*"], "Resource":[ "*"] }]} 

Copiez ensuite la commande suivante dans votre éditeur de texte

aws iot create-policy --policy-name "PubSub" --policy-document file://./policy.json 


#9 Attacher la politique au certificat suivi de l'attachement du certificat à l'appareil

Donnez les commandes ci-dessous l'une après l'autre

$aws iot attach-principal-policy --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx" --policy-name "PubSub"$ aws iot attach-thing-principal --thing-name "PlantSystem" --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx" 

Voici un moyen simple d'obtenir votre certificat arn si vous ne l'avez pas noté est d'aller sur la console AWS IoT, cliquez sur votre certificat et accédez aux détails sur le côté droit de votre écran. De là, vous pouvez copier coller l'arn vers le terminal



Pour plus d'informations, reportez-vous à la documentation sur 

http://docs.aws.amazon.com/iot/latest/developerguide/secure-communication.html

# 10 Vérifier/tester votre configuration sur votre ordinateur et la tester à l'aide de MQTT.fx

Maintenant, pour prétendre que la configuration est effectuée sur votre ordinateur, téléchargez et installez MQTT.fx à partir du lien ci-dessous pour tester si la configuration fonctionne et si nous sommes en mesure de publier et de souscrire des données via AWS IoT

http://mqttfx.jfx4ee.org/index.php/download

Pour plus d'informations sur la configuration et pour télécharger le certificat racine, utilisez le lien ci-dessous

http://docs.aws.amazon.com/iot/latest/developerguide/verify-pub-sub.html

- ici dans MQTT.fx, vous devrez configurer votre profil de connexion

- et liez vos certificats que vous avez téléchargés dans le cadre des étapes ci-dessus

Voici une vidéo rapide qui montre comment vous pouvez tester votre configuration sur votre ordinateur qui, dans mon cas, est un MAC à l'aide de l'outil MQTT.fx.



Une fois que vous avez terminé et vérifié que votre configuration est correcte, suivez les étapes ci-dessous pour télécharger le certificat sur l'Arduino Yun

#11 Configuration de l'Arduino Yun pour communiquer avec le cloud AWS IoT

Téléchargez la dernière version du SDK Arduino Yun à partir de github et décompressez-la dans votre dossier "Bibliothèques" Arduino 

https://github.com/aws/aws-iot-device-sdk-arduino-yun

Si vous utilisez l'Arduino Yun pour la première fois, suivez les instructions de configuration sur

https://www.arduino.cc/en/Guide/ArduinoYun

En gros, en utilisant le lien, vous apprendrez comment configurer l'Arduino Yun pour se connecter au réseau WiFi domestique.

Chargez ensuite l'esquisse de l'exemple de processus Arduino IDE sur votre YUN (Fichier-> Exemples-> Pont -> Processus), cela confirmera que le Yun a accès à Internet 

Mettez votre fichier rootCA, votre clé privée et votre certificat dans le dossier certs comme indiqué dans la capture d'écran ci-dessous


Modifiez ensuite codebase_upload.sh et environment_setup.sh et remplacez [your_boards_IP] par l'adresse IP de votre forum et [your_boards_IP] par votre mot de passe

Dans votre terminal, exécutez les commandes suivantes pour autoriser les fichiers .sh, cela prendra environ 5 à 10 minutes, ce qui déplace les certificats et installe les distributions, python-openssl, pip, paho-mqtt sur le Yun. Ce sont les packages dont vous avez besoin pour communiquer avec le cloud AWS à partir de votre Yun (appelé le truc PlantSystem dans notre cas)

$chmod 755 codebase_upload.sh$./codebase_upload.sh$chmod 755 environment_setup.sh$./environment_setup.sh 



Pour l'installation sous Linux/Windows, suivez le lien sur 

https://github.com/aws/aws-iot-device-sdk-arduino-yun#installation


Maintenant, dans le cadre du prochain couple utilisant l'AWS CLI, nous allons créer une table dans DynamoDB pour publier les données du capteur

#12 Création d'un rôle IAM et octroi d'autorisations

Fondamentalement, pour entrer des données dans la table de capteurs DynamoDB que nous allons créer dans le cadre de l'étape suivante, nous devons créer une règle IoT qui agira sur le message MQTT reçu par AWS, pour cela nous devons créer un rôle et accorder les autorisations nécessaires

Créer un fichier json rolePolicy.json

{"Version":"2012-10-17", "Statement":[{ "Sid":"", "Effect":"Autoriser", "Principal":{ "Service":" iot.amazonaws.com" }, "Action":"sts:AssumeRole" }]} 

et pour créer le rôle exécutez la commande suivante dans le terminal

aws iam create-role --role-name iot-actions-role --assume-role-policy-document file://./rolePolicy.json 

Créez un autre fichier json policy.json

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Autoriser", "Action":[ "dynamodb:*", "lambda:InvokeFunction"] , "Ressource":["*"] }]} 


puis appelez create-policy et spécifiez le document de stratégie IAM

aws iam create-policy --policy-name iot-actions-policy --policy-document file://./policy.json 

Et enfin, attachez la stratégie au rôle en utilisant - modifiez le policy-ARN à l'ARN que vous avez reçu dans le cadre de l'étape précédente

aws iam attach-role-policy --role-name iot-actions-role --policy-arn "arn:aws:xxxxxxxxxxxxx:policy/iot-action-policy" 


http://docs.aws.amazon.com/iot/latest/developerguide/config-and-test-rules.html

#13 Configuration de la table dans DynamoDB dans la console AWS

Dans le cadre de cette étape, nous allons créer une DynamoDB dans la console AWS

Nom de la table :plantSensor

Clé de partition :clé

Clé de tri :horodatage

et définissez également vos unités de capacité de lecture et votre capacité d'écriture sur 1.

#14 Création d'une règle pour insérer des données dans la table PlantSensor

Créez un fichier json - plantdatarule.json (modifiez ici la valeur roleArn dans la section ci-dessous, accédez à IAM->Roles->iot-action-role pour obtenir l'arn)


{ "sql":"SELECT * FROM 'topic/plantdata'", "ruleDisabled":false, "actions":[{ "dynamoDB":{ "tableName":"plantSensor", "hashKeyField" :"key", "hashKeyValue":"${topic(2)}", "rangeKeyField":"timestamp", "rangeKeyValue":"${timestamp()}", "roleArn":"arn:aws:iam ::XXXXXXXXXXXX:role/iot-actions-role" } }]} 

puis lancez la commande suivante sur votre terminal

aws iot create-topic-rule --rule-name plantDataToDynamoDB --topic-rule-payload file://./plantdatarule.json 

Maintenant, si vous accédez à la console AWS IoT, vous devriez voir une règle créée appelée "PlantDataToDynamoDB" comme indiqué dans la capture d'écran ci-dessous (''ignorez la règle d'envoi d'e-mails qui fait partie des étapes ci-dessous.)

en utilisant MQTT.FX, exécutez un test rapide pour voir si les enregistrements sont créés dans la table créée.


#15 Chargez le sketch Arduino pour publier des données sur AWS IoT depuis le Yun

Ici, commencez par télécharger la bibliothèque ArduinoJSON à partir de github à l'adresse

https://github.com/bblanchon/ArduinoJson

Téléchargez maintenant les fichiers YunAWSIoTDynamoDB,ino et aws_iot_config.h à partir de la section de code ci-dessous et téléchargez-les sur le Yun.

Ouvrez votre moniteur série et vous devriez voir la température, la valeur de luminosité et la valeur d'humidité du sol affichées dans DynamoDB.

Si vous avez été AWS, vous pouvez faire toutes sortes de choses géniales en configurant la fonction Lambda et en publiant des données kinésie...

Remarque : Si vous envisagez d'en faire une configuration permanente, n'oubliez pas d'augmenter le délai à la fin de la boucle, pour augmenter l'intervalle de temps de publication sur DynamoDB afin de ne pas encourir de frais supplémentaires. Pour en savoir plus sur les tarifs, consultez la page https://aws.amazon.com/iot/pricing/


#16 Configuration d'une règle AWS-IoT SNS pour recevoir et envoyer des e-mails si la valeur de l'humidité du sol tombe en dessous d'un seuil.

Fondamentalement, cette étape comprend la configuration d'une base de notification SNS simple sur la règle AWS IoT.

Commencez par attribuer les stratégies suivantes au rôle AWS (iot-action-role) que vous avez créé à l'étape précédente dans la console IAM

-AmazonSNSRole

-AmazonSNSFullAccess

Une fois cela fait dans la console SNS, créez un sujet appelé sendMail et créez un abonnement et configurez votre e-mail sur votre téléphone pour être averti lorsque la valeur d'humidité du sol est FAIBLE.

Revenez maintenant à la console AWS IoT et en utilisant le bouton +Créer une ressource, créez une règle appelée Email Send et fournissez les informations suivantes

  • Nom :EmailEnvoyer
  •  Attribut :mositValue (cela doit correspondre à la valeur json que vous publiez dans le cadre de votre sujet dans le code Arduino)
  •  Filtre par sujet : sujet/données sur les plantes
  •  Condition :as moitval <250 (il s'agit de la valeur que vous avez déterminée au cours des premières étapes du didacticiel)
  • Choisissez l'action :envoyer le message en tant que notification push SNS
  • Cible SNS :sendEmail
  •  Rôle :iot-action-role

Une fois cela fait, votre console devrait ressembler à la capture d'écran ci-dessous

Voici un exemple d'e-mail que j'ai reçu lorsque j'ai retiré le capteur d'humidité du sol d'un verre d'eau




Pour en savoir plus sur AWS-SNS

https://aws.amazon.com/sns/faqs/

#15 Assembler les pièces imprimées en 3D et les ajouter au pot.

Vous aurez besoin d'une vis et d'un écrou 4x40 pour fixer la partie imprimée en 3D du poker de sol noir à la partie de base de l'Arduino Yun

La partie supérieure s'emboîte simplement, rappelez-vous ici de pointer l'ouverture supérieure vers votre fenêtre et d'injecter l'humidité du sol dans le pot.Et alimentez le Yun avec une prise de câble micro USB à une prise murale.

Veuillez noter que je suis toujours en train d'explorer et d'apprendre le monde génial d'AWS, et je suis impressionné par les fonctionnalités de la console AWS, donc si vous utilisez AWS depuis un certain temps, publiez un commentaire ou une suggestion pour la fonctionnalité que vous auriez aimé voir/applicable au projet de surveillance de l'usine.Merci ..


Code

  • SoilMoistureValue
  • ArduinoYunDweetio
  • ArduinoYunAWSIoTDynamodb
  • aws_iot_config.h
SoilMoistureValueArduino
Croquis Arduino pour déterminer la valeur d'humidité du sol idéale pour votre plante d'intérieur // Capteur d'humidité Grove connecté à A1 sur le Grove Shieldconst int ledPin =2;int moisturValue =0;int tooDryValue =250;//modifiez cette valeur en fonction de ce que vous obtenez avec void setup() {Serial.begin(9600); pinMode(ledPin,OUTPUT);digitalWrite(ledPin,LOW);}void loop() {moisturValue =analogRead(moisturePin);Serial.print("Moisture sensor =" );Serial.println(moisturValue); //Vérifiez la valeur avec le sable sec, puis avec le sable humide(moisturValue
ArduinoYunDweetioArduino
Publication des données du capteur sur dweet.io à l'aide d'Arduino Yun
//Créé par @CarmelitoA pour le projet House Plant Monitoring - téléchargement des données sur dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include #include #define SITE_URL "www.dweet.io"#include  //Ajouté pour les calculs de températureconst int humidityPin =A1; // Capteur d'humidité Grove connecté à A1 sur le Grove Shieldconst int ledPin =2; //Indicateur LEDint MoisturValue =0; // variable pour stocker la valeur provenant du sensorconst int tooDryValue =500; // CHANGEZ cette valeur en fonction de vos tests de la quantité d'humidité que le sol devrait avoir, moins cette valeur allumera la LED, ce qui signifie que vous devez arroser le flotteur aussiLowTemp =20 ; //CHANGER la température en degrés C en fonction du type de votre plante d'intérieur, si la température est inférieure à la valeur, la LED deviendra rouge // Capteur de température defsconst int B=4275 ; // Valeur B de la thermistorconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Capteur de température connecté à A5//Light Sensorconst int lightPin =A2; non signé long lastConnectionTime =0 ; const unsigned long postingInterval =10L * 1000L;void setup(){ Bridge.begin(); Serial.begin(9600); pinMode (ledPin, SORTIE); digitalWrite (ledPin, LOW); Serial.begin(9600); tandis que (!Série); // attendre une connexion série - désactiver ceci après le déploiement} void loop(){ YunClient c;if (millis() - lastConnectionTime> postingInterval) { moisturValue =analogRead(moisturePin); Serial.print("sensor =" ); Serial.println(moisturValue); //Vérifiez la valeur avec du sable sec puis avec du sable humide //Calcul de la température en degrés C int a =analogRead(pinTempSensor); flottant R =1023,0/((float)a)-1,0 ; R =100000.0*R; float temperature=1.0/(log(R/100000.0)/B+1/298.15)-273.15;//convertir en température via la fiche technique ; Serial.print("temperature ="); Serial.println(température); //calcul de la valeur de la lumière int lightValue =analogRead(lightPin); Serial.print("valeur de lumière ="); Serial.println(lightValue); // allumer la LED si la valeur du capteur est supérieure à tooDryValue ou tooLowTemp if(moisturValue  
ArduinoYunAWSIoTDynamodbArduino
sketch pour publier les données du capteur sur AWS -DynamoDB , vous devrez également ajouter le aws_iot_config.h en tant que nouvel onglet dans l'IDE Arduino.
//Créé par @CarmelitoA 01-16-2016 pour le projet House Plant Monitoring. N'hésitez pas à remixer et à modifier#include #include #include "aws_iot_config.h"#include char data[80];StaticJsonBuffer<200> jsonBuffer;//#define SITE_URL "www.dweet.io" //combinaison de YunClient.h avec cet exemple pour publier sur dweet provoquant des conflits, reportez-vous à ArduinoYunDweetio.ino#include  //Ajouté pour les calculs de températureconst int wetPin =A1; // Capteur d'humidité Grove connecté à A1 sur le Grove Shieldconst int ledPin =2;int moisturValue =0; // variable pour stocker la valeur provenant du sensorconst int tooDryValue =250; // CHANGEZ cette valeur en fonction de vos tests de la quantité d'humidité que le sol devrait avoir, moins cette valeur allumera la LED, ce qui signifie que vous devez arroser le flotteur aussiLowTemp =20 ; //CHANGER la température en degrés C en fonction du type de votre plante d'intérieur, si la température est inférieure à la valeur, la LED deviendra rouge // Capteur de température defsconst int B=4275 ; // Valeur B de la thermistorconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Capteur de température connecté à A5//Light Sensorconst int lightPin =A2; non signé long lastConnectionTime =0 ; const non signé long postingInterval =10L * 1000L ; //modifiez cette valeur pour augmenter l'intervalle de publication aws_iot_mqtt_client myClient ; // init iot_mqtt_clientchar msg[32]; // lecture-écriture bufferint cnt =0; // boucle countsint rc =-100; // valeur de retour placeholderbool success_connect =false; // s'il est connecté // Fonction de rappel de base qui affiche le messagevoid msg_callback(char* src, int len) { Serial.println("CALLBACK:"); int je; for(i =0; i  
aws_iot_config.hArduino
Add as a new tab in the Arduino IDE
/* * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. Tous les droits sont réservés. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. *///@carmelitoA modified the value for the plant monitoring project#ifndef config_usr_h#define config_usr_h// Copy and paste your configuration into this file//===============================================================#define AWS_IOT_MQTT_HOST "XXXXXXXXXXX.iot.us-west-2.amazonaws.com" // your endpoint#define AWS_IOT_MQTT_PORT 8883 // your port#define AWS_IOT_CLIENT_ID "clientYun2" // your client ID#define AWS_IOT_MY_THING_NAME "PlantSystem" // your thing name#define AWS_IOT_ROOT_CA_FILENAME "rootCA.pem" // your root-CA filename#define AWS_IOT_CERTIFICATE_FILENAME "cert.pem" // your certificate filename#define AWS_IOT_PRIVATE_KEY_FILENAME "privateKey.pem" // your private key filename//===============================================================// SDK config, DO NOT modify it#define AWS_IOT_PATH_PREFIX "./certs/"#define AWS_IOT_ROOT_CA_PATH AWS_IOT_PATH_PREFIX AWS_IOT_ROOT_CA_FILENAME // use this in config call#define AWS_IOT_CERTIFICATE_PATH AWS_IOT_PATH_PREFIX AWS_IOT_CERTIFICA TE_FILENAME // use this in config call#define AWS_IOT_PRIVATE_KEY_PATH AWS_IOT_PATH_PREFIX AWS_IOT_PRIVATE_KEY_FILENAME // use this in config call#endif

Pièces et boîtiers personnalisés

Schémas

Connect the sensors to the Grove starter kit that is
- Temperature sensor to A0
- Soil Moisture sensor to A1
- Light sensor to A2

In addition, using a 220 Ohms resistor connect an LED to pin#2. Connect the
Temperature sensor to A0
Soil Moisture sensor to A1
Light sensor to A2
And using a 220 Ohms resistor connect an LED to pin#2

Processus de fabrication

  1. C# en utilisant
  2. Surveillance à distance de la météo à l'aide de Raspberry Pi
  3. Bouton AWS IoT à contrôle de mouvement
  4. Comment créer une opération plus intelligente à l'aide de la technologie IoT de surveillance des réservoirs
  5. Système de gestion forestière IoT à double usage
  6. Système de surveillance à distance des réservoirs d'huile et de diesel basé sur l'IdO
  7. 8 avantages du système de surveillance du poids de la flotte basé sur l'IoT
  8. Importance de l'utilisation de la surveillance des actifs compatible IoT dans l'industrie pétrolière et gazière
  9. Améliorez le stockage du lait avec une pincée d'IoT :système de surveillance du niveau de lait