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

Arduino Nano 33 IoT: Мультипараметрический датчик воды (EC, pH, ORP) с BLE и PWA

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

Arduino Nano 33 IoT × 1
Microfire LLC Isolated EC Probe Interface (изолированный интерфейс зонда EC) × 1
Microfire LLC Isolated ISE Probe Interface (изолированный интерфейс ионоселективного электрода) × 2

О проекте

Что мы будем создавать?

Устройство для измерения электропроводности (EC), pH, окислительно-восстановительного потенциала (ORP) и температуры. Оно подходит для мониторинга бассейнов, гидропонных установок и аквариумов. Данные передаются по Bluetooth Low Energy (BLE) и отображаются на веб-странице через Web Bluetooth. Для удобства проект оформлен как Progressive Web App (PWA) — его можно «установить» на смартфон прямо из браузера.

Arduino Nano 33 IoT: Мультипараметрический датчик воды (EC, pH, ORP) с BLE и PWA
Arduino Nano 33 IoT: Мультипараметрический датчик воды (EC, pH, ORP) с BLE и PWA

Все компоненты можно приобрести на ufire.co.

Расшифровка терминов

Железо

Платы uFire ISE имеют одинаковый I2C-адрес. Так как мы используем две такие платы (одну для pH, вторую — для ORP), адрес одной нужно изменить. Выбираем плату для ORP и меняем её адрес на 0x3E по инструкции.

Сборка проста: все модули используют систему Qwiic (JST-SH 4-pin). Соединяем их в цепочку. Для подключения к Nano 33 IoT нужен один кабель Qwiic–Male (мама). Цветовая маркировка проводов:

Arduino Nano 33 IoT: Мультипараметрический датчик воды (EC, pH, ORP) с BLE и PWA

Температурный датчик подключается к плате EC (хотя все платы поддерживают измерение температуры). Зонды EC, pH и ORP подключаются BNC-разъёмами. Рекомендуется поместить всё в корпус — водная среда требует защиты электроники.

Программная часть

ПО делится на две части: прошивка Nano 33 и веб-страница.

Алгоритм работы:

  1. Веб-страница подключается к Nano по BLE.
  2. Страница отправляет текстовые команды (запрос измерения, калибровка и т.д.).
  3. Nano принимает команду, выполняет её и возвращает JSON-ответ.
  4. Страница обновляет интерфейс.

BLE-сервисы и характеристики

В прошивке используется один кастомный сервис и две характеристики:

BLEService uFire_Service("4805d2d0-af9f-42c1-b950-eae78304c408");
BLEStringCharacteristic tx_Characteristic("50fa7d80-440a-44d2-967a-ec7731ec736a", BLENotify, 20);
BLEStringCharacteristic rx_Characteristic("50fa7d80-440b-44d2-967b-ec7731ec736b", BLEWrite, 20);

Инициализация BLE:

BLE.setLocalName("uFire BLE");
BLE.setAdvertisedService(uFire_Service);
uFire_Service.addCharacteristic(tx_Characteristic);
uFire_Service.addCharacteristic(rx_Characteristic);
BLE.addService(uFire_Service);
rx_Characteristic.setEventHandler(BLEWritten, rxCallback);
BLE.advertise();

rx_Characteristic.setEventHandler(BLEWritten, rxCallback) — вызывает функцию rxCallback при записи в характеристику. BLE.advertise() запускает анонсирование устройства.

Текстовые команды

Обмен данными происходит простыми текстовыми командами. Библиотека uFire поддерживает JSON и MsgPack; в проекте используется JSON для читаемости.

Пример:

Веб-страница (Vue.js + Web Bluetooth)

Фронтенд на Vue.js без бэкенда, без сборщиков (plain JS/CSS). Стилизация — Bulma. В <head> подключён манифест PWA:

<link rel="manifest" href="manifest.json">

JS разбит на модули: app.js (UI, Vue), ble.js (Bluetooth), ec.js, ph.js, orp.js (команды датчиков).

Особенности Web Bluetooth

Подключение к характеристикам и подписка на уведомления:

service = await server.getPrimaryService(this.serviceUuid);
characteristic = await service.getCharacteristic(this.txUuid);
await characteristic.startNotifications();
characteristic.addEventListener("characteristicvaluechanged", this.value_update);

Таймер опрашивает датчики каждые 5 секунд. Функция value_update парсит входящий JSON и обновляет UI.

Важно: для работы Web Bluetooth страница должна быть обслужена по HTTPS. Для локальной разработки удобен serve-https.

PWA: превращаем страницу в приложение

Шаги:

  1. manifest.json — генерируется онлайн (например, App Manifest Generator). Ключевые поля: scope, start_url, display: "standalone". Файл кладётся в корень сайта.
  2. Service Worker — для кэширования и офлайн-работы. Используется стандартный шаблон от Google с перечнем кэшируемых файлов. Регистрация в mounted() Vue:
mounted: function () {
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('service-worker.js');
  }
},
  1. Иконки — генерируются через FavIcon Generator.

Проверка — через Lighthouse. При успехе Chrome предложит установить приложение баннером.

Код

Схемы

Все соединения выполнены кабелями Qwiic.

Arduino Nano 33 IoT: Мультипараметрический датчик воды (EC, pH, ORP) с BLE и PWA

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

  1. Infineon назван Advanced Technology Partner Amazon Web Services
  2. Raspberry Pi и HDC2010: полное руководство по настройке I2C датчика температуры и влажности
  3. Создание безопасной двери с распознаванием лиц на Windows IoT и Raspberry Pi
  4. Создание кнопки AWS IoT с управлением движением на Raspberry Pi, PIR-датчике и MQTT
  5. Точный мониторинг температуры и влажности с SHT15 на Windows 10 IoT Core
  6. Установка Windows 10 IoT Core на Raspberry Pi 3 Model B+: Пошаговое руководство
  7. Превратите Raspberry Pi 4 в веб-сервер и создайте свой сайт
  8. Расширение GoPiGo v2 на Windows 10 IoT Core для Raspberry Pi 3
  9. Система управления бассейном на Azure IoT: умные датчики и удаленный мониторинг
  10. Как IoT революционизирует дизайн и разработку веб-приложений