1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#でIoTプログラミング on RaspberryPi #1

Posted at

C#でIoTプログラミング

皆さんはRaspberryPi上でIoTプログラミングする時はどの言語を使っていますか?
たぶんほとんどの人はPythonでしょうか。それともC&C++でしょうか。

今回あまりなじみのないC#でIoTプログラミングを紹介していきたいと思います。

C#は当初Windows向けアプリケーションを開発するためのプログラミング言語でしたが、マイクロソフト社が提供する.NETに対応することでWindows以外のiOS、Android、MacOS、Linux等様々なプラットフォーム上のアプリケーションを開発することができるプログラミング言語になりました。それ以外にもUnityでもアプリ開発用のプログラミング言語として利用されています。

第1回目としてRaspberryPiに.NETのインストール方法と定番のLチカまで解説したいと思います。

今回使用するハードウェア

・RaspberryPi4BもしくはRaspberryPi5
・Grove LED Red
・GROVE - 4ピン-ジャンパーメスケーブル
もしくは
・ブレッドボード
・赤色LED
・330Ω抵抗
・ジャンパーワイヤ

今回使用するソフトウェア

・Raspberry Pi OS 64-bit bookworm(2024/03/15)
・.NET SDK 8.0.302

ハードウェアの準備

RapberryPiとLEDを次のように配線します。
01.PNG

RPi   Grove LED
5V---------VCC(赤)
GND--------GND(黒)
18Pin------SIG(黄)
配線は3本になります。

Grove LEDではなくブレッドボードで配線する場合はGNDと18Pinだけ配線することになります。
rpi-led_bb.png

.NET SDKのインストール

それでは次に.NET SDKのインストールを行います。
Linux向けにインストールスクリプトが用意されていますので、ダウンロードして実行します。
ターミナル上で次のコマンドを実行します。

$ wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
$ chmod +x ./dotnet-install.sh
$ ./dotnet-install.sh --version latest

続いて環境変数の設定を追加します。

.bashrcファイルの最後に次の2行を追加します。

export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

追加したら次のコマンドで.bashrcを再読み込みしておきます。

$ source .bashrc

インストールができているか次のコマンドで確認できます。

$ dotnet --version
8.0.302

プロジェクトの作成

.NETではテンプレートを利用してプログラミングを始めるのが一般的です。
今回はコンソールアプリを作成していきます。

$ dotnet new console -o Blink
$ cd Blink

dotnet new "テンプレート" -o "アプリ名" とすることでアプリのひな型が生成されます。

試しにアプリケーションフォルダ(ここではBlinkフォルダになります)で実行してみます。

$ dotnet run
Hello, World!

Blinkフォルダは以下になります。
プログラムはProgram.csに書かれています。
次からはProgram.csの内容を書き換えていきます。

$ ls -al
total 24
drwxr-xr-x 4 pi pi 4096 Jul  9 14:54 .
drwxr-xr-x 4 pi pi 4096 Jul  9 14:53 ..
drwxr-xr-x 3 pi pi 4096 Jul  9 14:54 bin
-rw-r--r-- 1 pi pi  252 Jul  9 14:53 Blink.csproj
drwxr-xr-x 3 pi pi 4096 Jul  9 14:54 obj
-rw-r--r-- 1 pi pi  105 Jul  9 14:53 Program.cs 

パッケージの追加

LEDを制御するためにはGPIOライブラリが必要になります。
.NETでは必要なライブラリをパッケージとしてインストールします。

$ dotnet add package System.Device.Gpio

Program.csの書き換え

Program.csの内容を以下のように書き換えます。

//パッケージの読み込み
using System;
using System.Device.Gpio;
using System.Threading;

//アプリケーションの終了方法をコンソールに出力
Console.WriteLine("プログラムを終了するにはCTRL+Cを押してください。");

//LEDを制御するPinの指定
int pin = 18;

//GPIOコントローラーのインスタンスを作成
using var gpio = new GpioController(); 

//指定したPinを出力モードで開く
gpio.OpenPin(pin, PinMode.Output);

//LEDの状態を示す変数
bool ledOn = true;

//ループ
while (true)
{
    //ledOnがTrueだったらPin(18)をHighにする、そうでなければLowにする。
    gpio.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low));

    //1秒間停止
    Thread.Sleep(1000);

    //ledOnの値を反転する
    ledOn = !ledOn;
}

書き換えができたら実行してみましょう。

$ dotnet run
プログラムを終了するにはCTRL+Cを押してください。

しばらくするとLEDが1秒ごとに点滅を始めます。

以上でプログラムが完成しました。

次はGPIOのデジタル入力処理を紹介する予定です。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?