Grove-Temperature_Sensor
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Grove - Temperature Sensor は、サーミスタを使用して周囲温度を検出します。サーミスタの抵抗は周囲温度が下がると増加します。この特性を利用して周囲温度を計算します。このセンサーの検出可能範囲は -40 ~ 125ºC で、精度は ±1.5ºC です。
仕様
電圧: 3.3 ~ 5V
25℃での最大定格電力: 300mW
無電力抵抗: 10 KΩ
動作温度範囲: -40 ~ +125 ℃
デモンストレーション
Arduino を使用する場合
以下はセンサーから温度情報を読み取る方法を示す例です。
4ピンのGroveケーブルを使用して、モジュールを Grove - Basic Shield のアナログポート0に接続します。
Grove - Basic Shield を Arduino に差し込みます。
USBケーブルを使用して Arduino をPCに接続します。

- 以下のコードをアップロードします。アップロード方法がわからない場合はこちらをクリックしてください。
/*
/* Grove - Temperature Sensor demo v1.0
* このセンサーは環境温度を検出します。
* このセンサーの信号を A0 に接続し、
* シリアルモニターを使用して結果を取得します。
* By: https://www.seeedstudio.com
*/
#include <math.h>
int a;
float temperature;
int B=3975; // サーミスタのB値
float resistance;
void setup()
{
Serial.begin(9600);
}
void loop()
{
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; // センサーの抵抗を取得
temperature=1/(log(resistance/10000)/B+1/298.15)-273.15; // データシートを基に温度に変換
delay(1000);
Serial.print("現在の温度は ");
Serial.println(temperature);
}
- シリアルモニターを通じて読み取り値を確認できます。デフォルトの単位は摂氏度です。

参考として、このセンサーに使用されているサーミスタ TTC3A103*39H の抵抗曲線を以下に示します。温度が高くなるほど、抵抗は小さくなります。

Raspberry Pi を使用する場合
Raspberry Pi と GrovePi または GrovePi+ を用意してください。
開発環境の設定を完了している必要があります。設定がまだの場合はこちらを参照してください。
接続
- Groveケーブルを使用して、センサーを GrovePi のソケット D3 に接続します。
- デモディレクトリに移動します:
cd yourpath/GrovePi/Software/Python/
- コードを確認するには
nano grove_temperature_sensor.py # "Ctrl+x" で終了 #
import time
import grovepi
# Grove Temperature Sensor をアナログポート A0 に接続
# SIG,NC,VCC,GND
sensor = 0
while True:
try:
temp = grovepi.temp(sensor,'1.1')
print "temp =", temp
time.sleep(.5)
except KeyboardInterrupt:
break
except IOError:
print "Error"
- デモを実行します。
sudo python grove_temperature_sensor.py
Beaglebone Green を使用する場合
BBG 上でプログラムを編集するには、Cloud9 IDE を使用できます。
Cloud9 IDE に慣れるための簡単な演習として、BeagleBone の4つのユーザープログラム可能なLEDの1つを点滅させる簡単なアプリケーションを作成するのが良いスタートです。
Cloud9 IDE を初めて使用する場合は、こちらを参照してください。
ステップ1: 右上の "+" をクリックして新しいファイルを作成します。


ステップ2: 以下のコードを新しいタブにコピー&ペーストします。
from Adafruit_I2C import Adafruit_I2C
import time
ADDR_ADC121 = 0x50
REG_ADDR_RESULT = 0x00
REG_ADDR_ALERT = 0x01
REG_ADDR_CONFIG = 0x02
REG_ADDR_LIMITL = 0x03
REG_ADDR_LIMITH = 0x04
REG_ADDR_HYST = 0x05
REG_ADDR_CONVL = 0x06
REG_ADDR_CONVH = 0x07
i2c = Adafruit_I2C(ADDR_ADC121)
class I2cAdc:
def __init__(self):
i2c.write8(REG_ADDR_CONFIG, 0x20)
def read_adc(self):
"ADCデータを読み取ります (0-4095)。"
data_list = i2c.readList(REG_ADDR_RESULT, 2)
#print 'data list', data_list
data = ((data_list[0] & 0x0f) << 8 | data_list[1]) & 0xfff
return data
if __name__ == '__main__':
# Grove - I2C ADC を Beaglebone Green の I2C Grove ポートに接続します。
adc = I2cAdc()
while True:
print 'センサー値 ', adc.read_adc()
time.sleep(.2)
ステップ3: ディスクアイコンをクリックしてファイルを "grove_i2c_adc.py" という名前で保存します。
ステップ4: 新しいファイルを作成し、以下のコードを新しいタブにコピーして .py 拡張子で保存します。
import time
import math
import grove_i2c_adc
import Adafruit_BBIO.GPIO as GPIO
BUZZER = "P9_22" # GPIO P9_22
GPIO.setup(BUZZER, GPIO.OUT)
# 閾値: 28℃でブザーをオンにする
THRESHOLD_TEMPERATURE = 28
adc = grove_i2c_adc.I2cAdc()
# read_temperature() メソッドの引数は、接続されている Grove Temperature Sensor のバージョンを定義します。
# デフォルトは 'v1.2' です。例:
# temp = read_temperature('v1.0') # B 値 = 3975
# temp = read_temperature('v1.1') # B 値 = 4250
# temp = read_temperature('v1.2') # B 値 = 4250
def read_temperature(model = 'v1.2'):
"Grove Temperature Sensor から摂氏温度を読み取ります"
# 各センサーリビジョンは異なるサーミスタを使用し、それぞれに固有の B 値定数があります。
if model == 'v1.2':
bValue = 4250 # センサー v1.2 はサーミスタ ??? を使用 (SeeedStudio が明確にするまで NCP18WF104F03RC と仮定)
elif model == 'v1.1':
bValue = 4250 # センサー v1.1 はサーミスタ NCP18WF104F03RC を使用
else:
bValue = 3975 # センサー v1.0 はサーミスタ TTC3A103*39H を使用
total_value = 0
for index in range(20):
sensor_value = adc.read_adc()
total_value += sensor_value
time.sleep(0.05)
average_value = float(total_value / 20)
# ADCデータを Arduino プラットフォームのデータに変換します。
sensor_value_tmp = (float)(average_value / 4095 * 2.95 * 2 / 3.3 * 1023)
resistance = (float)(1023 - sensor_value_tmp) * 10000 / sensor_value_tmp
temperature = round((float)(1 / (math.log(resistance / 10000) / bValue + 1 / 298.15) - 273.15), 2)
return temperature
# 機能: 温度センサーがコード内で設定した閾値に達すると、ブザーが1秒間鳴ります。
# ハードウェア: Grove - I2C ADC, Grove - Temperature Sensor, Grove - Buzzer
# 注意: P9_22(UART2_RXD) を GPIO として使用します。
# Grove Buzzer を Beaglebone Green の UART Grove ポートに接続します。
# Grove - I2C ADC を Beaglebone Green の I2C Grove ポートに接続し、その後 Grove - Temperature Sensor を Grove - I2C ADC に接続します。
if __name__ == '__main__':
while True:
try:
# Grove Temperature Sensor から摂氏温度を読み取ります。
temperature = read_temperature('v1.2')
# 温度が設定した値に達した場合、ブザーが鳴ります。
print "温度 = ", temperature
except IOError:
print "エラー"
Step5: Grove Temperature センサーを Grove I2C ADC に接続し、さらに Grove I2C ソケットを BBG に接続します。
Step6: コードを実行します。
ターミナルに温度値が2秒ごとに出力されることが確認できます。
回路図オンラインビューア
リソース
プロジェクト
環境キューブ!Sigfox を使用して地面の状態を把握する: 必要なセンサーをすべて備えたキューブで、農業やモニタリングなど幅広い用途に適しています。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。お客様の好みやニーズに合わせた複数のコミュニケーションチャネルをご用意しています。