温度センサモジュール
私が購入したGROVEスターターキットV3に入っていた温度センサモジュールは、Temperature Sensor V1.2というモジュールです。スイッチサイエンスさんの単体販売ページに掲載されているものと同じです。
温度センサモジュールの動作
温度センサモジュールはアナログモジュールです。温度の高い低いに応じて出力される電圧が変化します。analogRead(PIN)関数を使うと電圧の高さが0〜4095の数値として得られます。この数値だと何度かわからないので、数値を温度に変換するプログラムが必要になります。変換方法は、Groveモジュールの販売サイトや、Groveモジュールで使用している温度センサ部品のサイトに掲載されていますが、かなり難解です。Groveモジュールを使うだけなら、販売店サイトで公開されているプログラムを利用するのが手軽です。
プログラム
ここではSeeed Studio社の商品紹介ページにあるArduino用のプログラムを使ってみます。
#include <math.h> const int B = 4275; // B value of the thermistor const int R0 = 100000; // R0 = 100k const int pinTempSensor = A5; // Grove - Temperature Sensor connect to A5 void setup() { Serial.begin(9600); } void loop() { int a = analogRead(pinTempSensor); float R = 1023.0/a-1.0; R = R0*R; // convert to temperature via datasheet float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; Serial.print("temperature = "); Serial.println(temperature); delay(100); }
このプログラムをNefry BT用に変更します。
- pinTempSensorのA5をNefry BT 無印の場合はA2に変更します。Nefry BT R2の場合はA1に変更してください。
- Serial.begin(9600); は不要なので削除します。
- pinMode( )関数がなくても動作しますが、念のためpinMode(pinTermpSensor, INPUT);を追加します。
- aはanalogRead(pinTempSensor)で取得した値です。ArduinoのanalogRead( )関数は0〜1023の値を返しますが、Nefry BTのanalogRead( )関数は0〜4095の値を返すので、1023.0となっている部分を4095.0に変更します。
この変更を加えたプログラムは次のようになります。
#include <math.h> const int B = 4275; // B value of the thermistor const int R0 = 100000; // R0 = 100k const int pinTempSensor = A1; // Grove - Temperature Sensor connect to A1 void setup() { pinMode(pinTempSensor, INPUT); } void loop() { int a = analogRead(pinTempSensor); float R = 4095.0/a-1.0; R = R0*R; // convert to temperature via datasheet float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; Serial.print("temperature = "); Serial.println(temperature); delay(100); }
このプログラムを動作させると、シリアルモニタに次のような結果が出力されます。
なんとなくそれらしい温度が表示されていますが、Arduinoにこの温度センサーを接続した時より1〜2度低いようです。Arduinoのプログラムは5Vでの動作を前提としているので、3.3Vだと少し定数の変更が必要なのかもしれません。
諸元
名称 | Temperature Sensor 温度センサ |
バージョン | V1.2 |
Seeed社 Wiki | http://wiki.seeedstudio.com/Grove-Temperature_Sensor_V1.2/ |
スイッチサイエンス商品ページ | https://www.switch-science.com/catalog/806/ |
Nefry BT無印 動作ソケット | A2 |
Nefry BT R2 動作ソケット | A0(プログラム上はA1) |