ひょんなことで、高度計の必要を感じました。
買うという選択肢はなく、家にあるもので作ることにしました。
目指す仕様
① 持ち運びできる。(液晶表示、バッテリー式)
② できれば、分解能1mくらいほしい
③ 絶対値だけでなく、相対値(ある地点から何メートル下がった)がほしい
ということで、ネットでしらべました。ラジオペンチさんのアナログ高度計、すごい人がいるものです。百均の時計であんなものまで作れるとは。
こちらは、歩きながら、立ち止まって高度を確認、また歩いて高度を確認という使い方を想定してますので、表示は家に転がってる16文字x2行のLCDを使います。
Arduino uno R3も買いました。本当は家にころがってるpicマイコン(10年前くらいに購入してしばらく遊んだやつ)と思ったのですが、参考情報が桁違いに少なく、時代はArduinoに変わってしまってました
気圧センサーは秋月電子でいいのを買いました。
LPS25HB
精度:±0.1hPa(25℃)、±1hPa(0~80℃)
これなら600mの生駒山で1mの違いを検知してくれそうです。
Arduino IDEでスケッチ→ライブラリをインクルード→ライブラリを管理の画面で 「POLOLU lps」を検索すると「LPS」がヒットしますので「インストール」をクリックします。
内容は以下のとおりです。
ArduinoとLPS25HBの接続方法です。#include <Wire.h> #include <LPS.h> LPS ps; void setup() { Serial.begin(9600); Wire.begin(); if (!ps.init()) { Serial.println("Failed to autodetect pressure sensor!"); while (1); } ps.enableDefault(); } void loop() { float pressure = ps.readPressureMillibars(); float altitude = ps.pressureToAltitudeMeters(pressure); float temperature = ps.readTemperatureC(); Serial.print("p: "); Serial.print(pressure); Serial.print(" mbar\ta: "); Serial.print(altitude); Serial.print(" m\tt: "); Serial.print(temperature); Serial.println(" deg C"); delay(2000); }
実際の配線です。
信号線は2本ですっきりしてるのですが、5vを3.3vに変換する必要があるためすこしごちゃごちゃしてます。
「マイコンボードに書き込む」の後、ツール→シリアルモニタをクリックして立ち上げますと、
だーっと表示されます。
わしの家は海底やったのか。
結構簡単に使えました。
0 件のコメント:
コメントを投稿