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

2013年10月19日土曜日

Raspberry Pi で多くのモジュールを接続してみる(LCDモジュールは対象外)

RSコンポーネンツさん等で市販されている Raspberry Pi がMCU Gearと接続できましたので報告です。

今回は2013年10月19日に用意できているモジュール類を複数個
接続して見ようと思います。
・12bit 2ch ADモジュール(距離センサー)
・12bit 8ch ADモジュール(ボリューム抵抗)
・12bit DAモジュール(黄色LED出力)
・ユニバーサルモジュール(スイッチ入力と赤LED出力)
・出力信号保持モジュール(モジュールを切り替えても出力信号を保持できます)
・マルチファンクションモジュール(PWMモード)

SPIのモジュールを複数接続していますが、CE0番ピンは一つしか使っていないのが特徴です。


サンプルプログラムはこちら


プログラムの基本動作はこちらの説明を参考にしてください。










2013年10月16日水曜日

Raspberry Pi でC言語 ADコンバーター(ADC) と DAコンバーター(DAC) を簡単に使ってみる

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

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

                                        

以下、昔の記事です。

RaspberryPiで簡単にADC、DACを使ってみたいと思います。

MCU Gearを使うと、例えば8chADモジュールを10個積めば80chのAD変換基板になるお化けな拡張ボードです。

RaspberryPi用接続ボードとMCU Gearを使用します。

MCU Gear にはSPI通信による 12bit ADC、12bit DACを簡単に複数構成することができるモジュールが存在します。

サンプルプログラムではCE0 1つで、複数のSPIデバイスを動かしています





サンプルプログラムの説明です。
12bit 2ch ADの0chから距離センサーの信号を読み取り、それを12bit DAから出力しています。
またユニバーサルモジュールからスイッチの読み取り、LEDの出力(LOWでLEDがONになる)を行っています。

main.cファイルを見てください。
まず、wiringPiをセットアップしたりSPI通信のセットアップなどを行います。

1、initBase(); はMCU Gear の丸い基板、ベースボードを初期化しています。

2、拡張モジュール基板(扇形の基板)の設定をします。
MCUGear AD2chM = MCUGear(N_SCL_SCL_SCL, 4);

 AD2chM :モジュールに好みの名前を付けます
 N_SCL_SCL_SCL : 拡張モジュール裏面にあるアドレス設定回路の任意設定値を入れます。
 (AD2、AD1、AD0の順番に並んでいます。)
 4:はADモジュールの場合はSPIの4ピンを使いますという予告です。(MISO,MOSI,SCK,CE0)

3、IOSimpleSPI(&AD2chM);
 好みの名前を付けたADモジュールにSPIの端子を割り振ります。IOSimpleSPI関数はmain関数の下に記述しておきました。

中身は
unsigned char fio[12];
detect_module(fio);
これはモジュールの位置情報を取ってこいという命令です。
この情報により、モジュールをどの位置に取り付けても自動的に探し出すことができます。

savePinSetting(0, IO_13, IO_REG_IN_DIR, fio[0]);

これはwiringpi の設定で拡張モジュールの0番端子に、IOの13番をRaspberry Pi 側に入力する方向に割り振れ という命令を記録しています。

BOOST_MODE は追々説明しますが、配線の切り替え処理を高速化するためのものです。

4、main関数のwhile(1)ループ内では、拡張モジュールにアクセスするには

AD2chM.connectModule();
とすると回路が再構築されます。

AD2chM.disconnectModule();
とすると、回路が切断されます。

これを連続的に繰り返して、様々なデバイスを少ピンでもたくさん取り付けることができるようになります。

サンプルプログラムを動かすにはターミナルで
gpio load i2c 1000
gpio load spi
を事前に実行する必要があります。

コンパイルは作業ディレクトリに移動して

g++ Wall -o main main.c MCUGear.cpp MCUGearBase.cpp -lwiringPi
 コンパイルに成功したら

sudo ./main

で実行できます。


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月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 から実行すると、このような画面が出ます。