Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema de monitoreo de plantas con AWS IoT

Componentes y suministros

Arduino Yun
× 1
Kit de inicio de Seeed Grove más para Intel Edison
Uso del protector y el sensor de temperatura y luz del kit
× 1
Seeed Grove - Sensor de humedad
× 1
LED de 5 mm:rojo
× 1
Resistencia de 330 ohmios
× 1

Herramientas y máquinas necesarias

Impresora 3D (genérica)

Aplicaciones y servicios en línea

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

Acerca de este proyecto

Imagínese que se va de vacaciones durante una semana más o menos y está preocupado por la planta de su casa en casa. Aquí hay un gran proyecto para tomar una semana antes de salir de vacaciones.

Cree usted mismo un sistema de notificación y monitoreo de la planta con la siguiente característica

  • Controle la temperatura, el valor de luz y el valor de humedad del suelo usando dweet.io
  • O usando el nuevo servicio Amazon IoT para registrar datos en AWS - DynamoDB
  • Utilice la notificación AWS -SNS para enviarse un correo electrónico a sí mismo, de modo que pueda informar a su primo / vecino para que riegue rápidamente la planta o controle el termostato de su casa.

Además, he diseñado una carcasa impresa en 3D para albergar el Arduino Yun, el escudo y los sensores de grove.

Si está interesado en ver cómo le está yendo a mi planta, aquí está el enlace

http://dweet.io/follow/PlantMonitorTorontoON



Estos son los pasos que deberá realizar para completar la compilación

# 1 Construye el circuito usando el protector del conector Grove como se muestra en la sección esquemática del proyecto, básicamente conecte el

  • Sensor de temperatura a A0
  • Sensor de humedad del suelo a A1
  • Sensor de luz a A2
  • Y usando una resistencia de 220 ohmios, conecte un LED al pin n. ° 2

# 2 imprime en 3D los archivos STL, adjunto en el sección de envolvente y pieza personalizada , aquí tiene 3 archivos STL para imprimir, configure su software de corte en 0.3 mm de altura de capa y una densidad de relleno de al menos un 25% o superior

La impresión 3D debería tardar unas 2 horas, así que descargue los archivos STL y encienda su impresora 3D mientras completa los otros pasos a continuación


N.º 3 Determinación del valor de humedad del suelo

Cargue el código adjunto a continuación (valor de humedad del suelo) a su Arduino Yun y determine el tooDryValue en el código a continuación. Básicamente, si el valor de la humedad del suelo cae por debajo de tooDryValue, debe regar la planta (y este valor es el valor que usted necesita). utilizará en la condición AWS-SNS para enviar un correo electrónico)

Aquí está el video que muestra el método que utilicé para determinar el valor de toodry

# 4 Sube el código Arduino a Yun para publicar datos en dweet.io

Ahora, una vez que haya decidido el valor de toodry, cargue el archivo ArduinoYunDweetIO.ino en Yun, y como parte del código también reemplace "PlantMonitorTorontoON" por algo más significativo para usted.

Aquí hay un video que prueba la carga de datos del sensor a dweet.io


N.º 5 Configuración de la AWS CLI en su computadora (aquí estoy usando una Mac)

Ahora, para registrar datos usando AWS IoT en DyanamoDB, deberá crear una cuenta en https://aws.amazon.com/free, aquí también deberá proporcionar los detalles de su tarjeta de crédito, pero para el tutorial a continuación no debe incurrir en cualquier costo (nuevamente, esto depende de la región de configuración de AWS)

Una vez hecho esto, cree una carpeta " AWS "en su mac y siga el enlace a continuación para descargar e instalar AWS CLI

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

Estoy usando una mac, aquí están las instrucciones que seguí

  $ 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  

Nota:en la terminal debe estar en la carpeta de AWS que acaba de crear

# 6 Creando algo usando la CLI que debería mostrarse en la consola de AWS IoT

Ahora crearemos algo en AWS IoT usando el siguiente comando

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

Para obtener más información, consulte el enlace

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


# 7 Creación de certificados

Para crear y activar los certificados que necesitará, dé el siguiente comando

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

este comando creará los certificados (archivos de 3 pem) para usted en la carpeta AWS como se muestra en la captura de pantalla a continuación



N.º 8 Cree y adjunte una política de AWS IoT a sus certificados

Comience creando un archivo json en la carpeta AWS, usando su editor de texto favorito (prefiero texto sublime 2) - nombre el archivo policy.json

  {"Versión":"2012-10-17", "Declaración":[{"Efecto":"Permitir", "Acción":["iot:*"], "Recurso":[ "*"]}]}  

Luego copie y pegue el siguiente comando en su editor de texto

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


# 9 Adjunte la política al certificado y luego adjunte el certificado al dispositivo

Da los siguientes comandos uno tras otro

  $ aws iot attach-principal-policy --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx" --nombre de política "PubSub" $ aws iot attach-thing-principal --nombre-de-algo "PlantSystem" --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx"  

Aquí una manera fácil de obtener su certificado y si no lo ha anotado es ir a la consola de AWS IoT, hacer clic en su certificado y acceder a los detalles en el lado derecho de la pantalla. Desde aquí puedes copiar y pegar el arn al terminal



Para obtener más información, consulte la documentación en

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

# 10 Verificar / probar su configuración en su computadora y probarla usando MQTT.fx

Ahora, para afirmar que la configuración se realizó en su computadora, descargue e instale MQTT.fx desde el enlace a continuación para probar si la configuración está funcionando y si podemos publicar y suscribir datos a través de AWS IoT

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

Para obtener más información de configuración y descargar el certificado raíz, use el enlace a continuación

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

- aquí en MQTT.fx tendrá que configurar su perfil de conexión

- y vincule sus certificados que descargó como parte de los pasos anteriores

Aquí hay un video rápido que muestra cómo puede probar su configuración en su computadora, que en mi caso es una MAC usando la herramienta MQTT.fx.



Una vez que haya completado y probado que su configuración está bien, siga los pasos a continuación para cargar el certificado en Arduino Yun

# 11 Configuración de Arduino Yun para comunicarse con la nube de AWS IoT

Descargue la última versión del SDK de Arduino Yun desde github y descomprímalo en la carpeta "Bibliotecas" de Arduino

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

Si está utilizando Arduino Yun por primera vez, siga las instrucciones de configuración en

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

Básicamente, utilizando el enlace, aprenderá cómo configurar Arduino Yun para conectarse a la red WiFi doméstica.

Luego cargue el IDE de Arduino del bosquejo del ejemplo de proceso en su YUN (Archivo-> Ejemplos-> Puente -> Proceso), esto confirmará que el Yun tiene acceso a Internet

Coloque su archivo rootCA, clave privada y certificado en la carpeta certs como se muestra en la captura de pantalla a continuación


A continuación, modifique codebase_upload.sh y environment_setup.sh y reemplace [your_boards_IP] con la dirección IP de su tablero y [your_boards_IP] con su contraseña

En su terminal, ejecute los siguientes comandos para dar permiso a los archivos .sh, esto tomará entre 5 y 10 minutos, lo que mueve los certificados y las instalaciones distribuyen, python-openssl, pip, paho-mqtt en Yun. Estos son los paquetes que necesita para comunicarse con la nube de AWS desde su Yun (también conocido como PlantSystem en nuestro caso)

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



Para la instalación en Linux / Windows, siga el enlace en

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


Ahora, como parte de la próxima pareja que usa AWS CLI, crearemos una tabla en DynamoDB para publicar los datos del sensor

N.º 12 Creación de una función de IAM y concesión de permisos

Básicamente, para ingresar datos en la tabla de sensores de DynamoDB que vamos a crear como parte del siguiente paso, necesitamos crear una regla de IoT que actuará sobre el mensaje MQTT recibido por AWS, para esto necesitamos crear un rol y otorgar es necesario permisos

Cree un archivo json rolePolicy.json

  {"Version":"2012-10-17", "Statement":[{"Sid":"", "Effect":"Allow", "Principal":{"Service":" iot.amazonaws.com "}," Acción ":" sts:AssumeRole "}]}  

y para crear el rol ejecute el siguiente comando en la terminal

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

Cree otro archivo json policy.json

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


luego llame a create-policy y especifique el documento de política de IAM

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

Y finalmente adjunte la política al rol usando - modifique el ARN de la política al ARN que recibió como parte del paso anterior

  aws iam attach-role-policy --nombre de rol 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 Configuración de la tabla en DynamoDB en la consola de AWS

Como parte de este paso, crearemos un DynamoDB en la consola de AWS

Nombre de la tabla:plantSensor

Clave de partición:clave

Ordenar clave:marca de tiempo

y también establezca las unidades de capacidad de lectura y la capacidad de escritura en 1.

# 14 Creación de una regla para insertar datos en la tabla PlantSensor

Cree un archivo json:plantdatarule.json (aquí modifique el valor de roleArn en la sección a continuación, vaya a IAM-> Roles-> iot-action-role para obtener el arn)


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

luego ejecute el siguiente comando en su terminal

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

Ahora, si va a la consola de AWS IoT, debería ver una regla creada llamada "PlantDataToDynamoDB" como se muestra en la captura de pantalla a continuación ('' ignore la regla de envío de correo electrónico, esto viene como parte de los pasos a continuación).

utilizando MQTT.FX, ejecute una prueba rápida para ver si se están creando registros en la tabla creada.


# 15 Cargue el boceto de Arduino para publicar datos en AWS IoT desde Yun

Aquí el primer comienzo descargando la biblioteca ArduinoJSON de github en

https://github.com/bblanchon/ArduinoJson

Ahora descargue los archivos YunAWSIoTDynamoDB, ino y aws_iot_config.h de la sección de código a continuación y cárguelo en Yun.

Abra su monitor serial y debería ver la temperatura, el valor de luz y el valor de humedad del suelo publicados en DynamoDB.

Si ha sido AWS, puede hacer todo tipo de cosas increíbles configurando la función Lambda y publicando kinesis de datos ...

Nota: Si planea hacer de esto una configuración permanente, no olvide aumentar el retraso al final del ciclo, para aumentar el intervalo de tiempo de publicación en DynamoDB para que no incurra en costos adicionales. Para obtener más información sobre precios, consulte https://aws.amazon.com/iot/pricing/


# 16 Configuración de una regla AWS-IoT SNS para recibir un correo electrónico si el valor de la humedad del suelo cae por debajo de un umbral.

Básicamente, este paso incluye configurar una base de notificación de SNS simple en la regla de AWS IoT.

Comience asignando las siguientes políticas al rol de AWS (iot-action-role) que creó en el paso anterior en la consola de IAM

-AmazonSNSRole

-AmazonSNSFullAccess

Una vez hecho esto en la consola de SNS, cree un tema llamado sendMail y cree una suscripción y configure su correo electrónico en su teléfono para recibir una notificación cuando el valor de humedad del suelo sea BAJO.

Ahora regrese a la consola de AWS IoT y, con el botón + Crear recurso, cree una regla llamada Envío de correo electrónico y proporcione la siguiente información

  • Nombre:EmailSend
  • Atributo:mositValue (debe coincidir con el valor json que está publicando como parte de su tema en el código Arduino)
  • Filtro de tema:topic / plantdata
  • Condición:como valor húmedo <250 (este es el valor que determinó en los primeros pasos del tutorial)
  • Elija Acción:enviar mensaje como notificación push SNS
  • Objetivo de SNS:sendEmail
  • Rol:iot-action-role

Una vez hecho esto, su consola debería verse como la captura de pantalla a continuación

Aquí hay un correo electrónico de muestra que recibí cuando quité el sensor de humedad del suelo de un vaso de agua




Para leer más sobre AWS-SNS

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

# 15 Juntar las piezas impresas en 3D y agregarlas a la olla.

Necesitará un tornillo y una tuerca de 4x40 para fijar la pieza impresa en 3D del póquer de suelo negro a la parte de la base del Arduino Yun

La parte superior simplemente encaja a presión, aquí recuerde apuntar la abertura superior hacia su ventana y empujar la humedad del suelo en la olla. Y encienda el Yun con un enchufe de cable micro USB a un tomacorriente.

Tenga en cuenta que todavía estoy explorando y aprendiendo sobre el asombroso mundo de AWS, y estoy asombrado por las funciones de la consola de AWS, así que si ha estado usando AWS durante bastante tiempo, publique un comentario o sugerencia sobre la función que tendría. Me gustó ver / aplicable al proyecto de monitoreo de la planta. Gracias ..


Código

  • SoilMoistureValue
  • ArduinoYunDweetio
  • ArduinoYunAWSIoTDynamodb
  • aws_iot_config.h
SoilMoistureValue Arduino
Bosquejo de Arduino para determinar el valor ideal de humedad del suelo para la planta de su casa
 // @ CarmelitoA -Proyecto de monitoreo de plantas de la casa determinando el valor de humedad del sueloconst int humedadPin =A1; // Sensor de humedad Grove conectado a A1 en Grove Shieldconst int ledPin =2; int weturValue =0; int tooDryValue =250; // cambia este valor en función de lo que se te ocurra con void setup () {Serial.begin (9600); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, LOW);} bucle vacío () {valorHumedad =lectura analógica (PINHumedad); Serial.print ("Sensor de humedad ="); Serial.println (valorHumedad); // Verifique el valor con arena seca y luego con Wet Sandif (wetValue  
ArduinoYunDweetio Arduino
Publicar datos del sensor en dweet.io usando Arduino Yun
 // Creado por @CarmelitoA para el proyecto House Plant Monitoring:carga de datos en dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include  #include  #define SITE_URL "www.dweet.io" #include  // Agregado para cálculos de temperaturaconst intidityPin =A1; // Sensor de humedad Grove conectado a A1 en Grove Shieldconst int ledPin =2; // Indicador LEDint weturValue =0; // variable para almacenar el valor proveniente del sensorconst int tooDryValue =500; // CAMBIAR este valor basándose en sus pruebas de cuánta humedad debe tener el suelo, menos de este valor ENCENDERÁ el LED, lo que significa que necesita regar el flotador de la planta tooLowTemp =20; // CAMBIO, temperatura en grados C según el tipo de planta de su casa, si la temperatura es menor que el valor, el LED se volverá rojo // Sensor de temperatura defsconst int B =4275; // Valor B del termistorconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Sensor de temperatura conectado a A5 // Sensor de luzconst int lightPin =A2; unsigned long lastConnectionTime =0; const unsigned long postsInterval =10L * 1000L; void setup () {Bridge.begin (); Serial.begin (9600); pinMode (ledPin, SALIDA); digitalWrite (ledPin, BAJO); Serial.begin (9600); mientras (! Serial); // espere una conexión en serie - deshabilite esto después de la implementación} void loop () {YunClient c; if (millis () - lastConnectionTime> postInterval) {weturValue =analogRead (humedadPin); Serial.print ("sensor ="); Serial.println (valorHumectante); // Verifique el valor con arena seca y luego con arena húmeda // Calculando la temperatura en grados C int a =analogRead (pinTempSensor); flotante R =1023.0 / ((flotante) a) -1.0; R =100000,0 * R; temperatura de flotación =1.0 / (log (R / 100000.0) /B+1/298.15) -273.15; // convertir a temperatura mediante hoja de datos; Serial.print ("temperatura ="); Serial.println (temperatura); // calculando el valor de luz int lightValue =analogRead (lightPin); Serial.print ("valor de luz ="); Serial.println (lightValue); // encender el LED si el valor del sensor es demasiadoDryValue o tooLowTemp if (valorHumedad  
ArduinoYunAWSIoTDynamodb Arduino
sketch para publicar datos del sensor en AWS -DynamoDB, también deberá agregar aws_iot_config.h como una nueva pestaña en el IDE de Arduino.
 // Creado por @CarmelitoA 16/01/2016 para el proyecto House Plant Monitoring. Siéntase libre de remezclar y modificar # include  #include  #include "aws_iot_config.h" #include  char data [80]; StaticJsonBuffer <200> jsonBuffer; // # define SITE_URL "www.dweet.io" // Combinando YunClient.h con este ejemplo para publicar en dweet causando conflictos, consulte ArduinoYunDweetio.ino # include  // Agregado para cálculos de temperaturaconst intidityPin =A1; // Sensor de humedad Grove conectado a A1 en Grove Shieldconst int ledPin =2; int weturValue =0; // variable para almacenar el valor proveniente del sensorconst int tooDryValue =250; // CAMBIAR este valor basándose en sus pruebas de cuánta humedad debe tener el suelo, menos de este valor ENCENDERÁ el LED, lo que significa que necesita regar el flotador de la planta tooLowTemp =20; // CAMBIO, temperatura en grados C según el tipo de planta de su casa, si la temperatura es menor que el valor, el LED se volverá rojo // Sensor de temperatura defsconst int B =4275; // Valor B del termistorconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Sensor de temperatura conectado a A5 // Sensor de luzconst int lightPin =A2; unsigned long lastConnectionTime =0; intervalo de publicación largo sin firmar const =10L * 1000L; // cambie este valor para aumentar la publicación intervalaws_iot_mqtt_client myClient; // init iot_mqtt_clientchar msg [32]; // bufferint lectura-escritura cnt =0; // recuento de bucles rc =-100; // valor devuelto placeholderbool success_connect =false; // si está conectado // Función de devolución de llamada básica que imprime el mensaje void msg_callback (char * src, int len) {Serial.println ("CALLBACK:"); int i; para (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. Reservados todos los derechos. * * 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

Piezas y carcasas personalizadas

Esquemas

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

Proceso de manufactura

  1. C # usando
  2. Monitoreo remoto del clima usando Raspberry Pi
  3. Botón de AWS IoT controlado por movimiento
  4. Cómo construir una operación más inteligente usando la tecnología IoT de monitoreo de tanques
  5. Sistema de gestión forestal IoT de doble propósito
  6. Sistema de monitoreo remoto de tanques de petróleo y diésel basado en IoT
  7. 8 beneficios del sistema de monitoreo de peso de flota basado en IoT
  8. Importancia de usar el monitoreo de activos habilitado por IoT en la industria de petróleo y gas
  9. Mejore el almacenamiento de leche con una pizca de IoT:sistema de control del nivel de leche
  10. Uso de un sistema de monitoreo de nivel de río alimentado por IoT para una gestión eficiente del agua
  11. El sistema permite la monitorización sin contacto del ritmo cardíaco mediante altavoces inteligentes