ラベル wiringpi の投稿を表示しています。 すべての投稿を表示
ラベル wiringpi の投稿を表示しています。 すべての投稿を表示

2014年2月8日土曜日

Raspberry Pi の超簡単設定3 Python

目次
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO

                                      


update こちらのサイトに新型があります。
mille-feuille(ミルフィーユ)


今回はロボットや画像処理など、多くの分野で人気が高まっているPython、importを使って豊富なライブラリを気軽に利用することができ非常に便利なスクリプト言語を利用してみましょう。
ます、Pythonでハードウェアが扱えるようにしましょう。

ターミナルを開いて

sudo nano /etc/modprobe.d/raspi-blacklist.conf

blacklistに#を付けてコメントアウトします。

ctrl + x で保存するか尋ねて来るので、Yを押し、最後にファイル名を確認してきますが上書き保存するのでそのままエンターを押して終了します。




次にnanoを実行します。

sudo nano /etc/modules



最後に i2c-dev と追記します。

同じく ctrl + x で保存するか尋ねて来るので、Yを押し、最後にファイル名を確認してきますが上書き保存するのでそのままエンターを押して終了します。

sudo apt-get update

sudo apt-get upgrade
sudo apt-get install python-smbus
sudo adduser pi i2c
sudo reboot

と入れて再起動します。


MCU Gear の電源を入れてI2Cのテストをします。

何か数字が表示されればI2Cが動いていることがわかります。

i2cdetect -y 0

といれます。RaspberryPiのVerによっては i2cdetect -y 1 と入れてください。






次にSPIを設定します。


sudo apt-get install python-dev

sudo reboot
再起動したら

lsmod


で spi-bcm2708 の表示があることを確認します。







次にPythonのspidevを準備します。


mkdir python-spi 

cd python-spi 
wget https://raw.github.com/doceme/py-spidev/master/setup.py 
wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c 
sudo python setup.py install 

$ cd
$ git clone git://github.com/doceme/py-spidev 
$ cd py-spidev
$ sudo python setup.py install
...

Writing /usr/local/lib/python2.7/dist-packages/spidev-3.0.egg-info


cd /home/pi/Desktop/
wget http://mcugear.org/RPitest/MGPyVer1_1.tar
tar xvf MGPyVer1_1.tar

※追記(中級者向け)
二つのモジュールを同時に開く場合のサンプルはwget http://mcugear.org/RPitest/SampleProgramsVer1_1_0.tar
を使用してください。サンプルではモータードライバとエンコーダをつないだユニバーサルモジュールを同時につなぐという事を想定しいています。MCUGearModule.py の割り当て端子数を増やしています。sample.pyで、配線情報はコネクタの若い番号順に並べて2つのモジュール(16端子分)を同時につなぐことが出来ます。


MGPyVer1_1というフォルダがデスクトップにダウンロードされ、ダブルクリックするとモジュールごとにサンプルプログラムが入ったフォルダが入っています。


それぞれのプログラムは cd コマンドを使って移動し

sudo python sample.py

で実行できます。

サンプルプログラムはsample.pyに動作や配線方法が記述されています。

例)LEDblinkフォルダ
ユニバーサルモジュールが対象です。

N_VDD_VDD_VDD
モジュール裏面のアドレスを AD2 = VDD(+3V3) AD1 = VDD(+3V3) AD0 = VDD(+3V3) に設定しているという意味です。詳しくはモジュールのゲート開閉に利用しているPCA9674のデータシートを見てください。




ユニバーサルモジュールの2番端子が点滅するように設定されています。

サンプルプログラムのp.NC は何も接続しないという意味です。(もちろん入力も出力も割り当てられますが、今回はサンプルで用意しました。)

p.outpin[ ]は出力端子 [0]~[5]まであり、Raspberry Pi のGPIOがどれかを考える必要が無いようにプログラムで抽象化してます。(p.pyで実際のピン配置を参照できます)

p.inpin[ ]は入力端子 [0]、[1]

ベースボードのコネクタ1つごとに、4つの信号端子が来ているので、ユニバーサルモジュールでは8端子まで接続することができます。

下はLED接続時の参考図です。必ず抵抗を取り付けてください。



他にSPIはMISO MOSI SCK CE0

UART はTX RX などと記載します。

プログラムの端子配置を変えれば、簡単に配線しなおすことができます。



2014年2月7日金曜日

Raspberry Pi の超簡単設定2 C言語 wiringPi

目次
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO

                                      

update こちらのサイトに新型があります。
mille-feuille(ミルフィーユ)


ここでは、wiringPi というC言語で開発ができる環境を入れます。
プログラム用のテキストエディタはいくつかありますが、今回はgeanyという物を入れます。

まず、midoriというアプリケーションで、このブログの画面を開いてください。
青い文字の部分を順番にコピー&ペーストしてインストールしてください。(shellスクリプトにしてもよいのですが、GPIOの設定部分で失敗することがあるようです。注意してください。

デスクトップにある LXTerminal.exe を開いてください。
$マークの後に以下の青いコマンドを入れていきます。
まずgeanyを使いたい方は
sudo apt-get install geany
と入れます。

次にwiringpiを入れてみましょう。

sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

完了したら動作確認をします。

gpio -v
gpio readall

と入れ、以下のように表示されているかを見てください。



一旦終了します。
sudo halt


次に組み立てたMCUGearを取り付けます。
Raspberry Pi と接続するには以下のボードが最低限必要です。
TypeB board --- Raspberry Pi とベースボードを接続します。
Baseboard --- MCU Gear のコアです。
Power Module --- USBかアダプタ電源からMCU Gearに簡単に電源を供給でします。
他のモジュールはお好みで積層してください。
MCUGearの電源はハードウェア部分を再起動できるように別系統で取っています。

RaspberryPiに電源を入れます。
MCU Gearのサンプルプログラムを入れてみます。
cd /home/pi/Desktop/
wget http://www.mcugear.org/RPitest/MCUGearRPwp.tar
tar xvf MCUGearRPwp.tar

解凍されたフォルダに、それぞれモジュールごとにサンプルプログラムが入っています。
デスクトップにダウンロードされたサンプルプログラムを実行してみます。
(注意:ユニバーサルモジュールは0、1番がスイッチ入力2番はLEDを点滅させる、残りはLEDで出力を確認できます。)

gpio load i2c 1000
gpio load spi

cd MCUGearRPwp

g++ -Wall -o main main.c MCUGear.cpp MCUGearBase.cpp -lwiringPi

(wiringPi の LCDのライブラリ (#include <lcd.h>)等を使う時は、
g++ -Wall -o main main.c MCUGear.cpp MCUGearBase.cpp -lwiringPi -lwiringPiDev
としてください。)

コンパイルに成功したら。
MCU Gear側にも電源を入れて。

sudo ./main

で実行できます。



Raspberry Pi の超簡単設定1 起動とリモートデスクトップ編

目次
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO


                                      

update こちらのサイトに新型があります。
mille-feuille(ミルフィーユ)


Raspberry Piのセットアップから、リモートデスクトップについてです。
今回はWindows7 で実行しています。

1、初期設定
NOOBS (offline and network install)をダウンロードして、4GB 以上の空のSDカードに解凍してください。

TVにHDMIケーブル、USBキーボード、USBマウス、インターネット接続されたLANケーブルをRaspberry Pi を接続し、先ほどのSDカードを差し込みます。



2、OSのインストール
NOOBSを入れると、まずOSの選択画面と言語の選択ができるメニューが現れます。
ここではRaspbian を入れ、言語は日本語を選択しました。
右上のInstallを押すとインストールを開始します。



成功すると以下のように表示されます。



この後、初期設定をします。



特に気にしないのであれば、そのままFinishしてください。
その際の
ID:pi
pass:raspberry
です。


$マークの後ろに次のコマンド入れます。
まず、リモートデスクトップを入れます。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xrdp

途中で[Y/N]と質問されるのでYを入力して次に進んでください。

sudo apt-get install avahi-daemon

を入れて、インストールが終わったら
sudo halt
と入れ赤いLEDのみの状態になったら電源を切ります。(デスクトップ画面を表示したい場合はstartxと入れると出ます)

USBキーボードやマウス、HDMIケーブルを外して、SDカードとLANだけの状態にしてください。

Windows側には以下のソフトをインストールすると、Windows搭載のリモートデスクトップから簡単にアクセスできます。
Bonjour Print Services for Windows

Windows付属のリモートデスクトップを起動します。
同じルーターにPCを接続し、raspberrypi.local というアドレスでリモートデスクトップが使えるようにします。





先ほどのID、パスワード
ID:pi
pass:raspberry
でログインできます。IPアドレスを調べる必要はありません。





※ログインできない場合
ルーターにすでに名前でアクセスできるデバイスがつながっている場合
IPアドレスを直接入力してログインしてください。割り当てられたIPアドレスを調べるには、ターミナルで
ifconfig
と入れると 192.168.***.*** という番号が見れます。

2013年9月25日水曜日

Raspberry Pi 入門 6:MCU Gear を試してみる

RSコンポーネンツさん等で市販されている Raspberry Pi がMCU Gearと接続できるのかを検証してみようと思います。
(MCU Gear のモジュールが対応済みになりました)
MCU Gear で AD変換、DA変換できました

MCU Gear と Raspberry Pi を配線やブレッドボードを使って接続してみます。

最も基本的なLED点灯とボタン入力をMCU Gear、C言語は wiringpiを使ってテストしてみます。

I2Cの設定は1MHzで動かそうと思います。
sudo gpio load i2c 1000

これを~ディーノで使ったプログラムのI2C部分を改造しました。
試作なので配線がたくさんついていますが、基本動作は出来ました。
Raspberry PiにはI2Cのプルアップ抵抗がついていますので、MCU Gearのプルアップ抵抗を外せば直結できます。
しかし、基板の面実装部品を動かしたくないので、I2Cを分離するためI2C用のICを使って分離します。
実際に今回のテストで動かした動画です。
このままでも安定して動かせますが、専用基板を作る予定です。
テスト用のプログラムも基板の販売前に検証してから公開しようと思います。






2013年9月24日火曜日

Raspberry Pi 入門 5:C++ を試してみる

最新情報の目次はこれで、最終的に動画のような物も作れます。
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO



                                        

以下、昔の記事です。



前回まではC言語でいろいろこなしてみました。

ラズベリーパイにはC言語以外にもC++が対応しています。基本的にはgccをg++と書けば動きます。

C++の簡単な使い方と wiringPi のC言語とC++を組み合わせたコンパイル方法を試してみます。
(MCU GearのLPC1114はC言語ですが、それ以外はC言語とC++を組み合わせた形で書かれています。)


まずはGeanyを使わない形でコンパイルしてみます。

テストプログラムは三つのファイルを用意します。



1、【MyTest.h】
class MyTest{//クラスの宣言
public:
int getData(void);//クラスの関数
};


2、【MyTest.cpp】
#include "MyTest.h"
int MyTest::getData(void){//クラスで定義された実際の関数の中身
return 9;
}


3、【cpptest.c】
#include <stdio.h>
#include "MyTest.h"

int main(void){

MyTest maintest;//MyTestクラスのインスタンス生成
//maintestという中にgetData()という関数が隠れていると考えると分かりやすい。
//インスタンスが実体でクラス宣言した中身を利用できるようになる。

int data = maintest.getData();//MyTestクラスのgetData()関数を呼び出して値を保存

//インスタンスの中身をいじるときは(インスタンス.クラスの中身)

printf("getData = %d\n",data);
}



これら三つのファイルを作り、一つのフォルダに入れます。
フォルダに入れたら.oファイルをコンパイルして作り、最後にビルドして実行ファイルを作ります。
ターミナルでls、cdコマンドを利用し移動して次の様なコマンドを入れます。

g++ -c MyTest.cpp -o Mytest.o
g++ -c cpptest.c -o cpptest.o
g++ cpptest.o MyTest.o -o cpptest
./cpptest

最後にgetData = 9
と出ていれば成功です。
次はGeanyの設定をしてみましょう。


ビルドコマンドを設定します。


gccと書いてあるところをg++にしておくと、とりあえず一つ一つのファイルをコンパイルして.oファイルを作れるようになります。

次にmakefileを作ってみましょう。


cpptest : cpptest.o MyTest.o

g++ -Wall cpptest.o MyTest.o -o cpptest



clean:

rm -f *.o cpptest

と記述すると、プログラムを書き変えてもすぐにビルドボタン、実行ボタンで動くようになります。

次にwiringpi とC++を組み合わせてみましょう。
3回目にやったblink.cのmain関数に

#include "MyTest.h"

int main(void){
MyTest maintest;
int data = maintest.getData();
printf("getData = %d\n",data);

を加えてみましょう。
そして同じフォルダにMyTest.cpp とMyTest.h を入れてみましょう。

ターミナルを開いて
g++ -Wall -o blink.c MyTest.cpp -lwiringPi

sudo ./blink

と実行すればC++もC言語も動きます。


次回はMCU Gearがつながるかを検証してみます。

2013年9月16日月曜日

Raspberry Pi 入門 4:I2C通信をC言語で動かす

最新情報の目次はこれで、最終的に動画のような物も作れます。
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO


                                        

以下、昔の記事です。

前回はC言語でLEDの点滅テストをしてみました。

※ラズベリーパイ側に I2C通信用のプルアップ抵抗が入っているため、MCU Gearを使う場合はI2Cの抵抗をMCU Gearのベースボードから半田で取り外す必要があります。しかし、ボードの回路自体を改造するとベースボードがサポート対象外になってしまうので、I2Cをバッファを介して使う方が無難かもしれません。そのためのボードも考えてみます。

まず、ラズベリーパイ単体でI2Cを動かしてみましょう。

(I2C通信はもう知ってるから、一気に飛ばしてAD変換、DA変換を知りたい方はこちらへ)


準備です。I2Cのバスが使えるようにします。
このサイトを参考にします。

ターミナルを開いて
sudo apt-get install libi2c-dev

次にカーネルにロードします。
sudo gpio load i2c

この時デフォルトでは100kbpsのI2Cなので1Mbpsなどにするときは

sudo gpio load i2c 1000とするそうです。ここでは一旦デフォルトの100kbpsにしておきます

プログラムはblink.cの適当な所に

#include <wiringPiI2C.h>

int main(void){
  int fd;
  int ID = 0x78;

  fd = wiringPiI2Csetup(ID>>1);  //1bit 動かしてみる。

  if((wiringPiI2CWrite(fd,0x13))<0){
    printf("error");
  }

  return 1;

}

ロジックアナライザに直接つなぐと図のような波形が出ます。




0x78 を 1bit 右にずらした値 (ID >> 1) が 0x3c なので問題なく動いています。
この wiringPi のC言語は~ディーノ系とよく似ているので、プログラムを流用して、実際に信号が出る部分を書き換えれば動きそうです。

次回はC++ と AD DA が使えうるMCU Gearをつなぐ準備をしてみようと思います
RSコンポーネンツさん等で市販されている Raspberry Pi がMCU Gearと接続できるのかを検証してみようと思います。

Raspberry Pi 入門 3:C言語でLED点滅編

最新情報の目次はこれで、最終的に動画のような物も作れます。
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO


                                        

以下、昔の記事です。

前回は普通のC言語の使い方を試してみました。

今回はLEDを点滅させるプログラムを作ってみたいと思います。Rasberry Pi はマイコンのように端子が出ています。その端子をC言語で制御してみたいと思います。

LEDの点滅は知ってるから、一気に飛ばしてAD変換、DA変換を知りたい方はこちら

Raspberry Pi の端子(GPIO)を動かすには、いくつか方法があります。
Python
shellスクリプト

C言語だと
bcm2835 ・・・初心者にはちょっとややこしいかもしれませんが、中上級者には良さそうです。(参考:http://www.airspayce.com/mikem/bcm2835/

wiringPi・・・初心者向けに簡単な記述で動かせるようにした物のようです。
(参考:https://projects.drogon.net/raspberry-pi/wiringpi/

今回はwiringPiを使います。これはRasberry Pi を簡単なC言語で動かすというコンセプトの物のようです。

IOの番号はそれぞれ使うものによって違います。詳しくはこちらに掲載されている写真からwiringpi の IOの位置を確認してみてください。

まずはgitをインストールして、
sudo apt-get install git

wiringPiのコピーをビルドします。
git clone git://git.drogon.net/wiringPi
cd wiringPi
 ./build

次に前回helloworld.cを作ったように、blink.cを作ります。
中身をこのサイトにあるサンプルのようにします。

ピンアサインはターミナルでwiringpi readall と打ち込むと、ピン配置とプログラムの番号との対応が分かります。




最後に前回のようにターミナルから/Desktop/C_test/にls cdコマンドを使って移動し、
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink

とやれば動画のように動きます。動画は見やすいように、動きを1秒おきに改造しました。
止める時は [ctrl] + [c] をキーボードで押せば止まります。





最後にこのサイトのmakefileを使い、Geany側にwiringPiのリンクを貼ります。
Geanyの「ビルドコマンドの設定」をします。




クリックして「ビルド」と「実行」の部分に以下の青い文字を書き加えます。

ビルド gcc -Wall -o "%e" "%f"  -lwiringPi
実行   sudo "./%e"

ワンクリックでビルド、実行ができるようになります。

次回はI2C通信設定をします。