広告

記事

最新記事

2017年1月31日

iPhone6壊れた

iPhone6が2年も持たず・・・電源が入らなくなっちゃいました。

アップルのサポートだめじゃん!

 アップルのサポートに電話してバッテリーの状態をチェックしてもらったんだけど、サポート期間の説明はされかったので、2年以内なら無償で修理出来たらしいと2年2日後に聞かされた・・・バカヤロウ!

カスタマー・エクスペリエンスだかなんだか知らないけれど、まったくダメだわ!!!

修理を依頼(有償)

集荷にくるというので、待ってて・・・やっと来た

 この週末は1月だというのに20度近くまで気温が上がりましたよね。

だから、雪が積もって集荷が滞るということもなく。

何やってんだ!!!

なのに!

配送状態を、ちょっと調べてみたのね

クロネコヤマトの荷物検索

「ん?」

東京まで2日かかるってどういうことさ?!

日曜日の19時に集荷に来たんだけど・・・羽田に到着したのが31日の15時!

ちゃんと仕事しろい!

「はぁ〜〜〜〜〜〜っ!」

クロネコ!しっかり働け!!

iPhone6が2年も持たず・・・電源が入らなくなっちゃいました。 アップルのサポートだめじゃん!  アップルのサポートに電話してバッテリーの状態をチェックしてもらったんだけど、サポート期間の説明はされかったので、2年以内なら無償で修理出来たらしいと2年2日後に聞...
記事を読む »

2016年8月21日

夏休みの自由研究

 グーグルのトップページも夏休みが終わりそうなアニメーションが踊ってます。

夏の甲子園も決勝戦が終わり、オリンピックも最後の競技が行われて明日は閉会式ですね・・・夏休みの自由研究もレポートを作成する次期です。

気象観測(8/1 〜 8/21)

 Raspberry Piとセンサーシールドを使った気象観測機で測定した気温・湿度・気圧データのグラフです。

気温

気温グラフ

毎日暑かったので、日陰においていましたが気温は30℃以上の日がほとんどでした。

特にお盆の時期は連日非常に暑く、最低気温が35℃以上の日が数日間続き暑かった・・・

先の台風7号(チャンス−)が本州へ接近・通過した数日間は、最高気温・最低気温ともに下がりました。

気温:2日

ここ数日は、また暑い日が戻ってきましたね。

最高気温は37℃を記録しています。

湿度

相対湿度

相対湿度ですので、気温が上がると湿度は下がり、気温が下がると湿度が上がります。

湿度:2日

相対湿度は、データをどう読むかがよくわからないかな。

センサーの計測方法の調査が必要ですね。

気圧

気圧

 先の台風は関東〜北海道まで通りましたので、大きな変化を捕捉できた人もいたと思いますが・・・私の地域では気圧は若干下がりましたが、台風が通過しませんでしたので気圧の激しい変化を捉えることは出来ませんでした。

ただ、ゆっくりとした気圧の変化は計測出来ています。

また残念ながら、この1ヶ月間はゲリラ雷雨もなく、ただただ暑い日の連続。

気圧:2日

2日間の気圧変化は、小さくゆらぎが出る程度

 2日間の変化にするとグラフに大きな変化はなく。 センサーの特性のようですが、温度との連動性がありまして移動平均線でグラフを作成した方が実際の値と相関すると思います。

8月はまとまった雨は降っていません。

まとめ

 7月に、温度・気圧・湿度センサーと小型コンピュータを使って、プログラムを作り、計測データをクラウドサービスへアップロードしてグラフ作成させるようにしました。

計測間隔は、10分間でクラウドサービスへデータを送信しています。

グラフの表示は1時間間隔です。

細かいデータが欲しい時には、10分間隔のデータ表示ができるように計測しています。

実測グラフ:
https://thingspeak.com/channels/139676

プログラムと作り方は、

http://www.chipmunkdx.net/2016/07/arduinosparkfun-weathershieldthingspeak.html#more

上記記事では、WindowsPCを使っていましたがWindows10が勝手にセキュリティパッチを適用して再起動してしまったため、制御コンピューターはRaspberry Piに変更しました。

プログラムは、javascript(Node.js)で作成していますのでまったく同じです。

 グーグルのトップページも夏休みが終わりそうなアニメーションが踊ってます。 夏の甲子園も決勝戦が終わり、オリンピックも最後の競技が行われて明日は閉会式ですね・・・夏休みの自由研究もレポートを作成する次期です。 気象観測(8/1 〜 8/21)  Raspberry...
記事を読む »

2016年7月29日

SparkFun Weather Shield

 ArduinoとWeatherシールドを使って、温度・湿度・気圧を測定してThingSpeakに計測データをアップしてグラフ化しました。

ネットワーク関連のWiFiモジュールやEthernetモジュール1/シールド2などは利用せずに、PCでNode.jsを動作させて計測制御とデータ送信を行っています。

小学生の夏休みというと、毎日1ページの「宿題帳」

 夏休みの宿題帳には、地域性があるそうで「夏休みの友」と呼ぶ宿題帳みたいなものだったり、個別の宿題だったりいろいろあるそうです。

私が子供の頃は、「夏休みの友」というのを渡されていました。

その夏休みの友には、お天気記録欄(四角い枠)があって小学校の低学年の頃は「晴れ・曇・雨」などのアイコンを書いてました。

お天気アイコン

こんな感じだったかな・・・

このお天気アイコン(お天気マーク?)を書くときに困るのは、
「晴れと曇りってどうやってきめる?」、「雨は少しでも降ったら雨でいい?」 などと定義のなさに一人悩んでましたね。

きっと、夏休みになると「お天気の実験」をしてしまうのは、これが原因(潜在意識の中に刷り込まれている?!)では無いかと思ったりします・・・

ということで、

ArduinoとSparkFunのウェザーシールドを使った気象観測装置

を作ります。

今回の製作のポイントは次の4点

  • Aruduino(もしくは互換機)を使って
  • センサーはウェザーシールドのみを使い
  • 計測データはクラウドサービスに送ってグラフ作成
  • でも、WiFi/Ethernetシールドやモジュールは使わない

何故かというと:

  1. Arduino(もしくは互換機)を使って
    • 単純に、先ににArduino UNOかUNO互換機を買っていて持っているから.
    • 観測目的で作成する場合にはWiFiデバイスが搭載されているボードを使ったほうが良いでしょう。
  2. センサーはウェザーシールドのみを使い
    • 先にウェザーシールドを購入していたから。
    • 使わないともったいないので使っています。
  3. 計測データはクラウドサービスに送ってグラフ作成
    • 計測したデータを溜めてグラフにすることも出来ます。 
    • IoTやクラウドサービスがどんどん広がってきていているので便利なものは何でも使います。
  4. でも、WiFi/Ethernetシールドやモジュールは使わない
    • WiFiシールドやEhternetシールドって以外と高い。
    • 追加でシールドは使わないことにしました。

つまずいた

 Arudinoとシリアル通信を使った方法は、多くの情報があって直ぐに見つかると思っていました。

ところが、グーグル先生に聞いてみましたがすぐには見つからず・・・

「Javascriptを使ってAdruinoを制御する方法」を紹介しているブログページでFirmataを使えるのではと思い。 

関連記事を探して、Johnny-fiveライブラリやj5-sparkfun-weather-shieldライブラリにたどり着きました。

個人的には、Node.jsでなくPythonで制御できると良いのです。 

しかし、手頃なライブラリやセンサー制御方法の紹介記事がNode.jsの方が多いように思いました。

夏休みの限られた期間で、計測機を完成させて計測するには、取り扱っている「記事の量」が多いNode.js/Javascriptが良いだろうと考えて、Javascriptでプログラムを作成しました。


Weatherシールド価格調査(7月30日)

  • スイッチサイエンス:4992円
  • ストロベリー・リナックス:4300円
  • マルツオンライン:4480円(税抜)、納期4週間!

方式概要:ArduinoとウェザーシールドをノートPCで制御

今回のハードウェア(Arduino UNO/UNO R3など)は、シリアル・インターフェース以外の通信手段を持っていません。

そこで、シリアル・インターフェースを使ってデータのやり取り(送受信)を行います。

制御するノートPCで、Node.jsを動作させてArduinoへ司令を送り温度・湿度・気圧を計測、測定データを受信・加工、そしてクラウドへのデータ送信を行うプログラムを作ります:

  • javascript(node.js)でArduinoを制御します
  • ノートPC(Windows10)にNode.jsと環境設定
  • ThingSpeakにデータ送信とグラフの表示

それでは、実際の手順を紹介します:

〜 ウェザーステーションの製作 〜

まずは、Arduino UNOです。

Arduino UNO R3って8bitマイコンなのに、32bitマイコン搭載のRaspberry Pi並の価格で売られていてとてもじゃないけど買えません!

そこで、600円程度で売られていた互換機を使っています!

中国製のArduino UNO互換機


余談:一見安く見えるけど、実は価格があまり変わらないパーツ買い

あちゃんでいいの
〜 3.3V@12Mhzで動作させる用に作った”あちゃんでいいの” 〜

例えば、価格180円の「あちゃんでいいの」キットと、260円のATmega328Pでも動来ます。

ですが、中国製互換機が500円くらいならパーツで作るより互換機買ったほうが安い。

  販売価格は、為替レートにも依存しますので、市場調査は直前に行いましょう!


ところで、シールドってなんだろうと思いませんでした?

Weather Shield(ウェザー・シールド)

SparkFun Weather Shield
- 全てのオプションを装着した状態 -

SparkFun社が販売している気象観測用のウェザー・シールドです。

基本ボードには、気温・気圧・湿度・光度センサーを搭載しています。

オプションとして、モジュラージャックを通して風速・風向・雨量などのセンサーを取り付けることが可能で、GPSを取り付けるポートもついています。

Arduino UNOとウェザーシールドを使って気象観測機を作成する手順を紹介しましょう。

ステップ1. Arduinoの設定

まずは、ArduinoにFirmataを書き込みます。

Firmata

StandardFirmataを選んでArduinoに書き込みます。

Arduinoの準備はこれだけです。

ステップ2. ノートPC(Windows10)の設定

Node.js / npmをインストールします。

nodejs.org

安定版のLTSをダウンロードしてインストールします。

私はWIndows Installer(.msi) 64bitを用いました。

インストーラー起動
インストーラー

・・・・

インストーラー終了
インストーラー

コマンドプロンプトでnpmコマンドのバージョンをチェックしてみます。

$ npm -v
2.15.8

2-1. Arduinoを使うライブラリ(johnny-five)をインストール

javascriptを使ってArduinoを動作させるためのライブラリをインストールします。

$ npm install johnny-five

2-2. Weather Shield用のライブラリ

ウェザーシールド搭載のセンサーにアクセスするためのライブラリをインストールします。

$ npm install j5-sparkfun-weather-shield

2-3. ThingSpeakクライアントライブラリ

ThingSpeakへデータを送るためのライブラリをインストールします。

$ npm install thingspeakclient

ステップ3. ThingSpeakの設定

ThingSpeakサインアップ

ThingSpeakにサインアップしてアカウントを作成します。

アカウントができたら、チャネルを作成します。

チャネルが作成できたら、APIKeysタブでWrite API KeyとChannelIDをチェックします。

ステップ4. プログラムの作成とテスト

var ThingSpeakClient = require('thingspeakclient');

var client = new ThingSpeakClient();

// ThingSpeakで、チャネルIDとAPIキーをチェックします。
var channelId = <チャネルID>;
var writekey = '<Write APIキー>';
var readkey = '<Read APIキー>';

var five = require("johnny-five");
var Weather = require("j5-sparkfun-weather-shield")(five);
var board = new five.Board({
    port: "COM3" //必要ならCOMポートを指定します。
});

board.on("ready", function() {
// variantはARDUINOです。
// evevationは、観測値の高度(m)
// freqは、計測インターバルタイムを設定します
    var weather = new Weather({
        variant: "ARDUINO",
        elevation: 2,
        freq : 600000 //10分=600秒=600000ミリ秒
    });

// ThingSpeakへのデータ送信
//
//
    client.attachChannel(
        channelId, 
        {writeKey : writekey, readKey : readkey}
    );
// 計測と桁数調整
// 小数点以下2桁で切り捨て、
// 計測データを100倍して切り捨て処理後に1/100に戻しています。
// 気圧は計測値が101.00となりますので、hPa表示にするため、1/10としています。
    weather.on("data", function() {
        var temp = (Math.floor(this.celsius*100)/100);
        var humi = (Math.floor(this.relativeHumidity*100)/100);
        var pres = (Math.floor(this.pressure*100)/10);

        console.log(temp + "C", humi + "%", pres + "hPa");
// ThingSpeakへ送信するデータ
// field1, field2, field3設定しています。
        var fields = {field1: temp, field2: humi, field3: pres};
        // データの送信と送信結果のチェック
        client.updateChannel(channelId, fields, function(err, resp) {
            if (!err && resp > 0) {
                console.log('update successfully. Entry number was: ' + resp);
            } else {
                console.log(err,resp);
            }
        });
    });
    //setTimeout(()=>{console.log('Timeout');},1000);
});

日本語でコメントを追加していますので、このままコピペしてもエラーになるかもしれません。

起動方法

$ node test.js

ステップ5. ThingSpeakでグラフを確認

テストデータ

プログラムを起動して、インターバルタイムで設定した間隔でデータがThingSpeakへ送信されるます。 

ThingSpeakのChannelSettingsでグラフ表示(ポイント数やタイトル、XY軸の項目名など)を設定・調整すると出来上がりです。

ThingSpeakは、計測データとグラフ表示データを調整することが出来ます。

ステップ6. 運用開始

人工衛星のニュースなどを見ていると、気がつきせんでしたか?!

実際の運用に入る前に、「機能のテスト」を行っていますよね。

個々の機能テストを行って問題が無いことが確認できてから本番の運用へ進みます。

運用時のポイントは観測インターバルタイムを何分?何時間?に設定刷るかでしょう。

粗すぎると変化が見えなくなってしまいますし、細かすぎると変化の無いデータでいっぱいになっちゃいます。

ひとまず、計測インターバル間隔は、10分〜30分程度の間隔としておき、グラフの様子を見ながらインターバルタイムの調整を行うと良いでしょう。

ライブデータ

ThingSpeakチャネル:夏休みの自由研究】ArduinoとSparkFun Weather Shieldで気象観測(参号機)

デメリット:長期運用となりますと、計測期間はノートPCは使えません・・・共有しているPCを使うと怒られます!

ステップ7. まとめ

ThingSpeakは、データをExport出来ますので別のパソコンでグラフ化したりデータを分析することも出来ます。

今回の作成のポイントをおさらいすると、
Arduino UNOなどを使った場合、WiFi/Ethernetシールドやモジュールがなくても、パソコンで制御でき、Arduinoで計測したデータをクラウドサービスへ送り出すことが出来ました。

ThingSpeak運用開始

運用開始してからしばらくは、データの状態を見ながら設置場所を移動したりインターバルタイムの調整が必要かもしれません。

まとめ

気象観測装置を使い、データが収集できてくると・・・

もしかすると、気象現象とグラフ上の変化の気象現象の関連性が見つかるかもしれません。

そうしたら、それをレポートにまとめるだけで「夏休みの自由研究」レポートが完成ね!

この計測器、名前は・・・・・

「ウェザーステーション」

響きは悪く無い!

梅雨明け前後の観測データがあるとよかったか

梅雨も開けたし、ゲリラ雷雨でも

今年は台風の発生数が少なくて、8月に台風はくるでしょうか?

・・・

ん?おかしなものだ

これではまるで、災害を待ち望んでいるようではないか???

準備は整った!!

スマホを持って、ポケモンGOだ!!!


  1. モジュールは、センサー等をArduinoと配線するだけで使えるようにした基板です。 シールドがArduino基板に重ねて使えるのに対して、モジュールは配線接続して使います。
  2. Arduino UNO等のコネクタ配列に合わせた拡張ボードで、Arduinoに重ねて使う基板の事ををシールドと呼びます。
 ArduinoとWeatherシールドを使って、温度・湿度・気圧を測定してThingSpeakに計測データをアップしてグラフ化しました。 ネットワーク関連のWiFiモジュールやEthernetモジュール 1 /シールド 2 などは 利用せず に、PCでNode.jsを動...
記事を読む »

2016年7月28日

NodeMCUを使った気象観測装置

 7月もあと少し、そろそろ夏休みの自由研究を考えないと時間がなくなってきます。

【夏休みの自由研究 2016】NodeMCU/ESP8266で作る気温・湿度観測機(製作編)

 今回は、夏休みも終わりそうな・・・ギリギリのタイミングで思いつきで始めたとして「1週間でホントに出来るかどうか」の検証も含め、気温・湿度・気圧を自動観測する観測機を作ってみました。(大器晩成というかスロースターターな子に向けて)

目的

 我が家では、”夏休みの自由研究”を、気象観測を行うというテーマと例年つづけています。

棒の温度計を使った気温と湿度の計測や、ガリレオ温度計を製作してみたり、手持ちの観測装置(ソラヨミマスター)を使った気圧・風速・温度・湿度の計測などをピンポイントで計測して自由研究レポートにしてきました。

1日に数回測定することで、1日の温度の変化の様子を調べたりすることは出来ます。

ヒトが行った場合、日中に1時間毎に測定などを1日だけ行うことは出来ますが、連続して計測を行おうとするとかなりタイヘンです。

「継続は力なり」で毎日手計測を行うことも大切ですが、ここではなく別の事に力を注ぎましょう!

そこで、小型のコンピューターを使って気象観測機(ウェザーステーション)を作成して「気温」・「湿度」・「気圧」などのの測定を行います。

はじめに

 グーグルで検索を行うと、ArduinoやRaspberry Piを使った気象観測機はインターネット上にとても多くの方法が紹介されています。

今回の重要なキーワードは「夏休みの自由研究」です。

小学生高学年〜中学生の自由研究予算(いまどきは、お盆にもらう小遣いというものがあるらしい)で装置を構成できそうな〜5000円程度を目処に2つ提案します。

必要な機材の市場調査

 気象観測機で必要となるマイコンボードとセンサーです:

  • マイコンボード:Arduino互換機
  • センサー:気圧計測可能なセンサー

1)Arduinoをはじめようキット

 Arduio純正品は価格3000円台と、機能の割にとても高価なため時間に余裕があれば1000円以下の互換機を探して使うと良いと思います。

まっさらな状態から始めようと考えている人は:「Arduinoをはじめようキット」が入手がカンタンだと思います。

Arduinoをはじめようキット
価格:4320円

見ての通り、ブレッドボードにジャンプワイヤー等がセットになっています。

LEDを点滅させる、通称「Lチカ」などは直ぐに実験できます。

ただし、夏休みの自由研究でこのセットに4320円は高い!!!

2)ブレッドボードで作るArduino

 製作にかかる部品の費用だけに着目すると、チップ単体が360円のATmega328Pを購入して、ブレッドボードで作成すると安いく出来そうなのですが・・・

ATmega328P-PU 8Mhz
スイッチサイエンス:ATmega328P-PU 8Mhz内蔵CR発信/ 360円

8Mhz内蔵発信モデルを使えば、外付け部品がほとんど必要ありません。

enter image description here

それでも、ブレッドボード、USBシリアル、ジャンプワイヤー、抵抗、コンデンサーなどをそれぞれ購入すると合わせて2000円を超えてしまいます。

PCと接続するための、「USBシリアル変換基板」が1500円もするのでどうしようもありません。

これでも2000円台になります。

3)中国製のArduino互換機

 「USBシリアル変換基板」の価格が思ったより高く、それぞれを部品で購入するよりも中国製の互換品を購入する方が安いです。

waves Arduino UNO R3 互換品
waves Arduino UNO R3 互換品:850円

アマゾンでは600円程度で販売されていますが、海外発送は2週間〜1ヶ月配送に時間がかかりますので「夏休み」期間中に間に合いません。

プライムマークがついた商品は少し高いですが、1週間程度で届きます。

PCを経由して計測データを送信することになります。

PCを専有してしまうため、他に利用したい場合や家族で共有しているPCを使う場合はこの方法は使えません。

気圧・温度センサーモジュール

 気象データを観測するための、センサーは測定したい現象に応じてセンサーを探す必要があります。 

気温・気圧センサーでサンプルや記事が多いBMP085の後継デバイスBMP180は、BME280等の比べると比較的安く入手出来ると思います。

BMP180 気圧・温度センサーモジュール

BMP180センサーモジュール

  • スイッチサイエンス:1243円
  • aitendo :気圧センサモジュール [M180-4P]:495円(税別)

ただピンが・・・
ハンダコテと配線があれば・・・これで機材は揃うのですけど。

プラグインで使える環境でなければ難しいでしょうか?!

機材調査のまとめ

 はんだこてが必要だったり、ジャンプワイヤー、ブレッドボードなどを購入しているとかかる費用は増えるばかり。

結局、USBインターフェースが付いていて直ぐにプログラムを書き始められるようなボードが一番カンタンだという事になりました。

さらに、計測したデータをクラウドサービスへ送りグラフ作成に利用するために、WiFiを利用できるボードが良いです。

提案1)ESPr Developer と 環境センサーシールド

WiFiモジュール搭載でArduinoIDEで開発可能なマイコン搭載ボード

ESPr Developerソケット付
ESPr Developerソケット付き:2580円

環境センサーシールド

気圧・気温・光センサー搭載のシールド

環境センサシールド
環境センサーシールド:2160円

このセットであれば、環境センサーシールドをソケットに差し込むだけで良く。

PCからのUSBケーブルを接続すれば、ArduinoIDEを使ってプログラムを作成を始めることができます。

ESPr DeveloperはWiFi搭載していますのでWiFi機器があればネットワークにつながります。

観測データをPCを使わずに送り続けることが可能です!

予算5000円(上記はスイッチサイエンスで取り扱いしています)

これなら、届いてスグに始められます!!!

提案2)NodeMCUとDHT22

提案2は、NodeMCUボードを使います。 ESP8266ボードとUSBインターフェースでも中国製になりますので少しだけ安くなります(中国からの発送便で買うと、600円程度とすごく安いのですけど、夏休み中に届くかどうか分かりません)。

ESP8266/NodeMCU
価格:1600円(アマゾン・プライム)

DHT22温度・湿度センサー

環境センサーでは定番のDHT11の後継モデルDHT22温度・湿度センサーです。

アマゾン・プライムで検索すると790円〜1000円程度です。(高い!)

検証実験: ESP8266/NodeMCUとDHT22を使った気象観測装置

提案2のNodeMCUとDHT22を使った気象観測機を実際に製作して、ThingSpeakでグラフを表示させます。

基本的な構成は「ESPr Developer」を使う場合と同じなんですが、ジャンパ線で繋いで作りました。 ハンダ付けはしていません。

ESP8266/NodeMCU

NodeMCUボードとDHT22センサーを使い、ThingSpeakへ計測データ送信を行いグラフ化実験を行っています。

実験部品費用

  • NodeMCU:1600円(アマゾン/プライム)
  • DHT22 :790円(アマゾン/プライム)
  • ジャンパ線3本(手持ち)
  • 10kΩ抵抗:1本(手持ち)

合計:2390円

期間は、1週間必要

今週の月曜から部品の手配して、MCUボードやセンサーをアマゾンのプライム(配送料無しで数日で配送されます)で販売しているパーツ注文。

時間的に余裕を持てば、もう少し安く部品集めができると思います。

配送までの間にファームウェア書き込みプログラム、Luaダウンロードプログラムなどのプログラム関連のアプリケーションを集めました。

パーツ配送後に、カスタムファームウェアのビルドとLuaプログラムの動作テストを行いThingSpeakへの送信テストを行っています。

【夏休みの自由研究】NodeMCUとDHT22を使った気象観測装置の実験

最終的には、測定データのグラフと観測装置の構成図などをレポートにまとめれば、「夏休みの自由研究(気象観測装置の製作と観測)」の出来上がり!

ThingSpeakでのグラフ表示

ThingSpeakのグラフ

ThingSpeakチャネル:夏休みの自由研究】NodeMCU/ESP8266で作る気温・湿度観測機

ハマったところ

 NodeMCUでDHTを使う場合、ファームウェアを専用に作ったほうが良いのか、プログラムのアップロードだけでできるのかのテストに時間がかかりました。

NodeMCUを使う場合ファームウェア書き換え手順:

  • NodeMCU firmwareを作成(NodeMCU custom builds)
  • firmwareをダウンロード
  • フラッシュツールで書き込み
  • 再起動して利用開始

一般的なリリース・ファームウェアの0.9.5/0.9.6版などを使ったりしましたが、DHTの計測データを得ることができませんでした。

カスタム・ファームウェアを作成して、ようやくプログラムで温度・湿度データを読み出せるようになりました。

Luaプログラムを使う手順:

  1. Luaプログラムの作成
  2. Luaプログラムのダウンロード(LuaDownloader利用)
  3. Luaプログラム起動・テスト・デバッグ・運用

その他.(WiFiネットワークの設定などもおこないます)

まとめると

ArduinoやESP8266ボードとセンサーを使った気象観測機を作成・観測/測定・レポートを作成するまで:

中学生が行うとして、
開発期間に4日程度必要と思います(内訳)

  • ボードやセンサーが配送されてくるまでの時間(1日〜2日)
  • アプリケーションを使ってLuaプログラムの実験をする時間(1日)
  • 測定データをThingSpeakを送信テストする時間(1日)

    おそらく、がんばれば1周間以内で「夏休みの自由研究(製作)」レポート作成を完成させられるでしょう。

ただ、研究テーマが観測の場合は、観測1日ということは考えにくいため、1週間程度の観測日を考えると合わせて2週間程、レポート作成に1〜2日程度でかかるでしょう。

観測期間の1週間の間に、ゲリラ雷雨や台風通過などの現象が起これば・・・興味深いデータがえられると思います。

Luaプログラムコード

プログラムは3つのパートで構成しています。
1. WiFi接続
2. DHTセンサー読み出し
3. ThingSpeakへ測定データ送信

sensorType="dht22"          -- set sensor type dht11 or dht22
WRITEKEY="*********"    -- set your thingspeak.com key
PIN = 2                --  data pin, GPIO4
   wifi.setmode(wifi.STATION)
   --wifi.sta.config("SSID","PASSWORD")
   wifi.sta.connect()
   tmr.delay(1000000)
   humi=0
   temp=0
   fare=0

--load DHT module and read sensor
function ReadDHT()
   status, temp, humi, temp_dec, humi_dec = dht.read(PIN)
   print("Humidity:    "..math.floor(humi).."%")
   print("Temperature: "..math.floor(temp).." deg C")
   -- release module
   dht=nil
   package.loaded["dht"]=nil
end

-- send to https://api.thingspeak.com
function sendTS(humi,temp)
conn = nil
conn = net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload)success = true print(payload)end)
conn:on("connection",
   function(conn, payload)
   print("Connected")
   conn:send('GET /update?key='..WRITEKEY..'&field1='..math_floor(humi)..'&field2='..math.floor(temp)..'HTTP/1.1\r\n\
   Host: api.thingspeak.com\r\nAccept: */*\r\nUser-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n\r\n')end)
conn:on("disconnection", function(conn, payload) print('Disconnected') end)
conn:connect(80,'184.106.153.149')
end
ReadDHT()
sendTS(humi,temp)
tmr.alarm(1,60000,1,function()ReadDHT()sendTS(humi,temp)end) 

変更する場所:

GPIOピンのどこに繋いだか設定します(D2ピンに接続しました)

PIN = 2 – data pin, GPIO4

ThingSpeakのAPIキーを設定します

WRITEKEY=”***” – set your thingspeak.com key

WiFiのSSIDとパスワードを設定します

–wifi.sta.config(“SSID”,”PASSWORD”)

 7月もあと少し、そろそろ夏休みの自由研究を考えないと時間がなくなってきます。 【夏休みの自由研究 2016】NodeMCU/ESP8266で作る気温・湿度観測機(製作編)  今回は、夏休みも終わりそうな・・・ギリギリのタイミングで思いつきで始めたとして「1週間で...
記事を読む »

2016年7月27日

NodeMCU custom builds

NodeMCUのカスタム・ファームウェアの作成手順(http://nodemcu-build.com/の使い方)。

NodeMCU カスタム・ファームウェア

 NodeMCU

NodeMCUを利用する際、カスタム・ファームウェアを作成すると便利なことがあります。

ここでは、nodemcu-build.comを使ったカスタム・ファームウェアの作成手順を紹介します。

モジュールを選択してビルドボタンを押す!

紹介するような内容でも無いのですが、「中学生でも分かるように!」・・・ということで説明文を書いておきますね。

1. メールアドレス

メールアドレス

まず、カスタム・ファームウェアをビルド(プログラムのソースコードをコンパイル1して実行形式のバイナリファイル2を生成する事をビルドといいます)しますので少し時間がかかります。

そのため、ファームウェアのビルドが完了するとメールで連絡してくれます。

連絡用のメールアドレスを入力します(2箇所に入力)

2./3. ビルドブランチ・モジュール選択

ビルドのブランチをmasterとdevのどちらで作成するか選択します。

ファームウェアのリリース管理などを行うようであれば、master/devの使い分けしたほうが良いのですが、実験用ですし・・・devで良いでしょう。

ブランチとモジュール

モジュールの選択は、Windowsで言うとドライバみたいな感じでしょうか。

必要に応じてモジュールを組み込みます。

例えば、

  • DHT22やDHT11センサーを使う場合には、DHTにチェックを
  • BMP085/BMP180センサーを使う場合には、BMP085にチェック
  • BME280センサーを使う場合は、BME280にチェック

その他

SSLサポートとデバックオプションの選択

ビルドスタート

start your build

ボタンを押すとビルドがスタートします。

ビルド完了後は、メールで通知が来ます。

ダウンロードを行ってnodemcu-flasherで書き込みします。

nodemcu-flasherを使って書き込み

Githubからフラッシュ・アプリケーションをダウンロードします:
Win64用

アプリケーションを起動

「Config」タブを選択して先にダウンロードしておいたファームウェアの.binファイルを選びます。

nodemcu-flasher

Operationタブ
NodeMCUを繋いだCOMポートを選んで、Flash押す。

nodemcu-flasher

ボードを認識してMACアドレスの取得するとAPMAC/STAMACが表示され、ブルーのバーが書き込みに応じて伸びてゆきます。

しばらく待って、書き込み完了!

再起動してモジュールの動作チェックなどを行いましょう。


  1. 記述言語から実行形式に変換することをコンパイルといいます。
  2. マイコンが実行出来る形式(2進数1/0構成のファイル)をバイナリといいます。
NodeMCUのカスタム・ファームウェアの作成手順( http://nodemcu-build.com/ の使い方)。 NodeMCU カスタム・ファームウェア   NodeMCUを利用する際、カスタム・ファームウェアを作成すると便利なことがあります。 こ...
記事を読む »

2016年7月25日

夏休みの自由研究:ウェザーステーション

 夏休みに入り最初の土日が過ぎました、巷は「ポケモンGO」一色ですが「自由研究」のテーマは決まりました?

今年も「夏休みの自由研究」は「ウェザーステーションの製作と気象観測」です。

1.「夏休みの自由研究」用ウェザーステーションの調査

 2014年に発生して以来、2年に渡って発生していたエルニーニョ1現象が2016年6月に終息しました。 また、夏にはラニーニャ2現象が起こるとの予測があり、この夏は猛暑になるとの予測も出ています。

もし、この夏猛暑となれば、ゲリラ雷雨などの現象も発生しやすいとも考えられますから、気温・気圧などの気象データを測定する装置を作成して連続観測を行いたいと思います。

1.1 気象観測装置の市場調査

 気象観測装置は、市販している製品や携帯出来るモデルなどが売っています、「夏休みの自由研究」で利用できるモデルがあると良いですね。

Netatmo ネタトモ ウェザーステーション NET-OT-000001

 ネタトモ・ウェザーステーションは、スマホやPCと連動して気温・湿度・気圧・騒音・二酸化炭素濃度を測定可能なウェザーステーションです。

オプションとして、雨量計や風速計などを追加することができます。

Netatmo ウェザーステーション NET-OT-000001

価格は2万円程度と夏休みの自由研究で利用するにはとても高価。

計測したデータは、ブラウザを経由して見ることはできますがデータを取り出すことができません。(大変難しい)

データの取り出しが出来ないことは、調査・分析を行う事が出来なくなりますので「夏休みの自由研究」向きではないかも。

WxBeacon(ウェザービーコン)

 ウェザーニュース社が会員向けに提供している小型の気象観測機で、気温・湿度・気圧を自動測定します。

WxBeacon ウェザービーコン

ウェザーニュースタッチの有料会員になり、2000ポイント溜めると無料で提供してもらえます。

ただ、2000ポイント溜めるまでに6ヶ月程度かかることと、有料会員向けという点で今からでは「夏休みの自由研究」に利用するには難しいですね。

もし、既にWxBeaconを持っているのなら、測定データを記録する方法を考えることも研究になると思います。

1.2 2016年の夏休みの気象観測に必要な機能

 この数年の夏休みは、気温・気圧・風速などを計測してきました。 

ソラヨミマスター
ソラヨミマスター

 初めての気象観測は、ソラヨミマスターを使って測定しましたが安定して計測できるまでには何度か計測練習が必要でした。

2016年の観測対象

 これまでの数年、ソラヨミマスターを使って気象観測を行ってきましたので、少し期間の長いデータや突発的な気象現象を捉えようと考えています。

今年行ってみようと考えている気象現象は、局地的に降る雨や雷などが発生した際に温度/湿度/気圧に変化で、気象現象を観測できると面白いと考えています。

したがって、気象観測は長期間データを溜めることができることと、突発的な気象現象に対応できる観測装置が必要と考えています。

2016年の「夏休みの自由研究」のテーマです。

自由研究で利用するための観測装置のポイント

夏休みの自由研究で必要と考えられるポイントは次の2点:

  • 夏休み期間中のデータを記録出来る
  • データを取り出してグラフ等の作成が出来る

あくまでも、「研究」することが目的ですので、測定した気象データをとし出して、加工(グラフにすることなど)が出来ることが重要です。

2.「夏休みの自由研究」用ウェザーステーション

 市販品を使って調査を行うことは可能ですが、長期間に渡ったデータの保存や留守中・夜間の気象観測などはさらに調べたり、改良・改造する事が必要でしょう。

既に何らかの機器を持っている場合には、持っている機器を利用出来ないか考えることも大切です。

今回検討している方法は、プログラムとセンサーを利用して計測データの保存と利用が行いやすい、「夏休みの自由研究」に向いた気象観測装置を考えます。

2.1 ウェザーステーション構成案

 気象データの測定は、半導体センサーを用いて行います。 センサーを動作させる小型のコンピューター(マイコン3)を使って、プログラムを動作させて計測を行いましょう。

簡単に考えても、いくつか構成が思いつきます:

  1. 機器構成(案1)

    • ラズベリーパイ(Raspberry Pi)
    • 気温・気圧・湿度センサー(BME280)
  2. 機器構成(案2)

    • アルディーノ(Arduino)
    • 気温・湿度センサー(DHT11/22)

他にも、PICマイコンを使ったりmbedを使うなどの方法も思いつきます。

2.2 ウェザーステーション・案1の試作と実験

 アイデアと現実の間にギャップが無いかを確認するために、プロトタイプと呼ぶ実際に動作する気象観測機を作成しました。

構成案1の通りのパーツを使い、ラズベリーパイ(Raspberry Pi2)と温度・気圧・湿度センサー(BOSCH BME280)を使ったウェザーステーションを作ってみました。

ラズベリーパイ気象計

機能概要

  • 計測データはラズベリーパイに保存(SQL)、1時間毎
  • グラフを別途作成可能
  • LCDに現在のデータを表示
  • 1時間毎にツィッターへ送信(リモート動作チェック)
Raspberry Pi

Raspberry Pi3
Raspberry Pi3:5800円程度(7月25日調査)

BME280センサー

BOSCH BME280
BOSCH BME280:1680円(7月25日調査)

測定データのグラフ化

温度、気圧、湿度の計測データ(1時間毎)をそれぞれグラフにするプログラムを作り作成しています。

ウェザーステーション・計測データ

期間は3日分の観測データです、設置場所は屋内。

Raspberry Pi単体の価格が5000円程度します。 したがって、研究予算が必要となりますので、中学生以上向きの構成となりますでしょうか。

プログラム言語はPythonを使いました。

Raspberry Piは、OSにRaspbianなどのLinuxを利用できるためRaspberry Pi単体でプログラム開発も可能です。

2.3 ウェザーステーション・案2

 ウェザーステーションの第2案では、Arduino(アルディーノ)を利用して気象観測装置を作成しようと考えています。 

その、Arduinoの最大の特徴は安いこと。

2.3.1 手作り大好きな人向けパーツ組み

ATMega328P-PU ブートローダ済み
スイッチサイエンス:ATMega328P-PU(3.3V - 内蔵8MHz版)360円

 チップとセンサー合わせて1100円程度、シリアルインターフェースが1500円程度。

ブレッドボードやジャンパ線などを含めても3000円〜5000円程度の予算があれば作成出来ると思います。

 アルディーノ(Arduino)を使う場合のポイントは、データを保存場所を別の場所に保存しなくてはなりません。

低価格マイコンのためネットワーク関連の機能がついていません。

Arduinoにネットワーク機能を付加する構成を検討しましょう。

2.3.2 Arduinoを持っている人向け

 Arduinoを持っている場合には、WiFiパーツを追加してデータを外部へ保存できるような部品構成にします。(1000円程度)

wave Arduino UNO R3互換機
Arduino UNO互換機:850円(7月25日調査)

Arduinoボードを持っている人は多いと思います。

WiFiモジュールを追加して利用するのであれば、WiFiシリアルモジュールを利用すると追加費用を押させることが出来ます。

Rasbee ESP8255 シリアルモジュール
価格:375円

2.3.3 NodeMCU/ESP8266を使う

 Arduinoマイコンデバイスと、WiFiデバイスが搭載されていて、ファームウェア搭載されたモジュールがNodeMCUという名称で販売されています。

価格は600円〜

 このNodeMCUの良い所は、NodejsのAPIが使えたりLuaスクリプトが使えるNodeMCUファームウェアが書き込まれたところです。

  • NodeMCU
    NodeMCU
    NodeMCU:プライム価格/1600円(7月25日調査)

ArduinoマイコンとWiFiモジュールが一体化したボードでNodeMCUファームウェアが書き込まれた状態での販売です。

eBay.COMで中国から発送であれば370円から購入出来ます。

  • ESP-WROOM-02
    ESP-WROOM-02
    価格:909円(7月25日調査)

スイッチサイエンスで販売しているESP-WROOM-02ピッチ変換済みモジュールを使うとブレッドボードに挿して使えますのでプロトタイプ作成時の使い回しは良いです。

USBシリアルは必要です。(スイッチサイエンス製のUSBシリアルはちょっと高めで1500円程度と微妙)

秋月電子カート

秋月電子で見積もりをすると:
パーツ(センサー+ボード+USBシリアル)代金1800円
送料500円+代引き手数料300円=2600円

さらに、
ブレッドボード270円、ジャンパ線(オスーオス)180円を加えて2250円
送料+代引き手数料を加えて3050円

2.4.4 プロトタイプ製作中

 小中学生向きの「夏休みの自由研究」として利用できると良いと考えています。

「夏休みの自由研究」で利用できる予算として3000円程度ではいかがでしょう。(子供向けプログラミング・スクールなどを考えると手頃かと思います)

  • NodeMCU
    NodeMCUとDHT22のウェザーステーション

NodeMCU+DHT22を合わせて国内調達2400円程度、電池・電源などをつけて3000円以内で製作したい。 

eBay.COMを使えば:NodeMCU+DHT11=475円。

  • ESP01
    ESP01とDHT22のウェザーステーション
    ESP01+DHT22+乾電池ケース:2000円以下?

USBシリアル・インターフェースを持っている場合は、ESP01を使えます。

首都圏・大阪圏では、パーツショップを探せばもっと安く手に入ると思いますので、ポケモンGOで外出ついでのパーツ探しも行ってね見てください!

機能概要
  • 計測データはクラウドサービスThingSpeakへ送ります
  • グラフはThingSpeakを利用
  • LCD表示
  • ThingSpeak経由でツイート

2.4 製作まとめ

プロトタイプ1号機は製作済みで、実際に観測を行っています。

問題点は、価格です。

Raspberry Pi3単体が5800円・・・どうにも高すぎます。 microSDカードにUSB電源などを加えると1万円まですぐそこまで近づきます。

したがって、Arduinoを使った方法へ転換を検討:

Arduino単体は処理性能が低いため、いつかのサービスを利用して課題を解決していきます。

センサーを使った観測と、クラウドサービスを使ったデータのグラフ化、Node.jsやAdruinoIDE環境など複数の環境やプログラミング言語やLuaなどと複数要素を合わせて利用する点では対象は中高生となりますでしょうか。

IFTTTと似たサービスも利用すると、Twitterへもデータを転送することが出来ますから、面白いと思ってくれることを期待したいです。

3. リンク

気象庁:エルニーニョ/ラニーニャ現象とは


  1. エルニーニョ現象とは、太平洋赤道域の海面水温が高い状態が1年程度続く現象です。
  2. ラニーニャ現象とは、太平洋赤道域の海面水水温が低い状態が続く現象です。
  3. マイコン、超小型のコンピューターのこと。
 夏休みに入り最初の土日が過ぎました、巷は「ポケモンGO」一色ですが「自由研究」のテーマは決まりました? 今年も「夏休みの自由研究」は「ウェザーステーションの製作と気象観測」です。 1.「夏休みの自由研究」用ウェザーステーションの調査  2014年に発生して以...
記事を読む »