高性能 Arduino 気象観測気球データロガーの製作ガイド
気象観測気球で成層圏へデータロガーを送ろう
Arduino を気象観測気球に搭載して成層圏(約 30 km 高度、「宇宙の端」と呼ばれる領域)へ送り、気温・湿度・加速度などの環境データを記録するための包括的なガイドです。スキルレベルや目的に合わせて 3 つの製作パスを用意しています。
3 つの製作パス
- パス 1:ユニバーサル基板(プロトボード) — はんだ付けスキルが少しあればOK。センサーや機能を自由に選べる最も柔軟な方法。
- パス 2:設計済み PCB シールド — 専用基板「Eclipse PCB」を注文・実装するだけで、配線不要で信頼性の高いロガーが完成。Gerber ファイルとコードを提供。
- パス 3:自作 PCB 設計 — 上級者向け。回路設計・基板製造・ファームウェア開発のすべてを自分で行う。本ガイドでは法規制や設計上の重要ポイントのみ解説。
飛行前の重要な規制・制約(米国 FAA 基準)
- ペイロードに携帯電話の電波を出さないこと(機内モード必須)
- GPS 追跡にアマチュア無線(APRS)を使う場合はハムライセンスが必要
- ペイロードの重量/面積比が 3.0 oz/in² を超える場合、総重量 4 lb 以下
- 個々のペイロードは 6 lb 以下
- 複数ペイロードの合計は 12 lb 以下
詳細な FAA ガイドラインは こちら を参照してください。
パス 1:ユニバーサル基板での製作
必要な部品
- Arduino Mega 2560 × 1
- DS18B20 防水温度センサー(1-Wire) × 2(外気温・内部温度用)
- DHT22 温湿度センサー × 1
- ADXL335 / ADXL337 3軸加速度センサー × 1
- MicroSD カードモジュール × 1(FAT16/32 フォーマット、16 GB 以下)
- ピンヘッダー、抵抗(4.75 kΩ × 2、10 kΩ × 1、100 Ω × 3)、5050 SMD LED × 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;
}
重要なポイント
- MicroSD カードは必ず FAT16/32 でフォーマットし、16 GB 以下を使用
- 電源は低温(-40℃)対応のリチウム電池や大容量バッテリーを用意、発泡スチロール箱で断熱
- ステータス表示用 LED を追加し、飛行前に動作確認を徹底
- 気圧計ベースの高度計は 30,000 ft 以上で動作しないことが多いため、高度取得には GPS 必須
パス 2:設計済み PCB「Eclipse PCB」の使用
追加で必要な部品
- MPL3115A2 気圧・高度センサー(基板上に実装済み)
- ステータス LED(青・赤・緑)用抵抗・配線
- スライドスイッチ(ログ停止用)
PCB 注文手順
- GitHub リポジトリ
nmrocketryreviews/HADLdataloggerから Gerber ZIP をダウンロード - JLCPCB 等の基板製造サービスにアップロードし、以下設定で注文:
- 層数・寸法:デフォルト
- 厚さ 1.6 mm、銅厚 1 oz
- 表面処理:HASL(鉛フリーはんだの場合は鉛フリー HASL)
- フライングプローブ検査:有効
- 枚数:必要数(5 枚 $2 程度〜)
- 届いた基板に部品をはんだ付け(ヘッダーピンを側面に実装し、Arduino Mega に直挿し)
- 提供コード(GitHub 内
1.6.ino)を書き込み、動作確認
パス 2 版コードの主な違い
- MPL3115A2 で気圧・高度・温度を取得(ただし 30,000 ft 以上では高度は参考値)
- 3色 LED で SD カード状態・エラーを視覚表示
- スイッチ(ピン 23)でログ停止・データ保存
パス 3:自作 PCB 設計のガイドライン
- 搭載センサーの候補:温度(-50℃対応)、湿度、高度(GPS必須)、大気質、放射線、GPS
- 回収手段:SPOT GPS、APRS 無線(ハムライセンス必要)、携帯電話(非推奨)
- 重量制限:ペイロード総重量 4〜12 lb 以内(構成による)
- 電源・断熱:発泡スチロールケース、手袋用カイロ、ソーラーパネル等で内部を室温近くに保つ
- 設計ツール:KiCad、Eagle、Fusion 360 等でシールド型またはスタンドアロン基板を設計
飛行前の最終チェックリスト
- レーダー反射板(コーナーキューブ等)をペイロードに装着
- NOTAM(航空情報)を事前に申請・届出
- 全配線・はんだ付けの機械的強度確認(振動・衝撃対策)
- バッテリー容量・低温特性の実地テスト
- GPS/APRS/SPOT 等の追跡システムの動作確認
関連リソース
- GitHub リポジトリ:PCB Gerber ファイル・コード
- SPOT 3 Satellite Messenger(Amazon 等で購入可能)
- 気球・ペイロード湾・ヘリウム充填手順は別途専門ガイドを参照
安全第一: 航空機との衝突リスクを最小化し、FAA 等の規制を遵守してください。ルールを守らないと規制強化の原因になり、みんなの楽しみが奪われます。
製造プロセス
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- スマートホーム連携向けマルチポジション温度センサーシステム
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
- 3Dプリンター火災予防:スマートセンサーセーフティシステム
- Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
- Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
- Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
- Arduino Nanoで作る8×8 LEDマトリックスのフリップクロック - 自作リアルタイムクロック
- 10ドルで作る携帯型Arduino気象観測ステーション – Nano、DHT22、BMP180、LCDで簡単DIY
- CoroFenceサーマルディテクター:Grid-EYE & PIRセンサー搭載IoT体温監視