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

Arduino 101搭載 高機能ハイキングトラッカー ─ GPS、環境センサー、バッテリー内蔵

概要

Arduino 101(Intel Curie搭載)とアクセサリーシールドをベースに、GPS、気圧・温湿度・磁気・加速度センサー、RTC、電圧監視を統合したハイキング用環境モニターデバイスを自作。OLEDディスプレイでリアルタイム表示、4×単三電池で長時間駆動します。

搭載センサーと測定項目

ハードウェア構成の工夫

ソフトウェアアーキテクチャ

表示画面(OLED 128×64)

時刻: 14:35:22          BATT 4.2V
日付: 25/03/2024
気温: 18.5'C
湿度: 62%
気圧: 1013 hP
高度: 342 m
方位: 45° (NE) ◉○  ← 内側円が傾き指標
緯度: 23.57  経度: 90.36 (デモ値)

方位表示は傾き補償なし。内側の可変円が点になる(X/Y加速度≒0)ときが水平で方位精度最高。

既知の制約と対策

センサーインターフェース測定項目
LM75BI2C (0x48)気温
ADXL345I2C3軸加速度(傾き・振動)
DS3231I2C高精度RTC(時刻・日付)
HMC5883LI2C3軸磁気(方位角)
AM2320I2C湿度・温度
BMP180I2C気圧・高度
MTK3339 GPSUART (ハードウェアシリアル)位置・速度・距離
分圧抵抗ADC (A1)電池電圧

改善ロードマップ

ファームウェア

ハードウェア

コード構成(主要ヘッダー)


#include 
#include 
#include 
#include 
#include 
#include 
#include "U8glib.h"
#include "ds3231.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"
#include 
#include 
#include 

// I2Cデバイスインスタンス
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
TempI2C_LM75 termo(0x48, TempI2C_LM75::nine_bits);
ADXL345 accelerometer;
ChainableLED leds(6, 5, 12, 1); // clk, data, pwr, num
Adafruit_AM2320 am2320;
Adafruit_BMP085_Unified bmp180(10085);
Adafruit_HMC5883_Unified mag(12345);
// GPSはハードウェアシリアル使用時のみ有効化

メインループ概要


void loop() {
  // OLED描画(ピクチャーループ)
  u8g.firstPage();
  do { draw(); } while (u8g.nextPage());
  
  // センサー切り替えポーリング
  sensor_selector = (sensor_selector + 1) % 3;
  
  // 気温取得(毎回)
  temp = termo.getTemp();
  
  // 気圧・高度取得(selector==0)
  if (sensor_selector == 0) {
    bmp180.getEvent(&event);
    if (event.pressure) {
      prsr = event.pressure / 10; // hPa→kPa
      alt = bmp180.pressureToAltitude(1013.25, event.pressure);
    }
  }
  
  // 湿度取得(selector==1)
  if (sensor_selector == 1) {
    humid = am2320.readHumidity();
  }
  
  // 加速度取得(毎回)
  Vector norm = accelerometer.readNormalize();
  X = norm.XAxis; Y = norm.YAxis; Z = norm.ZAxis;
  Gravity = sqrt(X*X + Y*Y + Z*Z) - 0.3;
  
  // RTC取得(毎回)
  DS3231_get(&t);
  
  // 電池電圧・半固定抵抗読み取り
  Vbatt = (1.08 * analogRead(A1) / 1023.0) / 3.91 * (3.91 + 21.76);
  pot = analogRead(A0) * 5 / (10 * 3);
  
  // 方位取得(selector==2)
  if (sensor_selector == 2) {
    mag.getEvent(&event2);
    heading = atan2(event2.magnetic.y, event2.magnetic.x);
    heading += declination; // 磁気偏角
    if (heading < 0) heading += 2*PI;
    if (heading > 2*PI) heading -= 2*PI;
    heading = heading * 180 / PI;
  }
  
  // ブザー制御(半固定で閾値設定)
  digitalWrite(11, pot > 80);
  
  // RGB LED制御
  if (pot > 40) { /* HSB色相回転 */ }
}

外部リソース

まとめ

登山・ハイキング中の環境変化を可視化・記録するガジェットとして完成度が高いです。気圧高度計、電子コンパス、GPS、温湿度計、電池残量計が一体化し、OLEDで常時確認可能。課題(チルト補償、GPS統合、電池持ち)は明確で、バージョンアップの道筋も見えています。野外活動の「見える化」ツールとして実用的かつ教育的なプロジェクトです。

製造プロセス

  1. Raspberry PiでPIRモーションセンサーとLEDを制御
  2. Raspberry Piで低コスト土壌水分センサーを構築 - スマート灌漑に活用
  3. Raspberry Piフィットネストラッカーでハムスターの日々の運動量を追跡
  4. Raspberry PiでDS18B20温度センサーをテスト
  5. Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
  6. Walabot搭載トイレ衛生モニター:カメラ不要で清潔度と使用状況を検知
  7. エモーションセンサー&EEG:リアルタイム感情検知のための低コストハードウェア
  8. Raspberry Pi 2からAzure Event HubsへAdafruit 10DOF IMUデータを送信(Windows 10 IoT Core)
  9. UnifiedWater v1 - 完全なArduino水質センサーキット
  10. 酸素(O2)センサーを理解する:役割、配置、故障の兆候
  11. ISSセンサー向け高精度WiFi RSSIトラッキング
項目制約対策・備考
高度気圧ベースのため天候で変動平常時のみ信頼、GPS高度併用推奨
方位チルト補償未実装、磁気偏角固定値水平保持で使用、偏角はGPS位置から自動取得へ拡張可能
磁気妨害近くの磁性体・鉱物で狂う設置場所に注意
最低動作電圧約4.5Vそれ以下で電池交換
RTC時刻設定コード書き換え+コイン電池再装着必要ユーザー設定機能の追加が望ましい
GPS開発時未入手のためデモ座標実装時はAdafruit_GPSライブラリ統合必須
加速度振動に敏感静止時測定推奨