2019ノーマルを求めて

ちょっと感動したことがあると書いてます。

プルアップ・プルダウン抵抗って何?

電子回路初心者です。

1つ1つ勉強して、自分で回路を組めるようにしたいと思います。

 

テーマ「プルアップ・プルダウン抵抗」

Raspberry PiとDTH11を接続する際も、プルアップ抵抗として10KΩが入っている回路図をよく見ますが、このプルアップ抵抗が何をしているのかわかっていません。

ということで、調べてみました。

下の図も、見よう見まねで描いてみました。

f:id:yukiwithfulloptions:20210202060228p:plain


プルアップ抵抗、プルダウン抵抗はデジタル信号の入力によく使われるとのこと。

ん?あってるかな。

 

<プルアップとプルダウンのざっくり違い>

  • プルアップ抵抗は、信号がないときHIGHを供給する
  • プルダウン抵抗は、信号がないときLOWを供給する

上の図は、HIGHになるからプルアップ抵抗かな。

 

プルアップ・プルダウン抵抗をつけていると、信号が安定するらしい。信号が安定するというのは、HIGH、LOWの電圧がはっきりしている状態と、理解しました。

プルアップ・プルダウン抵抗をつけていないと、HIGHなのかLOWなのかわからない状態(浮いた状態)が発生するので、これを回避するためにつけるらしい。

 

でもプルアップ抵抗のとき、なんでスイッチをONにすると、信号がINPUTに流れなくなるのか?すごい不思議ですが、こちらの方の説明で理解できました。

なるほど、そういうものなのか。

startelc.com

 

でも、DTH11についているプルアップ抵抗は、このスイッチの仕組みと同じと考えていいのだろうか?

DTH11の信号がない場合はVccがGPIOに流れるのは分かるが、信号があるときはどうなってしまうんだ?

ちゃんと?描いてみた。

 

f:id:yukiwithfulloptions:20210203071422p:plain

上のように描けることが理解できました。

あぁ、なるほど。さっき見たサイトの説明の通りですね。

DATAがないと、プルアップ抵抗側から電流が流れるんですね。

なるほど、なるほど、わかったきがします。

 

が、しかし疑問が。。。

色々サイトで調べてるとArduinoは、内部でプルアップ抵抗、プルダウン抵抗を持っていて、切り替えられるんですよね。

いまの時代でRaspberry Piがそのことを考慮せず設計されているとも思えないんですよね。

Raspberry Piのフォーラムを見ても、色々書かれていて、結局どうすればいいの?となってしまったのですが、やっと理解できたのでプルアップ抵抗、つけときます。

www.raspberrypi.org

 

 

Azure超絶初心者によるIoTデータのグラフ表示解説

 Azure超絶初心者の私。

  • Raspberry PiのGPIOにDTH11を接続して1-Wireライクで温度と湿度データを取得することはできた
  • Node-REDでDTH11のデータをAzureに送信するフローも作れた

 

でも、その先のAzureのWebアプリでグラフ表示することはできていない。

どのサイトを見ても、いとも簡単にグラフ表示しているが、Azureの説明部分がまったく理解できていない。

かろうじてAzure IoT HUBの位置づけは分かった気でいる。

 

やり方だけ読みたい方は、ここをクリックすると、まとめに飛びます。

 

だがしかし、その先のWebアプリなるものが、Azureのどこで動いているのか?

Azure VMじゃないの?Azure CLIって言葉がすぐにでてくるけど、Webアプリの動いているサーバー(WebApps?)って存在するの?え?Azure CLIって何?笑


GitHubをインストールするって書いてあるけど、自分のパソコン?Azure VM?Azure CLI?WebApps?どどど、どこによ!


そもそもマイクロソフトのドキュメントサイトを見ているが、まったくわからん・・・

何がわからないかというと、「どこに」の説明がかなり端折られていて、超初心者にはわからない。

ということで、超初心者が超初心者のために、わかっている人にとっては超当たり前のことを書きながら、Raspberry PiのDTH11データをAzure上でAzureを使ってグラフ表示してみたいと思う。

→最後にわかるのですが、「Azure上」ということではなく、「Webアプリ」で、であります。 

まず、Azure CLIって何者?

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。

docs.microsoft.com

Azure Cloud Shell?の略?え?「ホストされてます」?ホストされてるって何? 

色々調べた結果、結局本家のマイクロソフトのページにはこう書いてあった。

 Azureコマンドラインインターフェイス(Azure CLI)は、Azureリソースを作成および管理するために使用される一連のコマンドです。

What is Azure CLI? | Microsoft Docs

Azureリソース全体を管理できるのね。

って、Azureリソースって何?この下のページの絵が、一番わかりやすい。

 

https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/media/overview/consistent-management-layer.png

Azure Resource Manager の概要 - Azure Resource Manager | Microsoft Docs

Azure Resource Managerというボスがいるのかぁ。この図からだと、最初の疑問だったVMとWebアプリって別物だし、Azure CLIってVMじゃない。

 

では、ネット記事によく書いてある「GitHubをインストールします」って、Azure CLIにインストールなの?Webアプリってやつなの?仮想マシンにインストールなの?

まさにやりたいことは↓のページなんだけど、もう何を言ってるかわからん???

ひとつひとつかみ砕こう。。。。

 

作業内容

  • Web アプリがセンサー データの読み取りに使用する IoT Hub にコンシューマー グループを追加する
  • GitHub から Web アプリのコードをダウンロードする
  • Web アプリのコードを調べる
  • Web アプリに必要な IoT Hub の成果物を保持するために環境変数を構成する
  • 開発マシンで Web アプリを実行する
  • Web ページを開いて、IoT Hub からのリアルタイムの温度と湿度のデータを確認する
  • (省略可能) Azure CLI を使用して Azure App Service で Web アプリをホストする

Web アプリでの IoT Hub データのリアルタイム データの視覚化 | Microsoft Docs

 

IoT Hubにコンシューマーグループを追加する?コンシューマーグループとは?

これもアメリカのマイクロソフトページでやっと見つけた資料だが、

 

 

 Azure Event Hubsで複数のサブスクライバーに対応するには、開発者は複数のコンシューマーグループを作成する必要があり、それぞれが同じストリームから読み取る他のレシーバーからの分離を提供します。

https://cdn.document360.io/d9568273-28c0-486c-8750-64643e7f5f97/Images/Documentation/8191f1c4-3fa8-41c4-814b-232dfc7918ec.png

 

Azure Event Hubs Consumer Groups | Serverless Notes

 

 イベントを受け取るためのイベントレシーバーをコンシューマーグループでグルーピングするようだ。
後でわかることですが、以下のEvent Hubs名前空間とEvent Hubsインスタンスの作成は不要です。。。。最後にまとめるので、読み流してください。

Event HubとEvent Recieverの間に存在するようだ。

このグループを作るということか。

 

IoT Hub の組み込みエンドポイントにコンシューマー グループを追加するには、次のコマンドを実行します。

Azure CLI
az iot hub consumer-group create --hub-name YourIoTHubName --name YourConsumerGroupName

Azure CLIで、上のコマンドでコンシューマグループを作るってことか。

Azureのホームにアクセスして、ブラウザ上でBashを実行して、上記のコマンドを実行してコンシューマグループを作成した。。。できたかな?

どこで確認するのだろう?

Event Hubの下にぶら下がっているのだからEvent Hubをみる?

ここにヒントがありました。

bwww.serverlessnotes.com

 

 

ここではAzureポータルからコンシューマグループを作成する方法がのっています。

つまり、ここに辿り着けば、Azure CLIでつくったコンシューマーグループを確認できるか?

でも何か違うんだよね。。。

ホーム → Event Hubs 名前空間 →  Event Hubs のインスタンス

の中にコンシューマーグループを発見!

あれ、でも$Defaultになってる。作成したグループは何処へ?

 

f:id:yukiwithfulloptions:20210130100658p:plain

 

でも、グレーアウトしていて新規追加できないから、無料版はそういうもの?

では$Defaultを使うとしよう。

※結局Event Hubs名前空間など、わざわざ作らなくても、$Defaultは存在していたのでした・・・・

次、「IoT Hub のサービス接続文字列を取得する」。

つまりAzure CLIBashコマンドラインから、

az iot hub show-connection-string --hub-name YourIotHub --policy-name service

の--hub-nameを自分のIotHub名にして実行しろ、ということですか。

はい、GETしました。

ここまではOK。

 

次、「GitHub から Web アプリのコードをダウンロードする」

え?どこに???Webアプリっていうんだから、Webアプリ上?、、、

コマンド ウィンドウを開き、次のコマンドを入力して

コマンドウィンドウって、自分のPCのcmd.exeのことね。。。CLIとかコマンドウィンドウとかさ、知ってる人が見ればそりゃそうだけどさ。。。。

 

つまり、

  1. 自分のPC(VMでやってる人はそのVM上)にGITのクライアントをインストール
  2. 自分のPC(VMでやってる人はそのVM上)でcmd.exeでコマンドウィンドウを開く
  3. 以下を実行
    git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git
    cd web-apps-node-iot-hub-data-visualization

はい、次

Web アプリのコードを調べる

web-apps-node-iot-hub-data-visualization ディレクトリから、お好みのエディターで Web アプリを開きます。 VS Code で表示されるファイル構造を以下に示します。

Web アプリのファイル構造

 

自分のPCにエディターをインストールして、さっきcmdで移動した先

 web-apps-node-iot-hub-data-visualization フォルダ

をみてみろってことね。私は、Visual Studio Codeをインストールした。

あー、おっしゃる通りの構造でございました。
これさ、見る必要あるの???

はい、次

Web アプリの環境変数を構成する

IoT Hub からデータを読み取るためには、Web アプリには、IoT Hub の接続文字列と、読み取りに使用するコンシューマー グループの名前が必要です。 これらの文字列は、server.js の次の行のプロセス環境から取得されます。

なるほど、やっとわかってきた。

IoT Hubの接続文字列とコンシューマーグループの名前が必要なのね。

次のコマンドを使用して、コマンド ウィンドウで環境変数を設定します。 プレース ホルダーの値は、前に作成した、IoT Hub のサービス接続文字列とコンシューマー グループの名前に置き換えます。 文字列は引用符で囲まないでください。

でもcmd環境変数をセットするってことは、そのコマンドウィンドウを閉じたら、なくなってしまうってことだよね?1回だけということか?やってみるか。

コンシューマーグループ名は$Defaultだったけど、これでいいんだろうか・・・・

 

Web アプリの実行

  1. お使いのデバイスが実行中であり、データを送信していることを確認します。

  2. コマンド ウィンドウで、次の行を実行して、参照されたパッケージをダウンロードしてインストールし、Web サイトを開始します。

バイスは実行中。

自分のPC上のコマンドウィンドウで、「参照されたパッケージ」をダウンロードして、、、なんですか、参照されたパッケージって?

参照?例には「npm install」とありますが、表現がわからないわー。

実行してみよう。

実行した結果

「8 packages are looking for funding」

とでたが、このパッケージを指していたんだろうか。

次に「Webサイトを開始します」とあるが、コマンドウィンドウで「npm start」を実行することで、Webサイトが開始されるんだろうけど、え?どこで?自分のPC?Webアプリ?

とりあえず実行してみよう。

お!なんか動いた。

Using event hub consumer group [$Default]
Listening on 3000.
Successfully created the EventHubConsumerClient from IoT Hub event hub-compatible connection string.
The partition ids are: [ '0', '1', '2', '3' ]

 

 次

Web ページを開いて IoT Hub からのデータを表示する

http://localhost:3000 を指定してブラウザーを開きます。

ん?localhost?やっぱ、自分のPC上でWebを公開したのか・・・

イメージでは、クラウド上のWebアプリで公開かと思いきや、え?自分?

まぁ確かに自分にGITのパッケージ入れてましたな。

f:id:yukiwithfulloptions:20210130161604p:plain

 

あー、つまり、自分のPCでやってきたことを仮想マシンでやれば、クラウド上で公開でしょ?とあたりまえだよね?ということね。。。。

そういうことか。

 

  

では、Azure超初心者がIoTデータをAzureを使ってWebアプリでグラフ表示するまでを、超初心者としてまとめます。

  1. Raspberry PiとDTH11をNode-REDでAzureのIoT Hubへデータを送信するまでは、こちらの方のページがすごく参考になりましたので、これに従ってそこまで設定してみてください

    www.seiwa-info.com

  2. コンシューマーグループは、「$Default」というグループが既にあるので、これを使いました。逆に新規に作成できませんでした。

  3. Azure CLIBashコマンドラインから、
    az iot hub show-connection-string --hub-name YourIotHub --policy-name service
    を実行して、接続文字列を取得します。これは、「Webアプリ」を実行するときに、IoT Hubと接続するためにWebアプリ側の環境変数にセットします。メモ帳にメモっておいてください。

  4. Webアプリで実行するパッケージなどを、GitHub から以下のコマンドでダウンロードします。Webアプリを起動するマシン上で行います。
    git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git

    ダウンロードしたら、コマンドウィンドウは、使うのでそのままにしてください。
    わたしは最初何もわからなかったので、「Webアプリ」ってAzure上にあるサービスの1つかと思っていましたが、Git HubからWebアプリというアプリ?をダウンロードして自分のPCや仮想マシンで実行するだけのことでした。

  5. コマンドウィンドウで、次の環境変数を設定します。この情報でWebアプリがIoT Hubへ接続にいきます。
    set IotHubConnectionString=YourIoTHubConnectionString
    set EventHubConsumerGroup=$Default

    コンシューマグループを作るためにEvent Hubs名前空間や、Event Hubsインスタンスを一度作りましたが、通信後、まったく接続も通信も何もありませんでしたので削除してみましたが、動いています。コンシューマグループは、既存の$Defaultを指定すればいいみたいです。

  6. 「npm install」でWebアプリをインストールします。

  7. 「npm start」でWebアプリを実行します。

  8. 私は自分のPC上にインストールして実行したので、ブラウザで
    http://localhost:3000

    にアクセスしたら、うまい具合にグラフが表示されていて、自分でもびっくりしました。
    あ、もしかして・・・Azureにある「Webアプリ」っていうリソースを使えばよかった???笑 名前がいろいろ似てて困る。

と、いうことが以下に書かれています。

docs.microsoft.com

 

 

 

 

 

超でかいダイソー発見!

超でかいダイソーを発見しました!

 昨日、車で娘と歯医者に向かう途中、超でかいダイソーを発見しました!

ここはでかい、、、

1階の電気小物では、パソコンのキーボードまである!しかも100円じゃない!

2階に行くと、BBQコーナーまでありました。

あまりゆっくり見てる時間がなかったので、また寄ります。

 

三郷鷹野店

埼玉県三郷市鷹野5丁目368番1(1階)

www.daiso-sangyo.co.jp

 

Raspberry pi3 外部電源(ピンヘッダ)給電の巻

恐るべしNode-RED

 Node-REDを使ってDHT11から温度と湿度を取得し、AzureのWebで表示したくてNode-REDをRaspberry Piにインストールして起動しましたが、案の定、低電圧問題で落ちる落ちる・・・これは使い物にならない

 しかし、低電圧問題をネットで調べていると、非公式ですが、外部電源供給、つまりピンヘッダから電源を供給している方々がいました。

 公式ではないし、あまり知識のない私がやるのもどうなんだろうか・・・・と数時間悩んだが、やってみました。ちょうど5V 1AのACアダプターがあったので、これを使うことにしました。

 

f:id:yukiwithfulloptions:20210124152657j:plain

 

 結果から申しますと、Node-REDで作ったフローを実行するとまたしてもダウン(笑)

落ちるときは、予兆なく落ちるというNode-REDのパワーの前に撃沈。

 

でもですね、普段はまったく低電圧の警告がでなくなりました。

ちょっとこの状態でPythonでAzureにデータをアップすることにしようと思います。

続く

Low Voltageを解決できるバージョンがあるのか?あらゆるバージョンをインストールしてみました

もしかして32ビットならば?それともNOOBSなら?

かなり試したが、だめでした・・・・MicroSDカードに問題があるのか?

ACは5V、3Aだし。

よし、あきらめよう。

downloads.raspberrypi.org

  • NOOBS_v3_3_0.zip
  • 2020-05-27-raspios-buster-armhf.zip
  • 2020-02-05-raspbian-buster.zip
  • 2019-09-26-raspbian-buster.zip
  • 2019-07-10-raspbian-buster.zip
  • 2019-04-08-raspbian-stretch.zip
  • 2020-02-13-raspbian-buster.zip
  • 2021-01-11-raspios-buster-armhf.zip
  • 2020-12-02-raspios-buster-armhf.zip.

こんだけ試したが、だめでした。