Sistema de monitoreo de plantas con AWS IoT
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
|
Aplicaciones y servicios en línea
| ||||
| ||||
| ||||
| ||||
| ||||
|
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 (wetValueArduinoYunDweetio 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
Proceso de manufactura
- C # usando
- Monitoreo remoto del clima usando Raspberry Pi
- Botón de AWS IoT controlado por movimiento
- Cómo construir una operación más inteligente usando la tecnología IoT de monitoreo de tanques
- Sistema de gestión forestal IoT de doble propósito
- Sistema de monitoreo remoto de tanques de petróleo y diésel basado en IoT
- 8 beneficios del sistema de monitoreo de peso de flota basado en IoT
- Importancia de usar el monitoreo de activos habilitado por IoT en la industria de petróleo y gas
- Mejore el almacenamiento de leche con una pizca de IoT:sistema de control del nivel de leche
- Uso de un sistema de monitoreo de nivel de río alimentado por IoT para una gestión eficiente del agua
- El sistema permite la monitorización sin contacto del ritmo cardíaco mediante altavoces inteligentes