Raspberry Piの魅力
2012年に登場したRaspberry Piは、Pi 2/3/3B+を経て、昨年6月に「Raspberry Pi 4 Model B」が発表されました。スペックは、CPUのクロック周波数が1.5GHzに引き上げられ、RAMの容量は選択できるようになり、USB、Bluetooth、HDMIのビデオ出力なども向上しました。電源用のUSBコネクタは、より大きな電流を給電できるようにUSB Type-Cに変更されています。
Raspberry Piの魅力は、なんといっても低価格&プログラマブルな環境です。開発元のRaspberry Pi財団はPythonを推奨していますが、C言語でも簡単に制御できます。ここではC言語による実装方法を簡単に説明します。
OSのセットアップ
購入したRaspberry Piの仕様などをひととおり理解したら、まずはOSをセットアップしましょう。Linuxディストリビューションの1つであるRaspbianを利用します。Webサイト からダウンロードして自身でセットアップできます。デスクトップの操作性も良いですが、ターミナル上からLinuxコマンドでも操作できるようになると便利でしょう。
開発環境のセットアップ
テキストエディタにGeany、コンパイラにGCCを使用します。それぞれオープンソースソフトウェアとして提供されています。リスト1 を作成して、Geany上でビルドすればターミナルに「Hello, World」と表示されます。
リスト1
#include <stdio.h>
int main(){
printf("Hello, World\n");
return 0;
}
また、GPIO制御関数ライブラリのWiringPiはデジタル入出力、シリアル通信、I2 C、PWM、時間待ちなどの関数が用意されていて、計測や制御、通信などのプログラムを簡単に作成できます。WiringPiはGNU LGPLv3で公開されているので、リスト2 のようにインストールします。
リスト2
$ cd /tmp
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb
$ sudo dpkg -i wiringpi-latest.deb
Lチカさせるプログラム
LEDを点滅させる場合は、図1 のように配線したうえで、WiringPiの関数を使ってリスト3 のようにプログラミングすれば、0.5秒間隔でLEDを点滅させることができます。それぞれの関数は公式サイトのリファレンス を参照してください。
図1
「Fritzing」で描いたものを使用しています。
リスト3
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#define LED0 23
int main (void){
wiringPiSetupGpio();
pinMode(LED0, OUTPUT);
for(;;){
digitalWrite(LED0,HIGH);
delay(500);
digitalWrite(LED0, LOW);
delay(500);
}
return EXIT_SUCCESS;
}
ここから、LEDを複数個つなげたり、スイッチで点灯や明るさを制御したりと改良してみるのもよいでしょう。また、WirignPiはI2 CバスやSPIバスなどの関数もあるのでぜひ活用してみてください。