2014年3月11日火曜日
Arduino互換機 chipKIT UNO32をMCU Gearで使ってみる
普通のArdunoの接続テストでは、一度に多くのデバイスを取り付けるとSRAMが足りなくなるという問題がありました。AVRの32bit版もあるのですが、少しコストが高いので安くてSRAMが大きな Arduino互換機chipKIT Uno32 (80Mhz, 32-bit MIPS, 128K Flash, 16K SRAM)をMCU Gear に使用してみようと思います。
Arduino互換機とは言われていますが、IDEはMPIDEという少し特殊な物を使用します。使い方は基本的に同じです。スケッチの書き方はI2Cのwriteをsendに、readをrecieveにするだけで、他の違いは今のところ違いは見当たりません。
正確にはArduinoではなく、Arduinoに似せた32bitPICマイコンボードです。もちろんブートローダーなども手に入るので自作できます。
chipKITには色々な種類が出ていますが、今回はchipKIT UNO32 Rev.Cという物を使いました。
参考サイト(http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,892,893&Prod=CHIPKIT-UNO32)
今回の購入先(http://strawberry-linux.com/catalog/items?code=21208)
操作手順
1、まず、電源を入れる前にchipKIT UNO32のジャンパーの設定を変更しておきます。
JP4 : RD4
JP6 : RG3
JP8 : RG2
にしてください、これでSPIマスターとI2Cが設定されます。
2、MPIDEをダウンロードしてください。 http://chipkit.net/started/
今回はmpide-0023-windows-20130715を使用しました。
3、各種モジュールごとのサンプルプログラムです。
サンプルプログラム(自動モード)のダウンロード
http://www.mcugear.org/download/KIT/A_SamplePrograms.zip
自動モードは一つのモジュールごとに配線をやり直して接続してくれます。
4、マイコンボードAでMCU Gearと接続します。
マイコンボードAのジャンパーの設定を
SCL : PTC1
SDA : PTC2
他は何も設定しないでください。
5、プログラムの書き込み
サンプルプログラムをMPIDEからUSBケーブルでchipKIT UNO32 Rev.Cに書き込みます。四角い枠に右矢印のボタンを押して書き込んでください。(MCU Gearのパワーモジュールを接続せずに行ってください。リセットボタンのチャタリング防止用のC5コンデンサの影響で書き込み時の自動リセットに失敗するためです。)
サンプルプログラムの使い方は次のサイトが参考になります。
http://mbed.org/users/Info/code/MCUGearA/ (英語版の下に日本語版があります)
6、使用したいモジュールを取り付けてから電源を入れる
電源は2系統から入れてください。
MCUGearのパワーモジュールを取り付け電源を入れます。
chipKIT UNO32のUSBコネクタから電源を入れると動きます。
その他、chipKIT UNO32 Rev.CのI2Cの特徴をいくつか挙げておきます。
1、通信速度アップができる。
MPIDEのファイルを書き換えると、I2Cの周波数を変えることができます。
\mpide-0023-windows-20130715\hardware\pic32\libraries\Wire\utility
ディレクトリのtwi.h部分を以下のように変更すると400KHzで動作します。
(1MHzでも送信できますが、chipKITの受信がうまくいかないようでした。)
#ifndef TWI_FREQ
#define TWI_FREQ 400000
#endif
2、注意点
I2Cのアドレス0番から7番まではIDEの問題で使えないそうです。
サンプルプログラムのmasterwireで動作確認するときは、アドレスを4から10に変更する必要があります。今後MPIDEの細かなバグが消えることを願っています。
2014年2月11日火曜日
Raspberry Pi の超簡単設定4 遠隔操作ApacheサーバーとPHPから操作する
目次
・Raspberry Pi Noobsで簡単リモートデスクトップ
・WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
・Pythonのセットアップ・・・人気のPythonで動かしてみる
・WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO
update こちらのサイトに新型があります。
mille-feuille(ミルフィーユ)
今回のサンプルではタブレットから簡単にブラウザからアクセスできるように、PHPを使うことにしました。
(PHPからPythonのプログラムを叩きますが、C言語でも同じことができるはずです。)
そのためにはRaspberry Pi にサーバーを用意して動かします。
Pythonだけの簡易サーバーもありますが、ハードを動かすGPIOを動かすにはApacheとPHPを組み合わせて動かした方が簡単でストレスなく動かせます。
ブラウザが動作する端末でプログラムを動かすことができるので、利用価値は高いと思います。
他のwebアプリを組み合わせると使いやすくなると思います。
また、Pythonコード内のprintもHTMLに反映させることができるので、Pythonでwebページを記述することも簡単にできるはずです。
まずApatchとPHPをインストールします。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2 php5
sudo chown pi -R /var/www
sudo update-rc.d apache2 defaults
この時点で/var/www/フォルダにHTMLファイルを入れると閲覧できます。
sudo nano /etc/sudoers
テキストエディタが起動するので、sudoersの最後の行に
www-data ALL=(root) NOPASSWD: ALL
と入れます。ctrl + x で保存するか尋ねて来るので、Yを押し、最後にファイル名を確認してきますが上書き保存するのでそのままエンターを押して終了します。
これでWebでアクセスした人もsudoコマンドが必要なプログラムを使用できます。外部に公開するときはセキュリティ等に気を付けてください。(最低でもアクセスにパスワードで制限を付けるなどしてください)
sudo wget http://mcugear.org/RPitest/MCUGear.tar
tar xvf MCUGear.tar
sudo mv -f MCUGear /usr/lib/cgi-bin
一旦再起動します。
sudo reboot
基本的にcgi-binフォルダでroot権限は変えたくない場合は、/home/pi/フォルダ以下で編集してから
sudo mv [filename] /usr/lib/cgi-bin/[folder] と移動させてください。
削除するときは
sudo rm -rf /usr/lib/cgi-bin/[folder]/[filename]
とすると消せます。
権限を変えると簡単に編集ができます。
手持ちのパソコンやタブレットのブラウザに
http://raspberrypi.local/cgi-bin/MCUGear/index.php
または
http://[IPアドレス]/cgi-bin/MCUGear/index.php
と入れるとアクセスできるはずです。
操作方法
1、MCU Gearの電源を入れる。
2、Init Baseboardボタンを押して、ベースボードを初期化します。
以下のsystem関数を組み合わせてPHPを操作すると、ハードウェアをPHPから動かすことができます。PHPのfor やif 等と組み合わせることで複雑な連続動作ができるはずです。
・Read Input Pins はUniversal Moduleのすべての端子を読みます。
・Write Output Pins はSignal Hold Moduleから出力します。
・Read AD 2ch はAD2chモジュールから信号を受け取ります。(HTML5が対応しているブラウザから動かすとメーターが表示されます。)
・Read AD 8ch はAD8chモジュールから信号を受け取ります。・Read DA はDAモジュールから信号を受け取ります。(HTML5が対応しているブラウザから動かすとメーターが表示されます。)
・Move RC Servo はマルチファンクションモジュールにPWMモードのプログラムを書き込んで使用します。
仕組み等
一番下ではPythonがハードを動かしています。
PHP側からsysteコマンドでPythonファイルを動かす仕組みになっているので、Pythonの中でprint するとその内容もすべて表示されます。表示したくないときはprintをコメントアウトするか、PHPのsystem関数周辺をHTMLのコメントアウト<!-- -->で囲ってください。
PHPからはsystem関数で
sudo python ~.py [address] [command]
という順番で実行しています。
モジュールアドレスはモジュール基板裏面の設定と、ゲート開閉に利用しているPCA9674のデータシートを見てください。
オリジナルの基板などで複雑な処理が必要なときは、取り付ける場合はハードに合わせてPython側を書き換えてください。
・Raspberry Pi Noobsで簡単リモートデスクトップ
・WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
・Pythonのセットアップ・・・人気のPythonで動かしてみる
・WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO
update こちらのサイトに新型があります。
mille-feuille(ミルフィーユ)
前回までにPythonまでインストールしました。今回はwebからのアクセスです。
リモートデスクトップでも遠隔操作が可能ですが、HTMLやPHPなどを組み合わせて簡単にアクセスしたいときがあります。今回のサンプルではタブレットから簡単にブラウザからアクセスできるように、PHPを使うことにしました。
(PHPからPythonのプログラムを叩きますが、C言語でも同じことができるはずです。)
そのためにはRaspberry Pi にサーバーを用意して動かします。
Pythonだけの簡易サーバーもありますが、ハードを動かすGPIOを動かすにはApacheとPHPを組み合わせて動かした方が簡単でストレスなく動かせます。
ブラウザが動作する端末でプログラムを動かすことができるので、利用価値は高いと思います。
他のwebアプリを組み合わせると使いやすくなると思います。
また、Pythonコード内のprintもHTMLに反映させることができるので、Pythonでwebページを記述することも簡単にできるはずです。
まずApatchとPHPをインストールします。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2 php5
sudo chown pi -R /var/www
sudo update-rc.d apache2 defaults
この時点で/var/www/フォルダにHTMLファイルを入れると閲覧できます。
sudo nano /etc/sudoers
テキストエディタが起動するので、sudoersの最後の行に
www-data ALL=(root) NOPASSWD: ALL
と入れます。ctrl + x で保存するか尋ねて来るので、Yを押し、最後にファイル名を確認してきますが上書き保存するのでそのままエンターを押して終了します。
これでWebでアクセスした人もsudoコマンドが必要なプログラムを使用できます。外部に公開するときはセキュリティ等に気を付けてください。(最低でもアクセスにパスワードで制限を付けるなどしてください)
sudo wget http://mcugear.org/RPitest/MCUGear.tar
tar xvf MCUGear.tar
sudo mv -f MCUGear /usr/lib/cgi-bin
一旦再起動します。
sudo reboot
基本的にcgi-binフォルダでroot権限は変えたくない場合は、/home/pi/フォルダ以下で編集してから
sudo mv [filename] /usr/lib/cgi-bin/[folder] と移動させてください。
削除するときは
sudo rm -rf /usr/lib/cgi-bin/[folder]/[filename]
とすると消せます。
権限を変えると簡単に編集ができます。
手持ちのパソコンやタブレットのブラウザに
http://raspberrypi.local/cgi-bin/MCUGear/index.php
または
http://[IPアドレス]/cgi-bin/MCUGear/index.php
と入れるとアクセスできるはずです。
操作方法
1、MCU Gearの電源を入れる。
2、Init Baseboardボタンを押して、ベースボードを初期化します。
以下のsystem関数を組み合わせてPHPを操作すると、ハードウェアをPHPから動かすことができます。PHPのfor やif 等と組み合わせることで複雑な連続動作ができるはずです。
・Read Input Pins はUniversal Moduleのすべての端子を読みます。
・Write Output Pins はSignal Hold Moduleから出力します。
・Read AD 2ch はAD2chモジュールから信号を受け取ります。(HTML5が対応しているブラウザから動かすとメーターが表示されます。)
・Read AD 8ch はAD8chモジュールから信号を受け取ります。・Read DA はDAモジュールから信号を受け取ります。(HTML5が対応しているブラウザから動かすとメーターが表示されます。)
・Move RC Servo はマルチファンクションモジュールにPWMモードのプログラムを書き込んで使用します。
仕組み等
一番下ではPythonがハードを動かしています。
PHP側からsysteコマンドでPythonファイルを動かす仕組みになっているので、Pythonの中でprint するとその内容もすべて表示されます。表示したくないときはprintをコメントアウトするか、PHPのsystem関数周辺をHTMLのコメントアウト<!-- -->で囲ってください。
PHPからはsystem関数で
sudo python ~.py [address] [command]
という順番で実行しています。
モジュールアドレスはモジュール基板裏面の設定と、ゲート開閉に利用しているPCA9674のデータシートを見てください。
オリジナルの基板などで複雑な処理が必要なときは、取り付ける場合はハードに合わせてPython側を書き換えてください。
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
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 などと記載します。
プログラムの端子配置を変えれば、簡単に配線しなおすことができます。
・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を準備します。
$ 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.tartar 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 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
で実行できます。
ラベル:
ADC,
avahi-daemon,
Bonjour,
C,
C++,
DAC,
I2C,
NOOBS,
PWM,
Raspberry Pi,
raspberrypi.local,
raspbian,
SPI,
wiringpi
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
先ほどのID、パスワード
ID:pi
pass:raspberry
でログインできます。IPアドレスを調べる必要はありません。
※ログインできない場合
ルーターにすでに名前でアクセスできるデバイスがつながっている場合
IPアドレスを直接入力してログインしてください。割り当てられたIPアドレスを調べるには、ターミナルで
ifconfig
と入れると 192.168.***.*** という番号が見れます。
・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.***.*** という番号が見れます。
ラベル:
ADC,
avahi-daemon,
Bonjour,
C,
C++,
DAC,
I2C,
NOOBS,
PWM,
Raspberry Pi,
raspberrypi.local,
raspbian,
SPI,
wiringpi,
xrdp,
リモートデスクトップ
2014年1月13日月曜日
MCU Gear をRaspberry Pi とPythonで使ってみる。
MCU Gear用の初心者向けPython サンプルプログラムを作りました。
Pythonを使うことで、Raspberry Pi の GPIOのピンアサインを見なくともモジュールに信号線を割り当てることができるようになりました。
インストール方法はこちら
ホームページからダウンロードしたファイルを解凍し、
点滅プログラムを見てみましょう。
BlinkLEDフォルダにあるsample.pyの解説です。
基本的な流れ
1、初期化部分(コピーアンドペーストして使ってください。)
2、モジュールの初設定 ピンはモジュール定義のカッコ内に追加すればモジュール端子の0番、1番、2番…と増やせます。
例えば
,p.outpin[0], p.outpin[1], p.inpin[0]....)など 1モジュールあたり最大8端子割り当てられます。
出力ピンの最大値は6つ
p.outpin[0]、p.outpin[1]、p.outpin[2]、p.outpin[3]、p.outpin[4]、p.outpin[5]
入力ピンの最大値は2つ(何もつなげないと入力がLOWとなるので、スイッチなどを使う場合はHigh信号を与えてください)
p.inpin[0]、p.inpin[1]
SPIバスは import spidev を追加して
p.MISO、p.MOSI、p.SCLK、p.CE0
I2Cバスはモジュールには配線せずに、コネクタから出ているSDA SCLに直接接続してください。
ただしアドレスが競合しないように注意してください。
また、競合する場合はマルチファンクションモジュールで別系統のI2Cバスを増設できます。
UART端子は動作させるサンプルを用意していませんが、p.TX、p.RX で割り当てることができます。
設定、動作に関してはこちらを参考に設定できます。http://mcugear.blogspot.jp/2014/01/raspberry-pipython-uart.html
3、モジュールとの接続connect()と切断disconnect()で動作中に配線切替ができます。
#!/usr/bin/python このファイルがPythonの物と明示してください
import MCUGear MCU Gear のベースボードに関するプログラムが入っています
import MCUGearModule モジュールへの配線に関するプログラムが入っています
import p GPIOピン設定に関するプログラムが入っています
import RPi.GPIO as GPIO Raspberry Pi のGPIOを動かすプログラムが入っています
import time 時間に関するプログラムが入っています
if __name__=='__main__': メイン関数
#Start--------
try: とりあえず試しに以下のプログラムを動かしてみて、[ctrl]+ [C]を押して終了する
print("If you want to finish, press [ctrl]+ [C] \n")
#setup IOs-----
GPIO.setmode(GPIO.BCM) GPIOを使います
for var in range(0,len(p.inpin)-1): GPIOの入力を設定(通常このままコピペ)
GPIO.setup(p.inpin[var], GPIO.IN)
for var in range(0,len(p.outpin)-1): GPIOの出力を設定(通常このままコピペ)
GPIO.setup(p.outpin[var], GPIO.OUT) #set outpin as a output
MCUGear.initBase() ベースボードの初期化
#Universal Module address & IO Setting-------------
UNI = MCUGearModule.MCUGearModule(MCUGear.N_VDD_VDD_VDD,p.outpin[0])
1、好きな名前(ここではUNI)という名前でユニバーサル基板を定義します。
2、ユニバーサルモジュール基板裏面のアドレス設定 (AD2=3.3V AD1=3.3V AD0=3.3V) N_VDD_VDD_VDD
3、「モジュールの0番端子にp.out[0]出力を割り当てる。」という処理をしています。
#loop-----
while True: ループ
UNI.connect() Raspberry Piの端子 とモジュール端子とを接続
GPIO.output(p.outpin[0], True) 先ほど設定したp.out[0]を HIGH にします
time.sleep(0.5) 0.5秒待ちます
GPIO.output(p.outpin[0], False) 先ほど設定したp.out[0]を LOW にします
time.sleep(0.5) 0.5秒待ちます
UNI.disconnect() Raspberry Piの端子 とモジュール端子とを切断
except KeyboardInterrupt: tryから続いています[ctrl]+ [C]を押したら以下を実行して終了します。
print("detect key interrupt [ctrl]+ [C] \n")
UNI.disconnect() 念のためもう一度切断
GPIO.cleanup() Raspberry PiからGPIOの制御を一時無効にする
print("Program exit\n")
Pythonを使うことで、Raspberry Pi の GPIOのピンアサインを見なくともモジュールに信号線を割り当てることができるようになりました。
インストール方法はこちら
ホームページからダウンロードしたファイルを解凍し、
点滅プログラムを見てみましょう。
BlinkLEDフォルダにあるsample.pyの解説です。
基本的な流れ
1、初期化部分(コピーアンドペーストして使ってください。)
2、モジュールの初設定 ピンはモジュール定義のカッコ内に追加すればモジュール端子の0番、1番、2番…と増やせます。
例えば
,p.outpin[0], p.outpin[1], p.inpin[0]....)など 1モジュールあたり最大8端子割り当てられます。
出力ピンの最大値は6つ
p.outpin[0]、p.outpin[1]、p.outpin[2]、p.outpin[3]、p.outpin[4]、p.outpin[5]
入力ピンの最大値は2つ(何もつなげないと入力がLOWとなるので、スイッチなどを使う場合はHigh信号を与えてください)
p.inpin[0]、p.inpin[1]
SPIバスは import spidev を追加して
p.MISO、p.MOSI、p.SCLK、p.CE0
I2Cバスはモジュールには配線せずに、コネクタから出ているSDA SCLに直接接続してください。
ただしアドレスが競合しないように注意してください。
また、競合する場合はマルチファンクションモジュールで別系統のI2Cバスを増設できます。
UART端子は動作させるサンプルを用意していませんが、p.TX、p.RX で割り当てることができます。
設定、動作に関してはこちらを参考に設定できます。http://mcugear.blogspot.jp/2014/01/raspberry-pipython-uart.html
3、モジュールとの接続connect()と切断disconnect()で動作中に配線切替ができます。
#!/usr/bin/python このファイルがPythonの物と明示してください
import MCUGear MCU Gear のベースボードに関するプログラムが入っています
import MCUGearModule モジュールへの配線に関するプログラムが入っています
import p GPIOピン設定に関するプログラムが入っています
import RPi.GPIO as GPIO Raspberry Pi のGPIOを動かすプログラムが入っています
import time 時間に関するプログラムが入っています
if __name__=='__main__': メイン関数
#Start--------
try: とりあえず試しに以下のプログラムを動かしてみて、[ctrl]+ [C]を押して終了する
print("If you want to finish, press [ctrl]+ [C] \n")
#setup IOs-----
GPIO.setmode(GPIO.BCM) GPIOを使います
for var in range(0,len(p.inpin)-1): GPIOの入力を設定(通常このままコピペ)
GPIO.setup(p.inpin[var], GPIO.IN)
for var in range(0,len(p.outpin)-1): GPIOの出力を設定(通常このままコピペ)
GPIO.setup(p.outpin[var], GPIO.OUT) #set outpin as a output
MCUGear.initBase() ベースボードの初期化
#Universal Module address & IO Setting-------------
UNI = MCUGearModule.MCUGearModule(MCUGear.N_VDD_VDD_VDD,p.outpin[0])
1、好きな名前(ここではUNI)という名前でユニバーサル基板を定義します。
2、ユニバーサルモジュール基板裏面のアドレス設定 (AD2=3.3V AD1=3.3V AD0=3.3V) N_VDD_VDD_VDD
3、「モジュールの0番端子にp.out[0]出力を割り当てる。」という処理をしています。
#loop-----
while True: ループ
UNI.connect() Raspberry Piの端子 とモジュール端子とを接続
GPIO.output(p.outpin[0], True) 先ほど設定したp.out[0]を HIGH にします
time.sleep(0.5) 0.5秒待ちます
GPIO.output(p.outpin[0], False) 先ほど設定したp.out[0]を LOW にします
time.sleep(0.5) 0.5秒待ちます
UNI.disconnect() Raspberry Piの端子 とモジュール端子とを切断
except KeyboardInterrupt: tryから続いています[ctrl]+ [C]を押したら以下を実行して終了します。
print("detect key interrupt [ctrl]+ [C] \n")
UNI.disconnect() 念のためもう一度切断
GPIO.cleanup() Raspberry PiからGPIOの制御を一時無効にする
print("Program exit\n")
2013年12月6日金曜日
MCU Gear と Arduino 互換機との接続成功
Arduino互換機Seeeduino の少ないメモリー(SRAM)でもMCU Gearを6つ動かすことに成功しました。
Arduino IDE のシリアル通信を使うと、メモリーが非常に消費することがわかりましたので、今回はシリアル通信を使っていません。
他にもメモリーをあまり気にせずに使うには、モジュールのインスタンスを一つだけ生成して、PCに配線情報を保持してシリアルのコマンドインスタンスの配線情報を書き換えながら動作させる方法が考えられますが、それは後日試そうかと思います。
また、プログラムの使い方によってもモジュールの積層数は変動しますので、いろいろ試してみてください。
また、その他のファイルも大幅に削除したため、機能が単純になりました。
(5V系ボードを使う場合は電圧レベル変換基板を必ず使ってください。)
レベル変換基板のテストは前回のブログで紹介しました。
http://mcugear.blogspot.jp/2013/10/mcu-gear-5v-16mhz.html
レベル変換基板の販売準備をしようと思います。 サンプルプログラム
後日プログラムの詳しい解説をします。
Arduino IDE のシリアル通信を使うと、メモリーが非常に消費することがわかりましたので、今回はシリアル通信を使っていません。
他にもメモリーをあまり気にせずに使うには、モジュールのインスタンスを一つだけ生成して、PCに配線情報を保持してシリアルのコマンドインスタンスの配線情報を書き換えながら動作させる方法が考えられますが、それは後日試そうかと思います。
また、プログラムの使い方によってもモジュールの積層数は変動しますので、いろいろ試してみてください。
また、その他のファイルも大幅に削除したため、機能が単純になりました。
(5V系ボードを使う場合は電圧レベル変換基板を必ず使ってください。)
レベル変換基板のテストは前回のブログで紹介しました。
http://mcugear.blogspot.jp/2013/10/mcu-gear-5v-16mhz.html
レベル変換基板の販売準備をしようと思います。 サンプルプログラム
後日プログラムの詳しい解説をします。
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月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
で実行できます。
・Raspberry Pi Noobsで簡単リモートデスクトップ
・WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
・Pythonのセットアップ・・・人気のPythonで動かしてみる
・WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO
以下、昔の記事です。
RaspberryPiで簡単にADC、DACを使ってみたいと思います。
MCU Gearを使うと、例えば8chADモジュールを10個積めば80chのAD変換基板になるお化けな拡張ボードです。
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を使って分離します。
実際に今回のテストで動かした動画です。
このままでも安定して動かせますが、専用基板を作る予定です。
テスト用のプログラムも基板の販売前に検証してから公開しようと思います。
(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 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と接続できるのかを検証してみようと思います。
登録:
投稿 (Atom)