エントリー

タグ「ESP8266」の検索結果は以下のとおりです。

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

メインの百葉箱が完成

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.png

リファレンス回路では出力側のコンデンサ(セラミック可能)は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のグラフ

 

なんちゃって百葉箱を作ってみる

ESP8266と気象センサを使って,なんちゃって百葉箱を作ってみる

なんちゃってといっても実用レベルを目指すつもり

いろんな試行実験が必要なので完成までは時間が掛かる予定

はじめに

実のところデジタルセンサで百葉箱を作ろう計画はかなり前からあり研究準備していた

と,いうのも現在住んでる場所が山の側であり市街に設置されていたアメダスと気温が(-2℃位)異なるため自宅付近の気温をロギングしたかったためであった

それが2年前8月にアメダスが近く(300m位離れた場所)に引っ越してきたため作製の意欲が無くなり現在に至ることとなる

準備したパーツも勿体ないので重い腰を上げたって感じでもある

arduinoIDE

基盤はESP8266であり久々に使うことになるのだが,先ずアップデートされたarduinoIDE(ボードESP8266選択)で(かなり)嵌る

Setup.png

設定が増えていて「Crystal Freequency」を26MHzに設定しないと古いESP8266では問題が生じるようだ

例えばシリアル出力が指定bps通りに出力されず文字化けする

ESP8266でDHT11とLPS25Hを試す

IMG_20180909_102030659_BURST001.jpgIMG_20180909_135921606.jpg

Arduinoで試していたDHT11とLPS25HのスケッチがあるのでESP8266で動作させてみたところ,DHT11は(DHT22も)動作したがLPS25HはCPU依存コードもあってか動作不良となった

  • sizeof(int)の違い
  • ESP8266のバイトオーダーはLSBファースト

ほどなくスケッチの解決はしたが,LPS25HをESP8266とArduino(ATMega328P)で差し替えしながら計測値を比べていたところ情けない事に逆差しして破壊してしまう

IMG_20180915_210806939.jpg

大気圧センサとしてLPS25H,気温・湿度センサとしてSHT31を高精度なので利用しようと考えていたため残念なことに・・・既にLPS25Hは販売していないのでBME280に変更を余儀なくされた

BME280を使う

BME280からのデータ取得はややこしかったのでライブラリをこちらからいただくことにして入出力部をSPIからI2Cへとコンストラクタを修正

ESP8266のデフォルトのI2Cピンアサインは、SDA: IO04, SCL: IO05だが Wire.begin(SDA, SCL); で指定可能

BME280は省電力モードで使用

サーバ

データは自前のWebサーバで受けMySQLでDB化,閲覧には見栄えするグラフ化を予定

DBは以下のとおりテーブルを3個

CREATE TABLE IF NOT EXISTS `LOG` (
  `LOCATION`       char(2)         DEFAULT NULL COMMENT '計測場所(ID)'
, `DATETIME`       datetime        DEFAULT NULL COMMENT '適用日'
, `PRESSURE`       decimal(6,2)    DEFAULT NULL COMMENT '気圧'
, `TEMPERATURE`    decimal(4,2)    DEFAULT NULL COMMENT '気温'
, `HUMIDITY`       decimal(4,2)    DEFAULT NULL COMMENT '湿度'
, `BATTERY_VOLT`   decimal(4,2)    DEFAULT NULL COMMENT 'バッテリー電圧'
, `BATTERY_TEMP`   decimal(4,2)    DEFAULT NULL COMMENT 'バッテリー温度'
, PRIMARY KEY (`LOCATION`, `DATETIME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='気象データログ'

CREATE TABLE IF NOT EXISTS `LOCATION` (
   `ID`             char(2)         DEFAULT NULL COMMENT '計測場所ID'
, `NAME`           varchar(32)     DEFAULT NULL COMMENT '計測場所名'
, `STATUS`         boolean         DEFAULT NULL COMMENT '計測有効'
, `PRES_ID`        char(2)         DEFAULT NULL COMMENT '気圧センサID'
, `TEMP_ID`        char(2)         DEFAULT NULL COMMENT '気温センサID'
, `HUMI_ID`        char(2)         DEFAULT NULL COMMENT '湿度センサID'
, PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='計測場所'

CREATE TABLE IF NOT EXISTS `SENSOR` (
  `ID`             char(2)         DEFAULT NULL COMMENT 'センサID'
, `NAME`           varchar(32)     DEFAULT NULL COMMENT '名称'
, `VENDOR`         varchar(32)     DEFAULT NULL COMMENT '売り手'
, PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='センサ'

受けはPHPでプログラミングして今回はPOSTを使用(GETは手動確認用で使う)

<?php

//自宅アメダス : 気象データ(気圧,気温,湿度)を登録
//
//コード:UTF-8N
// 行末:LF
//TAB:4

//インターフェイスチェック
if(php_sapi_name() == "cli") {
    //コマンドラインで実行
   exit(0);
}
//Web経由で実行

//登録データ取得
$inLoc  = empty($_POST['LOC'])? empty($_GET['LOC'])? "0":$_GET['LOC']: $_POST['LOC'];  //計測場所
$inPres = empty($_POST['PRES'])?empty($_GET['PRES'])? "":$_GET['PRES']:$_POST['PRES']; //気圧
$inTemp = empty($_POST['TEMP'])?empty($_GET['TEMP'])? "":$_GET['TEMP']:$_POST['TEMP']; //気温
$inHumi = empty($_POST['HUMI'])?empty($_GET['HUMI'])? "":$_GET['HUMI']:$_POST['HUMI']; //湿度

$inBVolt = empty($_POST['BVOLT'])?empty($_GET['BVOLT'])? "":$_GET['BVOLT']:$_POST['BVOLT']; //バッテリー電圧
$inBTemp = empty($_POST['BTEMP'])?empty($_GET['BTEMP'])? "":$_GET['BTEMP']:$_POST['BTEMP']; //バッテリー温度

if(empty($inLoc) || empty($inPres) && empty($inTemp) && empty($inHumi)) {
   //パラメタエラー
   $content .= "Error.\n";
} else {

    //DB接続
    $db = new mysqli("localhost", "tenki", "tenki", "tenki");
   $db->query("set names utf8");

    //登録
    $sql = "insert into LOG (LOCATION, DATETIME, PRESSURE, TEMPERATURE, HUMIDITY, BATTERY_VOLT, BATTERY_TEMP)";
   $sql .= " values (${inLoc}, now(), '${inPres}', '${inTemp}', '${inHumi}', '${inBVolt}', '${inBTemp}')";
    $db->query($sql);
    $db->close();
    $content .= "Ok.\n";
}

//コンテンツ出力
echo $content;

?>
消費電力

ESP8266とサーバ側のDB登録が出来ているので消費電力の確認を行った

IMG_20180924_200700705.jpg

(Waitで1分毎にデータをDB登録)

IMG_20180924_210738254.jpg

1時間で累積42mAhとなる

(ディープスリープ使用で10分毎にデータをDB登録)

IMG_20180927_060539865.jpg

12時間で8mAhとなった

これは先人様が計測されているのと変わりないようである

また(WiFi有効の)起動時には300mA,通信時には約70mA程流れるらしい

ページ移動

  • ページ
  • 1
  • 2

ユーティリティ

タグクラウド

検索

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

Feed