CircuitPython 10行プログラミング Step6 (5) Nano RP2040 Connectで確度0.1℃の温度計

 温度センサはテキサス・インスツルメンツ社のTMP117を使います。

温度センサTMP117のおもなスペック

  • 動作電圧 1.8~5.5V
  • 分解能 16ビット、LSBは0.007812℃
  • 動作温度範囲  -55~150℃
  • 確度
    • -20~+50℃ の範囲で±0.1℃ (最大値)
    • -40~+100℃ の範囲で±0.2℃ (最大値)
    • -55~+150℃ の範囲で±0.3℃ (最大値)
  • 消費電流 1Hzの変換サイクルで3.5uA
  • インターフェース I2C(1~400kHz)
  • データ長 2の補数形式の16ビット
  • 平均化出力が可能
  • 温度設定のアラートあり

 利用したブレークアウト・ボードはAdafruitのSTEMMA QT(JST SH 4ピン)です。今回はコネクタ経由で接続せず、ブレッドボード上でピンヘッダから配線します。

  TMP117 Precision Temperature Sensor

必要なライブラリ

 ダウンロードしたlibフォルダに入っているadafruit_tmp117.mpyを、PCのエクスプローラで見えているCIRCUITPYフォルダのlibへコピーします。

配線

 I2Cの信号SCLとSDAをつなぎます。7セグメントLEDの配線を参照してください。

プログラム

 ダウンロードしたexamplesフォルダに入っているtmp117_simpletest.pyを、エディタMuにコピペして保存します。正常に動作しました。

7セグメントLEDに表示

 CircuitPythonにはht16k33のライブラリがあります。このICは縦と横のマトリクスの点を点灯させる機能があって、7セグメントLED、14セグメントLED、ドット・マトリクスLEDなど、対応する表示器は多岐にわたります。

 4桁の7セグメントとht16k33が1個搭載した表示ボードをアマゾンで入手しました。接続用のピンは、電源とI2Cの信号SCLとSDAの合計4本です。

必要なライブラリ

 ダウンロードしたlibフォルダに入っているadafruit_ht16k33フォルダを、PCのエクスプローラで見えているCIRCUITPYフォルダのlibへコピーします。

配線

プログラム2

 ダウンロードしたexamplesフォルダに入っているht16k33_segments_simpletest.pyをMuにコピペして保存します。

 実行すると、数字、アルファベットといろいろ表示します。

プログラム3

 二つのプログラムを合体し、温度を7セグメントに表示します。

 正の温度のときは、小数点第2位まで表示し、零下のときは、マイナス符号を表示するために小数点第1位まで表示します。


# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: 2020 Bryan Siepert, written for Adafruit Industries
# SPDX-License-Identifier: Unlicense

# Basic example of setting digits on a LED segment display.
# This example and library is meant to work with Adafruit CircuitPython API.
# Author: Tony DiCola
# License: Public Domain

import time
import board
import busio
import adafruit_tmp117
from adafruit_ht16k33 import segments

# Create the I2C interface.
i2c = busio.I2C(board.SCL, board.SDA)

# This creates a 7 segment 4 character display:
display = segments.Seg7x4(i2c)
tmp117 = adafruit_tmp117.TMP117(i2c)

while 1:
    display.fill(0)
    if tmp117.temperature < 0:
        t = round(tmp117.temperature,1)
    else:
        t = round(tmp117.temperature,2)
    print(t)
    display.print(str(t))
    time.sleep(2)

 実行中の様子です。round関数の実行結果、小数点第1位までの表示になっています。

 PCとUSBケーブルを外し、Nano RP2040 ConnectにUSBケーブルで電源だけ配給すれば、表示をします。

連載 CircuitPython 10行プログラミング Step6 release7.0.0

(1) Nano RP2040 Connectの準備と動作確認

(2) Nano RP2040 Connectの搭載センサIMU LSM6DSOX

(3) Nano RP2040 ConnectにI2CでIMUセンサLSM9DS1

(4) Nano RP2040 ConnectのWi-Fi

(5) Nano RP2040 Connectで確度0.1℃の温度計TMP117+ht16k33


連載 CircuitPython 10行プログラミング Step5

(1) Raspberry Pi Picoの準備と動作確認 (2) digitalio (3) Raspberry Pi Picoのmicrocontroller (4) アナログ入力 (5) PWM出力 (6) I2S出力 (7) I2C ① OLEDディスプレイ (8) I2C ② 温湿度センサ (9) I2C ③ 気圧センサ (10) Raspberry Pi PicoのSPI ① TFTディスプレイ


連載 CircuitPython 10行プログラミング Step4

(1) Adafruit Feather nRF52840 Senseの準備 (2) Lチカ (3) 搭載センサ (4) BLE①ペリフェラル (5) BLE②セントラル


連載 CircuitPython 10行プログラミング Step3

(1) Metro M4 Express AirLift (WiFi)の準備 (2) ロータリ・エンコーダ (3) eInk/ePaper (4) Wi-Fi その1 接続 (5) Wi-Fi その2 ソケット (6) Wi-Fi その3 電圧測定 (7) 気圧センサLPS25HB (8) サーミスタ


連載 CircuitPython 10行プログラミング Step2

(1) Grand Central M4 Expressの準備 (2) グラフィック・ディスプレイOLED (3) RTC DS3231 (4) モジュール/SDメモリ (5) 複合センサ BME680 (6) ロードセル+ADS1220 (7) サーボ・モータ① (8) サーボ・モータ② (9) I2S UDA1334A (10) D-Aコンバータ


連載 CircuitPython 10行プログラミング

(1) Trinket M0の準備 (2) ディジタルI/O (3) アナログ入出力 (4) I2C 温湿度センサSi7021 (5) SPI 熱電対+MAX31855 (6) UART 距離センサTFMini (7) 1-Wire 温度DS18B20 (8) ロータリ・エンコーダ (9) 7セグメントLED (10) FANコントロール (11) UART GPS (12) I2C Lチカ MCP23017

前へ

CircuitPython 10行プログラミング Step6 (4) Nano RP2040 ConnectのWi-Fi