センサー設置について
くどいようですが、ここでもう一度。
私が個人的に M5Stack に 気圧、温度、湿度センサーをマウントする場合にこだわったことを再度述べておきます。
誤っているかもしれませんので、あくまで趣味のホビー用途限定と思ってください。
以下、うまく動作しなかったとしても、当方では一切の責任を負いません。
今回は、あくまで前回の記事で製作した、NTP時計&Yahooニュース&天気予報に BME280 を接続する目的で作ったものです。
そのため、M5Stack からはある程度発熱するので、センサー値に影響が出ない様に、なるべく M5Stack から離して、且つ遠すぎない距離にセンサーを置くことを考慮に入れています。
そして、もう一つ重要な要素として、手軽に設置できるということを目標にして作りました。
ですから、先に述べたようにI2C バスラインにノイズが乗りやすいことも十分認識しておいてください。
測定値に誤差が出ても仕方ないと思ってください。
本来は、距離を放すのならば、間に通信用バッファを設けなければいけないかもしれません。
使ったもの
BME280搭載 温湿度・気圧センサモジュール(スイッチサイエンス製)
これは、ピンヘッダ実装済みとそうでないものとありますので注意してください。
また、これにはプルアップ抵抗はハンダ付けされていません。
必要ならば後でハンダ付け可能なパッドがあるので、こちらとしては都合が良いです。
M5Stack の I2C 端子にはプルアップ抵抗が予め搭載されているようなので、これを使いました。
M5Stack
Espressif Systems社の ESP32 を搭載した、技適取得済みの Wi-Fi & Bluetooth マイコンモジュールです。
LCD 液晶ディスプレイ、micro SD カードスロット、簡易バッテリー、スピーカー、Groveコネクタ、USB-TypeC など、必要な物全部入りです。
Arduino IDE で開発ができます。
2.54mmピッチ、ピンソケット
BME280 変換基板自作用です。
7ピン分必要です。
2.54mm ピッチ 小型ユニバーサル基板
カッターで切断できるユニバーサル基板であれば何でも良いと思います。
ジャンパーワイヤー
φ0.65mm の単線で、ブレッドボードに挿せるものを使いました。
ハンダコテ、パソコン、USBケーブル等
BME280 モジュール簡易マウント基板製作
私独自の BME280 モジュールの「なんちゃって」マウント基板を紹介します。
先に述べたように、熱源やノイズ源の M5Stack からできるだけ遠ざけ、でも遠すぎないようなものを作ってみます。
まず、下図の様な感じで、BME280モジュール7ピンをマウントできる大きさを設定します。
カッター等で傷を入れ、机の角でパキッと折って、下図の様な感じのものを作ります。
次に、下図の様に、2.54mm ピッチピンソケットを7ピン分カットします。
次に、ブレッドボードに挿せるφ0.65mm 単線を、おおよそ下図の様な長さでカットして、被覆を剥いておきます。
基板上で3Vラインをジャンパする分もカットしておきます。
基板上で GNDラインをジャンパする分もカットしておきます。
次に、下図の様な配線図を参照して、ハンダ付けします。
するとこんな感じ
裏側はヘタクソでお恥ずかしいのですが、一応こんな感じです。
BME280モジュールを挿すとこんな感じです。
やっぱ、これだけを見ると、通信距離が安易に長すぎるかも・・・と思ってしまいました。
あくまでホビー用途ということで勘弁してください。
では、次では Arduino IDE でプログラムしていきます。
コメント
波形を拝見しました。
I2Cのリードの直前のライトではSTOPをつけない事を強く推奨します。STOPを介さずにSTARTを発行(RESTART)してください。
今回のトラブルの原因かどうかはわかりませんがご参考まで。
補足)
STOPはバスの解放を意味するので、マルチマスタ環境で誤動作の原因になります。STOPがあるとREADの直前のリードアドレスを他のデバイスに書き換えられる危険があるのです。
さやさん
ダイレクトメールではいろいろとアドバイスありがとうございました。
BME280 のデータシートには
either a stop or a repeated start condition
を入れると書いてあるので、stopコンディションは入れても問題無いと思います。
BOSCHドライバの README にも stopコンディションを入れる例が書かれています。
ただ、「さや」さんがおっしゃっていたとおり、設計仕様書に書いてないと、STOPでリードアドレスまでリセットかけちゃうHW設計者もいるかも知れないということは納得いきました。
確かに複数デバイスでマルチタスクの場合はそういうリスクありそうですね。
実際に経験された方からアドバイス頂けることは、独学しかしたことのない私にとってはとても有難いことです。
これからのプログラミングに参考にしていこうと思います。
貴重な情報、ありがとうございました。
m(_ _)m
いつも参考にさせていただいております。ありがとうございます。I2Cバスの中間電位の件、オシロの設定ミスとありますが、具体的にどの様に設定するとその様な波形が観測できるのでしょうか。実は、SPIで同様の波形を観測したことがあって、原因が不明で困っていました。どうかよろしくお願いいたします。
BotanicFieldsさん
記事をご覧いただき、ありがとうございます。
Twitterでも同じ質問をされたことがあります。
結構みなさん中間電位が現れているようですね。
私の場合の原因は、デジタルストレージオシロで、2つの波形の平均値を取るモード「Average」を選択してしまっていたことです。
この波形を取るかなり前に、オシロスコープ設定の裏画面でそういう設定にしていて、すっかり忘れておりました。
オシロスコープを久々に使うとこういうトラブルがあるもんだと思い知らされました。
そんな感じで、しょうもないミスでございます。
ご回答ありがとうございます。原因が分かると気持ちがいいですよね。私自身は全てを理解できたわけではありませんけれど。当方の原因不明の具体的な波形は以下です。ちら見程度にしていただければと思います。
https://twitter.com/lv107/status/1126854524159684608
BotanicFieldsさん
波形拝見させていただきました。
なるほど、怪しい中間電位ですね。
明らかに頻繁に発生するようでしたら、別の信頼できる測定器で測ってみるとかですかね?
でも、別のM5Stackで測定して問題無いとすれば、M5Stackに原因があると思います。
オシロの設定が間違いなければ、それくらいしか思いつきません。