いよいよ、Raspberry pi(ラズパイ)の本来の使い方をしてみます。
今回は開発環境作成~Lチカまでです
●開発環境の選択
ここでの選択肢は言語とライブラリとなります。
言語選択:
raspberry pi界隈では主にScratch,Python,C言語系を選択している方が多いようです
私はこの中で最も一般的だと思えるC言語系のC++を選びました
(ただし、Raspberry Pi界隈では少数派の様です。)
ライブラリ:
mbedでもそうですが、IOを管理するプログラムを1から書いていたらいつまでたっても終わりませんし、それこそ知識が無いから勉強したいのに、最初から知識を要求されるという矛盾になってしまうます。
ですので、基本的な管理についてはライブラリと言われる誰かが汎用品として作ってくれたプログラムを流用します。
Raspberry pi用としては、主に3つ、RPi.GPIO、WiringPi、pigpioの3種かと思います
私はからあげさんのHPを見て、後で変更の必要がなさそうなpigpioに決めました。
また、pigpioは2つの動作の仕方があって、一つはデーモン(常駐ソフト)を動かして呼び出すタイプ(デーモンがsuで実行されていれば、アプリ自体にはsu権限は不要)、もう一つはデーモンを使用しないやり方(アプリ実行時にsu権限が必要)。
pigppioのページの右側のメニューに「pigpio」という項目と「pigpiod」というこうもkがありますが、詳しくはそこを見てください
なお、からあげさんはデーモンでの組み込み、かつ言語はPythonという組み合わせでしたが、私は後者+C++を選びました。
自分の使い勝手というか、好みでしょう。
●開発環境の設定
1)pigpioパッケージ刷新
Raspbian jessieですと、pigpioのパッケージは最初から入っているのですが一応刷新しました
pigpioの「pigpio」ページ内「download」リンク内に書いてある通りですが、以下の通り実行。
作業は、np2piインストールに使用したフォルダを使います
$cd ./Dev
$wget abyz.co.uk/rpi/pigpio/pigpio.tar
$tar xf pigpio.tar
$cd PIGPIO
$make
$sudo make install
2)エディター選択+開発環境整備
エディターはRaspbian jessie標準搭載のGeanyを使用します
そしてこれをそのまま開発環境にしてしまいます。
Geanyは最初からインストールされていると思います。
起動は「ラズパイマーク」⇒「プログラミング」⇒「Geany」で起動します
コンパイルした結果を実行するウインドウまでついています(下の部分のタブを選択)
●初期設定
「ビルド」⇒「ビルドコマンドを設定」で、オプション設定します。
C++コマンドの3番が空いていますので、ここに設定します
●フォルダ作成
ユーザーにアクセス権がある場所ならどこでもいいはずですが、とりあえず
/home/pi/make/で作業をすることにしました。(~/make/でも同じ)
$cd /home/pi/
$mkdir make
以後、この下に適宜作業フォルダーを作成して作業します
●テスト
1)コンパイル環境の確認
以下程度のプログラムを作成し、環境が正しく動く確認します
——————————————————————-
#include <stdio.h>
int main(){
printf(“\nUnko moreru\n”);
}
——————————————————————-
「ビルド」⇒「GPIO付きビルド(先の初期設定で設定した名前)」
で、コンパイルが通ればまずは成功です。
次に下部「端末」タブで実行してみて
Unko moreta
と表示されれば完璧です。
2)GPIOの確認(Lチカ)
2-1)ライブラリの組み込み
まず第一段階としてライブラリの組み込みとGPIOの初期化を行います
これができればあとは関数の使い方だけですので、できたも同然です。
先のプログラムを変更して実験します
——————————————————————-
#include <stdio.h>
#include <pigpio.h>
int main(){
if(gpioInitialise() < 0){
printf(“\nGPIO cannot initialised\n”);
return 1;
}
else{
printf(“\nGPIO Initialised.\n\n”);
}
}
——————————————————————-
前回と同じようにビルドして実行すると、成功していれば「GPIO Initialized.」とメッセージが出てきます。
ダメな可能性としては、他の何らかのプログラムでGPIOが使われている場合。途中まで他のHPを見て設定していてpigpoidを常駐させているような場合。こういう場合は、そのプログラムを停止させてください。
$sudo killall pigpiod
2-2)ハード作成
Lチカ(LEDを点滅させる)をします。
まず、Raspberry Piは全部で40本の端子が付いていますが、このうち入出力に使えるのは28ピン。
(ちなみに、他は8本がgroundと名付けられている基準電位(0V)の共通線、2本が作動中に+3.3Vが常に出ている線、2本が+5Vが常に出ている線です。)
この28本の線にLEDを全部つけて点滅させます。
詳細は省略しますが、今回は何となく流れ込み型で作りましたので、3.3Vと各ピン28本それぞれの間に100Ωのチップ抵抗とチップLEDを接続したのもの0番ピンから順番に並べて作成しました。
↑表。緑のLEDと100Ωの抵抗が並ぶ。
↑裏。複雑なようでも所詮は28本+3.3V+(パイロットランプ用)GNDの30本。
私の環境では、GPIO端子は雄雌逆転させているのでオス端子が出ています。
プログラムはこの通りです。(led_blink.cpp)
これで、LEDが流れるように点灯するはずです。