工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

高性能 Arduino 気象観測気球データロガーの製作ガイド

気象観測気球で成層圏へデータロガーを送ろう

Arduino を気象観測気球に搭載して成層圏(約 30 km 高度、「宇宙の端」と呼ばれる領域)へ送り、気温・湿度・加速度などの環境データを記録するための包括的なガイドです。スキルレベルや目的に合わせて 3 つの製作パスを用意しています。

3 つの製作パス

飛行前の重要な規制・制約(米国 FAA 基準)

  1. ペイロードに携帯電話の電波を出さないこと(機内モード必須)
  2. GPS 追跡にアマチュア無線(APRS)を使う場合はハムライセンスが必要
  3. ペイロードの重量/面積比が 3.0 oz/in² を超える場合、総重量 4 lb 以下
  4. 個々のペイロードは 6 lb 以下
  5. 複数ペイロードの合計は 12 lb 以下

詳細な FAA ガイドラインは こちら を参照してください。

パス 1:ユニバーサル基板での製作

必要な部品

回路図・配線

提供されている回路図に従って配線してください。Arduino Mega の SPI ピン(CS=10)に MicroSD モジュールを接続し、DS18B20 はデジタルピン 3、DHT22 はピン 2、加速度センサーはアナログピン A0〜A2 に接続します。

サンプルコード(主要部分)

#include <DHT.h>
#include <SPI.h>
#include <SD.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define DHTPIN 2
#define DHTTYPE DHT22
#define ONE_WIRE_BUS 3
#define CS_PIN 10

DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
File sdcard_file;

const int scale = 3; // ADXL335/337 用 ±3g
const bool micro_is_5V = true;

void setup() {
  Serial.begin(9600);
  sensors.begin();
  dht.begin();
  pinMode(CS_PIN, OUTPUT);

  if (!SD.begin(CS_PIN)) {
    Serial.println(F("SDカード初期化失敗"));
    return;
  }
  sdcard_file = SD.open("data.csv", FILE_WRITE);
  if (sdcard_file) {
    // CSV ヘッダー書き込み
    sdcard_file.println(F("DS18B20,DHT22_Temp,Hum,HeatIdx,RawX,RawY,RawZ,ScaledX,ScaledY,ScaledZ"));
  }
}

void loop() {
  delay(222);

  // 加速度読み取り・スケーリング
  int rawX = analogRead(A0);
  int rawY = analogRead(A1);
  int rawZ = analogRead(A2);
  float scaledX = mapf(rawX, 0, 675, -scale, scale);
  float scaledY = mapf(rawY, 0, 675, -scale, scale);
  float scaledZ = mapf(rawZ, 0, 675, -scale, scale);

  // 温度・湿度読み取り
  sensors.requestTemperatures();
  float extTemp = sensors.getTempCByIndex(0);
  float hum = dht.readHumidity();
  float temp = dht.readTemperature();
  if (isnan(hum) || isnan(temp)) return;
  float heatIdx = dht.computeHeatIndex(temp, hum, false);

  // SDカードへ記録
  if (sdcard_file) {
    sdcard_file.print(extTemp); sdcard_file.print(',');
    sdcard_file.print(temp); sdcard_file.print(',');
    sdcard_file.print(hum); sdcard_file.print(',');
    sdcard_file.print(heatIdx); 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.println(scaledZ);
    sdcard_file.flush();
  }
  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;
}

重要なポイント

パス 2:設計済み PCB「Eclipse PCB」の使用

追加で必要な部品

PCB 注文手順

  1. GitHub リポジトリ nmrocketryreviews/HADLdatalogger から Gerber ZIP をダウンロード
  2. JLCPCB 等の基板製造サービスにアップロードし、以下設定で注文:
    • 層数・寸法:デフォルト
    • 厚さ 1.6 mm、銅厚 1 oz
    • 表面処理:HASL(鉛フリーはんだの場合は鉛フリー HASL)
    • フライングプローブ検査:有効
    • 枚数:必要数(5 枚 $2 程度〜)
  3. 届いた基板に部品をはんだ付け(ヘッダーピンを側面に実装し、Arduino Mega に直挿し)
  4. 提供コード(GitHub 内 1.6.ino)を書き込み、動作確認

パス 2 版コードの主な違い

パス 3:自作 PCB 設計のガイドライン

飛行前の最終チェックリスト

関連リソース

安全第一: 航空機との衝突リスクを最小化し、FAA 等の規制を遵守してください。ルールを守らないと規制強化の原因になり、みんなの楽しみが奪われます。

製造プロセス

  1. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  2. スマートホーム連携向けマルチポジション温度センサーシステム
  3. DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
  4. MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
  5. 3Dプリンター火災予防:スマートセンサーセーフティシステム
  6. Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
  7. Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
  8. Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
  9. Arduino Nanoで作る8×8 LEDマトリックスのフリップクロック - 自作リアルタイムクロック
  10. 10ドルで作る携帯型Arduino気象観測ステーション – Nano、DHT22、BMP180、LCDで簡単DIY
  11. CoroFenceサーマルディテクター:Grid-EYE & PIRセンサー搭載IoT体温監視