エントリー

カテゴリー「気象センサー」の検索結果は以下のとおりです。

ページ移動

気象用センサーの仕様

手持ちの気象用センサー仕様をまとめてみる

  BME280 SHT31 DHT11 DHT22/AM2302 LPS25H
基本仕様
電源電圧(V) 1.71~3.6 2.4~5.5 3.3~5.5 5(3.5~5.5) 1.7~3.6
通信方式 I2C/SPI I2C シリアル単線 シリアル単線 I2C/SPI
動作温度(℃)   0~90      
温度(℃)
範囲 -40~+85 -40~+125 0~+50 -40~+80 -30~105
精度 ±1 ±0.2 ±2 ±0.5 ±2
分解能 0.01      
湿度(%)
範囲 0~100 0~100 20~90 0~99.9  
精度 ±3 ±2 ±5 ±2  
分解能 0.008        
気圧(hPa)
範囲 300~1100       260~1260
精度 ±1       ±0.2
分解能 0.18        

AM2302は中華から購入(¥453/個)

IMG_20180814_192549836.jpgIMG_20180814_192626230.jpg

BMP280(左),BME280(右)をI2Cで使用する場合の結線

IMG_20190504_135159994.jpg

BMP280のVDDIOを接続しないとSPIになるそうだが接続しなくても良いようだ

BMP280のSCL,SDAはプルアップされている

BME280のJ1~J3をジャンパしたのでSCL,SDAはプルアップされI2Cアドレスが0x76になる(説明書

 

気象関係センサーの使い道を考える

温度,湿度,気圧センサーを使って何ができるか(ぼちぼち)考えてみる

もう1つ雷センサーがあるが検証する方法が現状ないので置いてある

この雷センサーも追加して考える

設置型運用

気象観測(温・湿・圧)

  • いわゆるアメダスのような物
  • 時刻取得とログ機能が必要
  • 公開するならWebサーバへデータを送り込む機能が必要
  • サーバへデータを送り込むなら時刻(RTC)は無くてもよい
  • 降水量がわからないとダメか
  • ログから天気予報を出せないか

部屋の温度管理(温・湿)

  • データはWebサーバで収集して全部屋の温湿度を参照できるようにする
  • 外気温も欲しい
  • 火災報知器になるかな?(反応が遅いので不向きだけど)
移動型運用

以下の機能を持ち歩けるようにする

センサー,表示部以外にブザーがいるかな

  • 温度計
  • WBGT(暑さ指数)監視
  • 高度計
  • 相対的な高度計
  • 雷警告
参考

iPhone6には気圧センサーが搭載されており移動時の高度ログを作っている

例えば運動用センサーとして高低差を見てエネルギー消費量の計算を行ったり,現状気圧から天気予報も行うようだ

人がいるところに限定されるけど全スマホから気圧情報をかき集めたら気圧マップができそうだね

設置型でデータ収集(転送)をどうするか?いろいろ調べていたらEPS-WROOM-02が面白そうだ(懸案なのは消費電力かな)

大気圧センサ(LPS25H)を試す

これまでの続きで大気圧センサ(LPS25H)を試してみる

温湿度センサを繋いでいるブレッドボードに追加

FSTN液晶モジュールもそのままにしてあるためSPIで接続しCSを8にする

 (LPS25H)      (arduino)          (ATMEGA328P)
1    VDD        +3.3V
 2    SCL        13                    19                SPI共通
 3    SDA/SDI    11                    17                SPI共通
4    SAO/SDO    12                    18                SPI共通
5    CS          8                    14                SPI別
6    NC
7    INT1
8    GND        GND

こちらからライブラリをいただいてテストプログラムを調整

// 大気圧センサLPS25H(SPI接続)のテスト
//
#include <SPI.h>
#include "skLPSxxSPI.h"

#define LPS25H_CS    8

skLPSxxx LPS(LPS25H,LPS25H_CS);             // デバイスはLPS25Hを指定

void setup() {
    int ans;

    // シリアルモニターの設定
    Serial.begin(9600);
    // SPIの初期化
    SPI.begin();                            // SPIを行う為の初期化
    SPI.setBitOrder(MSBFIRST);              // ビットオーダー
    SPI.setClockDivider(SPI_CLOCK_DIV4);    // クロック(CLK)をシステムクロックの1/4で使用(16MHz/4)
    SPI.setDataMode(SPI_MODE3);             // クロック極性 1(HIGH) クロック位相 1(HIGH)

    pinMode(LPS25H_CS, OUTPUT);             // 気圧センサーのCS

    delay(3000);                            // 3Sしたら開始

    // 気圧センサの初期化を行う(更新速度は1Hz)
    ans = LPS.PressureInit();
    if(ans == 0) {
        Serial.println("Initialization normal");
    } else {
        Serial.print("Initialization abnormal ans=");
        Serial.println(ans);
    }
    delay(1000);
}
void loop() {
    LPS.PressureRead();                     // 圧力と温度を読み出す
    Serial.print("[LPS25H]");
    Serial.print(Press);                    // 気圧値の表示を行う
    Serial.print(" hPa  ");
    Serial.print(Temp);                     // 温度の表示を行う
    Serial.println(" 'C");

    delay(1000);                            // 1秒後に繰り返す
}

 

特に問題なく動作確認完了

 

温湿度をFSTN液晶モジュールで表示

温湿度センサ(DHT11)の続きで,温湿度データをFSTN液晶モジュールで表示してみた

1

フォントをそこそこのサイズにしないと見え難いためu8glibのソースを見ながら適切なフォントを選択

#include "U8glib.h"
#include "DHT.h"

U8GLIB_MINI12864 u8g(10, 9);
DHT dht(2, DHT11);

void draw(float h, float hic) {
    u8g.setFont(u8g_font_helvR24);
    u8g.setPrintPos(4, 28);
    u8g.print(hic);
    u8g.setPrintPos(94, 28);
    u8g.print("'C");
    u8g.setPrintPos(4, 60);
    u8g.print(h);
    u8g.setPrintPos(94, 60);
    u8g.print("%");
}
void setup(void) {
    dht.begin();
    u8g.setContrast(190);
}
void loop(void) {

    // Wait a few seconds between measurements.
    delay(2000);

    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if(isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }
    float hic = dht.computeHeatIndex(t, h, false);

    // picture loop
    u8g.firstPage();
    do {
        draw(h, hic);
    } while(u8g.nextPage());
}

ところでデータシートを見ると,この温湿度センサ(DHT11)は,やっぱ廉価版のせいか小数点以下のデータはない(上で表示している小数点以下は補正で出てるだけ)

以下抜粋

Data consists of decimal and integral parts.
A complete data transmission is 40bit, and the sensor sends higher data bit first.
Data format: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit
decimal T data + 8bit check sum.
If the data transmission is right, the check-sum should be the last 8bit of "8bit integral
RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data".

要約すると,

データは40ビットでMSBから送られてくる

つまり全体は5バイト,最初の2バイトが湿度,次の2バイトが温度でそれぞれ1バイト目が整数部,2バイト目が小数点以下部となる

最後の1バイトはCRC(チェックサム)で1~4バイトを加算した数(オーバーフロー部は捨てる)

そして温湿度センサ(DHT11)の場合は,温湿度の2バイト目の小数点以下が必ず0になっている

湿度は製品で値がまちまちなようなので小数点以下はいらないかなと思うけど,気温はせめて0.5位までは欲しいかなと思うのでちょっと残念(使い場所を考えないといけないな)

 

次は大気圧センサを追加してみる

LPS25H

大気圧だけでなく温度も取得できるようだ

ページ移動

ユーティリティ

検索

エントリー検索フォーム
キーワード

新着コメント

Re:NOAA受信システム復旧
2025/06/11 from admin
Re:NOAA受信システム復旧
2025/06/11 from とおりすがり
Re:SDRplay社RSP1クローンを購入
2025/05/25 from 匿名希望
Re:Mozilla FirefoxではNHKプラスを再生できない件
2025/05/09 from Donabeyaki
Re:ATS-25を作製する
2025/03/23 from kazu

過去ログ

Feed