株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

*

Raspberry Piでも温度センサADT7310をつかってみる

      2017/05/24

以下の記事でArduino Unoで温度センサのADT7310を使ってみました。
Arduino UnoでSPI通信(その2)温度センサADT7310
以下の製品です。
ADT7310使用 高精度・高分解能 SPI・16Bit 温度センサモジュール

その続きで、Raspberry Piでも温度センサADT7310を使ってみました。その手順と結果についてです。

配線は以下です。
ADT7310 – Raspberry Pi
VDD – 5V
SCL – GPIO11 SCLK
SDO – GPIO9 MISO
SDI – GPIO10 MOSI
CS – GPIO8
GND – GND



Raspberry Piのソケットに接続しているのは以下の製品です。

Raspberry PiでSPIを有効にします。sudo raspi-configで設定を起動します。
5.Interfacing Optionsを選択します。

P4 SPIを選択します。

はいで有効にします。

ここではpythonでプログラムを書きました。SPIの通信は以下の Python Spidev を利用しました。
Python Spidev
Pythonが利用可能な状態だとして、適当なディレクトリ上で以下で導入できます。
$ git clone git://github.com/doceme/py-spidev
$ cd py-spidev
$ sudo python setup.py install

以下のようなプログラムを書きました。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import spidev
import time

spi = spidev.SpiDev()
spi.open(0,0)
spi.mode = 0x03    #モード3 CPOL:1 CPHA:1
spi.max_speed_hz = 5000
spi.xfer([0xFF, 0xFF, 0xFF, 0xFF])  #ソフトウェアリセット

time.sleep(0.5)
spi.xfer([0x54])    #連続で読み込み開始
time.sleep(1)

ret = spi.xfer([0xff,0xff])   #読み込み
temp = ret[0]<<8 | ret[1]     #上位と下位の読み込み
temp = temp >> 3              #13ビッド化

if(temp >= 4096):             #マイナスの場合
        temp = temp - 8192

print "temparature:",temp / 16.0
print "stop:",spi.xfer([0x50]) #連続終了

spi.close()

以下のように温度が確認出来ました。

プログラムとしては、Arduinoの場合と同様にSPIの初期設定をして連続モードで読み込んでいます。但し、ここでは1回だけ読み込んで終了しています。読み込み終了とクローズまで確認するためです。

詳細が必要な場合はお手数ですが、製品のデータシートを参照して下さい。

SPIのモード等は以下等を参照して下さい。
Arduinoリファレンス SPIの概要

あと、最初のソフトウェアリセット(0xFF)はないと不安定になります。不安定な動作になったらこれが必要です。

上のプログラムでは、xfer()のメソッドを使っていますが、xfer2()というメソッドもあります。xfer()では通常はdelayを指定してCSのアクティブとリリースを制御するようです。xfer2()はCSは常時アクティブになるようです。

ここでは特に複数のスレイブを制御することはないので、上のプログラムで動作しました。またxfer2()でも同様に動作しました。今回のような単独のスレイブの場合は、xfer2()を使っている例が多いように思いました。

より詳細が必要な場合は以下のPython Spidevの説明等を参照して下さい。
Python Spidev

ここでは何とか温度が取得出来たということでここまでにします。



 - Raspberry Pi

AdSense

AdSense

  関連記事

Raspberry Piをモニターとキーボードなしで導入する(その2)初期設定とリモートデスクトップ

(※2017/02/19 最新のRaspbian Jessie OSでは、初期状 …

無線マイコン ToCoStick(トコスティック)をRaspberry Piで使ってみた

無線マイコンの ToCoStick(トコスティック)をRaspberry Piで …

Raspberry PiのPL2303内蔵コンソールケーブルのWindows8.1の対応について

Raspberry PiのコンソールケーブルでProlific社のUSBシリアル …

Raspberry PiでのNode.jsの導入(その2)Webサーバ的なプログラム

Raspberry PiでのNode.jsの導入の2回目です。前回はインストール …

Raspberry Piをモニターとキーボードなしで導入する(その3)コンソールを使う

(※2017/02/19 最新の情報は以下です。) Raspberry Pi 3 …

Raspberry Piでセンサネットワーク稼働試験(TWELITE-トワイライト編)構成・課題等

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。今回 …

温度センサADT7410(その3)Raspbery Piでの利用

温度センサADT7410の3回目です。前回までの内容は以下です。 温度センサAD …

Raspberry PiでIoT(MQTTで遠隔操作編 その4)Raspberry PiのGPIOとHeroku連動Pub編

Raspberry PiでIoT MQTTで遠隔操作編の4回目です。2台のRas …

Raspberry PiでC言語版Lチカを試す(その2)レジスタを操作する

Raspberry PiでC言語を使ったLEDの点灯、消灯(いわいるLチカ)を試 …

Raspberry PiでAvahi を使ってホスト名でアクセスする

Raspberry PiでAvahiを使ってホスト名でのアクセスを可能にする方法 …