パソコンで温度計

公開日: 電子工作 | , ,

Arduino + STTS751

ありきたりのPC温度計ですが、なんとなく作りたくなったので作ってみる。

コントローラーは手軽なArduino、温度センサーは昔ちょっと使ったまま部品箱で眠っているSTTS751を使います。

 

STTS751

STTS751

STTS751はI2C接続の温度センサーです。
測定温度は-40℃~+125℃、分解能は最大12ビットで0.0625℃刻み、精度は±1℃ (0~85℃)となっている。
このセンサーは、昔米粒AVRに接続して、Androidでも使えるようにしたことがある。

STTS751 – 米粒AVRで温度計

STTS751

STTS751は表面実装のSOT23パッケージ、ブレッドボードで使う為に変換基板を利用する。
バイパスコンデンサ 0.1uFを裏面に乗っけている。

高精度12ビットI2C接続デジタル温度センサ STTS751 – 秋月電子通商
SOT23変換基板 金フラッシュ (10枚入)- 秋月電子通商

 

ArduinoでI2C

米粒AVRではソフトウェアI2Cを作ってSTTS751を使ったけれど、Arduinoではハードウェアで実装されていてライブラリも用意されているので、簡単にI2Cデバイスが使える。

Android アナログピン

Arduino UNOでは、アナログの4番・5番がI2C用のピンとなる。
その他のArduinoでは利用するピンがそれぞれ違っていたりする。

Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1

Wire Library – Arduino

 

回路

Arduino + STTS751

ArduinoとSTTS751を接続するのに、秋月電子のI2Cレベル変換モジュール(AE-FXMA2102)を間に入れました。

※2014/2/18 回路を修正しました

 

プログラム

#include <Wire.h><br />
<br />
#define STTS751_ADRS  0b0111001<br />
<br />
void setup()<br />
{<br />
    Serial.begin(115200);<br />
    Wire.begin();<br />
<br />
    Wire.beginTransmission(STTS751_ADRS);<br />
    Wire.write(0x03);<br />
    Wire.write(0b10001100);        // EVENT停止、12bit解像度指定<br />
    Wire.endTransmission();<br />
}<br />
<br />
void loop()<br />
{<br />
    byte valueHigh,valueLow;<br />
    int16_t temp;<br />
<br />
    // 整数部をセンサーから取得<br />
    Wire.beginTransmission(STTS751_ADRS);<br />
    Wire.write(0x00);<br />
    Wire.endTransmission();<br />
    Wire.requestFrom(STTS751_ADRS, 1);<br />
    valueHigh = Wire.read();<br />
<br />
    // 整数部をPCへ出力<br />
    Serial.print(valueHigh);<br />
    Serial.print(".");<br />
<br />
    // 少数部をセンサーから取得<br />
    Wire.beginTransmission(STTS751_ADRS);<br />
    Wire.write(0x02);<br />
    Wire.endTransmission();<br />
    Wire.requestFrom(STTS751_ADRS, 1);<br />
    valueLow = Wire.read();<br />
<br />
    // 少数部をPCへ出力<br />
    temp = (valueLow >> 4) * 625;<br />
    Serial.print(temp/1000);<br />
    temp %=1000;<br />
    Serial.print(temp/100);<br />
    temp %=100;<br />
    Serial.print(temp/10);<br />
    temp %=10;<br />
    Serial.print(temp);<br />
<br />
    Serial.print("\r\n");<br />
    delay(1000);<br />
}<br />

このプログラムをArduinoで走らせると、1秒毎にシリアル出力で温度が出力される。

Arduino + STTS751

 

以上、とりあえず、PC接続の温度計が出来ました。

 

関連記事

raspi-config

Raspbianの最初の設定

  Raspbianのインストール後にraspi-configを使って行う最初の設定

記事を読む

thermometer

パソコンで温度計 #2

今回は温度表示とログ取りアプリを作ったので公開。 前回にArduino+STTS751で作った

記事を読む

Raspberry Pi ロゴマーク

Raspberry Piのリビジョン

リビジョンの種類 現在、Rapsberry Piにはリビジョン1とリビジョン2と呼ばれる2つの

記事を読む

米粒AVRでI2C通信

米粒AVRでI2C通信(マスター)

米粒AVRことATtiny10は3つまたは4つのI/Oピンしか使えないのですが、I2Cなら2つの

記事を読む

no image

Android+Arduinoでリモコン3 その2(AndroidAccessory接続)

何度か、Android+リモコンのネタを書いたことがあるのですが、今回はAndroid Access

記事を読む

秋月電子 キャラクタLCD

秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、ちょっと比較してみる。 買っ

記事を読む

no image

米粒AVR(ATtiny10)

通称「米粒AVR」で知られるTiny10を使ってみたくて、秋月の通販で買ってみました。 超小型

記事を読む

no image

Androidで一眼レフカメラのシャッターを制御する

またSoftModemネタです。 調子に乗って arms22さんの記事 iPhoneで一眼レフカメ

記事を読む

SDカード・マイクロSDカード

ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduinoでも比較的簡単にSDカードを

記事を読む

no image

AVRISPmk2

米粒AVR(ATtiny10)のプログラム書き込み用にAVRISPmk2を購入しました。 先人

記事を読む

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑