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

Сборка автономной метеостанции на базе MKR FOX 1200

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

Компонент Количество
Arduino MKR Fox 1200 1
Датчик атмосферы SparkFun BME280 (разъем для платы) 1
Цифровой датчик освещенности TSL2561 1
Датчик влажности и температуры HTU21D 1

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

О проекте

Примечание: Это руководство может быть устаревшим. Актуальную версию можно найти здесь.

В этом проекте показано, как превратить MKR FOX 1200 и набор I2C-сенсоров в простую метеостанцию, работающую от батареи.

Используемые датчики

Подключение оборудования

Схема подключения предельно проста: все датчики используют интерфейс I2C и работают от 3,3 В. Им требуется всего четыре провода от MKR FOX 1200: GND, 3,3 В, SDA (Pin 11) и SCL (Pin 12). Одинаковые четыре соединения можно распараллелить для трёх датчиков, так как у каждого свой уникальный I2C-адрес, а библиотеки автоматически различают их.

Вся система может питаться от двух щелочных элементов АА или ААА, соединённых последовательно (3 В), подключённых к клеммному блоку на плате.

Формат сообщений Sigfox

Сеть Sigfox позволяет отправлять максимум 140 сообщений в сутки, поэтому показания упаковываются в компактный бинарный формат. Максимальный размер сообщения — 12 байт. Тип float занимает 4 байта, поэтому показания сжимаются в более компактное представление. Формат float избыточен (диапазон до 3,4·10³⁸), поэтому задаются безопасные пределы значений (в зависимости от места установки), а обратное преобразование выполняется на сервере.

Настройка облачных сервисов

Используются два облачных сервиса:

Зарегистрируйте плату в Sigfox Backend, используя PAC и ID из примера FirstConfiguration (можно пропустить, если уже делали это ранее). Оба сервиса нужно настроить на взаимодействие и корректную интерпретацию данных. Зарегистрируйтесь в обоих и создайте пару каналов на ThingSpeak. Настройка показана на скриншоте ниже.

Сборка автономной метеостанции на базе MKR FOX 1200

Первый канал принимает «сырые» данные (readChannelID), второй — пересчитанные значения (writeChannelID).

Загрузите скетч через Arduino Create Editor. Скетч по умолчанию позволяет протестировать всю инфраструктуру перед развёртыванием. Установите:

oneshot = false

когда убедитесь, что бэкенд настроен верно. Скетч ожидает открытия последовательного порта, поэтому не запускайте его сразу. Вместо этого откройте Sigfox Backend и настройте callback:

  1. Нажмите DEVICE TYPE → LIST → правый клик по вашей плате → Edit.
  2. В левом меню выберите CALLBACKS.
  3. Нажмите New (правый верхний угол).
  4. Выберите Custom callback.

Настройте callback следующим образом:

Custom Payload:

status::uint:8 temp1::int:16:little-endian temp2::int:16:little-endian press::uint:16:little-endian hum::uint:16:little-endian light::uint:16:little-endian lastMsg::uint:8

Это структура, упакованная в скетче. Каждому полю назначается переменная для ссылки в HTTP-callback.

URL Pattern:

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1={customData#temp1}&field2={customData#press}&field3={customData#temp2}&field4={customData#hum}&field5={customData#light}&field6={customData#status}&field7={customData#lastMsg}

Замените api_key на Write API Key канала 1 из ThingSpeak. Сохраните настройки. Теперь можно открыть последовательный порт и наблюдать отправку первого сообщения.

Преобразование сырых данных в графики

Настроенная маршрутизация отправляет данные в ThingSpeak, но они всё ещё в «сыром» виде. Для обратного преобразования используйте инструмент аналитики ThingSpeak со следующим скриптом (MATLAB):

% TODO - Замените [] на ID канала для чтения: readChannelID = [];
% TODO - Введите Read API Key между кавычками: readAPIKey = 'T6UK7XO6A4H2AGT7';
% TODO - Замените [] на ID канала для записи: writeChannelID = [];
% TODO - Введите Write API Key между кавычками: writeAPIKey = 'XU4TGY261P6B5USN';

%% Чтение данных %%
data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table');
analyzedData = data;

%% Анализ данных %%
INT16_t_MAX = 32767;
UINT16_t_MAX = 65536;
analyzedData.('Temperature1') = data.('Temperature1') / INT16_t_MAX * 120;
analyzedData.('Temperature2') = data.('Temperature2') / INT16_t_MAX * 120;
analyzedData.('Pressure') = data.('Pressure') / UINT16_t_MAX * 200000;
analyzedData.('Light') = data.('Light') / UINT16_t_MAX * 100000;
analyzedData.('Humidity') = data.('Humidity') / UINT16_t_MAX * 110;

%% Запись данных %%
thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey);

%% Планирование: React → каждые 10 минут %%

Подставьте свои Channel IDs. Не забудьте запланировать выполнение анализа каждые 10 минут через React, иначе скрипт никогда не запустится! В итоге вы получите наглядные графики погодных параметров.

Код

WeatherMonitor — полный скетч доступен в репозитории проекта.

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

  1. Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
  2. Weather Monitor — DIY метеостанция на Raspberry Pi с загрузкой в Dropbox
  3. Создание потрясающей системы Ambilight для монитора на Arduino
  4. Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
  5. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  6. Компактная метеостанция: Arduino Nano + ESP8266, BMP280, OLED / Nokia 5110 LCD
  7. Цифровой стадиометр на Arduino: отслеживание роста лазерным датчиком VL53L0X
  8. Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
  9. Сенсорная башня на Arduino Cloud: Мониторинг температуры, движения и газа
  10. Точный монитор качества воздуха на датчике Sharp GP2Y1010AU0F