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

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月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通信設定をします。





2013年9月15日日曜日

Raspberry Pi 入門 2:C言語エディタ編

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

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


                                        

以下、昔の記事です。

前回のブログで、Rasberry Pi の準備ができたので、次はCコンパイラをテストしてみましょう。


その前に、C言語を書くためのエディタを手に入れたいと思います。
個人的に気に入っている geany というエディタソフトを入れてみようと思います。
このエディタを使うと、make fileというものを作れば1クリックでC言語をコンパイル出来るので、エラーの発見などが便利です。Windowsから移った人はviエディタよりも便利に感じると思います。

インストールはターミナルから
sudo apt-get install geany
と入力してください。




geanyはスタートメニューのプログラムという項目に入っていると思います。
起動して以下のプログラムを入力します。

#include <stdio.h>

int main(void) {
  printf(“hello world!\n”);
  return 0;
}

今回はDesktopにC_testというフォルダを作って保存しました。
では、はじめはターミナルを起動して、実行します。
.cファイルのあるディレクトリまでコマンドで移動してみましょう。

まずターミナルを起動します。
2つのコマンド
ls : 現在のディレクトリにあるファイルを見るコマンド
cd:はディレクトリを移動するためのコマンド

最初にlsと入れると Desktopフォルダと表示されるので、Desktopフォルダに移動するため、cd Desktopとコマンドを入れて移動します。
これを繰り返して保存したフォルダまで移動します。



helloworld.cを見つけたらコンパイルする以下2行のコマンドを入れます。
$ gcc helloworld.c

$ ./a.out
すると hello world! っと表示されるはずです。


このコマンドを毎回入れるのは面倒です。
そのためgeanyではmakefileを作ることで、歯車ボタン1クリックで実行することができるようになります。

makefileというファイルをgeanyで作り、helloworld.cファイルと同じフォルダに保存します。
以下のような内容を書いて上書き保存してください。

helloworld: helloworld.c
  gcc -Wall -o helloworld helloworld.c

と書いておき、一度だけターミナルでC_testフォルダに移動して「make」というコマンドを入れます。それ以降は、Geanyのビルドをして、実行をすれば動くようになります。


さらに簡単に以下のように代入すると、makefileを毎回簡単に書き換えることができます。

Target = helloword

$(Target): $(Target).c
  gcc -Wall -o $(Target) $(Target).c


Geany から実行すると、このような画面が出ます。