UnifiedWater v1: полный набор датчиков качества воды на Arduino MKR GSM
Компоненты и материалы
- Arduino MKR GSM 1400 — 1 шт.
- Кольцо NeoPixel 16 RGB LED (WS2812) — 1 шт.
- Модуль температуры и влажности GY-21 (HTU21D/Si7021) — 1 шт.
- Датчик мутности воды (фототранзисторный выход) — 1 шт.
- Водонепроницаемый датчик температуры DS18B20 — 1 шт.
- Набор пH-метра DFRobot Gravity (аналоговый, спицевидный зонд) — 1 шт.
- Тактильная кнопка 12 мм — 1 шт.
- Перемычки, резистор 220 Ом, паяльные принадлежности
Инструменты
- Паяльник
Облачные сервисы
- Arduino Web Editor
- SORACOM Air (IoT-соединение)
- SORACOM Harvest (сбор данных)
- SORACOM Lagoon (визуализация дашбордов)
Обзор проекта
UnifiedWater — доступное и масштабируемое устройство для мониторинга загрязнения рек и озер. Реки — главные переносчики загрязнений в океан. Данные критически важны для борьбы с загрязнением. Устройство существует в двух режимах:
- Режим 1 (портативный): пользователь нажимает кнопку, опускает датчики в воду на 30 секунд — данные уходят в облако.
- Режим 2 (стационарный): устройство само периодически замеряет и отправляет данные.
Несколько устройств могут работать вместе, сливая данные в общий дашборд. Измеряются: температура воды, pH, мутность, атмосферная температура и влажность. Геолокация и время берутся из GSM/GPRS.
Функциональность
Фронтенд (физическое устройство)
На базе MKR GSM — надежно, просто, имеет GSM-модуль для Soracom. Алгоритм замера:
- 6 секунд прогрев датчиков в воде.
- 16 измерений мутности и pH (усреднение), температура воды/воздуха/влажность — одно измерение в конце.
- LED-кольцо индицирует процесс: многоцветное — инициализация/обработка, мигающее красное — предупреждение (нужно опустить в воду или ошибка), прогрессирующее синее/зеленое — идет замер.
- Формирование JSON-пейлоада и отправка на Soracom Harvest через HTTP POST.
- Уход в глубокий сон до следующего триггера (кнопка или таймер).
Пример JSON:
{
"Latitude": 53.3474617,
"Longitude": -6.2514529,
"waterpH": 7.30,
"waterTurbidity": 94,
"waterTemp": 12.10,
"atmoTemp": 14.50,
"atmoHum": 82,
"deviceID": 1,
"deviceName": "device1",
"epoch": 1559392636,
"mode": 2
}
Бэкенд (Soracom)
Данные визуализируются в Soracom Lagoon: карта с точками замеров (цвет = уровень загрязнения), графики, таблицы. Настроены email-оповещения при аномальных pH или мутности.
Масштабируемость: дешевизна и простота позволяют развернуть флот устройств. Регистрация в Soracom упрощается через Soracom Krypton. Персональные дашборды для каждой организации/пользователя, в будущем — совместное использование.
Преимущества
- Низкие эксплуатационные расходы (автономность).
- Легкое масштабирование (один или десятки устройств).
- Быстрый сбор и визуализация в реальном времени.
- Доступ к данным из любой точки через веб-дашборд.
Сборка устройства
Шаг 1: Аппаратура
Список выше. Все сенсоры паяются к MKR GSM (схемы ниже).
Шаг 2: Схема подключения
После пайки подключаются SIM-карта, GSM-антенна и питание (LiPo, пауэрбанк или батареи на VIN). Устройство спит между замерами для экономии энергии.
Шаг 3: Структура кода
Четыре основных модуля:
- Collect Sensor Data — 6 сек прогрев, 16 циклов опроса мутности/pH с индикацией на кольце, единичные замеры точных датчиков.
- Get Time and Date — время из RTC (синхронизировано с GSM), геолокация из GPRS.
- Process Data — усреднение, формирование JSON-строки.
- Send Data — HTTP POST на
harvest.soracom.io, вывод ответа в Serial.
Шаг 4: Настройка переменных перед загрузкой
mode— 1 (кнопка) или 2 (периодический).deviceID,deviceName— уникальные идентификаторы для каждого устройства в флоте.sleepTime— интервал сна (в коде 5 сек для тестов, в поле — например, 15 мин).proDebug— true для отладки (требует открытый Serial Monitor), false для автономной работы.
Шаг 5: Загрузка кода и первый запуск
Подключите MKR GSM к компьютеру, загрузите скетч (mode=1). Опустите датчики в воду, нажмите кнопку, дождитесь отправки. Повторите несколько раз для наполнения Soracom Air.
Шаг 6: Настройка Soracom (Аккаунт, SIM, Groups, Harvest)
Подробная пошаговая инструкция со скриншотами в оригинале. Основные этапы:
- Регистрация на soracom.io, подтверждение email, вход.
- Регистрация SIM-карты (ввод ICCID и AuthKey).
- Создание Group, включение Soracom Air и Harvest в группе.
- Настройка Harvest: включение, хранение данных.
Шаг 7: Настройка Lagoon (Дашборды и алерты)
Создание дашборда в Lagoon: карта, графики, таблица. Добавление виджетов алертов на email при выходе pH/мутности за нормы. Множество скриншотов в оригинале.
Калибровка датчиков
- pH: поместите зонд в буфельный раствор pH 7, подождите 5 мин, крутите потенциометр на модуле до вывода 7.0 в Serial.
- Мутность: в чистой воде измерьте напряжение на аналоговом пине, запишите в переменную
calibrationвsensors.h(если показания >100%).
Библиотеки
- ArduinoLowPower
- Adafruit_NeoPixel
- MKRGSM
- Wire, OneWire, DallasTemperature, RTCZero
Корпус
Автор изготовил портативный корпус, удобный для обоих режимов. Фото сборки в оригинале.
Итог
Устройство готово к полевым испытаниям. Проверьте местную реку/озеро, следите за данными в дашборде. Данные — новая валюта, коллективный мониторинг поможет осознать проблему загрязнения и действовать сегодня.
Код и схемы
Репозиторий: github.com/Andrei-Florian/UnifiedWater-v1
Производственный процесс
- Понимание кислородного (O2) датчика: роль, размещение и признаки отказа
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Построение низкобюджетного датчика влажности почвы на Raspberry Pi для умного полива
- Тестирование датчика температуры DS18B20 на Raspberry Pi
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
- Sensor Telemetry 2.0.1 — продвинутый мониторинг температуры с Azure IoT Hub
- Датчик эмоций и ЭЭГ: низкобюджетное железо для детекции эмоций в реальном времени
- Передача данных Adafruit 10DOF IMU с Raspberry Pi 2 в Azure Event Hubs на Windows 10 IoT Core
- Мониторинг состояния реки: Arduino-система контроля качества воды
- Сенсорная башня на Arduino Cloud: Мониторинг температуры, движения и газа