Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

C#でラズパイのGPIOを操作しよう~LEDを点灯させる

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/09/25 11:00

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

目次

対象読者

 IoTに興味があり、C#とRaspberry Pi(Linux環境)の基本的な知識がある方を対象とします。Linuxや電子工作の初歩的な説明は割愛しているので、「ラズベリーパイをつかったセンサープログラミング超入門」の記事なども併せて参照してください。

はじめに

 前回で、WindowsとRaspberry Pi環境の準備が整ったので、今回は、C#によるGPIOの基本操作を解説します。

GPIO

 Raspberry PiでLEDなどの電子部品を操作するには、GPIO(General Purpose Input/Output)の制御が必須です。

 GPIOの制御は、ハードウェア的には、SoC(System on Chip、CPUと周辺パーツを集積したもの)のレジスタを操作することなのですが、Raspberry Pi(Raspbean OS)では、直接レジスタを操作するだけではなく、Linuxの仮想ファイルシステムを用いて制御することもできます。仮想ファイルシステムとは、さまざまなデバイスに、あたかも通常のファイルであるかのようにアクセスできる仕組みのことです。

 仮想ファイルであれば、プログラムからは通常のファイルとして扱えるため、どのプログラミング言語でもGPIOの操作は可能です。ただし、仮想ファイルを操作してGPIOを制御するのは少し面倒で、GPIOの設定にも制限があります。そのため、プログラムからGPIOを制御するには、GPIO制御に特化したツールやライブラリを用いるほうが手軽です。

gpioコマンド

 Raspberry Pi(Raspbean OS)では、WiringPiというGPIOの制御を行うC言語のライブラリが、デフォルトでインストールされています。WiringPiには、コマンドラインから使えるgpioコマンドが含まれています。例えば、GPIOの状態を確認するには、次のように指定します。

$ gpio readall
GPIOの状態の一覧表示
GPIOの状態の一覧表示

 GPIOの番号と、ピンの状態(IN、OUTなど)が一覧で表示されます。またgpioコマンドでは、状態の参照だけではなく、特定のピンの制御ができるので、シェルスクリプトからGPIOを操作することも可能です。

C#によるGPIO制御

 .Net Core環境のC#を用いてGPIOを制御するには、次の方法があります。

  • 仮想ファイルシステムを利用する
  • WiringPiなどのライブラリ(.Net用以外)を利用する
  • .Net用のライブラリを利用する

仮想ファイルシステム

 まず今回は、仮想ファイルシステムを利用してみましょう。仮想ファイルシステムによる操作の流れは、次のようになります。

  1. 使用するGPIOピンの初期設定
  2. GPIOピンの出力、入力の設定
  3. GPIOの制御
  4. GPIOピンの終了処理

1.使用するGPIOピンの初期設定

 仮想ファイルを用いてGPIOを利用するには、使用するGPIOピンの初期設定が必要です。最初に、仮想ファイルの/sys/class/gpio/exportに、使用したいGPIOピンの番号を書き込みます。すると、/sys/class/gpio/ディレクトリに、GPIOピンを制御するための仮想ファイルが作成されます。例えばGPIO4なら、/sys/class/gpio/gpio4となります。この作成されたファイルを使って、GPIOを制御します。

2.GPIOピンの出力、入力の設定

 指定したGPIOピンを入力で使うか出力で使うかの指定を行います。これは、仮想ファイルの/sys/class/gpio/gpio番号/directionに、"in"または"out"の文字列を書き込むことで設定します。

3.GPIOの制御

 GPIOピンの制御は、仮想ファイルの/sys/class/gpio/gpio番号/valueを用います。ピンが出力であれば、このファイルに、"0"または"1"を書き込むことで、OFF、ONを設定できます。入力であれば、このファイルを読み出すことで、ピンの状態を0または1の値として確認できます。

4.GPIOピンの終了処理

 GPIOピンの使用後は、仮想ファイルの/sys/class/gpio/unexportに、使用したGPIOの番号を書き込みます。すると、/sys/class/gpio/ディレクトリに作成された仮想ファイルが削除されます。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

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

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:C#ではじめるラズパイIoTプログラミング
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5