カテゴリ: C# 更新日: 2026/08/01

C#とRaspberry Piで始めるIoTプログラミング!Windows IoT Core入門

C#でRaspberry Piを制御する方法(Windows IoT Core)
C#でRaspberry Piを制御する方法(Windows IoT Core)

先生と生徒の会話形式で理解しよう

生徒

「C#を使ってRaspberry Piでハードウェアを動かしてみたいのですが、どうすればいいですか?」

先生

「Windows IoT CoreというOSを使うと、使い慣れたC#でRaspberry Piの制御ができますよ。」

生徒

「難しそうですが、初心者でも本当にできるんでしょうか?」

先生

「基礎から順を追って解説しますので、一緒に学んでいきましょう!」

1. Raspberry PiとWindows IoT Coreの基礎知識

1. Raspberry PiとWindows IoT Coreの基礎知識
1. Raspberry PiとWindows IoT Coreの基礎知識

まずは、今回使う道具について説明します。Raspberry Pi(ラズベリーパイ)とは、名刺サイズの小さなコンピュータのことです。これ一つで、パソコンのように動かしたり、センサーを繋いで家電を操作したりできます。次に、Windows IoT Coreですが、これはRaspberry Piのような小さな機械向けに作られた、Windowsの特別なバージョンです。IoTとは「モノのインターネット」のことで、インターネットを通じて機械を遠隔操作したり、データを収集したりする技術を指します。

C#(シーシャープ)は、マイクロソフトが開発したプログラミング言語です。初心者にも読みやすく、かつ強力な機能を持っています。通常、ハードウェアの制御は難しいイメージがありますが、C#を使えば直感的にプログラムが書けます。パソコン自体を触ったことがないという方でも、まずは「機械に命令を出すための言葉」だと考えてください。

2. 開発環境の準備とセットアップ

2. 開発環境の準備とセットアップ
2. 開発環境の準備とセットアップ

次に、プログラミングを行う場所を作ります。これにはVisual Studio(ビジュアルスタジオ)というソフトが必要です。これは、プログラマーがプログラムを書くための机や道具が全て揃った「作業場」のようなものです。Visual Studioを使うと、コードのミスを教えてくれたり、難しい設定を自動で行ってくれたりと、初心者にとって非常に心強い味方になります。

Windows IoT Coreを使うには、まずRaspberry Piに専用のOS(オペレーティングシステム:コンピュータ全体を動かす基本ソフト)を書き込む必要があります。SDカードという小さな記憶媒体を使い、専用のツールで準備します。これらが整うと、Windowsパソコンで書いたC#のプログラムを、ネットワーク越しにRaspberry Piへと送り込み、動かすことができるようになります。

3. GPIOの概念と役割

3. GPIOの概念と役割
3. GPIOの概念と役割

Raspberry Piには、GPIO(ジーピーアイオー)と呼ばれる端子がついています。これはGeneral Purpose Input/Outputの略で、「汎用入出力」という意味です。少し難しく聞こえますが、要するに「電気信号を出す場所」と「電気信号を受け取る場所」だと思ってください。LEDライトを光らせたり、スイッチが押されたことを読み取ったりするために使用します。

例えば、ドアのセンサーから信号がくればライトを点ける、というような仕組みを作る場合、GPIOが窓口となります。C#のコードを通じて、「この番号のGPIOに電気を流して(オンにして)!」と命令を送ることで、物理的なハードウェアが反応します。

4. C#でLEDを点滅させるプログラム

4. C#でLEDを点滅させるプログラム
4. C#でLEDを点滅させるプログラム

実際にLEDを光らせるための基本的なコードを見てみましょう。GPIOを操作するには、その番号を指定して「出力モード」に設定する必要があります。出力モードとは、そこから電気を送り出すための準備状態のことです。


var gpio = GpioController.GetDefault();
var pin = gpio.OpenPin(18);
pin.SetDriveMode(GpioPinDriveMode.Output);
pin.Write(GpioPinValue.High);

このプログラムでは、GPIOの18番ピンを使い、そこに高い電圧(High)をかけることでLEDを点灯させています。非常にシンプルですが、これがIoTの第一歩です。プログラムは上から順番に読み込まれます。まずは準備をして、次に操作を実行するという流れを意識しましょう。

5. ループ処理で定期的に動作させる

5. ループ処理で定期的に動作させる
5. ループ処理で定期的に動作させる

プログラムの素晴らしいところは、同じことを何回でも正確に繰り返せる点です。タイマーやループという機能を使います。例えば、ライトを1秒ごとに点滅させたい場合、プログラムを一時停止させる命令と、それを繰り返す処理を組み合わせます。


while (true)
{
    pin.Write(GpioPinValue.High);
    Task.Delay(1000).Wait();
    pin.Write(GpioPinValue.Low);
    Task.Delay(1000).Wait();
}

while(ホワイル)文を使うと、中の処理を永遠に繰り返します。Task.Delay(タスクディレイ)は、指定した時間だけプログラムを待機させるための命令です。これを組み合わせることで、機械が自律的に動き続けるシステムを作ることができます。

6. センサーからの入力を受け取る

6. センサーからの入力を受け取る
6. センサーからの入力を受け取る

最後は、入力を受け取るプログラムです。ボタンを押した時に何かのアクションを起こすには、ピンを「入力モード」にする必要があります。入力モードとは、外から流れてくる電気の信号を読み取るための設定です。


pin.SetDriveMode(GpioPinDriveMode.Input);
if (pin.Read() == GpioPinValue.High)
{
    Debug.WriteLine("ボタンが押されました!");
}

if(イフ)文を使って、条件を判断します。「もしボタンからの信号がオンの状態なら、メッセージを表示する」という命令ですね。これらを応用すれば、温度センサーで部屋の暑さを感知したり、カメラで動くものを検知したりといった、面白いプロジェクトに発展させることが可能です。C#はハードウェアを制御する楽しさを存分に味わえる言語なのです。

カテゴリの一覧へ
新着記事
New1
C#
C#のDictionary(辞書)の使い方を初心者向けに完全解説!キーと値でデータ管理を学ぼう
New2
C#
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
New3
C#
C#で始めるIoT開発!音声認識とスピーカー制御の仕組みを解説
New4
Azure
Azure Reposの使い方を徹底解説!Gitによるソースコード管理とブランチ戦略(Gitflow)
人気記事
No.1
Java&Spring記事人気No1
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
Azure
Azureストレージの冗長性比較!LRS/GRS/ZRSの選び方とコストの最適解を完全解説
No.4
Java&Spring記事人気No4
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.5
Java&Spring記事人気No5
C#
C#のログ出力入門!SerilogとNLogの使い方を徹底解説
No.6
Java&Spring記事人気No6
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のforeachループを完全ガイド!初心者でもわかるコレクション操作の基本
No.8
Java&Spring記事人気No8
COBOL
COBOLの小数点の扱いと符号付きデータ型(S, V)の使い方を初心者向けに解説!