Picoに温度センサDS18B20を接続して見る

最終更新日:2022/4/6

PiPicoで、Arduino-Pico環境でDS18B20を使う場合、適当なライブラリがないというForumの書込を見た事があります。
手元にDS18B20があるので検証しておこうと思いました。1-Wireでの通信というのが肝です。

温度センサDS18B20は安価なWaterPloofセンサとして流通しています。
特徴はデジタルセンサと云う事です。電源供給するとデフォルト設定の温度データを取得出来ます。
コマンド送信してデータ深度を変更したり出来ます。

I2Cモジュールのセンサは使いやすい物がたくさんありますが、WaterPloofとして使うには難しいモノが多いのでいざという場合を考慮してExampleを調査動作確認をしておく必要があります。


Earle F. Philhower, III氏のDiscussionsに Pico Onewire and DS18B20 #389 という書込があります。
殆どのDS18B20対応ライブラリはPiPicoに互換性が無いようで、コンパイルエラーとなります。ArduinoとEarleのコアを使用して正常に動作する方法が知りたいという内容でした。

この回答として、adamboardman/pico-onewire を試してくださいという回答が書かれていました。ただ、残念ながらこの回答は的外れのようです。ArduinoIDEに読み込む事が出来ませんでした。

STM32duinoで使用した#include <DallasTemperature.h>をPiPicoで試したところ、buildは通るのですが実行出来ませんでした。デッドロックです。

これと云ったライブラリが見つかっていない状況です。見つかったら改めて更新します。


ArduinoForumに RasPi Pico with DS18B20 on Philhower core と云う書込があります。
https://forum.arduino.cc/t/raspi-pico-with-ds18b20-on-philhower-core/938947
内容は上記#389と同じですね。
ここでは、#include <microDS18B20.h>を使ってデータ取得出来たとの事です。

Arduino-Picoソースコード(Sketch)は以下の通りです。
テストコードの説明です。
DS18B20を2基個々のポートに接続して動作確認するサンプルスケッチです。
シリアルモニタが開いていないと先に進まないようになっています。

/*
 * 2022年4月8日 T.Wanibe
 * ArduinoForum https://forum.arduino.cc/t/raspi-pico-with-ds18b20-on-philhower-core/938947 に
 * 書込のあった #include <microDS18B20.h>を使う事で実現出来る点の動作確認
 * サンプルスケッチにはロシア語のコメントがあった
 * 実行したところ素直に動作する事を確認出来た。
 * アドレス指定せずに2つのセンサーを操作する例
 * 1つのセンサー-1つのピン
 * 最大2093056バイトのフラッシュメモリのうち、スケッチが59952バイト(2%)を使っています。
 * 最大262144バイトのRAMのうち、グローバル変数が11164バイト(4%)を使っていて、ローカル変数で250980バイト使うことができます。
 */
#include <microDS18B20.h>
// 18B20センサーをGPIO20に接続しました
MicroDS18B20<20>        sensor1;
// 18B20センサーをGPIO18に接続しました
MicroDS18B20<18>        sensor2;
//------------------
void setup() {
        Serial.begin(115200);
        while(!Serial);
}
//------------------
void loop() {
        //温度リクエスト
        sensor1.requestTemp();
        sensor2.requestTemp();
        // セトリングタイム
        delay(750);
        // ファーストセンサー
        Serial.print("t1: ");Serial.println(sensor1.getTemp());
        Serial.print("t2: ");Serial.println(sensor2.getTemp());
}


戯言(nonsense)に戻る


問い合わせ頁の表示


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。

商標・登録商標

Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。