0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

matlabでBLEを使う⑨CO2センサ・ボードSCD-30のセントラル

Posted at

  こちらの記事では、BLEのペリフェラルを作りました。CO2、温度、湿度を送ってくれます。

  CO2センサを使う④AdafruitのSCD-30ボードをArduino Nano RP2040 ConnectにつないでBLEペリフェラルに(3)

 これをmatlab(R2021a update3)で受けます。

AdafruitのSCD-30ブレークアウト・ボードの概要

 Arduino Nano RP2040 ConnectとはSTEMMA QTコネクタでつなぎました。

ファイル名  
  • 電源電圧 3.3/5V
  • 測定範囲 400~10000ppm
  • 確度 ±(30ppm + 3%)
  • 消費電流 19 mA @ 2秒間隔の測定
  • 完全に校正および線形化
  • インターフェース I2C、アドレス0x61、信号は10kΩでプルアップ
  • 温湿度センサSHT31がオンボード

プログラム

 CO2_UUID、Temperature_UUID 、Humidity_UUID はキャラクトリスティック用です。subscribe()はnotifyのONを要求します。Arduino Nano RP2040 Connectでは200msごとにCO2の値が変われば、新しいデータを用意します。CO2のデータは、常に変化しています。
 室内では400~500ppm、人が近くにいれば1000ppm前後まで上がります。

clear
scan = blelist("Timeout", 30);
RP2060_address="84CCA82E1F5E";  % scanで見つかったアドレスを代入
b = ble(RP2060_address);
bb = b.Characteristics;

ServiceUUID =      "F000AA30-0451-4000-B000-000000000000";
CO2_UUID =         "F000AA31-0451-4000-B000-000000000000";
Temperature_UUID = "F000AA32-0451-4000-B000-000000000000";
Humidity_UUID =    "F000AA33-0451-4000-B000-000000000000";

c10 = characteristic(b, ServiceUUID, CO2_UUID);
subscribe(c10);
c11 = characteristic(b, ServiceUUID, Temperature_UUID);
subscribe(c11);
c12 = characteristic(b, ServiceUUID, Humidity_UUID);
subscribe(c12);

CO2 = hex2numS(read(c10))
Temperature = hex2numS(read(c11))
Humidity = hex2numS(read(c12))

function  shortF = hex2numS(decimal4)  % IEE754の単精度浮動小数点数の形式:binary32
     data11 = num2str( dec2bin( decimal4(1),8  ));  % リトル・エンディアンを
     data12 = num2str( dec2bin( decimal4(2),8  ));  % ビッグ・エンディアンに変更
     data13 = num2str( dec2bin( decimal4(3),8  ));
     data14 = num2str( dec2bin( decimal4(4),8  ));
     data111 = strcat(data14,data13,data12,data11);

    f = (-1)^str2num(data111(1));        % 符号

    sisuu = data111(2:1:9);
    kasuu = ("1"+data111(10:1:end));
    k = bin2dec(kasuu)/(2^23) ;          % 仮数
    s = 2 ^ (bin2dec(sisuu) -127) ;      % 指数

    shortF = f * k * s;
end

 実行結果です。
sdc30g.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?