ダウンロード サンプルファイル (65.0 KB)
C#と言えば、Windows環境だけと思われがちですが、.NET CoreをLinux環境にインストールすれば、C#で開発したアプリケーションが動作します。また、Raspberry Pi(ラズベリーパイ)でも、C#を使ってIoT開発を行うことができます。この連載では、C#によるIoTプログラミングを解説します。
対象読者
IoTに興味があり、C#とRaspberry Pi(Linux環境)の基本的な知識がある方を対象とします。Linuxや電子工作の初歩的な説明は割愛していますので、「Raspberry Piをつかったセンサープログラミング超入門」の記事なども併せて参照してください。
はじめに
前回は、OLEDディスプレイモジュールに直線や文字を表示しました。最終回となる今回は、温湿度センサーを使って、温度と湿度を計測し、その値を表示してみます。
温湿度センサー
今回は、SENSIRION社の高精度温湿度センサSHT31-DISを搭載したセンサーモジュールを使いました。環境情報のセンサーといえば、ボッシュ社のBME280を搭載したセンサーモジュールのほうがおなじみかもしれません。ただBME280は、計測値の換算(補正が必要)が複雑で、気温に関しては、SHT31のほうが精度が高いようなので、こちらを選択しました。
センサーモジュールの準備
今回のセンサーモジュールも、I2C通信で制御できます。ピンヘッダを次のようにハンダ付けしました。なお、ADR端子はアドレス選択用端子で、今回のようにグランドに接続するとI2Cアドレスは、0x44、解放では0x45となります。
接続
I2C通信のデバイスは、SDA、SCL端子を並列に接続することで、複数のデバイスを制御することが可能です。今回は、次のように配線しています。OLEDディスプレイモジュールと、センサーモジュールのSDA、SCL端子を、Raspberry PiのSDA、SCLに並列に接続します。
I2C通信の受信
前回までは、I2C通信は送信のみでしたが、今回は測定値を受信する必要があります。そのため、WiringPiラッパークラスに、受信メソッドを追加しておきます。送信同様、WiringPiには、I2C通信の受信関数が用意されています。
ただ今回の温湿度センサーモジュールでは、どうしてもうまく読み出すことができなかったので、より低レベルである標準Cライブラリのread関数を用いました。read関数は、指定のファイルディスクリプタからデータを読み出す関数で、共有ライブラリのlibc.so.6に含まれています。正常に受信できれば読み出したバイト数、受信できなかったときは-1を返します。
// Wiring Piラッパークラス
public class WiringPi
{
~中略~
// I2Cデータ受信
[DllImport("libc.so.6", EntryPoint = "read")]
public extern static int Read(int fd, byte[] data, int length);
}
この記事は参考になりましたか?
- C#ではじめるラズパイIoTプログラミング連載記事一覧
-
- C#でラズパイに接続した温湿度センサーで計測しよう
- C#でラズパイに接続したOLEDディスプレイに文字を描こう
- C#でラズパイに接続したディスプレイを制御してみよう
- この記事の著者
-
WINGSプロジェクト 高江 賢(タカエ ケン)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
