Мониторинг качества воды с использованием MKR1000 и ARTIK Cloud
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
I. Цель
Основная цель этого проекта - использовать Samsung ARTIK Cloud для мониторинга уровня pH и температуры в плавательных бассейнах.
II. Настройка ARTIK Cloud
Шаг 1. Создание нового устройства
Зарегистрируйтесь в ARTIK Cloud. Перейдите на сайт разработчика и создайте новый «тип устройства».
Введите желаемое отображение и уникальное имя.
Создать новый манифест
Введите название поля и другое описание
Нажмите "Сохранить", а затем перейдите на вкладку "Активировать манифест"
Нажмите кнопку АКТИВНЫЙ МАНИФЕСТ, чтобы закончить, и вы будете перенаправлены сюда
Готово, создание типа устройства!
Теперь давайте создадим ваше приложение, которое будет использовать это устройство.
Шаг 2. Создание приложения
Перейдите в ARTIK Cloud Applications.
Щелкните новое приложение
Введите желаемое имя приложения и URL-адрес перенаправления аутентификации.
Обратите внимание, что требуется URL-адрес перенаправления аутентификации. Он используется для аутентификации пользователей этого приложения, поэтому будет перенаправлять на этот URL-адрес, если потребуется вход в систему.
В качестве образца мы использовали http:// localhost / index /.
Теперь установите для вашего приложения разрешение на чтение и запись, перейдите на свое устройство и сохраните.
Поздравляем, у вас есть приложение!
Теперь давайте подключим это приложение.
Шаг 3. Подключите ваше устройство
Перейдите к моим устройствам и нажмите «Подключить другое устройство».
Щелкните новый тип устройства, созданный ранее, затем щелкните подключить устройство.
Щелкните настройки подключенного устройства.
Запишите эту информацию, так как она вам понадобится в программе.
Теперь перейдите к подключенному устройству
Готово для настройки ARTIK Cloud. Когда ваше оборудование будет подключено, на диаграмме появятся данные.
III. Настройка аппаратного датчика
Шаг 1. Подключите датчики температуры и pH к MKR1000.
Вот диаграмма:
- Temp GND к MRK1000 GND
- Temp OUT на цифровой контакт 1 MKR1000
- Температура от VCC до MKR1000 5 В
- Подключите резистор 4,7 кОм к Temp VCC и Temp OUT.
- pH GND на MRK1000 GND
- pH OUT на MKR1000, аналоговый вывод 1
- pH от VCC до MKR1000 5 В
Вот мой образец проводки
Если вы заметили, мы добавили аудиоразъем для легкого отсоединения датчика температуры. Но это необязательно.
Вот подключение датчика температуры к разъему.
Шаг 2. Установите необходимое программное обеспечение
Перейдите в среду разработки Arduino и добавьте плату MKR1000.
Найдите mkr1000 и нажмите "Установить"
Добавить необходимую библиотеку
Найдите библиотеки для установки:
- ArduinoJson - мы будем использовать его для отправки данных JSON в ARTIK Cloud.
- ArduinoHttpClient - хост для подключения к API
- OneWire - требуется для чтения цифрового входа с датчика температуры.
- DallasTemperature - Требуемая библиотека датчика температуры Dallas.
Завершите добавление необходимого программного обеспечения!
Шаг 3. Загрузите программу
Теперь подключите MKR1000 к ПК / ноутбуку.
Загрузите программное обеспечение на GitHub здесь
Измените следующую информацию:
Затем загрузите программный код в MKR1000 и начните мониторинг.
Примечание. Ваш Wi-Fi должен иметь подключение к Интернету.
IV. Полевые испытания
Мы протестировали аппаратный датчик для частного, общественного и школьного плавательных бассейнов. Сбор данных из пула этих респондентов позволил нам проанализировать возможности оборудования.
Вы можете поместить MKR1000 и датчик в коробку и поставить его на бассейн вдали от загрязнения водой. Таким образом вы сможете контролировать качество воды и нормализовать его, добавляя необходимые химические вещества.
Вскоре мы загрузим руководство о том, как поместить все схемы в эту коробку, и фактические кадры тестирования.
V. Результаты
Надеюсь, это руководство поможет людям создать собственное устройство для контроля качества воды в бассейне. Может повыситься осведомленность о постоянном ухудшении качества воды в плавательном бассейне, поскольку люди склонны уделять больше внимания предлагаемым удобствам, а не проверять, насколько они безопасны. Они также намереваются внести свой вклад в жизнь общества, предоставив средства, позволяющие сделать тестирование качества воды более эффективным и действенным без ненужных потерь ресурсов.
Счастливого строительства! :)
Код
- Коды Arduino MKR1000
Коды Arduino MKR1000 C / C ++
Загрузите эти коды в свой Arduino MKR1000Посетите это на GitHub> https://github.com/imjeffparedes/iot-water-quality-artik
/****************** Здесь мой код для Устройство мониторинга качества воды опубликовано в https://www.hackster.io/animo/water-quality-moniroting-840fea*******************/#include#include #include #include #include #include #include / ** Датчик температуры Инициализация ** / # define ONE_WIRE_BUS 1 // Провод данных подключен к цифровому порту 1 ArduinoOneWire oneWire (ONE_WIRE_BUS); // Настройка экземпляра oneWire для связи с любыми // устройствами OneWire (не только с ИС Maxim / Dallas). Датчики температуры Dallas (&oneWire); // Передаем нашу ссылку oneWire в Dallas Temperature. / ** Инициализация ARTIK Cloud REST ** / char server [] ="api.artik.cloud"; // Порт хоста Samsung ARTIK Cloud API =443; // 443 для HTTPS char buf [200]; // основные данные для хранения JSON для отправки в облако ARTIK String deviceID ="artik cloud device id"; // поместите сюда идентификатор вашего устройства, созданный из учебника String deviceToken ="artik cloud device token"; // поместите сюда токен устройства, созданный из учебника / ** инициализация pH-метра ** / # define SensorPin A1 // pH-метр Аналоговый выход на аналоговый вход Arduino 1 # define Offset 0.00 // компенсация отклонения # define samplingInterval 20 # define ArrayLenth 40 // время сбора в pHArray [ArrayLenth]; // Сохраняем среднее значение обратной связи датчика int pHArrayIndex =0; int status =-1; int millis_start; / ** Настройка Wi-Fi ** / # определить WIFI_AP "ваш SSID Wi-Fi" #define WIFI_PWD "пароль Wi-Fi" WiFiSSLClient wifi; HttpClient client =HttpClient (Wi-Fi, сервер, порт); установка void (void) {millis_start =millis (); Serial.begin (9600); startWifi (); // начинаем подключаться к Wi-Fi} void loop (void) {/ * Получение текущей температуры * / float celsius =0; sensor.requestTemperatures (); // Отправляем команду для получения температуры celsius =sizes.getTempCByIndex (0); sensor.requestTemperatures (); // Отправляем команду для получения температуры celsius =sizes.getTempCByIndex (0); / * Получение текущего значения pH * / static unsigned long samplingTime =millis (); статический беззнаковый длинный printTime =millis (); статический поплавок pHValue, напряжение; if (millis () - samplingTime> samplingInterval) {pHArray [pHArrayIndex ++] =analogRead (SensorPin); если (pHArrayIndex ==ArrayLenth) pHArrayIndex =0; напряжение =avergearray (pHArray, ArrayLenth) * 5,0 / 1024; pHValue =3,5 * напряжение + смещение; samplingTime =миллис (); } Serial.println ("===========================================" ); Serial.println («Мы отправим эти данные json»); // печать в формате json Serial.println ("data:{"); Serial.print ("ph:"); Serial.print (pHValue); Serial.print (", темп:"); Serial.print (по Цельсию); Serial.println ("}"); Serial.println (""); Serial.println («Начать отправку данных»); String contentType ="application / json"; String AuthorizationData ="носитель" + deviceToken; // Токен устройства int len =loadBuffer (celsius, pHValue); Serial.println ("Temp отправки:" + String (celsius) + "и ph:" + String (pHValue)); Serial.println («Отправить POST в ARTIK Cloud API»); client.beginRequest (); client.post ("/ v1.1 / сообщения"); //, contentType, buf client.sendHeader ("Авторизация", AuthorizationData); client.sendHeader ("Content-Type", "application / json"); client.sendHeader ("Длина содержимого", len); client.endRequest (); client.print (buf); // выводим ответ из api int statusCode =client.responseStatusCode (); Строковый ответ =client.responseBody (); Serial.println (""); Serial.print («Код состояния:»); Serial.println (statusCode); Serial.print ("Ответ:"); Serial.println (ответ); задержка (1000); // задержка обновления} / * Инициализация подключения к Wi-Fi * / void startWifi () {Serial.println ("Подключение MKR1000 к сети ..."); // WiFi.begin (); // пытаемся подключиться к сети Wi-Fi:while (status! =WL_CONNECTED) {Serial.print ("Попытка подключиться к WPA SSID:"); Serial.println (WIFI_AP); WiFi.begin (WIFI_AP, WIFI_PWD); // ждем 10 секунд подключения:delay (10000); статус =WiFi.status (); }} / * Источник pH-метра DfRobot * / double avergearray (int * arr, int number) {int i; int max, min; двойное средн .; длинная сумма =0; if (number <=0) {Serial.println ("Номер ошибки для массива для усреднения! / n"); возврат 0; } if (number <5) {// меньше 5, статистика вычисляется напрямую для (i =0; i макс) {количество + =макс; // arr> max max =arr [i]; } еще {сумма + =arr [я]; // min <=arr <=max}} // if} // для avg =(double) amount / (number-2); } // if return avg;} / * Буфер для отправки в REST * / int loadBuffer (float temp, float ph) {StaticJsonBuffer <200> jsonBuffer; // резервируем место в памяти JsonObject &root =jsonBuffer.createObject (); // создаем корневые объекты root ["sdid"] =deviceID; корень ["тип"] ="сообщение"; JsonObject &dataPair =root.createNestedObject («данные»); // создаем вложенные объекты dataPair ["temp"] =temp; dataPair ["ph"] =ph; root.printTo (buf, sizeof (buf)); // JSON-печать в буфер return (root.measureLength ()); // также возвращаем длину}
Схема
Макетное подключение МКР1000 и датчиковПроизводственный процесс
- Использование SaaS и облака требует осторожного обращения с данными
- В облако бесконечности и дальше
- Мониторинг облачных приложений и вы
- Безопасность и важные преимущества использования Cloud Linux
- Датчик температуры Python и Raspberry Pi
- Мониторинг комнатной температуры с помощью Moteino’s и Raspberry Pi
- Сделай сам:мониторинг и регулирование температуры для домашнего пивоварения
- Удаленный мониторинг погоды с помощью Raspberry Pi
- Система мониторинга качества воздуха и мусора в помещении
- Области применения и преимущества использования решения для мониторинга газа