В этом посте мы расскажем, как создать систему IoT, которая контролирует влажность почвы и отправит уведомление, когда она станет слишком сухой. Этот проект использует облачную платформу IoT для управления системой оповещения и хранения данных, поступающих от датчиков. Как вы уже знаете, Интернет вещей сегодня является одной из самых важных тем, которая обещает сформировать наше будущее и образ жизни. Одним интересным аспектом IoT является тот факт, что мы можем экспериментировать с системой IoT, создавая ее самостоятельно. На рынке доступно несколько плат для создания прототипов, и мы можем создавать удивительные проекты IoT, не тратя слишком много.
Создание обзора проекта системы IoT
Чтобы построить этот проект нам нужно:
- Arduino MKR1000
- Датчик влажности
- Бесплатный аккаунт Carriots (используйте эту ссылку для создания бесплатного аккаунта)
- Счет IFFT (чтобы узнать больше, нажмите здесь )
Идея, стоящая за этим проектом, заключается в создании системы IoT, которая контролирует обнаружение влажности почвы, когда она становится слишком сухой. Arduino MKR1000 управляет датчиком, отправляющим данные на платформу IoT Carriots. Эта платформа, в свою очередь, хранит данные, поступающие от датчика, и определяет, когда сохраненные значения находятся ниже порогового уровня. Позже мы увидим, как анализировать данные. К настоящему времени мы можем предположить, что платформа IriT Carriots может каким-то образом вызывать услугу IFFT, которая отправит короткое сообщение пользователю, предупреждая его. Создавая эту систему IoT, мы можем изучить, как использовать несколько компонентов экосистемы IoT. Кроме того, этот проект отображает влажность почвы с помощью светодиодной матрицы. Давайте посмотрим, как его построить.
Получение данных с датчика
На этом первом шаге мы должны прочитать данные датчика. В этом проекте IoT используется датчик YL-38 + YL-69. Это аналоговый датчик, который можно вставить в почву, которую мы хотим проверить. На рисунке ниже показано, как подключить датчик к Arduino:
Код очень прост, мы читаем данные с вывода А1, а затем вычисляем влажность:
1
2
|
float moistureHum = analogRead(A1); moistureHum = ( 1023 - moistureHum) * 100 / 1023 ; |
Это очень просто, не так много, чтобы объяснить об этом. Это значение, которое мы отправим на облачную платформу IoT. Кроме того, мы должны подключить Arduino MKR1000 к Интернету, чтобы он мог отправлять данные:
01
02
03
04
05
06
07
08
09
10
11
12
|
#include "WiFi101.h" WiFiClient client; void setup() { Serial.begin( 9600 ); Serial.print( "Starting..." ); if (WiFi.status() == WL_NO_SHIELD) { Serial.println( "WiFi shield not present" ); while ( true ); } connectToWifi(); } |
где connectToWifi()
:
01
02
03
04
05
06
07
08
09
10
|
void connectToWifi() { while ( status != WL_CONNECTED) { Serial.print( "Attempting to connect to WPA SSID: " ); Serial.println(ssid); // Connect to WPA/WPA2 network: status = WiFi.begin(ssid, pass); // wait 10 seconds for connection: delay( 10000 ); } } |
Это все. В этом эскизе мы можем управлять матрицей светодиодов, показывающей уровень влажности, как описано в коде, прилагаемом к этой статье. Теперь мы можем сосредоточить наше внимание на облачной платформе IoT.
Подключение к облачной платформе IoT
Перед отправкой данных в облако нам необходимо настроить платформу Carriots для управления данными. Carriots использует иерархическую структуру для группировки и управления устройствами. Поэтому мы должны создать эту структуру перед использованием нашего устройства. Вверху этой структуры находится Проект . После того, как вы вошли в систему, вы должны нажать на Hierarchy, а затем Project, заполнив необходимые данные:
Следующим шагом является создание сервиса, заполняющего необходимые данные:
Наконец, вы должны создать группу:
Шаги очень быстрые, и вы делаете это только один раз. Последний шаг — настройка нашего устройства. Он представляет собой физическое устройство, которое мы используем для отправки данных. Это устройство принадлежит к группе, созданной на последнем шаге, которая, в свою очередь, принадлежит услуге. Услуга относится к проекту. Шаг настройки очень прост, как показано на рисунке ниже:
Это все. Шаги настройки завершены. Мы должны подключить устройство Arduino к Carriots и начать отправку данных. На этом этапе важно, чтобы идентификатор разработчика, показанный на рисунке выше, представлял собой уникальный идентификатор устройства, который мы будем использовать для привязки данных, поступающих с нашего устройства Arduino, на устройство Carriots. Другим важным параметром является ваш ключ API . Вы можете найти его в меню «Настройки» -> «Ключ API». Чтобы отправить данные, давайте добавим эту функцию к эскизу, показанному выше:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
void sendData( float data) { if (client.connect(server, 80 )) { Serial.println( "Connected to the server...." ); String jsonData = "{\"protocol\":\"v2\",\"device\":\"" +DEVICE_ID+ "\",\"at\":\"now\",\"data\":{\"soil\":\"" + String(data)+ "\"}}" ; // Make a HTTP request client.println( "POST /streams HTTP/1.1" ); client.println( "Host: api.carriots.com" ); client.println( "Accept: application/json" ); client.println( "User-Agent: Arduino-Carriots" ); client.println( "Content-Type: application/json" ); client.print( "carriots.apikey: " ); client.println(API_KEY); client.print( "Content-Length: " ); int thisLength = jsonData.length(); client.println(thisLength); client.println( "Connection: close" ); client.println(); client.println(jsonData); } } |
Обратите внимание, что функция отправляет полезную нагрузку JSON, содержащую данные, считанные с датчика. Эта функция должна вызываться в методе loop()
. Запустив эскиз, мы можем заметить, что устройство отправляет данные Carriots, как показано ниже:
Мониторинг данных датчика IoT
Следующим шагом является мониторинг данных. Обычно в системе IoT мы заинтересованы не только в получении данных от датчика, но и в том, чтобы отслеживать такую информацию для принятия корректирующих действий, когда значения выходят за пределы определенного интервала. Мы можем предпринять несколько действий, в этом примере мы хотим информировать пользователя, предупреждающего его / ее. Даже если у Carriots есть встроенная система электронной почты, мы предпочитаем интегрировать с Carriots еще одну полезную и интересную платформу под названием IFFT. Эта платформа предоставляет несколько служб интеграции, которые мы можем использовать и интегрировать в наши проекты IoT.
Чтобы предупредить пользователя, нам нужны два компонента:
- система данных мониторинга
- система оповещения
В качестве системы мониторинга данных эта система IoT использует слушателя Carriots. Слушатель — это процесс, который анализирует входящие значения и применяет определенное правило. Когда правило проверено, оно вызывает скрипт. Интересный аспект Carriots заключается в том, что мы можем использовать Groovy в качестве языка сценариев для вызова внешних сервисов.
Система оповещения построена на IFFT. Перед завершением работы над Carriots полезно настроить IFFT. Как было сказано ранее, мы хотим отправить короткое сообщение, когда влажность достигнет порогового уровня. Для этого мы настраиваем службу коротких сообщений в IFFT. Для выполнения этой задачи у вас должна быть бесплатная учетная запись. В качестве первого шага давайте создадим новый апплет:
Теперь нажмите на знак плюс, чтобы добавить сервис и выполнить поиск сервиса Maker:
Выберите Maker Webhooks, чтобы включить IoT Maker. Теперь нам нужно настроить службу производителя, добавив имя события, которое запускает процесс отправки сообщения:
Наконец, давайте включим службу отправки сообщений, настроив все необходимые параметры, такие как номер адресата и тело сообщения:
Это все. Теперь мы можем сосредоточить наше внимание на слушателе на платформе Carriots. Давайте создадим новый слушатель, который будет вызывать URL, связанный с только что созданным апплетом. Когда слушатель вызывает URL, IFFT отправляет короткое сообщение. На рисунке ниже показано, как настроить слушателя:
Последний шаг — настройка выражения. Мы можем написать его, используя Groovy, как описано в этом примере .
Вот и все, теперь вы можете протестировать проект, убедившись, что когда влажность почвы ниже порогового уровня, мы получим короткое сообщение на наш мобильный.
Резюме
В конце этой статьи вы узнали, как создать систему IoT с использованием датчиков, облачных платформ Arduino и IoT. Как вы заметили в этом руководстве, мы можем интегрировать существующие платформы и сервисы, создавая систему IoT.
Ссылка: | Создание системы IoT с использованием облачной платформы Arduino и IoT от нашего партнера по JCG Франческо Аццолы в блоге Surviving с Android . |