05/09/2018

YHDC SCT-013-000 CT とArduinoで家庭内の電流を測定する

YHDC 非侵襲性AC電流センサSCT-013-000 CT  とArduinoを使って、電力量を測定する。(非侵襲性AC電流センサ は、Amazon(Hommy販売から @465円で購入))

参考にしたブログとスケッチ
1) Current monitoring with non-invasive sensor and arduino
2) SCT-013 – Sensor de Corrente Alternada com Arduino
3) openenergymonitor/EmonLib

YHDC SCT-013-000 CTの電流範囲は0〜100 Aです。
  VRefは、アナログ基準電圧で、ここでは、VRef = 5V

  Cmaxは、ADCの分解能で、ここでは、Cmax = 1024

  Rtは、電圧変換器比で、部品仕様から下記のように計算される。
     Rt = 100 A  ÷ 50 mA = 2000


  測定電流値 I = √2 * i(rms_current)= 1.414 * 100A = 141.4A

  センサーに流れる電流値 i は、次式で計算される。
       i =
測定電流値 I ÷ 電圧変換器比 Rt
        = 141.1A  ÷ 2000
         = 0.0707A


Arduinoは、電圧(0V〜5V)しか扱えないため、この電流を許容電圧に変換する必要がある。そのため、回路に負荷抵抗Rを追加する。

  電流は、0を中心に変動するので、
  センサ最大電圧は、Max_accepted_voltage(=5V) / 2 = 2.5V とすると、

       Rb(負荷抵抗)= U(センサ電圧)/ I(センサ電流)= 2.5V / 0.0707A =35.4Ω
  理想的な負荷抵抗Rb は 35.4Ωだが、そのような抵抗は無いので、
  33Ω(実際に使った抵抗の測定値は、テスターで計測した 32.8Ω)の抵抗を使用した。
図中、2個の抵抗(10kΩは、エネルギー消費を避けるため)、コンデンサ(10μF)は、交流電流が抵抗をバイパスする代替パス。

プログラム中に見られる数字は、
  counts = センサ入力ピンの電圧(=センサを通る二次電流×負荷抵抗値Rb) ÷ VRef × Cmax
 
  Isupply = counts ÷ ADCの分解能 Cmax × アナログ基準電圧VRef× 電流校正定数
      = Irms (←スケッチでの表示)
 
  ここに、電流校正定数 = Rt ÷ Rb
 
  YHDC SCT-013-000 CT センサと、テスターで計測した負荷抵抗を使い、
     電流校正定数 = Rt ÷ Rb
                = 2000 ÷ 32.8Ω = 60.976

計算は、オープンライブラリーの EnergyMonitor emon1 を利用したので、上記計算はそのライブラリーを使うための定数の理解と計算するためのステップである。

使った部品を含め、計測誤差の大きい回路構成なので、計測電流が流れていない時も0.3Aほどの電流が流れていると表示する。電流値がある値以下の場合には、スケッチの中にある様に、ゼロと表示するようにもできるが・・・。部品は安価に入手できるので、自宅で使っている電気(電流)の傾向を見るのには良いかもしれない。

《Fritzingと写真》
Sct013fritzing Img_20180417_200519SCT013のFritzingパーツがWeb上に見つからないので、僕はInkscapeの機能を使って、Fritzingに貼り付けられるよう、左図にある部品図を作った。この時参考にしたのは、Youtubeの『Fritzing Part Creation - Chapter9 - Using Photo and PDF』である。


《スケッチ》
// Current sensor SCT013-100A/50mA
#include "EmonLib.h"
#include <Wire.h>
#include <U8glib.h>

EnergyMonitor emon1;

//Oled表示設定
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

String str;
int characterlen;
double Irms = 0;  // the current measured

void draw()
{
  //ディスプレイのグラフィックスコマンドはここに配置する
  u8g.drawRFrame(0, 16, 128, 48, 4);
  u8g.drawRFrame(0, 0, 128, 16, 4);
  u8g.setFont(u8g_font_8x13B);
  u8g.setColorIndex(0);
  u8g.setColorIndex(1);
  u8g.drawStr( 40, 13, "Current");
  u8g.drawStr( 103, 60, "[A]");
  u8g.setFont(u8g_font_fur25);
  str = String(Irms);
  characterlen = str.length();
  u8g.setPrintPos(60 - (characterlen * 10), 53);
  u8g.print(Irms,3);
}

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Current measurements value by SCT013"); 
  Serial.println("");
  Serial.println("");
  
// Theoretical CT Sensor Calibration = CT Ratio / Burden resistance
// ⇒ (100A / 0.05A) / 32.8 Ohms = 60.976
  emon1.current(1, 60.976);   // Current: inputpin No, calibration
    
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255, 255, 255);
  }
}

void loop(void)
{
  Irms = emon1.calcIrms(1480);  // 1480 is no_of_samples
//  if(Irms < 1.0 ) Irms = Irms -0.3; // 表示誤差分を取り除く見かけの処理
//  if(Irms < 0.20) Irms = 0.0;
  
  Serial.print("  Sensor 1: ");
  Serial.print("  Irms=");
  Serial.print(Irms,3);  // print to the third decimal place
  Serial.print("[A]");
  Serial.print("  Power=");
  Serial.print(Irms*100.0);  // Apparent power (100 is the Voltage)
  Serial.println("[W]");
  
  //画面上で描画ルーチンを呼び出し
  u8g.firstPage();
  do
  {
    draw();
  }
  while ( u8g.nextPage() );
  delay(150);
}

計画:大杉谷から大台ヶ原へ

昨年は計画していただけだったが、2018年の今年、梅雨が始まる前にどうしても行きたいので、もう一度計画を練り直してみることにした。

天気は、日本気象協会の『10日間天気予報』から、適当な日程を調べてみた。
この天気情報から、今月(5月)中に行くのなら、13日週かなぁ(20日の週の天気は未だ分からない)。15~18日なら天気は好天で繋がりそうだ。

前回の計画では、夜行バスで熊野辺りへアクセスする事と考えていたが、睡眠不足の状態で山歩きは辛い年齢になってきた。しかも、夜行バスで行くと『道の駅奥伊勢おおだい』に到着する時刻は、午前5時10分頃で、登山バスの出発時刻10:30までどうやって時間を潰すのか・・・仮眠する場所を探すのも難しいかもしれない・・・

そのため、前日、東京から三重県津市までアクセスし、津の駅前のビジネスホテルで一泊し、翌日ゆっくりと三瀬谷へアクセスする計画が、僕の身体の為には良さそうだ。


《検討》

1)先ず、津駅から三瀬谷までのアクセス
 出発 8:46 津より JR紀勢本線 伊勢市行
     9:35 多気 着 乗換
     9:43 多気より JR紀勢本線 新宮行
 到着 10:14 三瀬谷着

 料金 970円

2)次に、大杉峡谷登山バス(エスパール交通)
 時刻表を確認してみた。
 出発日の3日前までに予約しなければならない。

 「ツアー名:登山口行コース」

  『道の駅奥伊勢おおだい』10:30発。
  『奥伊勢フォレストピア』10:45発(予約がない場合は止まりません)
  『大杉谷登山センター』 トイレ休憩 登山届提出
  『大杉峡谷登山口』12:00到着 
    ツアー料金 1名 2,500円 最少催行人数4名より となっている・・・
    4人以下なら決行できないか・・・という心配はある。

3)大杉谷登山口からのコース
1日目: 歩行時間 5時間30分(ヤマレコより)

  大杉谷登山口→宮川第三発電所→大日嵓→千訪滝休憩所→猪ヶ淵→平等嵓→桃の木小屋(1泊:翌日の弁当を注文)

 2日目: 歩行時間 6時間40分(ヤマレコより)

 桃の木小屋→庄野ヶ浜→光滝→堂倉小屋→大台ヶ原山(1695m)→展望台分岐→大台ヶ原駐車場

4)大台ヶ原発 大和上市駅行バス(奈良交通バス)

  最終の定期運行バスは、 15:30 (平日、土休日共)となっている。
  大和上市駅到着予定時間は、 平日 17:21、土休日 17:21

5)大和上市駅周辺で夕食を摂るのは難しいかもしれないので、帰宅ルートから考えて、近鉄奈良駅までアクセスすることにする。

  大和上市駅 17:41発→橿原神宮前で京都行きに乗換→大和西大寺で奈良線に乗換→近鉄奈良駅 19:25着  料金は850円

 ここなら、夕食の食事に困ることは無いだろう。

 夕食の前後、駅の北側に銭湯『大西湯』があるので、汗を流してから、夜行バスで帰宅する計画。


町内の『山好きの友人』を誘ってみようかと思うが、駄目なら一人で決行しよう!

03/23/2018

いつも迷ってしまうWindows10のシステムプロパティへの入り方

Windows8以降、「システムのプロパティ」に入ろうとして、いつも迷ってしまう。

ここで、
「システムのプロパティ」への入り方をメモ書きしておこう。

手順は、コントロールパネル⇒システムとセキュリティ⇒システム⇒システムの詳細 と辿ればいいのだが・・・

1)「システムとセキュリティ」のメニューがある「コントロールパネル」への入り方
 下記①~③どれでもOK

 ①スタート ⇒ Windows システムツール ⇒ コントロールパネル と辿ると
  窓の左上に「システムとセキュリティ」がある。

 ②スタートの右側の検索ボックスに「コントロールパネル」と入力する。

 ③エクスプローラーを開いて⇒窓画面左のフォルダーを下に辿ると・・・
  「コントロールパネル」が有る筈。これをクリックすると「コントロールパネル」のホーム画面になる。

2)システムとセキュリティをクリックし ⇒ システムを選んで クリックする

3)システムの画面左にある 4つのメニューの一番下に「システムの詳細設定」がある。
 これをクリックして、

4)システムのプロパティの窓が開く。

 例えば、Pathの設定は、この窓の下にある「環境変数(N)...」のボタンをクリックして入る。


15" MacBook Pro Early 2008 model

15" MacBook Pro Early 2008 model を持っている。PCを購入後、暫くしてから 10.6の Snow Leopardにアップグレードしたい思いながらも、Windows OSに慣れ親しんでいる僕にとっては、MacOSは使いづらくイライラすることが多いので、LANケーブルは繋いで、充電状態にし、放置状態だった。

最近、屋内LANケーブルを再設置したので、信号のチェックツールとして使ってみた。アクセス反応も悪くないし、まだ使えるなぁ・・・とOSのバージョンを確認すると、10.9.5 Mavericks (2014/9頃のもの)になっていた。

自分ではOSのアップグレードはやらずにいたと思ったが・・・いつの間にか購入時点より上がっている。自分の記憶も飛んでいるので、どうしてアップグレードしているのか、今となっては分からない。
このPCには、Mac用 Microsoft Officeも購入し、インストールしてあるので、まだまだ色々な用途に使える。

それで、このPCのOSのアップグレードが何処まで可能か? 調べてみた。
現時点のOS は、10.13.1 High Sierra で、 15" MacBook Pro Early 2008 model (10.9.5 Mavericks) が対応しているのは、10.11 El Capitan までと分かった。

段階を追ったアップグレードを考えると、先ず、10.10 Yosemite にアップしたいと思ったが、ユーザーに Yosemite のダウンロード履歴が無いと、このアップグレードを受け付けてくれない(表示さえ出ない)。

Img_20180317_232220 Img_20180318_070420 諦めきれずネット上を調べると、10.11 El Capitan は、現時点でもOSのダウンロードが出来る。先ず
El Capitandownload を進めておき、Mavericks から El Capitan への2段階アップグレードが可能なのか?を調べてみた。


私の保有機種とは違うが、このOSアップグレードを実践し、成功している事例をネットで確認できた。

OSのダウンロードとインストールには、
(PCを見守っているだけだが・・・)かなりの時間を要した。

15" MacBook Pro Early 2008 model のOSを、 El Capitan 10.11.6 (2016/7/18 リリース)の状態までアップグレード出来た。

もうしばらく使えそうだ・・・

03/10/2018

RaspberryPiへのNode-RED Dashboard Install

RaspberryPiへのNode-RED Dashboard Install をネットで調べると、『Node-Red Dashboard (Raspberry Pi)』が見つかった。そこには dashboard をインストールする手順が書かれているので、それに習ってやってみよう。

6番までの手順で書かれているが、3番までは確実に終わっている。4番は Linux Mint で実行しているが Raspberry Pi3 では、未だ行っていない。それで、LXTerminalを開いて、4番から実行してみる。

4.まず npm をインストールする。
  sudo apt-get install npm

ここで、下記のようなエラーが発生
インストールすることができないパッケージがありました。おそらく、あり得ない状況を要求したか、(不安定版ディストリビューションを使用しているのであれば) 必要なパッケージがまだ作成されていなかったり Incoming から移動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません: 』とある。

それで、手順の最初に戻って、update から進めてみることにした。

  sudo apt-get update

次に、Node-REDを再インストールしたところ、また次のエラーが表示された。
以下のパッケージには満たせない依存関係があります: nodered : 依存: nodejs-legacy (>= 4)
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

そのため、Node.js と Node-REDを、次のコマンドで最新版にアップデートすることにした。LXTerminal から次のコマンドを打ち込んだ。

  update-nodejs-and-nodered

この処理には、かなり時間が掛かりそうだが、しようがない。

10分ほどで処理が終了した。この処理を行った事で、npmも最新版になっているので、

第5番目の項目にある『「dashboard node」をインストール』から、インストール作業を再開することにした。下記のコマンドを打ち込んで・・・

 cd ~/.node-red
 sudo npm install node-red-dashboard

Warning メッセージは出たが、インストールされたようなので、
LXTerminal から「 node-red  」と打ち込んで起動させ、

次に Chromiumブラウザを起動させて、
  アドレスバーに「 http://localhost:1880 」と打ち込んで、Node-RED を起動させ、パレットなど設定されているか、画面を確認してみる。

うまく行った! 

Raspberry Pi3 Node-RED に Dashboard がインストールできた。

Linux Mint18.1 にNode-REDをInstallする

RaspberryPi3上ではなく、Linux Mint18.1上でNode-REDを使ってみたくなったので、Installしてみた。

あお日記(Node-REDのインストール)』を参考にさせていただいた。

Node-RED User Group Japan」にも『
Note: Node-REDのインストールにnpm 1.1を使用しないでください。次のコマンドで最新のnpm 2.xにバージョンアップしてください: sudo npm install -g npm@2.xと記載されているように、npm のバージョンが古いとエラーを吐くようなので、ご注意。

《Node-RED起動までの手順》

1)まず指示通り、Terminalから上記のコマンド
を打ち込んで、

$ sudo npm install -g npm@2.x

あるいは、下記のように入力しても良いようだ

$ sudo npm install npm@latest -g

  npm は、 npm  v2.15.12  にバジョンアップした。

2)次に、Terminalから下記のように打ち込んで・・・

$ sudo npm install -g node-red

Install できたようなので、

3)Terminal から下記コマンドを実行して

$ sudo node-red

このあと、sudoからユーザーパスワードを要求されたが・・・入力すると起動した。

4)この状態で、ウェブブラウザ「Chromium」を起動し、アドレスバーに『localhost:1880』と打ち込んで・・・Node-RED が起動できた。


僕は、パレットに「dashboard」を追加したいので、ブラウザから開いたNode-REDの「デプロイ」右側にあるハンバーガーボタンをクリックして、メニューから「パレットの管理」を選択クリックして、ノードを追加のタグをクリックする。
ノードを検索のところに「dashboard」と入力し、『node-red-dashboard』を探す。
スクロールバーを動かして
node-red-dashboard を見つけたら『ノードを追加』のボタンをクリックしてパレットに「dashboard」を追加する。
linuxMint 18.1では、問題なく「dashboard」をインストールできたが、RaspberryPi3 ではエラーが出てしまい、インストールできない!


Windows10 にNodeRED(Electron版) を install する手順

Install の手順が極めて簡単で、パレット上に多くのノードが展開されている オープンソースライブラリElectron のnode-red-pack がお勧めだと思う。dashboard などの Node も、後から追加する必要もなく使うことが出来る。

1) 先ず Electron のNode-RED を開いて、

   
electron-node-red-pack.Setup.0.17.5.exe   を download する。(2018/3/10現在)

   ネットの通信速度が遅いので、
download には かなりの時間を要する。

2) Downloadしたファイルを実行し、幾つかの承認項目をクリックしながら進めてゆけば、Install できる。

   Windows のデスクトップ画面に Node-RED 実行用アイコン(electron-node-red-pack
)が作られるので、Node-REDは、このアイコンをクリックすれば起動できる。

Electronnodered左図は、Node-RED(
electron-node-red-pack) を起動させた画面表示。

パレットには、標準の NodeREDよりも多くのNode が表示される。また、画面右には、dashboard タグもある。

03/09/2018

RaspberryPi3 でNode-RED始め方 メモ

日本語入力の続きになるが、Node-REDを使うときの自分用のメモとして書き留めておく。

1)RaspberryPi3のOSには、Raspbian Stretchを使っているので、Chromiumはデフォルトで使うことができる。
2)また、Raspbianには、標準でNode.jsとNode-REDがインストールされているので、ターミナル画面から
 sudo node-red  一発で起動できる筈だが、

 念の為、
Node.jsとNode-REDを最新版にアップデートしておくことにする。
 
最新版へのアップデートコマンドは、sudoなし「-」の前にスペースなしで打ち込む。

 update-nodejs-and-nodered

これで、Node-REDの起動準備ができた。

3)ターミナル画面で、
 ① sudo node-red  と打ち込んで起動したところで、

 ②続けてChromiumを起動させて、アドレスに
 『http://localhost:1880』と入力してアクセスすれば、Node-RED画面が立ち上がる。


ところで、私はハンバーガーメニューの中に何故か「パレットの設定」が見つからなくて再度Raspbianからインストールするはめになったのだが、先程メニューを確認すると「パレットの設定」が表示されているので、これで安心して進められる。


02/27/2018

RaspberryPi3での日本語入力

トランジスタ技術2018年3月号の特集「AI電脳製作」が面白いので、持っているRaspberry Pi3を使って、その特集記事の内容に沿って、いろいろ試してみる事にした。

トラ技の付属基板に部品を実装して、AIセンサ・フュージョンを完成させ、スピーカボックスを作って、ボックスの上にRaspberryPiとAIセンサフュージョン基板を組み合わせた基板を載せて・・・、RaspberryPi3のGPIO拡張コネクタには、電源、スピーカ、HDMIモニタ、USBキーボード、USBマウス、LANケーブルを接続した。

Img_20180211_093414 Img_20180211_095437格好良く「上記のように出来た」と言いたかったところだが、実はトラ技の付属基板用部品キットをネットで購入する際に、選択すべきものを間違えて、部品が装着された完成品を購入してしまった。出費は増えて、自作の楽しみも損なってしまったが、製作する時間が短縮したこともあり、ソフトウェア開発の部分でいろいろ試して楽しむことにし、失敗して落ち込んだ気持ちを前向きに切り替えた。




Img_20180227_111316 Img_20180227_111443 電源は、安価な中国製5V2A仕様のものを使い、電灯線から電力供給するように工作した。
ペーパークラフトでスピーカーボックスを作る方法は、トラ技68-69頁に記載があるが、僕は少々の木材片が手元にあったので、それを活かしてスピーカボックスを作った。
しかし、手持ちの工具だけで木材を大きくくり貫く加工は難しく、あまり綺麗には出来なかった。また、ケース内にRaspberryPi3のシステムを収納したかったが、寸法の見積もりが甘く、オーディオケーブルなどがケースから飛び出してしまった。
ケース等に付いては、今回の経験を活かして、再度、もう少し見栄えの良いものにしたいと思っている。

トラ技に書かれた順に作業を進め、110頁辺りまで進めてみたが、日本語入力(ローマ字漢字変換)が上手くいかず、日本語文字が入力出来ないので中断。

それで、RaspberryPi3に、Raspbian Stretch をインストールして、先ず日本語入力は出来るようにするための手順を、下記のように確認したので書留めておく。

RaspberryPi3に僕が繋いだ周辺機器は、英語配列のUSBキーボード(ARCHISS RETRO AS-KBPD04/TBK)、USB有線マウス(MO-VET-WDLOBK-01EI001337)

《 手順 》
1)Raspbiaは日本のMirrorからdownloadするのがスピードが早い。下記の日本のサイトの何処かから、最新のRaspbianを選んでDownloadしておく。

MIRROR DEB/DEB-SRC ADDRESS
JAIST http://ftp.jaist.ac.jp/raspbian
(http|rsync)://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian
WIDE Project Tsukuba NOC http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/
rsync://ftp.tsukuba.wide.ad.jp/raspbian/raspbian/
Yamagata University http://ftp.yz.yamagata-u.ac.jp/pub/linux/raspbian/raspbian/

自分のPCの、何処か適当な場所にダウンロードしたら、7-Zipなどで展開し、Raspbianの imgファイル(ディスクイメージファイル)を準備しておく。

2)次に、
MicroSDカード8GB以上の容量のものを、SDFormatterでフォーマット

3)
Win32DiskImagerを使ってmicroSDカードにimgを書き込む。microSDカードの残り容量部分は何も処理はしない。
Win32diskimage_raspbian





4)RaspberryPi3に3)のmicroSDカードを挿入し、
HDMIモニタ、USBキーボード、USBマウス、LANケーブルを接続し、電源を入れて起動する。

5)起動直後の画面
Img_20180227_150424 Img_20180227_150454・画面左は、起動直後の画面
・画面右は、LX Terminalを起動させたところ







6)Raspi-configの設定
  $ sudo raspi-config
  ①先ず、セキュリティ確保の為、Passwordを変更しておくのがよい
Img_20180227_151535

  







 ②次に、
    
言語の設定
   4 Localization Options を選択 ⇒ <Select>⇒「
I1 Change Locale 」を選択
Img_20180227_151702 Img_20180227_152222








Img_20180227_152338 Img_20180227_152802次に、
ja_JP.ECU-JP ECU-JP
ja_JP.UTF-8 UTF-8
を選んで、次の画面では以降の設定で文字化けを避けるために、
en_GB.UTF-8   を選択しておく。




  ③タイムゾーンの設定
Img_20180227_153640 Img_20180227_153700 Img_20180227_153853

ここで左のように設定して於いた筈なのに、後の確認では設定が変わっていない・・・(OKボタンを押すのを忘れたか?)




  ④キーボードの設定
Img_20180227_153944 Img_20180227_154007 Img_20180227_154103








Img_20180227_154128 Img_20180227_154151 Img_20180227_154209









7)日本語化

  ①日本語フォントのインストール
  $ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

Img_20180227_154506 Img_20180227_154535 Img_20180227_154602








 ②日本語入力の設定
   ここでは、Mozc(Google日本語入力のオープンソース版)をインストールすることにした。
   $ sudo apt-get install fcitx-mozc
Img_20180227_154755 Img_20180227_154810 Img_20180227_155207




ここで、reboot する事。


 リブートした後、
 ③入力切替の設定で
Img_20180227_160007画面の右上のキーボードアイコンを右クリックしてメニューを表示させて、configureを選んでクリック、







Global Configを開いて、漢字変換時の入/退 時のキー設定を登録する。
左側の「Ctrl+Space」は、それでいいので、右側の「Empty」を
「Ctrl+Space」に設定する。

Img_20180227_160524 Img_20180227_160545 Img_20180227_160556








ここで、Input Method も確認してみると・・・
Img_20180227_180314 Img_20180227_180328左の画面で「OKボタン」をクリックすると、








Img_20180227_180357ここで「Yes」をクリックして、








Img_20180227_180415fcitx のボタンをONにして、「OK」をクリックしたあと、
この画面を閉じて、







ここで、もう一度画面右上のキーボードアイコン右クリックメニューから「Configure」をクリックして・・・(先ほど、確認しておけばよかったのかもしれないが)

Locale関連設定を日本にしておかないといけないので、・・・ 設定画面を開くと英国(GB)なっているので修正する。既に設定していた筈なのに、確定させるのを忘れたのかも・・・
Img_20180227_180542 Img_20180227_182646 Img_20180227_182707









Timezone(Asia,Tokyo)、Keyboard(僕が使用しているのはUS仕様のキーボード)、WiFi Country(JP Japan)についても開いてみて、要すれば修正する。
Img_20180227_182732 Img_20180227_182819 Img_20180227_182850









入力・修正が終わったら、「Restart」する。

Reatartによって、メニューも日本語表示になっている筈だ。
画面右上のキーボードアイコンをマウスで右クリックし、メニューから「設定」を選んでクリックし、入力メソッドの設定画面を表示させる。

入力メソッドの設定画面の左下の「+」をクリックすると「入力メソッドの追加」画面が表示され、その中に『Mozc』があるので、これを選択して入力メソッド中に追加してやる。
英語(半角英数入力)のコマンドを打ち込み、途中で日本語入力『Mozc』に切り替える場合には、この通りの順に配置する必要が有る。逆の順で配置すると、日本語入力が先行するので、使いづらくなる。ご注意!

Img_20180227_202742 Img_20180227_202800 Img_20180227_202810 Img_20180227_202821







アクセサリから「Text Editor」を開いて、文字入力画面で「Ctrl+Space」と操作すると、日本語文字入力になる。
Img_20180227_202852 Img_20180227_202936








以上で日本語変換の設定は終了。

《注意点》その後、Node-REDを楽しんでいて、何かを「やっちまった」らしく元の状態に復帰できなくなったので、再度インストールすることにした。ところが、上記に書いたように、英語キーボード設定で何度行っても「2」のシフトで「@」キーが打てない。
原因は、キーボードのミス設定なので、再度キーボードを設定する。
1)sudo raspi-config
設定画面が開いたら、
2)4  Localization Options  を選択

3)次の画面で
  I3  Change Keyboard Layout を選択
4)キーボードは、英語キーボードなので、
  Generic-key PC  を選択 <OK>
5)Keyboard layout は、
  English(US)   を選択(これ以外に余計なことが記載されていないものを選ぶ)
6)次の選択では、Altキーがスペースキーの両側にあるタイプなので、
  Both Alt key  を選択
7)次のメニューでは
  キーにCaps Lock があるので、
  Caps Lock  を選択 
8)Control + Alt + Backspace でXサーバーを閉じられるように <Yes> を選択
9)最初のメニュー画面に戻ったので、<Finish>を選択して終了する。
以上でキーボードの設定は終了。

の筈なのに、rebootすると、キーボードは英国(EU)になっている????? なぜ?

画面の右上のキーボードアイコンをマウスで右
クリックして、メニューの中から
Conigure Current Input Method  を選択し、クリックする。

開いた窓の一番上には Keyboard - English (UK)  が居座っていて、変更しても変わらないことがわかった。
①そのため、
Keyboard - English (UK)  をハイライト選択して、この窓の一番下の「ー(マイナス)」ボタンをクリックして削除し、
②次に「+(プラス)」ボタンをクリックして、
Keyboard - English (US) を探して「OK」ボタンをクリックして窓の中に追加する。
③追加しただけでは、Mozc(日本語選択)の下側に位置するので、上向きの矢印キーを使って Keyboard - English (US) を一番上にする。
④窓の右上の「x」をクリックして、これで設定終了。

02/11/2018

Windows10 ユーザーアカウント制御されるアプリの自動起動方法

毎日定刻にPC(Windows10)を起動させ、その際に、アプリも自動起動させたい。ある設定した時刻になったら、PCをシャットダウンさせるという事をやりたかったのだが、ようやく上手く設定が出来たようなので、忘れないうちにここにメモをしておく。

僕が使っているPCの構成(monitorの仕様、BIOS設定方法など)の問題も有ったように思うので、そのシステムの概要をここに記載しておく。

《追記:2018/02/11》 自動起動させるProgramを変更したので、ここに、その際に行った情報を記載しておく。Program「UC.exe」はアンインストールして、機能が高いと思われる(Security Eyeという名前のソフト)Se.exeに変更してしまった。PCの起動とシャットダウンに関する基本的な部分は残っている所があるので、それを活かしながら変更を行った。後述の部分で、追記したところは
《追》を記載。


PCの概要

 Motherboard: Z97N-WiFi  LGA1150用 Mini-iTX (Gigabyte製)
 CPU: intel Core i5 4590 @3.30GHz BOX(Haswell Refresh)
 Memory: CORSAIR VENGEANCE 16.0GB
 Graphics: 内臓IGFX
 HardDisk: PLEXTOR 
 PC Case: Cooler Master  Elite 130 Cube
 電源: Enermax ELT500AWT  500W仕様
 OS: Windows10 Pro 64bit版

周辺装置

 Monitor: LG FLATRON IPS206T-PN  (DVI接続)
 Keyboard: FILCO Excellio FKB109EXJB
 Mouse: Microsoft  Mobile Optical Mouse (有線)

調べてみると、自動起動はBIOSの「RTCによる電源ON」から行い、シャットダウンは「タスクスケジューラ」から行えば良いらしい。

問題点は、
1)PC起動時にDelキーを押しても、BIOS画面を開くことが出来なかったこと。
2)BIOS画面を開くことが出来るように変更後、PCを起動後に、監視カメラ用アプリが連動して上手く立ち上がらなかったこと。
3)監視カメラ用のアプリは立ち上がったものの、ユーザーアカウント制御のために、アプリがそこで止まってしまうこと。
上記の問題は、下記のように設定して、問題が解消し、監視カメラ用アプリは自動的に起動した。

1)の問題は、僕が使っている自作PCを製作した際に選択したレガッシーBIOSの問題かもしれないし、あるいは、使っているモニターのPCとの接続仕様によるものかもしれない。
しかし、BIOSが表示できないという問題の原因は、どちらなのかを切り分ける事が出来ていない。

1.BIOS画面を表示するために、
 いろいろやっている間に、PCの起動ディスク(C:ドライブ)に余計な書き込みをしてしまい、PCが起動できなくなった。しかし、このような問題は起きてしまうものなので、事前にHDD(D:)の中には起動用のバックアップを作り、DVDにも起動用ディスクを作っておいた。

作業場所の問題があり、周辺機器(モニター、キーボード、マウス)を外して、このPCだけを別の部屋に移動させて設定作業を行った。

 ①PCからSSDを取り外して、別のPCに組み入れ、ここでSSDのパーティションを外し、初期状態にした。
 ②初期状態に戻したSSDを、再び元のPCに組み込み、マザーボード上のCMOSジャンパーピンをショートさせて、データをクリアし、周辺機器を接続して、電源ON。
 ③これで、電源ON直後に「Del」キーを押すことで、BIOS画面に入ることができた。

2.BIOS画面での設定
 BIOS画面を開いて、システム電源を計画的にONにする設定を行う。
 ①Power Management (電力管理) 画面で、Resume by Alarm(アラームで再開する)に入りを有効にして、
  Wake up hour と Wake up minute を設定した。
  僕は、午前4時30分にPCを起動させるようにしたいので、hourの入力は「4」を、minuteの入力は「30」とした。

  毎日同じ時刻に起動なので、Wake up day(開始日) は 「0」のままである。
  また、秒まで拘らないので、Wake up second(秒で起動) も 「0」のままである。

 ②予期せぬ停電などで、AC電源が失われた場合の電源復帰もここで設定しておく。
  僕は、Memory を選択し、AC電源が戻った際に、システムが停電する前の状態と同じ状態となるようにした。
  
 ③キーボードやマウスによる電源ONは不要なので、Disabledを選択した。

 ④「Save & Exit」を選択し、保存して終了! これで、PCの起動設定は出来たはずだ。
  
 ⑤設定の確認のため、ここで行っている他の設定準備が終わり、しばらく時間を置いた後に、
 例えば、10数分後にこのPCが自動起動するように、前述のResume by Alarmの時刻設定を行って、この状態を「Save & Exit」で保存しておくことにする。

 この確認作業が終われば、再びBIOS画面で起動させる時間を設定し直す必要がある。
 忘れないようにしないと・・・。

3.Windows10のパスワードなし起動
 僕は、「Windows 10で起動時のパスワード入力を省略する方法
」のURLを参考にさせていただいた。

4.スタートアップにアプリを登録する
 PCが起動したときに連動して自動起動させたいアプリは、スタートアップに入れれば良いらしい。
 ①アプリをスタートアップに登録するためには、登録するアプリをデスクトップ画面に仮置きする。
 注記)このとき、アプリのプロパティを開き、
  「互換性」のタグをクリックして、一番下にある「管理者としてこのプログラムを実行する」にチェックを入れてはいけない。これを行うと、アプリが起動しなくなる可能性が高い。

 ②Windowsボタンをマウス右クリックし、「ファイル名を指定して実行」メニューを選択する。
 ③開いた窓の中の枠内に 「shell:startup」 と入力し、「OK」をクリックする。

 ④新たに、エクスプローラーのスタートアップフォルダーが表示される。

  これまでに、アプリのスタートアップ登録をしていなければ、このフォルダーの中は空のはずだ。

 ⑤このスタートアップフォルダーに、デスクトップに仮置きしておいたアプリを、ドラックアンドドロップで移動させる。

 ⑥PCを再起動させる。

 この作業が完了すれば、監視カメラ用アプリはPC起動直後に起動するだろうと思っていた。
 アプリは起動したが、起動後『ユーザーアカウント制御(UAC)』という機能が働いて、「このアプリがPCに変更を加えることを許可しますか?」と聞いてくる! ここで「はい」と答える必要がないようにする必要がある。そうしないと、シャットダウンの時刻までアプリは止まったままである。

 それほど単純ではなかった。
まだ他の項目を設定する必要がある。

この課題を解消するためには、

5.まず、タスク スケジューラでタスクを作成する必要がある。
タスクスケジューラの起動は、タスクバーの「検索フォーム」に「task」と打ち込むと、表示される筈。メニューから「タスク スケジューラ」を選んでクリックする。

①画面右側の操作メニューから「タスクの作成・・・」を選び、

②開いた「タスクの作成」の窓の 全般タグ に、名前、説明を記入する。
 僕は、名前に「MotionDetectCamera」と記載し、説明は空欄とした。
 《追》今回はソフトウェアの名前「Security Eye」とし、
 ・ユーザーがログオンしているときのみ実行する・・・ボタンをON
 ・最上位の特権で実行する・・・・・・・・・・・・・にチェックを入れる。
 ・構成の枠内は、・・・・・・・・・・・・・・・・・Windows10を選択する。
 まだOKボタンはクリックしない。 

③操作タグ をクリックし、
 新規をクリックして新しい操作を作る。
 プログラムの開始を選んで、

 プログラム/スクリプト欄 には、
「参照」をクリックして、アプリが格納されている場所(例えば、C:\Program Files(x86)\Security Eye\) からプログラム (Se.exe) を探し場所を確認する。
 そして「C:\Program」とだけ入力する。《追》分割して入力するのだが、それらは内部で結合される。

 また、引数欄には、「Files(x86)\Security Eye\Se.exe」と入力する。
 僕は、開始(オプション)欄に 「/rl highest」と入力した。
 《追》「r」の次の文字は、半角縦線「|」である。

 OKをクリックして戻る。

④トリガータグ をクリックし、
 新規をクリック
 《追》タスクの開始で 「ログオン時」を選択し、
  次に、「特定のユーザーのボタン」を選択し、OKをクリックする。

⑤条件タグ をクリックし、
 入っているチェックをすべて外す。
 《追》「電源」の項目は、全てチェックを入れた。
 設定後、OKをクリックする。

注記)アプリケーションプログラム(ここでは”Se.exe”)は、ID、パスワードの入力無しで起動できるように設定しておくこと。

《追》これでもまだ「最上位の特権で実行する」が選択されているが、未だ『ユーザーアカウント制御(UAC)』で止められてしまう。

6.そのためユーザーアカウント制御の設定を変更する
先ず、モニター画面左下隅タスクバーの「検索フォーム」に「uac」と入力して、

「ユーザーアカウント制御設定の変更」をクリックし、「
ユーザーアカウント制御の設定」窓画面で、4段階の3段階目に設定してOKをクリックする。


7.最後に、PCをシャットダウンする設定を行う。

先程4.で設定したが、タスク スケジューラで、シャットダウン用のタスクを作成する必要がある。
タスク スケジューラの起動は、タスクバーの「検索フォーム」に「task」と打ち込むと、表示される筈。メニューから「タスク スケジューラ」を選んでクリックし起動させる。

①操作のタブをクリックし、今度は「基本タスクの作成」をクリックする。

②名前は、「自動シャットダウン」と付け、次へのボタンをクリックした。

③次の画面タスクトリガーでは、毎日のボタンを選択し、次へをクリックし、
  毎日の 開始時刻を設定する。
    僕は、当日の深夜「23:55:00」に設定し、次へのボタンをクリック。

  《追》タスクスケジューラライブラリーで、左右方向で中央列の上側の画面の中から
     「自動シャットダウン(自分が前回設定したタスク名)」を探し、マウス右クリック、
     メニュー画面からプロパティを選択し、クリックすると、編集画面が表示される。
     編集ボタンをクリックして、
      スケジュールに従うとし、毎日行うタスクの時間を編集する。

④操作の画面では、「プログラムの開始」ボタンを選択し、次へ。

  プログラム/スクリプトには、
   「 shutdown 」
  引数の追加には、
   「 /s /f 」
  と入力し、次へ。

⑤完了画面で、「完了」ボタンをクリックする。

以上で、全ての設定作業が完了したので、PCを再起動、又はシャットダウンした後PCの電源ボタンを押してみる・・・・・アプリは立ち上がったかな?

別のPCで確認した結果 この設定で無事立ち上がった!

アプリプログラムが上手く立ち上がらないので、ここでの設定に問題があるのかと思って色々調べた結果、アプリプログラムには、32bit版と64bit版の2種類があり、PCが64bit OSだったので64bit版のアプリを選んでインストールして確認しようとしていたが、何度やってもアプリの起動がおかしいので、32bit版にインストールし直して確認してみた。
電源ON後、ユーザーアカウント制御(UAC)も表示されずにパスし、アプリ(UC.exe)も起動し、画面表示された。

02/07/2018

Arduino NANO, DHT11 を使い、湿度によりPower制御する(その2)

Img_20180205_214956 Img_20180205_215141 Img_20180205_215301 前回の記事でトライアルが上手くいったので、ブレッドボードから基板に移して実用になるように進めてみた。




Img_20180207_091433 Img_20180207_092152 Img_20180207_092520 収納するケースは、百均ショップセリアでプラスチック製弁当箱を購入し、電源用とセンサー用にそれぞれ寸法を微調整しながら穴を空けて挿し込んだ。
電源は、中国製の5V2A仕様のものをAmazon経由で購入(@344円:SODIAL(R)AC 110-240VがDC 5Vに切り替え 電源コンバータ S-A10-05
)。ただし、Arduino NANOのVIN入力の仕様は7V~12Vだが、電圧調整ボリュームを一杯にしても6.3Vまでしか上げられなかった。しかし稼働できている。

Img_20180207_092458 Img_20180207_155332Photo 弁当箱ケースの蓋を閉じて、2x4用固定部品を利用して、取付けた。
ケース下側の線が、装置のArduinoなどに電力を供給し、右側のDHT11センサー(@152円:Rasbee デジタル 温湿度センサモジュール DHT11 5個入り760円
)により雰囲気湿度を計測し、ケース左上の電源コードのスイッチをON/OFFする。




02/04/2018

PCがネットに繋がらない・・・どうしたんだ!

今朝、メインPCを見るとネットに繋がらなくなっている。

早速、ネットワークのトラブルシューティングをすると・・・
Photo 「DNSサーバーに問題がある可能性があります」と表示される。(左の画像)


ネットにつながっているスマホで情報検索してみると、不具合項目の一つとして「プロバイダDNSサーバーの不具合の可能性がある」とのこと・・・ 
得られた情報から、DNSサーバーのアドレスを変更して見る事にした。



PCより、
スタートボタン上でマウス右クリックでメニューを表示し、

ネットワーク接続 ⇒ イーサネット ⇒ アダプターのオプションを変更する 
と辿り、イーサネットの一覧画面を表示する。

該当するイーサネットの上で、
マウス右クリックメニューからプロパティを選択。

次に、プロコトルバージョン4(TCP/IPv4)を選択して

プロパティボタンをクリックし、
「次のDNSサーバーのアドレスを使う」 にチェックを入れて(私のPCでは既にチェックが入っているが)、サーバーのアドレスを次の値に変更し、OKをクリック。
優先DNSサーバー 8.8.8.8
代替DNSサーバー 8.8.4.4

この後、PCを再起動したら・・・ ネットにつながった!
やれやれ・・・

《その後》
 同様の事態(インターネットにつながらない状態)が発生した。
 既に、上記の設定済なのに・・・ 調べてみると、私が以前PC等に設定していたIPアドレスが、自動設定された機器が立ち上がった後、IPアドレス設定済みの機器の電源が入り、アドレスが衝突した(ダブルブッキング)状態になったらしい。

 私が設定していた固有IPアドレスを、自動設定に変更したらネットに繋がるようになった。

02/03/2018

Arduino NANO, DHT11 を使い、湿度によりPower制御する

前回の回路を利用して、温度・湿度計測センサ「DHT11」で計測した環境湿度が30%よりも低下した場合に、リレーにより電源のSWをONにする装置のモデルを作成した。

前回に対して追加したのは、下記①~③
①パワーリレー
②パワーリレーを制御するための電源線と信号線(これはArduino NANOのD8ピンに接続した)
③パワースイッチの動作を確認するために、
  外部電源とLEDを組込んだ。
尚、私が前回使っていたブレッドボードでは、電源ラインに問題点がある事が判明したので、
OLEDディスプレイ周辺の回路は、別の新しいブレッドボードを使ってジャンパーピンの接続を簡素化した(見栄えを良くした)。

Fritzingを使って回路を描いてみた。
Dht11oled_displayrelay Img_20180203_203316PowerRelayの出力のところには、換気用ファン用の電源回路にすることになるが、ここでは論理が合っているか否かを確認するために、外部電源でLEDを点灯することとした。



拙宅では、衣類を入れるクローゼットに、換気ファンを設けたが、温度・湿度共に低い冬期でも常にファンが回るために、低い湿度の状況ではファンを停止したいと思った。それで、ファンをコントロールするための湿度はどれくらいに設定するのが良いか、調べてみると、「エコハウス・マニュアルノート・ページ
」 の中に下記の記事を見つけた。私は、室温に関わらず、ファンを制御する湿度を30%でやってみる事にした。

http://www.ecolab.or.jp/yumesekkei/note310.htmより引用
カビ発生の条件→
適度な湿度
カビは湿気を好みます。相対湿度77%~99%がカビにとって繁殖しやすい湿度といわれます。室内の湿気を40~60%に保っていても、風が通らず結露しやすい部屋の隅や押し入れ、温度の低い部屋などは湿度が高くなりやすく、カビが生えやすい場所です。


スケッチは下記のようになる。
《Sketch》

// DHT11センサーから湿度と温度を読み取り、PowerRelayを制御する

#include "DHT.h"
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);

#define DHTPIN 2     // データピンをD2へ

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// DHT11の pin 1 (正面左側) NANOの +5Vへ
// DHT11の pin 2(正面左から2番目、データピン)NANOの D2 且つ 10kΩ経由で +5Vへ
// Connect pin 4 (正面右側) NANOの GNDへ

int powerSW   = 8;    // power SW

DHT dht(DHTPIN, DHTTYPE, 6);

char str[10];

void drawTest(void) {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 5, 20, "Measurements");  // 画面表示が 2pixほど右にシフトしているため
}

void setup() {
  Serial.begin(9600); 
  Serial.println("DHT11 Measurements");
 
  dht.begin();
  u8g.firstPage();  
  do {
    drawTest();
  } while( u8g.nextPage() );

  pinMode(powerSW, OUTPUT);
  digitalWrite(powerSW, HIGH);  // power Off
  // Wait a few seconds.
  delay(2000);
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("DHTセンサからのデータ読取りに失敗しました!");
    return;
  }

  // Compute heat index
  // Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *F");

  if ( h > 30.0 ) {
     digitalWrite(powerSW, LOW);  // power On
  } else {
     digitalWrite(powerSW,HIGH);  // power Off
  }
  
  // picture loop
  u8g.firstPage();  
  do {
    u8g.setFont(u8g_font_helvB08);

    u8g.drawStr( 5, 15, "Humidity:");
    u8g.drawStr( 80, 15, dtostrf(h, 5, 2, str));
    u8g.drawStr( 112, 15, "%");
    
    u8g.drawStr( 5, 30, "Temperature:");
    u8g.drawStr( 80, 30, dtostrf(t, 5, 2, str));
    u8g.drawStr( 112, 30, "\260C");
    
    u8g.drawStr( 80, 45, dtostrf(f, 5, 2, str));
    u8g.drawStr( 112, 45, "\260F");
    
    u8g.drawStr( 5, 60, "Heat index:");
    u8g.drawStr( 80, 60, dtostrf(hi, 5, 2, str));
    u8g.drawStr( 112, 60, "\260F");
    
  } while( u8g.nextPage() );

// Wait 30 seconds between measurements.
  delay(30000);
}

この結果を用いて、実用基板を起こしてみようと思う。

Arduino NANO-DHT11-OLED_Display を使って温度表示

Img_20180202_202410 Arduino NANODHT11を使って湿度と温度を計測し、それをOLEDディスプレイに表示する方法をメモしておく。
OLEDディスプレイへの表示は、Arduino Unoでは問題無く表示出来ていたのだが、中華製NANOでは表示できなかったので注意点を書いておく。
DHT11を使った湿度と温度の計測に関しては、数多くの記事をネット上に見る事が出来、私もその事例に倣ってブレッドボード上に組み立てた。


Img_20180202_203019 私が使ったOLEDディスプレイでは、Unoを使って組上げたものでは問題無く表示できるのに、同じように組み立てたNANOを使ったケースでは、全く表示出来なかった。(電源が入っていない感じ。)
電圧の違い(5V/3.3V)なのか、OLEDディスプレイ本体が壊れてしまったのか・・・と思ったり、ブレッドボード上でレイアウトやピン位置等、ジャンパーピンを何度も差し替え、長時間悩んだ。


ディスプレイの電源は、これまでNANOからブレッドボード上を経由して供給していたが、NANOのピン傍からジャンパーケーブルを使って直接OLEDディスプレイに接続してみたら、表示するようになった。ブレッドボード内に問題が有るのかな?これについては、未だ調査していない。ディスプレイの表示には、送り込んだデータが左に2pixほどずれて表示されるが、表示はするようになったので、部品異常では無いかもしれない。

(2018/02/03 20:13 OELDディスプレイに電源が入らない原因が分かった!

Img_20180203_200922 ブレッドボードには長手方向の途中で電源ラインが分断しているものが有って、そのためにOLEDディスプレイに電源が供給されなかったことが判明。僕はそこに目が行き届かなかった・・・。先ほど気づいたので、左に写真を添付しておく。写真の電源線の部分を見て欲しい。部品が乗ったブレッドボードの方では、赤と青の線が途中で切れている。)




OLEDディスプレイは5Vで動作し、SDA(A4ピンへ接続)、SCL(A5ピンへ接続)してI2Cインターフェースを介してNANOと通信する。

尚、私が参考にしたブログのURLは、
https://t93093.wordpress.com/2017/07/31/temperature-humidity-monitor-using-arduino-nano-dht11-0-96-inch-128x64-i2c-oled/


Dht11oled_display 回路は簡単なので、fritzingで描いて・・・、
sketch も下記に添付しておく。
ディスプレイ上で左側起点の最初の文字の表記位置を5pix分だけ右にシフトさせているが、これは画面表示が2pixほど左にずれて表示されるための私の暫定的な対応策である。



《sketch》

// DHT11センサーから湿度と温度を読み取り、128X64 I2C OLEDで表示する

#include "DHT.h"
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);

#define DHTPIN 2     // データピンをD2へ

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// DHT11の pin 1 (正面左側) NANOの +5Vへ
// DHT11の pin 2(正面左から2番目、データピン)NANOの D2 且つ 10kΩ経由で +5Vへ
// Connect pin 4 (正面右側) NANOの GNDへ

DHT dht(DHTPIN, DHTTYPE, 6);

char str[10];

void drawTest(void) {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 5, 20, "Measurements");  // 画面表示が 2pixほど右にシフトしているため
}

void setup() {
  Serial.begin(9600); 
  Serial.println("DHT11 test!");
 
  dht.begin();
  u8g.firstPage();  
  do {
    drawTest();
  } while( u8g.nextPage() );
}

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

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("DHTセンサからのデータ読取りに失敗しました!");
    return;
  }

  // Compute heat index
  // Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *F");
  
  // picture loop
  u8g.firstPage();  
  do {
    u8g.setFont(u8g_font_helvB08);

    u8g.drawStr( 5, 15, "Humidity:");
    u8g.drawStr( 80, 15, dtostrf(h, 5, 2, str));
    u8g.drawStr( 112, 15, "%");
    
    u8g.drawStr( 5, 30, "Temperature:");
    u8g.drawStr( 80, 30, dtostrf(t, 5, 2, str));
    u8g.drawStr( 112, 30, "\260C");
    
    u8g.drawStr( 80, 45, dtostrf(f, 5, 2, str));
    u8g.drawStr( 112, 45, "\260F");
    
    u8g.drawStr( 5, 60, "Heat index:");
    u8g.drawStr( 80, 60, dtostrf(hi, 5, 2, str));
    u8g.drawStr( 112, 60, "\260F");
    
  } while( u8g.nextPage() );
}

12/19/2017

ドアフォンの故障(此方の声が相手に聞こえない)

Img_20171219_163241 拙宅で使っているドアフォン、最近訪問者の反応がおかしい・・・。宅配のお姉さんに聞くと、こちらの声が聞こえなかったと言っている。訪問者が押す「呼び鈴音」と「声」は、此方側親機のどの装置でも聞き取れているので、玄関の子機に問題があるようだと判断し、その子機を取外し、スピーカの抵抗をチェックしてみた・・・。




Img_20171219_162515 Img_20171219_162453Img_20171219_162545 スピーカー配線の片側の半田付けを外し、抵抗値を測ってみると・・・、断線している。
小直径のスピーカー、スピーカー型番は、「DAIN LOAD02」8Ωのものだが、調べてみると互換品「 東京コーン スピーカー 28mm 0.5W 8Ω S28G10K-15 」があることがわかった。







とにかく修理してみようと思い、アマゾンからその互換品を購入することにした。価格は送料込みで@1350円也! 他に、中国製で外径のみが少し小さい安価なスピーカも見つけたが、商品の到着までには10日ほど待つ必要があるので、数日で到着するだろう「東京コーンスピーカー」のものを買う事にした。

2日後、注文したスピーカが到着し、早速換装作業実施し、テスト・・・
Img_20171222_165001 Img_20171222_165505 Img_20171222_171548a








部屋の中からの声が玄関の子機で聞こえる! 修理完了。

«Bluetooth modules(HC-05、HC-06)のPairing設定

May 2018
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Recent Trackbacks

無料ブログはココログ