複数の圧力を計測したいので作りました。
I2Cバス接続のADCとMIS-2500-015V圧力センサを
基板に載せてモジュール化しました。
(最大8個の圧力センサが使えます。)
I2Cバスを2mのLANケーブルでマイコンに接続していますが
問題なく測定できました。
長時間の使用でどうなのかは、お客様からのフィードバック
情報を待ちます。2020/12/20更新
製作手順スライド動画をYouTubeへアップしました。2021/03/17
ケースに収納したセンサモジュール
2mLANケーブルでマイコンとI2C接続
秋月電子取扱 Cタイプユニバーサル基板にレイアウト
しました。(サイズ 72.0x47.5mm)試作品の写真
試作品の写真
基板裏配線
試作ではラジアルリードの積層セラミックコンデンサを
使いましたが、本製作ではチップコンデンサを使いました。
AE-ADS1015のプルアップ抵抗は使わずに、4.7Kを外付け
しました。
試作配線図
表から見た図と裏から見た図
赤点線の交わるところにチップコンデンサが載っています。
無保証自己責任でお願いします。
ESP-WROOM-02 MMA8451とBME280を2個づつないで測定できました。
再編集
当初正常動作できるセンサケーブル長の合計は3m程度でした
が、I2C-Busバッファを追加することで合計10m可能となりま
した。(CAT5フラットタイプLANケーブルで2種センサのセッ
トを5m延長でそれぞれ接続し動作を確認)
バッファについては下記リンクの記事を見て下さい。
作ってみたI2C-BusバッファPCA9600
PCA9600 I2C-Bus Buffer改
センサについて
・Adafruit MMA8451 Accelerometer Breakout
レギュレータ,レベル変換搭載 5V電源とロジック可
I2Cプルアップ抵抗10kΩ付き
I2Cアドレス 初期設定は0x1D、A端子をGND接続で0x1C
・BME280センサモジュール アマゾンで購入3個入1,880円
レギュレータ,レベル変換搭載 5V電源とロジック可
I2Cプルアップ抵抗10kΩ付き
I2Cアドレス 初期設定は0x76
パターンカットはんだブリッジで0x77(下画像)
(ジャンパーパッド左と中央間のパターンをカット
中央と右をはんだでブリッジする。)
MMA8451、BME280センサ
スケッチは一部修正が必要かも知れませんが参考まで
また、各センサ用のライブラリはArduinoIDEのメニューから
「スケッチ」「ライブラリをインクルード」「ライブラリを
管理」センサ名で検索しインストールして下さい。
ありがたく使わせていただきます。
#include行の<>記号は半角へ修正して下さい。#include <Wire.h>
#include "Adafruit_MMA8451.h"
#include <Adafruit_Sensor.h>
#include "SparkFunBME280.h"
BME280 mySensor1;
BME280 mySensor2;
Adafruit_MMA8451 mma1 = Adafruit_MMA8451();
Adafruit_MMA8451 mma2 = Adafruit_MMA8451();void setup(void) {
Serial.begin(115200);
Serial.println("");
Serial.println("Reading basic values from MMA8451 and BME280");
Wire.begin(4, 5); // //デフォルトは0x1D
if (! mma1.begin(0x1D) || ! mma2.begin(0x1C)) {
//mmaのbegin()の中でwire.begin()してた
Serial.println("MMA8451 Couldnt start");
while (1);
}
Serial.println("MMA8451 found!");
mySensor1.setI2CAddress(0x76);//default 0x76
mySensor2.setI2CAddress(0x77);
if (! mySensor1.beginI2C() || ! mySensor2.beginI2C() ) {
//Begin communication over I2C
Serial.println("BME280 did not respond. Please check wiring.");
while (1); //Freeze
}
mma1.setRange(MMA8451_RANGE_2_G);
mma2.setRange(MMA8451_RANGE_2_G);
Serial.print("MMA1 Range = ");
Serial.print(2 <
シリアルモニタ表示
Arduino UNO等でもできると思います。
興味がある方はお試し下さい。
無保証自己責任でよろしくお願いします。