SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#ではじめるラズパイIoTプログラミング

C#でラズパイに接続した温湿度センサーで計測しよう

C#ではじめるラズパイIoTプログラミング 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 C#と言えば、Windows環境だけと思われがちですが、.NET CoreをLinux環境にインストールすれば、C#で開発したアプリケーションが動作します。また、Raspberry Pi(ラズベリーパイ)でも、C#を使ってIoT開発を行うことができます。この連載では、C#によるIoTプログラミングを解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

対象読者

 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を返します。

[リスト1]Program.csの一部
// Wiring Piラッパークラス
public class WiringPi
{
~中略~
    // I2Cデータ受信
    [DllImport("libc.so.6", EntryPoint = "read")]
    public extern static int Read(int fd, byte[] data, int length);
}

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
測定の流れ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
C#ではじめるラズパイIoTプログラミング連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11995 2020/02/28 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング