Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система мониторинга предприятия с использованием AWS IoT

Компоненты и расходные материалы

Ардуино Юн
× 1
Стартовый комплект Seeed Grove плюс для Intel Edison
Использование экрана, датчика температуры и освещенности из комплекта
× 1
Seeed Grove - датчик влажности
× 1
5 мм светодиод:красный
× 1
Резистор 330 Ом
× 1

Необходимые инструменты и машины

3D-принтер (общий)

Приложения и онлайн-сервисы

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

Об этом проекте

Представьте себе, что вы собираетесь в отпуск на неделю или около того и беспокоитесь о своем домашнем растении дома. Вот отличный проект, который стоит выполнить за неделю, прежде чем отправиться в отпуск.

Создайте себе систему мониторинга и уведомлений на предприятии со следующей функцией

  • Контролируйте температуру, светимость и влажность почвы с помощью dweet.io
  • ИЛИ с помощью новой службы Amazon IoT для регистрации данных в AWS - DynamoDB
  • Используйте уведомление AWS -SNS, чтобы отправить электронное письмо самому себе, чтобы вы могли сообщить своему двоюродному брату / соседу, чтобы тот быстро полил растение или проверил термостат дома.

Кроме того, я разработал корпус, напечатанный на 3D-принтере, для размещения Arduino Yun, щитка Grove Shield и датчиков.

Если вам интересно узнать, как обстоят дела у моего завода, вот ссылка

http://dweet.io/follow/PlantMonitorTorontoON



Вот шаги, которые вам нужно будет выполнить для завершения сборки

# 1 Постройте схему с помощью экрана разъема Grove как показано в схематическом разделе проекта, в основном подключите

  • Датчик температуры к A0
  • Датчик влажности почвы по A1
  • Датчик освещенности до A2
  • И с помощью резистора 220 Ом подключите светодиод к контакту №2.

# 2 3D-печать файлов STL прикреплен к пользовательская часть и раздел корпуса , здесь у вас есть 3 файла STL для печати, установите в программе для нарезки высоту слоя 0,3 мм и плотность заполнения не менее 25% или выше

3D-печать должна занять около 2 часов, поэтому загрузите файлы STL и запустите свой 3D-принтер, пока вы выполняете остальные шаги, указанные ниже


№ 3 Определение значения влажности почвы

Загрузите прилагаемый ниже код (значение влажности почвы) на ваш Arduino Yun и определите tooDryValue в приведенном ниже коде. Обычно, если значение влажности почвы падает ниже tooDryValue, вам необходимо полить растение. (И это значение является значением, которое вы будет использоваться в состоянии AWS-SNS для отправки электронного письма)

Вот видео, показывающее метод, который я использовал для определения toodryvalue

# 4 Загрузите код Arduino в Юн, чтобы опубликовать данные на dweet.io

Теперь, когда вы выбрали значение toodryvalue, загрузите файл ArduinoYunDweetIO.ino в Yun, и как часть кода также замените «PlantMonitorTorontoON» на что-то более значимое для вас.

Вот видео, тестирующее загрузку данных датчиков на dweet.io


# 5 Настройка AWS CLI на вашем компьютере (здесь я использую Mac)

Теперь, чтобы регистрировать данные с помощью AWS IoT в DyanamoDB, вам нужно будет создать учетную запись на https://aws.amazon.com/free, здесь вам также нужно будет указать данные своей кредитной карты, но для приведенного ниже руководства вы не должны нести любые расходы (опять же, это зависит от региона установки AWS)

После этого создайте папку « AWS "на вашем Mac и перейдите по ссылке ниже, чтобы загрузить и установить AWS CLI

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

Я использую Mac, вот инструкции, которым я следовал

  $ 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  

Примечание:в терминале вы должны находиться в только что созданной папке AWS

# 6 Создание объекта с помощью интерфейса командной строки, который должен отображаться в консоли AWS IoT

Теперь мы создадим вещь в AWS IoT с помощью следующей команды

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

Для получения дополнительной информации перейдите по ссылке

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


# 7 Создание сертификатов

Чтобы создать и активировать сертификаты, которые вам понадобятся, введите следующую команду

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

эта команда создаст для вас сертификаты (3 файла pem) в папке AWS, как показано на снимке экрана ниже



# 8 Создайте и прикрепите политику AWS IoT к своим сертификатам

Начните с создания файла json в папке AWS с помощью вашего любимого текстового редактора (я предпочитаю возвышенный текст 2) - назовите файл policy.json

  {"Версия":"2012-10-17", "Заявление":[{"Эффект":"Разрешить", "Действие":["iot:*"], "Ресурс":[ "*"]}]}  

Затем скопируйте и вставьте следующую команду в текстовый редактор

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


# 9 Прикрепите политику к сертификату, а затем прикрепите сертификат к устройству

Дайте команды ниже одну за другой

  $ 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"  

Вот простой способ получить сертификат, если вы его не записали, - это перейти в консоль AWS IoT, щелкнуть сертификат и перейти к подробным сведениям в правой части экрана. Отсюда вы можете скопировать и вставить arn в теминал



Для получения дополнительной информации см. Документацию на

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

# 10 Проверка / тестирование вашей настройки на вашем компьютере и тестирование с помощью MQTT.fx

Теперь, чтобы заявить, что установка выполнена на вашем компьютере, загрузите и установите MQTT.fx по ссылке ниже, чтобы проверить, работает ли установка и можем ли мы публиковать данные и подписываться на них через AWS IoT

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

Для получения дополнительной информации о настройке и загрузки корневого сертификата используйте ссылку ниже

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

- здесь в MQTT.fx вам нужно будет настроить свой профиль подключения

- и свяжите свои сертификаты, которые вы загрузили в рамках описанных выше шагов

Вот короткое видео, в котором показано, как можно протестировать настройку на своем компьютере, который в моем случае является MAC с помощью инструмента MQTT.fx.



После того, как вы завершили и проверили, что ваша установка в порядке, выполните следующие действия, чтобы загрузить сертификат в Arduino Yun

# 11 Настройка Arduino Yun для связи с облаком AWS IoT

Загрузите последнюю версию Arduino Yun SDK с github и распакуйте в папку «Библиотеки» Arduino

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

Если вы впервые используете Arduino Yun, следуйте инструкциям по установке на странице

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

В основном, используя ссылку, вы узнаете, как настроить Arduino Yun для подключения к домашней сети Wi-Fi.

Затем загрузите эскиз примера процесса Arduino IDE в ваш YUN (Файл-> Примеры-> Мост-> Процесс), это подтвердит, что Yun имеет доступ к Интернету

Поместите файл rootCA, закрытый ключ и сертификат в папку сертификатов, как показано на снимке экрана ниже


Затем измените codebase_upload.sh и environment_setup.sh и замените [your_boards_IP] IP-адресом вашей доски, а [your_boards_IP] своим паролем

В вашем терминале выполните следующие команды, чтобы разрешить доступ к файлам .sh, это займет около 5-10 минут, что приведет к перемещению сертификатов и установке distribute, python-openssl, pip, paho-mqtt на Yun. Это пакеты, которые вам нужны для связи с облаком AWS от вашего Yun (в нашем случае он называется PlantSystem)

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



Для установки в Linux / Windows перейдите по ссылке

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


Теперь, как часть следующей пары, использующей AWS CLI, мы собираемся создать таблицу в DynamoDB для публикации данных датчиков

# 12 Создание роли IAM и предоставление разрешений

В основном, чтобы ввести данные в таблицу датчиков DynamoDB, которую мы собираемся создать как часть следующего шага, нам нужно создать правило IoT, которое будет действовать на сообщение MQTT, полученное AWS, для этого нам нужно создать роль и предоставить это необходимые разрешения

Создайте файл json rolePolicy.json

  {"Версия":"2012-10-17", "Заявление":[{"Сид":"", "Эффект":"Разрешить", "Принципал":{"Услуга":" iot.amazonaws.com "}," Action ":" sts:AssumeRole "}]}  

и для создания роли выполните следующую команду в терминале

  aws iam create-role --role-name iot-actions-role --assume-role-policy-document файл://./rolePolicy.json  

Создайте еще один файл json policy.json

  {"Версия":"2012-10-17", "Заявление":[{"Эффект":"Разрешить", "Действие":["Dynamodb:*", "lambda:InvokeFunction"] , "Ресурс":["*"]}]}  


затем вызовите create-policy и укажите документ политики IAM

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

И, наконец, прикрепите политику к роли, используя - измените policy-ARN на ARN, который вы получили на предыдущем шаге

  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 Настройка таблицы в DynamoDB в консоли AWS

В рамках этого шага мы собираемся создать DynamoDB в консоли AWS

Имя таблицы:plantSensor

Ключ раздела:ключ

Ключ сортировки:отметка времени

а также установите для единиц емкости чтения и емкости записи значение 1.

# 14 Создание правила для вставки данных в таблицу PlantSensor

Создайте файл json - plantdatarule.json (здесь измените значение roleArn в разделе ниже, перейдите в IAM-> Roles-> iot-action-role, чтобы получить arn)


  {"sql":"SELECT * FROM 'topic / plantdata'", "ruleDisabled":false, "actions":[{"DynamoDB":{"tableName":"plantSensor", "hashKeyField" :"ключ", "hashKeyValue":"$ {topic (2)}", "rangeKeyField":"отметка времени", "rangeKeyValue":"$ {отметка времени ()}", "roleArn":"arn:aws:iam ::XXXXXXXXXXXX:role / iot-actions-role "}}]}  

затем запустите следующую команду на своем терминале

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

Теперь, если вы перейдете в консоль AWS IoT, вы должны увидеть созданное правило под названием «PlantDataToDynamoDB», как показано на снимке экрана ниже («игнорируйте правило отправки электронной почты, которое является частью шагов ниже.)

с помощью MQTT.FX запустите быстрый тест, чтобы увидеть, создаются ли записи в созданной таблице.


# 15 Загрузите скетч Arduino для публикации данных в AWS IoT от Yun

Здесь сначала нужно загрузить библиотеку ArduinoJSON с github по адресу

https://github.com/bblanchon/ArduinoJson

Теперь загрузите файлы YunAWSIoTDynamoDB, ino и aws_iot_config.h из раздела кода ниже и загрузите их в Yun.

Откройте монитор последовательного порта, и вы должны увидеть значение температуры, освещенности и влажности почвы, отправленные в DynamoDB.

Если вы уже работали на AWS, вы можете делать всевозможные удивительные вещи, настраивая функцию Lambda и публикуя кинезис данных ...

Примечание. Если вы планируете сделать это постоянной настройкой, не забудьте увеличить задержку в конце цикла, чтобы увеличить временной интервал публикации в DynamoDB, чтобы вы не понесли дополнительных затрат. Подробнее о ценах см. Https://aws.amazon.com/iot/pricing/

.


# 16 Настройка правила AWS-IoT для SNS для получения и электронной почты, если значение влажности почвы упадет ниже порогового значения.

Обычно этот шаг включает настройку простой базы уведомлений SNS на основе правила AWS IoT.

Начните с назначения следующих политик роли AWS (iot-action-role), которую вы создали на предыдущем шаге в консоли IAM

-AmazonSNSRole

-AmazonSNSFullAccess

После этого в консоли SNS создайте тему под названием sendMail . и создайте подписку и настройте электронную почту на телефоне, чтобы получать уведомления, когда значение влажности почвы НИЗКОЕ.

Теперь вернитесь в консоль AWS IoT и с помощью кнопки + Create Resource создайте правило под названием Email Send и укажите следующую информацию

  • Имя:EmailSend
  • Атрибут:mositValue (он должен соответствовать значению json, которое вы публикуете как часть вашей темы в коде Arduino)
  • Фильтр тем:тема / данные предприятия
  • Условие:влажное значение <250 (это значение, которое вы определили на первых шагах руководства).
  • Выбрать действие:отправить сообщение в виде push-уведомления в социальных сетях
  • Цель соцсети:sendEmail
  • Роль:iot-action-role

После этого консоль должна выглядеть, как на снимке экрана ниже

Вот образец электронного письма, которое я получил, когда вынул датчик влажности почвы из стакана воды




Чтобы узнать больше об AWS-SNS

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

№15 Собираем детали, напечатанные на 3D-принтере, и кладем их в горшок.

Вам понадобятся винт и гайка 4x40, чтобы прикрепить деталь, напечатанную на 3D-принтере Black Earth Poker, к базовой части Arduino Yun

Верхняя часть легко устанавливается на защелках, здесь не забудьте направить верхнее отверстие к вашему окну и вытолкнуть влагу из почвы в горшок. И подключите Yun с помощью вилки кабеля micro-USB к розетке.

Обратите внимание, я все еще изучаю и изучаю удивительный мир AWS, и я был в восторге от функций консоли AWS, поэтому, если вы уже давно используете AWS, опубликуйте комментарий или предложение для функции, которая у вас была бы понравилось видеть / применимо к проекту мониторинга завода. Спасибо ..


Код

  • SoilMoistureValue
  • ArduinoYunDweetio
  • ArduinoYunAWSIoTDynamodb
  • aws_iot_config.h
SoilMoistureValue Arduino
Скетч Arduino для определения идеального значения влажности почвы для вашего домашнего растения
 // @ CarmelitoA - Проект мониторинга домашних растений, определяющий значение влажности почвыconst int влажностьPin =A1; // Датчик влажности Grove, подключенный к A1 на Grove Shieldconst int ledPin =2; int weturValue =0; int tooDryValue =250; // изменить это значение в зависимости от того, что вы придумалиvoid setup () {Serial.begin (9600); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, LOW);} void loop () {weturValue =analogRead (влагопин); Serial.print ("Датчик влажности ="); Serial.println (влажное значение); // Проверяем значение с помощью сухого песка, а затем с помощью мокрого Sandif (влажное значение  
ArduinoYunDweetio Arduino
Публикация данных датчика в dweet.io с использованием Arduino Yun
 // Создано @CarmelitoA для проекта мониторинга домашних растений - загрузка данных на dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include  #include  #define SITE_URL "www.dweet.io" #include  // Добавлен для расчетов температурыconst int влажностиPin =A1; // Датчик влажности Grove, подключенный к A1 на Grove Shieldconst int ledPin =2; // светодиодный индикаторint weturValue =0; // переменная для хранения значения, поступающего от датчикаconst int tooDryValue =500; // ИЗМЕНИТЬ это значение на основе проверки того, сколько влаги должно быть в почве, при меньшем значении загорится светодиод, что означает, что вам нужно полить растение, поплавок tooLowTemp =20; // ИЗМЕНЕНИЕ, температура в градусах Цельсия в зависимости от типа вашего комнатного растения, если температура ниже, чем значение, светодиод станет красным // Датчик температуры defsconst int B =4275; // B значение термистораconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Датчик температуры подключается к A5 // Датчик освещенностиconst int lightPin =A2; беззнаковый длинный lastConnectionTime =0; const unsigned long postingInterval =10L * 1000L; void setup () {Bridge.begin (); Serial.begin (9600); pinMode (ledPin, ВЫХОД); digitalWrite (ledPin, LOW); Serial.begin (9600); в то время как (! серийный); // ждем последовательного соединения - отключим это после развертывания} void loop () {YunClient c; if (millis () - lastConnectionTime> postingInterval) {weturValue =analogRead (влагопин); Serial.print ("датчик ="); Serial.println (влажное значение); // Проверяем значение для сухого песка, а затем для влажного песка // Расчет температуры в градусах Цельсия int a =analogRead (pinTempSensor); float 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; // конвертируем в температуру через таблицу данных; Serial.print ("температура ="); Serial.println (температура); // вычисление значения света int lightValue =analogRead (lightPin); Serial.print ("световое значение ="); Serial.println (lightValue); // включение светодиода, если значение датчика больше tooDryValue или tooLowTemp if (weturValue  
ArduinoYunAWSIoTDynamodb Arduino
эскиз для публикации данных датчиков в AWS -DynamoDB, вам также необходимо добавить aws_iot_config.h в качестве новой вкладки в Arduino IDE.
 // Создано @CarmelitoA 01-16-2016 для проекта мониторинга домашних растений. Не стесняйтесь ремикшировать и изменять # include  #include  #include "aws_iot_config.h" #include  char data [80]; StaticJsonBuffer <200> jsonBuffer; // # define SITE_URL "www.dweet.io" // объединение YunClient.h с этим примером для публикации в dweet, вызывающей конфликты, см. ArduinoYunDweetio.ino # include  // Добавлено для расчетов температурыconst int влагопин =A1; // Датчик влажности Grove, подключенный к A1 на Grove Shieldconst int ledPin =2; int weturValue =0; // переменная для хранения значения, поступающего от датчикаconst int tooDryValue =250; // ИЗМЕНИТЬ это значение на основе проверки того, сколько влаги должно быть в почве, при меньшем значении загорится светодиод, что означает, что вам нужно полить растение, поплавок tooLowTemp =20; // ИЗМЕНЕНИЕ, температура в градусах Цельсия в зависимости от типа вашего комнатного растения, если температура ниже, чем значение, светодиод станет красным // Датчик температуры defsconst int B =4275; // B значение термистораconst int R0 =100000; // R0 =100kconst int pinTempSensor =A0; // Grove - Датчик температуры подключается к A5 // Датчик освещенностиconst int lightPin =A2; беззнаковый длинный lastConnectionTime =0; const unsigned long postingInterval =10L * 1000L; // измените это значение, чтобы увеличить интервал публикацииaws_iot_mqtt_client myClient; // инициализация iot_mqtt_clientchar msg [32]; // буфер чтения-записи int cnt =0; // счетчик циклов int rc =-100; // возвращаемое значение placeholderbool success_connect =false; // подключен ли он // Базовая функция обратного вызова, которая выводит сообщениеvoid msg_callback (char * src, int len) {Serial.println ("CALLBACK:"); int i; 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. Все права защищены. * * 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

Изготовленные на заказ детали и корпуса

Схема

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

Производственный процесс

  1. С# с использованием
  2. Удаленный мониторинг погоды с помощью Raspberry Pi
  3. Кнопка AWS IoT с управлением движением
  4. Как построить более разумную операцию с использованием технологии IoT для мониторинга резервуаров
  5. Система управления лесами IoT двойного назначения
  6. Система удаленного мониторинга нефтяных и дизельных резервуаров на основе IoT
  7. 8 преимуществ системы мониторинга веса автопарка на основе IoT
  8. Важность использования мониторинга активов с поддержкой IoT в нефтегазовой отрасли
  9. Улучшите хранение молока с помощью Интернета вещей:система мониторинга уровня молока
  10. Использование системы мониторинга уровня реки на основе IoT для эффективного управления водными ресурсами