Skip to content

108 temprature

サンプルコードの動作

FaBo #108 temprature Brickを使用して温度を計測

サンプルコード使用時の接続

A0にAnalog Brickを接続します。

JETSON NANO GPIO40ピン

ピン番号 Jetson.GPIO番号 NAME ピン番号 Jetson.GPIO番号 NAME
1 - 3.3V 2 - 5V
3 2 I2C_2_SDA 4 - 5V
5 3 I2C_2_SCL 6 - GND
7 4 AUDIO_MCLK 8 14 UART_2_TX
9 - GND 10 15 UART_2_RX
11 17 UART_2_RTS 12 18 I2S_4_SCLK
13 27 SPI_2_SCK 14 - GND
15 22 LCD_TE 16 23 SPI_2_CS1
17 - 3.3V 18 24 SPI_2_CS0
19 10 SPI_1_MOSI 20 - GND
21 9 SPI_1_MISO 22 25 SPI_2_MISO
23 11 SPI_1_SCK 24 8 SPI_1_CS0
25 - GND 26 7 SPI_1_CS1
27 - I2C_1_SDA 28 - I2C_1_SCL
29 5 CAM_AF_EN 30 - GND
31 6 GPIO_OZ0 32 12 LCD_BL_PWM
33 13 GPIO_PE6 34 - GND
35 19 I2S_4_LRCK 36 16 UART_2_CTS
37 26 SPI_2_MOSI 38 20 I2S_4_SDIN
39 - GND 40 21 I2S_4_SDOUT

Brick回路図

温度計測には、LM61センサーを使用しています。0℃のときの出力は600mVで、1℃上昇すると10mV上昇します。


準備

SPIをつかえるようにしましょう。(設定済みの場合は不要です。)

Jetson-IO toolを起動します。

$sudo /opt/nvidia/jetson-io/jetson-io.py

Pinmux テーブルの設定

Configure 40-pin expansion headerを選択します。

SPI1は、ADコンバータICと接続するため、

SPI1を有効化します。スペースバーで決定。

Backを選択します。

Save and reboot to reconfigure pins を選択します。

再起動します。

pip3がインストールされていない場合は、

$sudo apt-get install python3-pip

pythonでSPIをつかうためのspidevをインストールします。

$pip3 install spidev

SPIdevの使い方。 https://pypi.org/project/spidev/


サンプルコード

# coding: utf-8
import spidev
import time
import sys
from IPython.display import clear_output

#519 電圧 5470mV
vccVoltage = 5470

#温度勾配 10mV/摂氏
tempratureGradient = 10

#0℃のときのオフセット電圧 600mV
offset = 600

# A0コネクタにTemperatureを接続
TEMPPIN = 0

def readadc(channel):
    adc = spi.xfer2([1,(8+channel)<<4,0])
    data = ((adc[1]&3) << 8) + adc[2]
    return data

# 初期化
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 5000

try:
    while True:
        data = readadc(TEMPPIN)
        volt = vccVoltage * (data / 1023)
        print ("-----------------")
        print ("voltage   : {:.2f} mV".format(volt))
        temp = (volt - offset) / tempratureGradient
        print ("temprature: {:.1f} ℃".format(temp))
        print ("-----------------")
        time.sleep( 1 )
        clear_output()
except KeyboardInterrupt:
    spi.close()
    sys.exit(0)