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

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

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

DS18B20 (цифровой термометр 1-Wire)2 шт.
DHT22 (датчик температуры и влажности)1 шт.
ADXL335 (трехосевой акселерометр)1 шт.
Arduino Mega 25601 шт.
Модуль MicroSD-карты1 шт.
MicroSD-карта (≤16 ГБ, FAT16/FAT32)1 шт.
SMD LED 50501 шт.
Резисторы: 4.75 кОм (2), 100 Ом (3), 10 кОм (1)—
Пин-хедеры 36 pin (2 шт.)—

Необходимые инструменты

Программное обеспечение

О проекте

Вы можете поднять Arduino на высоту ~30 км с помощью метеозонда — это «край космоса», где 99% атмосферы отсутствует. В этом руководстве описаны три пути реализации в зависимости от ваших навыков и целей.

Три пути реализации

Путь 1 — Макетная плата (Proto Board): максимальная гибкость в выборе датчиков, требует базовых навыков пайки.

Путь 2 — Готовый PCB-шилд: чистая компоновка, минимум пайки, фиксированный набор датчиков. Предоставляются Gerber-файлы и код.

Путь 3 — Собственный PCB: полная свобода проектирования, но требует опыта в разработке плат, программировании и пайке.

Важные правила и ограничения (США, FAA)

  1. Нет сотовых сигналов на борту (телефон только в режиме «в самолете»).
  2. Для GPS-трекинга через APRS нужна лицензия HAM.
  3. Если удельный вес полезной нагрузки > 3.0 унц/кв.дюйм — общий вес < 4 фунтов.
  4. Одна полезная нагрузка < 6 фунтов.
  5. Две полезные нагрузки — суммарно < 12 фунтов.

Полные правила FAA: ссылка.

Путь 1: Макетная плата

Выбор способа поиска полезной нагрузки

  1. SPOT GPS: простота, неограниченная дальность, долгая работа от батареи. Минусы: дорого, не работает вверх дном, сигнал блокируется плотными объектами. Рекомендуется SPOT 3 Satellite Messenger.
  2. APRS-радио: высокая надежность, передача телеметрии и координат, точная высота. Требует лицензии HAM.
  3. Мобильный телефон: не рекомендуется (проблемы с режимом полёта, стоимость, ненадёжность).

Планирование полёта

Схема и код (Путь 1)

Используется Arduino Mega (для совместимости с кодом). При переходе на Nano — переназначьте SPI-пины модуля SD.

Высокопроизводительный регистратор данных для метеозонда на Arduino
// DHT22
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// SD Card
#include 
#include 
File sdcard_file;
int CS_pin = 10;

// DS18B20
#include 
#include 
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

int scale = 3; // ±3g для ADXL337
boolean micro_is_5V = true;

void setup() {
  Serial.begin(9600);
  sensors.begin();
  dht.begin();
  pinMode(CS_pin, OUTPUT);
  if (SD.begin()) {
    Serial.println("SD Card found!");
  } else {
    Serial.println("Error finding SD Card");
    return;
  }
  sdcard_file = SD.open("data.csv", FILE_WRITE);
  if (sdcard_file) {
    // Заголовок CSV
    sdcard_file.println("DS18B20,DHT22 Temp,Hum,H.InX,rawX,rawY,rawZ,scaledX,scaledY,scaledZ");
  } else {
    Serial.println("error initializing SD card");
  }
}

void loop() {
  delay(222);

  // Акселерометр
  int rawX = analogRead(A0);
  int rawY = analogRead(A1);
  int rawZ = analogRead(A2);
  float scaledX, scaledY, scaledZ;
  if (micro_is_5V) {
    scaledX = mapf(rawX, 0, 675, -scale, scale);
    scaledY = mapf(rawY, 0, 675, -scale, scale);
    scaledZ = mapf(rawZ, 0, 675, -scale, scale);
  } else {
    scaledX = mapf(rawX, 0, 1023, -scale, scale);
    scaledY = mapf(rawY, 0, 1023, -scale, scale);
    scaledZ = mapf(rawZ, 0, 1023, -scale, scale);
  }

  // DS18B20
  sensors.requestTemperatures();
  int etemp = sensors.getTempCByIndex(0);

  // DHT22
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) return;
  float hic = dht.computeHeatIndex(t, h, false);

  // Запись на SD
  sdcard_file.print(etemp); sdcard_file.print(",");
  sdcard_file.print(t); sdcard_file.print(",");
  sdcard_file.print(h); sdcard_file.print(",");
  sdcard_file.print(hic); sdcard_file.print(",");
  sdcard_file.print(rawX); sdcard_file.print(",");
  sdcard_file.print(rawY); sdcard_file.print(",");
  sdcard_file.print(rawZ); sdcard_file.print(",");
  sdcard_file.print(scaledX); sdcard_file.print(",");
  sdcard_file.print(scaledY); sdcard_file.print(",");
  sdcard_file.print(scaledZ); sdcard_file.print(",");
  sdcard_file.println(" ");
  sdcard_file.close();
  delay(223);
}

float mapf(float x, float in_min, float in_max, float out_min, float out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Важно: SD-карта должна быть отформатирована в FAT16/FAT32, объём ≤16 ГБ. Добавьте светодиоды для индикации состояния. Проверяйте питание SD-модуля — некоторые чувствительны к напряжению.

Путь 2: Готовый PCB-шилд «Eclipse»

Плата включает: 2×DS18B20 (внутренний/внешний), DHT22, ADXL337, MPL3115A2 (барометр), индикацию RGB-светодиодом, слот для MicroSD. Gerber-файлы и код на GitHub: nmrocketryreviews/HADLdatalogger.

Заказ PCB

Сборка и прошивка

  1. Распаяйте все компоненты согласно руководству (см. фото).
  2. Установите шилд на Arduino Mega.
  3. Отформатируйте MicroSD (FAT16/FAT32, ≤16 ГБ).
  4. Загрузите код версии 1.6 из репозитория.
  5. Проверьте через Serial Monitor — должно появиться сообщение об успешной инициализации SD.

Код для Пути 2 включает работу с барометром MPL3115A2 и RGB-индикацией (зелёный — SD ОК, красный — ошибка, синий — запись).

Путь 3: Собственный PCB

Руководство не обучает проектированию PCB, а даёт рекомендации:

Заключение

Метеозонды — доступный способ поднять полезную нагрузку в стратосферу. Обязательно: установите радарный рефлектор, подайте NOTAM (уведомление лётчикам), соблюдайте все правила FAA. Не создавайте прецедентов для ужесточения правил.

Удачных полётов!
NM Rocketry Reviews

Печатные файлы и схемы

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

  1. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  2. Многопозиционная система датчиков температуры для интеграции в умный дом
  3. DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
  4. MotionSense: умная система обнаружения проникновения на Arduino и ESP8266
  5. Пожарная безопасность 3D-принтера: умная система обнаружения дыма
  6. Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
  7. Веб-управляемый IoT-индикатор на Arduino, Yaler и IFTTT
  8. Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
  9. Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени
  10. CoroFence: термический детектор на GridEye + PIR с IoT