Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Sistema de monitoramento da planta usando AWS IoT

Componentes e suprimentos

Arduino Yun
× 1
Seeed Grove starter kit plus para Intel Edison
Usando o escudo e o sensor de temperatura e luz do kit
× 1
Seeed Grove - Sensor de umidade
× 1
LED de 5 mm:Vermelho
× 1
Resistor 330 ohm
× 1

Ferramentas e máquinas necessárias

Impressora 3D (genérica)

Aplicativos e serviços online

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

Sobre este projeto


Imagine que você está saindo de férias por uma semana ou mais e está preocupado com a planta da sua casa em casa. Este é um ótimo projeto para realizar uma semana antes de sair de férias.

Construa você mesmo um sistema de monitoramento e notificação da planta com o seguinte recurso
  • Monitore a temperatura, o valor da luz e o valor da umidade do solo usando dweet.io
  • OU usando o novo serviço Amazon IoT para registrar dados no AWS - DynamoDB
  • Use a notificação AWS -SNS para enviar um e-mail para você mesmo, para que possa informar seu primo / vizinho para regar rapidamente a planta ou verificar seu termostato em casa.

Além disso, projetei um gabinete impresso em 3D para abrigar o Arduino Yun, o escudo do bosque e os sensores.

Se você estiver interessado em verificar como está a minha planta aqui está o link

http://dweet.io/follow/PlantMonitorTorontoON







Aqui estão as etapas que você precisará realizar para concluir a construção

# 1 Construa o circuito usando a blindagem do conector Grove como mostrado na seção esquemática do projeto, basicamente conecte o
  • Sensor de temperatura para A0
  • Sensor de umidade do solo para A1
  • Sensor de luz para A2
  • E usando um resistor de 220 Ohms, conecte um LED ao pino 2

# 2 Imprima os arquivos STL em 3D, anexado no peça personalizada e seção de gabinete , aqui você tem 3 arquivos STL para imprimir, defina seu software de corte para altura de camada de 0,3 mm e uma densidade de preenchimento de pelo menos 25% ou mais alto

A impressão 3D deve levar cerca de 2 horas, então baixe os arquivos STL e ligue sua impressora 3D enquanto conclui as outras etapas abaixo




# 3 Determinação do valor de umidade do solo

Carregue o código anexado abaixo (valor de umidade do solo) para seu Arduino Yun e determine o tooDryValue no código abaixo. Basicamente, se o valor da umidade do solo cair abaixo de tooDryValue, você precisa regar a planta. (E esse valor é o valor que você usará na condição AWS-SNS para enviar um e-mail)

Aqui está o vídeo mostrando o método que usei para determinar o valor toodry

# 4 Faça upload do código do Arduino para Yun para postar dados para dweet.io

Agora, depois de decidir sobre o toodryvalue, carregue o arquivo ArduinoYunDweetIO.ino no Yun e, como parte do código, substitua "PlantMonitorTorontoON" por algo mais completo e significativo para você.

Aqui está o vídeo testando o upload dos dados do sensor para dweet.io




# 5 Configurando AWS CLI em seu computador (aqui estou usando um Mac)

Agora, para registrar dados usando AWS IoT no DyanamoDB, você terá que criar uma conta em https://aws.amazon.com/free, aqui você também terá que fornecer os detalhes do seu cartão de crédito, mas para o tutorial abaixo você não deve incorrer em qualquer custo (mais uma vez, isso depende da região de configuração da AWS)

Uma vez feito isso, crie uma pasta " AWS "no seu mac e siga o link abaixo para baixar e instalar o AWS CLI

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

Estou usando um mac, aqui estão as instruções que segui
  $ 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:no terminal, você precisa estar na pasta AWS que acabou de criar

# 6 Criar algo usando a CLI que deve ser mostrado no console AWS IoT

Agora vamos criar algo no AWS IoT usando o seguinte comando
  aws iot create-thing -thing-name "plantSystem"  

Para mais informações consulte o link

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




# 7 Criação de certificados

Para criar e ativar os certificados de que você precisa, dê o seguinte 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 criará os certificados (3 arquivos pem) para você na pasta AWS, conforme mostrado na captura de tela abaixo







# 8 Crie e anexe uma política AWS IoT aos seus certificados

Comece criando um arquivo json na pasta AWS, usando seu editor de texto favorito (eu prefiro o texto sublime 2) - nomeie o arquivo policy.json
  {"Versão":"2012-10-17", "Declaração":[{"Efeito":"Permitir", "Ação":["iot:*"], "Recurso":[ "*"]}]}  

Em seguida, copie e cole o seguinte comando no seu editor de texto
  aws iot create-policy --policy-name "PubSub" --policy-document file://./policy.json  




# 9 Anexe a política ao certificado, seguido de anexar o certificado ao dispositivo

Dê os comandos abaixo um após o outro
  $ aws iot attach-principal-policy --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxxxx" --policy-name "PubSub" $ aws iot attach-thing-principal --thing-name "PlantSystem" --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxxxx"  

Aqui, uma maneira fácil de obter seu certificado, caso você não o tenha anotado, é acessar o console do AWS IoT, clicar em seu certificado e acessar os detalhes no lado direito da tela. A partir daqui você pode copiar e colar o arn no terminal







Para obter mais informações, consulte a documentação sobre

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





# 10 Verificando / testando sua configuração em seu computador e testando-a usando MQTT.fx

Agora, para afirmar que a configuração foi feita em seu computador, baixe e instale MQTT.fx do link abaixo para testar se a configuração está funcionando e se somos capazes de publicar e assinar dados via AWS IoT

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

Para obter mais informações de configuração e para baixar o certificado raiz, use o link abaixo

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

- aqui em MQTT.fx você terá que configurar seu perfil de conexão

- e vincule seus certificados que você baixou como parte das etapas acima

Aqui está um vídeo rápido que mostra como você pode testar sua configuração em seu computador, que no meu caso é um MAC usando a ferramenta MQTT.fx.







Depois de concluir e testar se sua configuração está correta, siga as etapas abaixo para fazer o upload do certificado para o Arduino Yun

# 11 Configurando o Arduino Yun para se comunicar com a nuvem AWS IoT

Baixe a versão mais recente do Arduino Yun SDK do github e descompacte na pasta "Bibliotecas" do Arduino

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

Se você estiver usando o Arduino Yun pela primeira vez, siga as instruções de configuração em

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

Basicamente, usando o link, você aprenderá como configurar o Arduino Yun para se conectar à rede WiFi doméstica.

Em seguida, carregue o Arduino IDE de esboço de exemplo de processo em seu YUN (Arquivo-> Exemplos-> Ponte -> Processo), isso irá confirmar que o Yun tem acesso à internet

Coloque seu arquivo rootCA, chave privada e certificado na pasta certs, conforme mostrado na captura de tela abaixo




Em seguida, modifique codebase_upload.sh e environment_setup.sh e substitua [your_boards_IP] pelo endereço IP da sua placa e [your_boards_IP] pela sua senha

No seu terminal, execute os seguintes comandos para dar permissão aos arquivos .sh, isso levará cerca de 5 a 10 minutos, o que move os certificados e instala a distribuição, python-openssl, pip, paho-mqtt no Yun. Estes são os pacotes de que você precisa para se comunicar com a nuvem AWS de seu Yun (também conhecido como PlantSystem em nosso caso)
  $ chmod 755 codebase_upload.sh $. / codebase_upload.sh $ chmod 755 environment_setup.sh $. / environment_setup.sh  









Para instalação em Linux / Windows siga o link em

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




Agora, como parte do próximo casal usando AWS CLI, vamos criar uma tabela no DynamoDB para postar dados do sensor

# 12 Criação de uma função IAM e concessão de permissões

Basicamente, para inserir dados na tabela de sensores do DynamoDB que criaremos como parte da próxima etapa, precisamos criar uma regra de IoT que atuará sobre a mensagem MQTT recebida pela AWS, para isso precisamos criar uma função e conceder são necessárias permissões

Crie um arquivo json rolePolicy.json
  {"Versão":"2012-10-17", "Declaração":[{"Sid":"", "Efeito":"Permitir", "Principal":{"Serviço":" iot.amazonaws.com "}," Action ":" sts:AssumeRole "}]}  

e para criar a função, execute o seguinte comando no terminal
  aws iam create-role --role-name iot-actions-role --assume-role-policy-document file://./rolePolicy.json  

Crie outro arquivo json policy.json
  {"Version":"2012-10-17", "Statement":[{"Effect":"Allow", "Action":["dynamodb:*", "lambda:InvokeFunction"] , "Recurso":["*"]}]}  




em seguida, chame create-policy e especifique o documento de política IAM
  aws iam create-policy --policy-name iot-actions-policy --policy-document file://./policy.json  

E, finalmente, anexe a política à função usando - modifique o ARN da política para o ARN que você recebeu como parte da etapa anterior
  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 Configurando tabela no DynamoDB no console AWS

Como parte desta etapa, vamos criar um DynamoDB no console AWS

Nome da tabela:plantSensor

Chave de partição:chave

Chave de classificação:carimbo de data / hora

e também definir suas unidades de capacidade de leitura e capacidade de gravação para 1.

# 14 Criação de uma regra para inserir dados na Tabela PlantSensor

Crie um arquivo json - plantdatarule.json (aqui modifique o valor roleArn na seção abaixo, vá para IAM-> Roles-> iot-action-role para obter o 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 "}}]}  

em seguida, execute o seguinte comando em seu terminal
  aws iot create-topic-rule --rule-name plantDataToDynamoDB --topic-rule-payload file://./plantdatarule.json  

Agora, se você for para o console AWS IoT, deverá ver uma regra criada chamada "PlantDataToDynamoDB" conforme mostrado na captura de tela abaixo ('' ignore a regra de envio de e-mail que vem como parte das etapas abaixo.)

usando MQTT.FX execute um teste rápido para ver se os registros estão sendo criados na tabela criada.




# 15 Faça upload do esboço do Arduino para publicar dados no AWS IoT do Yun

Aqui, primeiro comece baixando a biblioteca ArduinoJSON do github em

https://github.com/bblanchon/ArduinoJson

Agora baixe os arquivos YunAWSIoTDynamoDB, ino e aws_iot_config.h da seção de código abaixo e envie-os para o Yun.

Abra seu monitor serial e você deverá ver a temperatura, valor de luz e valor de umidade do solo postado no DynamoDB.

Se você já foi AWS, pode fazer todos os tipos de coisas incríveis configurando a função Lambda e postando dados cinéticos ...

Nota: Se você planeja tornar esta configuração permanente, não se esqueça de aumentar o atraso no final do loop, para aumentar o intervalo de tempo de postagem no DynamoDB para que você não incorra em custos adicionais. Para obter mais informações sobre preços, consulte https://aws.amazon.com/iot/pricing/




# 16 Configurando uma regra AWS-IoT SNS para receber e e-mail se o valor da umidade do solo cair abaixo de um limite.

Basicamente, esta etapa inclui a configuração de uma base de notificação SNS simples na regra AWS IoT.

Comece atribuindo as seguintes políticas à função AWS (iot-action-role) que você criou na etapa anterior no console IAM

-AmazonSNSRole

-AmazonSNSFullAccess

Uma vez feito no console SNS, crie um tópico chamado sendMail e crie uma assinatura e forneça a configuração do seu e-mail no telefone para ser notificado quando o valor da umidade do solo for BAIXO.

Agora volte para o console AWS IoT e usando o botão + Create Resource crie uma regra chamada Email Send e forneça as seguintes informações
  • Nome:EmailSend
  • Atributo:mositValue (deve corresponder ao valor json que você está postando como parte de seu tópico no código do Arduino)
  • Filtro de tópico:topic / plantdata
  • Condição:as moistval <250 (este é o valor que você determinou nas primeiras etapas do tutorial)
  • Escolha a ação:enviar mensagem como SNS de notificação push
  • Destino SNS:sendEmail
  • Função:iot-action-role

Uma vez feito isso, seu console deve se parecer com a captura de tela abaixo

Aqui está um exemplo de e-mail que recebi quando removi o sensor de umidade do solo de um copo d'água










Para ler mais sobre AWS-SNS

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

# 15 Juntar as partes impressas em 3D e adicioná-las ao pote.

Você precisará de um parafuso e uma porca 4x40 para prender a parte impressa em 3D do Black Solo Poker na base do Arduino Yun

A parte superior se encaixa facilmente, aqui lembre-se de apontar a abertura superior em direção à sua janela e inserir a umidade do solo na panela. E ligue o Yun com um plugue de cabo micro USB a uma tomada de parede.

Observe que ainda estou explorando e aprendendo sobre o incrível mundo da AWS, e estou maravilhado com os recursos do console da AWS, portanto, se você já usa a AWS há algum tempo, poste um comentário ou sugestão de recurso que gostaria de ter gostei de ver / aplicável ao projeto de monitoramento da planta. Obrigado ..



Código

  • SoilMoistureValue
  • ArduinoYunDweetio
  • ArduinoYunAWSIoTDynamodb
  • aws_iot_config.h
SoilMoistureValue Arduino
Esboço do Arduino para determinar o valor ideal de umidade do solo para a planta da sua casa
 // @ CarmelitoA -Projeto de monitoramento da planta da casa que determina o valor da umidade do soloconst int moistPin =A1; // Sensor de umidade da Grove conectado a A1 no Grove Shieldconst int ledPin =2; int moisturValue =0; int tooDryValue =250; // altere este valor com base no que você encontrar com a configuração de vazio () {Serial.begin (9600); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, LOW);} void loop () {moisturValue =analogRead (moisturPin); Serial.print ("Moisture sensor ="); Serial.println (moisturValue); // Verifique o valor para com areia seca e depois com Wet Sandif (moisturValue  
ArduinoYunDweetio Arduino
Postando dados do Sensor para dweet.io usando Arduino Yun
 // Criado por @CarmelitoA para o projeto House Plant Monitoring - enviando dados para dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include  #include  #define SITE_URL "www.dweet.io" #include  // Adicionado para cálculos de temperaturaconst int moistPin =A1; // Sensor de umidade da Grove conectado a A1 no Grove Shieldconst int ledPin =2; // Indicador LED moisturValue =0; // variável para armazenar o valor proveniente do sensorconst int tooDryValue =500; // ALTERE este valor com base em seus testes de quanta umidade o solo deve ter, menos que este valor acenderá o LED, o que significa que você precisa regar a plantafloat tooLowTemp =20; // MUDANÇA, temperatura em graus C com base no tipo de planta da sua casa, se a temperatura for inferior ao valor, o LED ficará vermelho // Sensor de temperatura defsconst int B =4275; // valor B do termistorconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Sensor de temperatura conectado ao A5 // Sensorconst int lightPin =A2; não assinado long lastConnectionTime =0; const unsigned long postagemInterval =10L * 1000L; void setup () {Bridge.begin (); Serial.begin (9600); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, LOW); Serial.begin (9600); while (! Serial); // aguarde uma conexão serial - desative-a após a implantação} void loop () {YunClient c; if (millis () - lastConnectionTime> postagemInterval) {moisturValue =analogRead (moistPin); Serial.print ("sensor ="); Serial.println (moisturValue); // Verifique o valor com areia seca e depois com areia úmida // Calculando a temperatura em graus C int a =analogRead (pinTempSensor); float R =1023,0 / ((float) a) -1,0; R =100000,0 * R; temperatura flutuante =1,0 / (log (R / 100000,0) /B+1/298,15) -273,15; // converter para temperatura via folha de dados; Serial.print ("temperatura ="); Serial.println (temperatura); // calculando o valor Light int lightValue =analogRead (lightPin); Serial.print ("valor claro ="); Serial.println (lightValue); // ligar o LED se o valor do sensor for maior que tooDryValue ou tooLowTemp if (moisturValue  
ArduinoYunAWSIoTDynamodb Arduino
esboço para postar dados do sensor para AWS -DynamoDB, você também precisará adicionar o aws_iot_config.h como uma nova guia no IDE Arduino.
 // Criado por @CarmelitoA 01-16-2016 para o projeto House Plant Monitoring. Sinta-se à vontade para remixar e modificar # include  #include  #include "aws_iot_config.h" #include  char data [80]; StaticJsonBuffer <200> jsonBuffer; // # define SITE_URL "www.dweet.io" // combinando o YunClient.h com este exemplo para postar para dweet causando confilitos, consulte ArduinoYunDweetio.ino # include  // Adicionado para cálculos de temperaturaconst int moistPin =A1; // Sensor de umidade da Grove conectado a A1 no Grove Shieldconst int ledPin =2; int moisturValue =0; // variável para armazenar o valor proveniente do sensorconst int tooDryValue =250; // ALTERE este valor com base em seus testes de quanta umidade o solo deve ter, menos que este valor acenderá o LED, o que significa que você precisa regar a plantafloat tooLowTemp =20; // MUDANÇA, temperatura em graus C com base no tipo de planta da sua casa, se a temperatura for inferior ao valor, o LED ficará vermelho // Sensor de temperatura defsconst int B =4275; // valor B do termistorconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Sensor de temperatura conectado ao A5 // Sensorconst int lightPin =A2; não assinado long lastConnectionTime =0; const unsigned long postedInterval =10L * 1000L; // mude este valor para aumentar o intervalo de postagem_iot_mqtt_client myClient; // init iot_mqtt_clientchar msg [32]; // bufferint de leitura e gravação cnt =0; // loop countsint rc =-100; // valor de retorno placeholderbool success_connect =false; // se está conectado // Função de retorno de chamada básica que imprime o messagevoid 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. Todos os direitos reservados. * * 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

Peças personalizadas e gabinetes

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

Processo de manufatura

  1. C# usando
  2. Monitoramento remoto do clima usando Raspberry Pi
  3. Botão AWS IoT controlado por movimento
  4. Como construir uma operação mais inteligente usando a tecnologia IoT de monitoramento de tanque
  5. Sistema de gestão florestal IoT de dupla finalidade
  6. Sistema de monitoramento remoto de tanque de óleo e diesel baseado em IoT
  7. 8 Benefícios do Sistema de Monitoramento de Peso da Frota baseado em IoT
  8. Importância do uso do monitoramento de ativos habilitado para IoT na indústria de petróleo e gás
  9. Melhore o armazenamento de leite com uma pitada de IoT:sistema de monitoramento de nível de leite
  10. Usando um sistema de monitoramento de nível de rio alimentado por IoT para gerenciamento eficiente de água