エントリー

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

なんちゃって百葉箱の改善

しばらく運用したところ問題点が浮上したので改善する

消費電力

実際の運用での消費電力量確認のため秋月のニッケル水素電池パック3.6V830mAh(パナソニック製)で室内試行

消費電力を20mAh/日と見積もっていたので40日は厳しくてもひと月は持つかなと思っていたら10日で停止し予想外の結果となる

以下がバッテリー電圧の状態推移で外した時のバッテリーは瀕死だった(試行時のグラフ

WS181028.pngIMG_20181025_063850020.jpg

最初の段階で計測したUSBチェッカーの消費電力値を鵜呑みにしたのが失敗だったようで再度見積もってみる

既に回路は出来上がっているので実際に動作させ登録1回分の電流を計測した

IMG_20181025_212716796.jpgIMG_20181025_212722363.jpg

左が動作時(70mA前後)で約13秒,右がディープスリープ時の電流(0.28mA)(ビデオ

(動作時)

通信のあるなしで70mAを前後するようだが70mAとして考える

(ディープスリープ時)

電流は以下のとおりで装置仕様から裏付けられる

ESP8266 10μA Deep-Sleep時
BME280 0.1μA スリープ・モード
DHT22 50μA 待機中
NJM2884 200μA 無負荷時無効電流
電圧測定 6~7μA 分圧抵抗590KΩ(470+120),4~3.5V
合計 0.268mA  

(計測データから)

1時間で 13秒 × 6回 = 78秒間動作,1日で 78秒 × 24時間 = 1872秒間 となり

70mA × 1872秒 ÷ 3600秒 = 36.4mAh

ディープスリープ時が(実際は1872s分削除だが無視して)

0.28mA × 24 = 6.72mAh

トータルで1日分が

36.4 + 6.72 = 43.12mAh

10日間で430mAhとなるがバッテリーは830mAhなので充電が不十分だったのかへたっていたのかもしれない

省電力化

三端子レギュレーターをNJM2884から消費電力30μAのNJU7223F33するとディープスリープ時の合計が0.098mAとなり約4.4mAh減るが使用したいバッテリー電圧の関係でNJM2884を選択したため変更はしない

そこでESP8266の動作時間を減らすことができれば電力消費を抑えることができるのでこちらを参考に改善してみた

対応したのは再コネクションの部分で明示的に再コネクションするより必要な情報を退避させておいて自動的に行った方が処理が早いらしい(接続は一定時間保持されているのでネゴのやり直しを行わない分が短縮されるのだろうと考える)

結果,動作時間が13秒から10秒の28.0mAhで合計34.72mAhとなる(ビデオ

省電力観測モード

通常は1時間に6回(10分毎)の観測を実行する

観測数を減らせば省電力化できるのでバッテリー容量が少なくなってきたら観測数を減らして太陽電池でのバッテリー回復を増大させる仕組みを導入

具体的にはディープスリープ時間を操作すればよく3.5V未満なら30分,3.4V未満になると60分スリープとし,それぞれ1時間に2回と1回の観測にする

アメダスとの温度差

近くにあるアメダスと日別の最高気温と最低気温を比べてみるとプラス方向に差ができている

10/23 曇・雨
    最高気温(℃) 20.1 (自宅)21.6 +1.5
   最低気温(℃) 13.8 (自宅)15.3 +1.5
10/24 晴
   最高気温(℃) 22.5 (自宅)26.6 +4.1
   最低気温(℃) 13.6 (自宅)14.8 +1.2
10/25 晴
   最高気温(℃) 20.6 (自宅)24.3 +3.7
   最低気温(℃) 11.1 (自宅)12.8 +1.7
10/26 晴・曇・雨
   最高気温(℃) 21.7 (自宅)25.7 +4.0
   最低気温(℃) 10.5 (自宅)11.8 +1.3
10/27 晴(風あり)
   最高気温(℃) 20.0 (自宅)23.1 +3.1
   最低気温(℃) 14.8 (自宅)14.5 -0.3

しかも晴の日で最高気温差の幅が大きいので鎧戸箱の空気の流れが悪く熱が籠っているのではないかと想定

鉢皿の高さは39mmで鉢皿間を20mmのスペーサーで隙間を空けていたのを30mmのスペーサーにした

IMG_20181028_172329635.jpg

20mmの時から比べると大きく隙間が空いたように見える

太陽電池

太陽電池の出力が不足しているようで十分に太陽光が当たっている場合でもバッテリー電圧が上昇しない

搭載する前の実験では40mAの充電量があったため十分かと考えていたが再調整が必要

また太陽電池部分に雨水が溜まるようなので改善しなければならない

IMG_20181027_063359639_HDR.jpg

スケッチ

現状のESP8266のスケッチ

#include <ESP8266WiFi.h>
#include "DHT.h"
#include "BME280.h"

#define DHTTYPE         DHT22    //DHT 22 (AM2302), AM2321
#define DHTPIN          14       //what digital pin we're connected to
#define BME280_ADDRESS  0x76

//DHT22インスタンス
DHT dht(DHTPIN, DHTTYPE);
//BME280インスタンス
BME280 bme280(BME280_ADDRESS     //BME280 I2C ADDRESS
    , 0b0001                     //Temperature oversampling : x1
   , 0b0001                     //Humidity oversampling : x1
   , 0b0001                     //Pressure oversampling : x1
   , 0b0000                     //Mode : Sleep mode(0), Normal mode(3)
    , 0b0101                     //Stand-by time : 1000ms
    , 0b0000                     //filter : 0ff
);

//Senser
const int locid      = 11;       //場所ID
//WiFi
const char *ssid     = "ssid";
const char *password = "password";
const char *host     = "server_name";
const char *path     = "regTenki.php";
const int httpPort   = 80;
//Sleep
static int sleepTime = 600; //10分(標準)

void deepSleep() {
//第1引数の時間設定はμ秒なので600秒(10分)後に復帰する設定になる
//+7は(10分での)補正値
ESP.deepSleep((sleepTime + 7) * 1000 * 1000 , WAKE_RF_DEFAULT);

//deepsleepモード移行までのダミー命令
delay(1000);
}

void setup() {
//WiFi接続
if(WiFi.SSID() != ssid) {
//設定が記憶されていないなら接続し記憶させる
WiFi.persistent(true); //ssidとpasswordを保存させる設定
WiFi.mode(WIFI_STA); //STA(子機)モード
WiFi.setAutoConnect(true); //次回起動時に保存内容で接続
WiFi.begin(ssid, password); //初回接続
}
unsigned long timeout = millis();
while(WiFi.status() != WL_CONNECTED) {
if(millis() - timeout > 30000) deepSleep();
delay(500);
}
//DHT22の開始
dht.begin();

//BME280の開始
double dTemperature, dHumidity, dPressure;
bme280.begin();

//DHT22: 温度,湿度
float dhtTemp = dht.readTemperature();
float dhtHumi = dht.readHumidity();

//BME280: 気圧,温度,湿度
bme280.getData(dTemperature, dHumidity, dPressure );

//ADC: バッテリー電圧
float vbat = ((119.0 + 469.0) / 119.0) * system_adc_read() / 1024.0;
if(vbat < 3.4) {
sleepTime = 3600; //3.4V未満になったら60分(最大は71.5分)
} else if(vbat < 3.5) {
sleepTime = 1800; //3.5V未満で30分
} else {
sleepTime = 600; //通常は10分
}

//Requesting POST data
WiFiClient client;
String data = "LOC=" + String(locid) + "&PRES=" + String(dPressure)
+ "&TEMP=" + String(dhtTemp) + "&HUMI=" + String(dhtHumi)
+ "&BVOLT=" + String(vbat);
if(!client.connect(host, httpPort)) {
deepSleep();
}
//Send request to the server
client.println(String("POST ") + path + " HTTP/1.1");
client.println(String("Host: ") + host);
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Content-Length: " + String(data.length()));
client.println();
client.print(data);
timeout = millis();
while(!client.available()) {
if(millis() - timeout > 5000) {
client.stop();
deepSleep();
}
}
//HTTPヘッダを含むデータの読み取り(1文字毎)
String body = "";
while(client.available()) {
body += client.readStringUntil('\r');
}
if(client.connected()) client.stop();
WiFi.persistent(false); //保存したssidとpasswordが消去させないようにする
//trueのままdisconnect()すると消去される
WiFi.disconnect();
deepSleep();
}

void loop() {}

#include "DHT.h" は,一般的に出回っているので検索で手に入る

#include "BME280.h" は,前に記載したとおりこちらからいただいたスケッチの入出力部(SPIからI2C)とコンストラクタを修正したもの(再配布可能か不明なので記載のみ)

なんちゃって百葉箱を作ってみる(完成)

メインの百葉箱が完成

IMG_20181020_130501996.jpgIMG_20181020_130533350.jpg

構成

全7段で一番上には設置のための取っ手を付け2段目にはバッテリーを置く

IMG_20181018_174122683.jpgIMG_20181018_174138807.jpg

2段目の下部にはセンサーを縦置き

IMG_20181018_174614741.jpgIMG_20181018_191600721.jpg

当初はセンサーにホコリが積もらないようボードに置いて横置きを考えていたが,他のパーツやボードにもホコリが積もらないように縦置きに変更した

残りの下段5個は同じで中央に風穴を空ける

IMG_20181018_153452939.jpg

組立

組立に使ったパーツ

IMG_20181020_112425780.jpg

4㎜サイズの丁度良いスペーサーが無かったので5㎜のアルミ菅を使って作製

IMG_20181020_122932709.jpgIMG_20181020_125317175.jpg

最終段は虫が入らないように網で塞いだ

設置

設置場所は芝生の上の1200~1500㎜が理想的ということでポールを設置しようと考えたが,そこまでこだわることも無いのでまずはベランダに設置

IMG_20181020_172004361.jpgIMG_20181020_172139311.jpg

標高95mの場所から2800㎜の高さに設置となる

今後

残りは以下のとおりで更にコツコツやっていく

  • 気象データ閲覧の充実
  • 室内気温の観測
  • バッテリーの残量確認(太陽電池での捕充電に問題ないか)
  • 現在正確な消費電力量計測中

なんちゃって百葉箱を作ってみる(続き2)

相変わらずのんびりと進めている

電源部を決定

結局は電源部が決まらないと回路が落ち着かないので先に検討

使用する太陽電池の出力が4~6V位なのでニッケル水素電池なら3本(3.6V),リポなら1本(3.7V)が妥当かと考えるが,手持ちの低損失CMOS三端子レギュレータ3.3V500mA(NJU7223F33)を使うとするとドロップアウトが0.4Vなのでギリギリでありバッテリー効率が悪くなりそうである

そこでニッケル水素電池なら2本から昇圧すればどうかとHT7733Aで実験したところ大失敗・・・前にもやったのを記録してなかったので忘れていた

IMG_20181014_095627684.jpg

(忘れないよう今回は以下に結果と実験用にボード化しておこうと思う)

  • 60mA位なら連続で出力できるが100mAあたりで一気に1.2V位まで電圧降下する
  • 一度電圧降下すると一度電源OFFしないと3.3Vに回復しない
  • ブレッドボード上での実験なので少しはまともに実装すれば200mA位までいけるかもしれないが諦めた

現状の手持ちパーツでは良い解決案がでてこないので低ドロップ(1.8V)の低飽和型レギュレーター3.3V500mA(NJM2884U1-33)を購入することにした

購入するなら今後のためにと太陽電池モジュール1.15WSY-M1.15Wを同時に購入

IMG_20181014_101607855.jpgIMG_20181013_114203283.jpg

少しの太陽光で160mAを軽く出力した(コストの良い太陽電池モジュールかと)

今回はここまでの高出力は必要ないので当初の予定通りで構成(実は秋月の300mWを使えば良かったかと・・・)

IMG_20181014_101425024.jpgIMG_20181013_114045217_HDR.jpg

最終的に6枚(費用は\648)となったが,40mAhあれば平均20mAhの日照が4時間としても80mAhとなり消費が20mAh/日なので4日分を1日で補充できる

4日で十分なのかどうかは実際にやってみないと判らないがバッテリーは1000mAh(50日分)は確保しているため余裕の日数のなかで補充できれば良い計算である

本体(センサー部)を完成

秋月で購入したBME280は実験用に置いておいてアマゾンで購入(2個)したBMP280(¥368/個)を使う

IMG_20181002_172232562.jpgIMG_20181002_172244035.jpg

ところがBME280と勘違いしてBMP280だったので湿度センサが無い

もともとLPS25Hを使うつもりだったので気圧センサとしてのみ使い温度と湿度は精度の良いDHT22を使用することにした

ここでSHT31を採用しなかったのは単に精度の差がないのと既にDHT22は動作確認していたため扱い易かったからである

これで最終的な回路が決定する

(回路図)

homeTenki_回路図.png

(注)DHT22のDataPinのプルアップが抜けていた(無しでもESP8266内部でプルアップされているのか電圧は出ている)

NJM2884の部分は実際は以下となる

NJM2883.pngNJM2884.png

(回路図内のミス)

  • BME280はBMP280(名称ミス)
  • BMP280のGNDが接続されていない(当然接続している)
  • BMP280のCBSはVDDIO(この場合V3.3)に接続しておかないと起動時にSPIになってしまうそうだ(無接続でも動作しているが正しくは接続した方が良い)
  • NJM2883ではなくNJM2884
  • NJM2884のIN,OUTが逆になっている

リファレンス回路では出力側のコンデンサ(セラミック可能)は2.2μFだが4.7μFのほうが安価なので採用した

CONTROLのプルアップは300KΩ位まで問題ないようだ

ちっとミスってやってしまったことだが,入出力で使用しているコンデンサ(0.33μFと4.7μF)は無くても今回の回路は動作した

以下はニッケル水素3本(830mAh)で消費状況を試行実行中

IMG_20181014_095802517.jpg

この回路からBMP280を除いたDHT22とした版を室内用として設置する予定

室外版

室外に設置する版はダイソーのモバイルバッテリーを利用する

IMG_20181014_115224745.jpgIMG_20181014_115409773.jpg

充電部はそのままのだが出力は5Vに昇圧する必要がないし機能上の問題もあるため直接18650から引き出す

内部の基板から標準の方のUSBメスコネクタを外しケースのUSBの口から太陽電池からの充電と18650から供給するケーブルを通す

IMG_20181014_200032106.jpgIMG_20181014_200210935.jpg

(もう1セットのパーツで)室外運用基板として実装

IMG_20181014_201646576.jpg

太陽電池による補充電はしてないがリポで試行運用中

IMG_20181014_204324063.jpg

鎧戸の箱

測定機は完成,問題は外側となる筐体で雨をしのぎながら風通しのよい箱を作らないとならない

一般的に鎧戸と呼ばれている形状で作製された筐体で購入すると結構な価格のようだが,現在のアメダスで実際に使用されているものはFAN付きの空洞のような形で昔の白い箱型ではなくなり進化している

つまり見た目は懐かしいが昔の白い鎧戸の箱にこだわることはない

ということでググってみるとトレイを裏返しにして重ねることで鎧戸を構成するってアイデアをいただくことにした

丸いプランターの鉢皿を使用している方が多いのに対抗する訳でなく四角の鉢皿の方が考えてる形に合うので採用

IMG_20181007_162520875.jpgIMG_20181018_121701733.jpg

一番上となる鉢皿は太陽電池の性能確認のため先に作製

IMG_20181007_201745857_BURST000_COVER_TOP.jpgIMG_20181007_210149972.jpg

鉢皿をひっくり返し太陽電池6枚の形でくり抜き加工してスマホ等のフィルムを貼って付けた

IMG_20181014_101408834.jpgIMG_20181014_101442465.jpg

裏側は美しくないが見えないので問題なし

2段目はバッテリー置き場となり3段目以降はこれから再検討して作製

課題は虫(特に蜘蛛)かな

なんちゃって百葉箱を作ってみる(続き)

前回の続きでハードウェアの調整

電源

常用電源の供給できない場所での運用にはバッテリーが必要となる

電源電圧チェックを行った場合ADCを動作させることで消費電力が若干増えそうだが20mAh/日として考える

バッテリーの取替する手間を省くため充電池を使用し可能な場所では太陽電池で補充電を行う

太陽電池は100均のソーラー充電式LEDライトから部品取りし利用することにした

開放電圧が4.4V程ありコンパクトなため並列で容量を調整すれば良さそうだ

IMG_20180726_194554205.jpgIMG_20180929_154055230.jpg

バッテリーはニッケル水素かリポにするかは温度環境により優越がつけられずどちらを選択するか悩んでいる

ニッケル水素だと0℃で性能半分となりマイナス気温では使用できないため低温ではリポが有利である

しかし高温(50℃~)での性能は同じでもリポは発火するおそれが高いのでニッケル水素が有利かと思う

試行運用

台風24号がやってくるので気圧の変動を観てみたく試行運用してみることにしダイソーモバイルバッテリを使用して動作させてみると問題なく運用できた(9月28日21:00頃から室内で試行)

IMG_20180929_162928442.jpg

このモバイルバッテリは充電されているかどうかの確認のため消費が少ない場合に1.8V位まで電圧が下がるためディープスリープ時にどうなるものかと思ったが大丈夫であった

(追記2)停止した

2018-09-28 21:22:14 から 2018-10-02 06:16:46 で停止

停止後のモバイルバッテリを電子負荷で計測してみると5Vで~100mAを出力することは可能

バッテリー切れではなく小電流での5V出力が出来なくなったと思われる

充電済の別モバイルバッテリで再試行2018-10-02 19:30:00開始

(追記3)停止

2018-10-06 20:16:03 で停止した

2回試行してみた結果,この状態での使用では約80~82時時間で終わるようだ

一度停止したバッテリーを外して同じバッテリーを使ったところ動作はした

もう一度充電済で再試行2018-10-06 20:18:23開始

次のステップへいくので2018-10-08 14:00:00停止

試行中の週間グラフ

(追加1)グラフはグーグルチャートツール(Line chart)を使用

9月29日11:00~10月1日18:00のグラフ

 

ページ移動

ユーティリティ

検索

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

過去ログ

Feed