raspberrypi/Raspberry PiでIO制御
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2012/11/04からのアクセス回数 &counter;
** 参考資料 [#h43dfbb1]
ここからの例は、以下の資料を参考にしています。
- Raspberry Pi - A Quick-Start Guide
- [[Raspberry Pi I2C How-To ガイド>http://www.gvc-on.net/...
*** IOピン配置 [#s39d01c6]
[[RPi Low-level peripherals>http://elinux.org/RPi_Low-lev...
&ref(My-Pin-Layout.jpg);
** LED制御 [#dce587ec]
IOの制御の定番のLEDのオン・オフを試してみます。
*** ブレッドボードでの配置 [#d3f3db64]
最初に、3.3Vに接続してLEDが正常に点灯することを確認します。
抵抗は220Ωから1KΩの間と説明されていたので、手持ちの330Ωを...
LEDの極性は、線の長い方がアノードになっています。
&ref(led2.jpeg);
短いカソードを抵抗とつなげ、アノードに3.3V(IOピンの左上...
&ref(LED-pin.png);
*** WiringPiのインストール [#n61c0a6f]
RaspberryPiのIOを制御するためのライブラリWiringPiと制御コ...
[[Gordons Projects>https://projects.drogon.net/raspberry-...
が公開しています。
LEDと抵抗の結線が正しくできていることが確認できたら、Wiri...
最新のWiringPiは、gitを使っての配布に変わったので、git-co...
#pre{{
$ sudo apt-get install git-core
}}
ソースを配置するディレクトリを作成し、そこにインストール...
#pre{{
$ mkdir -p local/src
$ cd local/src/
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build
}}
これで、インストールが完了したので、gpioを使ってLEDのOn/O...
*** LEDのOn/Off [#k23fa0ca]
赤のLEDと同様に黄色のLEDも配置してみました。
&ref(LED-gpio.png);
- ブレッドボードのGND(黒の線)をPI-02の上から3番目のGrou...
- 赤のLED(緑の線)をPI-02の上から6番目のGPIO18に接続
- 黄色のLED(白の線)をPI-02の上から8番目のGPIO23に接続
gpioコマンドを使って以下のように入力してみてください。赤...
#pre{{
$ gpio -g mode 18 out
$ gpio -g write 18 1
$ gpio -g mode 23 out
$ gpio -g write 23 1
}}
- 1行目は、GPIO18のモードを出力にセット
- 2行目は、GPIO18に1を書き込み(セット)
- 1行目は、GPIO23のモードを出力にセット
- 2行目は、GPIO23に1を書き込み(セット)
LEDを消灯するには、書き込み値を1から0に変更します。
#pre{{
$ gpio -g write 18 0
$ gpio -g write 23 0
}}
** I2C接続を試す [#g133bee3]
LEDの制御ができたので、今度はI2C接続を試してみます。
I2Cデバイスとして、エレキジャックNo.8の付録に付いていたLM...
RaspberryPiからI2Cを使う例として、
[[Raspberry Pi I2C How-To ガイド>http://www.gvc-on.net/?p...
に沿って動作を確認することにします。
*** RaspberryPiでI2Cを使えるようにする [#f82dc47c]
Raspbianでは、I2Cデバイス用モジュールがあるものの、初期設...
まれないようになっています。
そこで、以下のファイルを編集します。
/etc/modules に以下一行を追加
#pre{{
i2c-dev
}}
/etc/modprobe.d/raspi-blacklist.conf のi2c-bcm2708の部分...
#pre{{
#blacklist i2c-bcm2708
}}
設定を反映するために、rebootします。
#pre{{
$ sudo reboot
}}
再起動が完了したら、I2Cモジュールが組み込まれたか確認しま...
#pre{{
$ dmesg | grep i2c
[ 4.597707] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller...
[ 4.758162] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller...
[ 12.827074] i2c /dev entries driver
}}
のようにドライバーが組み込まれていることを確認します。
I2C用パッケージをインストールします。
#pre{{
$ sudo apt-get install i2c-tools
}}
*** LM73との接続 [#ad1e993a]
LM73をブレッドボードにセットし、以下のように接続します。R...
&ref(LM73-setting.png);
LM73のピン番号を1番から反時計回りに付けた場合、以下のよう...
- GNDは、2番
- VDDは、3番
- SCLは、4番
- SDAは、6番
LM73のSCLをRaspberryPiの左上から3番目SCL(白線)、LM73のS...
*** LM73のI2Cアドレス [#ff2c65de]
i2cdetectコマンドを使ってLM73のI2Cアドレスを確認します。
#pre{{
$ sudo i2cdetect 0
WARNING! This program can confuse your I2C bus, cause dat...
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- 4c -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
}}
この結果から4CがLM73のI2Cアドレスであることが確認できまし...
*** LM73から温度を取り出す [#me119003]
i2c-toolを使って以下のスクリプトを実行します。((onusayさ...
#pre{{
$ cat <<\EOF >LM73.sh
#!/bin/bash
# set 14bit resolution
sudo i2cset -y 0 0x4c 0x04 0x60
sudo i2cset -y 0 0x4c 0x00
hexraw=$(sudo i2cget -y 0 0x4C 0x00 w)
while [ "$hexraw" == "" ]
do
hexraw=$(sudo i2cget -y 0 0x4C 0x00 w)
done
msb=$(echo ${hexraw:4:2})
lsb=$(echo ${hexraw:2:2})
dec=$(printf "%d\n" "0x$msb$lsb")
echo "scale=4; $dec*0.03125/4" | bc
EOF
$ chmod +x LM73.sh
}}
LM73の実行には、bcコマンドが必要なので、以下のコマンドでb...
#pre{{
$ sudo apt-get install bc
}}
LM73.shの実行結果は、以下のようになりました。
#pre{{
$ ./LM73.sh
13.4332
}}
[[raspberrypi/mbed互換ライブラリの移植]]では、ここまで説...
*** プログラムのミスについて [#ne20c1d6]
onusayさまより、補正の係数が0.125ではないかとのご指摘を頂...
上記のプログラムに以下のチェックプリントを挿入しました。
#pre{{
echo $hexraw
echo $msb $lsb
echo $dec
}}
この結果、以下の出力がありました。
#pre{{
0x940a
0a 9
169
10.5625
}}
LM73には、14bitモード測定するように初期化しているので、0x...
このmsb, lsbを取得する部分でバグがありました。
また、補正定数は、0.125ではなく、0.03125となり、さらに4...
データシートのTable 4. 14-bitで確認しました。
以上、お詫びして訂正します。
** コメント [#rc1f1933]
#vote(おもしろかった[217],そうでもない[2],わかりずらい[9])
皆様のご意見、ご希望をお待ちしております。
- 0.0781っておかしくないですか -- [[onusay]] &new{2013-03...
- この部分は、上記のサイトの例をそのまま使い、接続確認的...
- LM73の仕様書をみると0.125になりませんか? -- [[onusay]]...
- 確かにダブルミスをしておりました。修正し、補足説明を追...
- LEDのON/OFF を参考にして、Mathematica で制御できました...
- 「エレキジャックNo.8の付録に付いていたLM73という温度セ...
- LM73 温度センサーを手に入れることができた。「エレキジャ...
- ysatoさん、よかったですね。もっと入手のよいもので試して...
- IOピン配置の図ですが、GPIO21(PCM_DOUT)ってありますが、2...
- LM73による温度測定をMathematicaを使ってプロットできまし...
- Vernier温度センサーによる温度測定をMathematicaでプロッ...
- Mathematicaと外部センサーの連携成功おめでとうございます...
- 測定した温度データを Dropbox にアップロードできました。...
- 温度センサーLM73 と Vernier の測定データを比較した。温...
- すごい、それはLM73は精度がよいとことの証明ですね! -- [...
- marimoさんへ、私も同じ疑問を持ってました。2種類のpin位...
- ysatoさま、フォロー頂きましてありがとうございます。今後...
- このページのアクセス数が3万回を越えているのに驚きまし...
- ysatoさま、お知らせ頂きましてありがとうございます。これ...
- このページのアクセス数が 4万回を越えました。おめでとう...
- ysatoさま、ありがとうございます。まったく気づいておりま...
- このページのアクセス数が 5万回を越えました。おめでとう...
- このところInterfaceやトラ技でRaspberry Pi2の記事がある...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2012/11/04からのアクセス回数 &counter;
** 参考資料 [#h43dfbb1]
ここからの例は、以下の資料を参考にしています。
- Raspberry Pi - A Quick-Start Guide
- [[Raspberry Pi I2C How-To ガイド>http://www.gvc-on.net/...
*** IOピン配置 [#s39d01c6]
[[RPi Low-level peripherals>http://elinux.org/RPi_Low-lev...
&ref(My-Pin-Layout.jpg);
** LED制御 [#dce587ec]
IOの制御の定番のLEDのオン・オフを試してみます。
*** ブレッドボードでの配置 [#d3f3db64]
最初に、3.3Vに接続してLEDが正常に点灯することを確認します。
抵抗は220Ωから1KΩの間と説明されていたので、手持ちの330Ωを...
LEDの極性は、線の長い方がアノードになっています。
&ref(led2.jpeg);
短いカソードを抵抗とつなげ、アノードに3.3V(IOピンの左上...
&ref(LED-pin.png);
*** WiringPiのインストール [#n61c0a6f]
RaspberryPiのIOを制御するためのライブラリWiringPiと制御コ...
[[Gordons Projects>https://projects.drogon.net/raspberry-...
が公開しています。
LEDと抵抗の結線が正しくできていることが確認できたら、Wiri...
最新のWiringPiは、gitを使っての配布に変わったので、git-co...
#pre{{
$ sudo apt-get install git-core
}}
ソースを配置するディレクトリを作成し、そこにインストール...
#pre{{
$ mkdir -p local/src
$ cd local/src/
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build
}}
これで、インストールが完了したので、gpioを使ってLEDのOn/O...
*** LEDのOn/Off [#k23fa0ca]
赤のLEDと同様に黄色のLEDも配置してみました。
&ref(LED-gpio.png);
- ブレッドボードのGND(黒の線)をPI-02の上から3番目のGrou...
- 赤のLED(緑の線)をPI-02の上から6番目のGPIO18に接続
- 黄色のLED(白の線)をPI-02の上から8番目のGPIO23に接続
gpioコマンドを使って以下のように入力してみてください。赤...
#pre{{
$ gpio -g mode 18 out
$ gpio -g write 18 1
$ gpio -g mode 23 out
$ gpio -g write 23 1
}}
- 1行目は、GPIO18のモードを出力にセット
- 2行目は、GPIO18に1を書き込み(セット)
- 1行目は、GPIO23のモードを出力にセット
- 2行目は、GPIO23に1を書き込み(セット)
LEDを消灯するには、書き込み値を1から0に変更します。
#pre{{
$ gpio -g write 18 0
$ gpio -g write 23 0
}}
** I2C接続を試す [#g133bee3]
LEDの制御ができたので、今度はI2C接続を試してみます。
I2Cデバイスとして、エレキジャックNo.8の付録に付いていたLM...
RaspberryPiからI2Cを使う例として、
[[Raspberry Pi I2C How-To ガイド>http://www.gvc-on.net/?p...
に沿って動作を確認することにします。
*** RaspberryPiでI2Cを使えるようにする [#f82dc47c]
Raspbianでは、I2Cデバイス用モジュールがあるものの、初期設...
まれないようになっています。
そこで、以下のファイルを編集します。
/etc/modules に以下一行を追加
#pre{{
i2c-dev
}}
/etc/modprobe.d/raspi-blacklist.conf のi2c-bcm2708の部分...
#pre{{
#blacklist i2c-bcm2708
}}
設定を反映するために、rebootします。
#pre{{
$ sudo reboot
}}
再起動が完了したら、I2Cモジュールが組み込まれたか確認しま...
#pre{{
$ dmesg | grep i2c
[ 4.597707] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller...
[ 4.758162] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller...
[ 12.827074] i2c /dev entries driver
}}
のようにドライバーが組み込まれていることを確認します。
I2C用パッケージをインストールします。
#pre{{
$ sudo apt-get install i2c-tools
}}
*** LM73との接続 [#ad1e993a]
LM73をブレッドボードにセットし、以下のように接続します。R...
&ref(LM73-setting.png);
LM73のピン番号を1番から反時計回りに付けた場合、以下のよう...
- GNDは、2番
- VDDは、3番
- SCLは、4番
- SDAは、6番
LM73のSCLをRaspberryPiの左上から3番目SCL(白線)、LM73のS...
*** LM73のI2Cアドレス [#ff2c65de]
i2cdetectコマンドを使ってLM73のI2Cアドレスを確認します。
#pre{{
$ sudo i2cdetect 0
WARNING! This program can confuse your I2C bus, cause dat...
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- 4c -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
}}
この結果から4CがLM73のI2Cアドレスであることが確認できまし...
*** LM73から温度を取り出す [#me119003]
i2c-toolを使って以下のスクリプトを実行します。((onusayさ...
#pre{{
$ cat <<\EOF >LM73.sh
#!/bin/bash
# set 14bit resolution
sudo i2cset -y 0 0x4c 0x04 0x60
sudo i2cset -y 0 0x4c 0x00
hexraw=$(sudo i2cget -y 0 0x4C 0x00 w)
while [ "$hexraw" == "" ]
do
hexraw=$(sudo i2cget -y 0 0x4C 0x00 w)
done
msb=$(echo ${hexraw:4:2})
lsb=$(echo ${hexraw:2:2})
dec=$(printf "%d\n" "0x$msb$lsb")
echo "scale=4; $dec*0.03125/4" | bc
EOF
$ chmod +x LM73.sh
}}
LM73の実行には、bcコマンドが必要なので、以下のコマンドでb...
#pre{{
$ sudo apt-get install bc
}}
LM73.shの実行結果は、以下のようになりました。
#pre{{
$ ./LM73.sh
13.4332
}}
[[raspberrypi/mbed互換ライブラリの移植]]では、ここまで説...
*** プログラムのミスについて [#ne20c1d6]
onusayさまより、補正の係数が0.125ではないかとのご指摘を頂...
上記のプログラムに以下のチェックプリントを挿入しました。
#pre{{
echo $hexraw
echo $msb $lsb
echo $dec
}}
この結果、以下の出力がありました。
#pre{{
0x940a
0a 9
169
10.5625
}}
LM73には、14bitモード測定するように初期化しているので、0x...
このmsb, lsbを取得する部分でバグがありました。
また、補正定数は、0.125ではなく、0.03125となり、さらに4...
データシートのTable 4. 14-bitで確認しました。
以上、お詫びして訂正します。
** コメント [#rc1f1933]
#vote(おもしろかった[217],そうでもない[2],わかりずらい[9])
皆様のご意見、ご希望をお待ちしております。
- 0.0781っておかしくないですか -- [[onusay]] &new{2013-03...
- この部分は、上記のサイトの例をそのまま使い、接続確認的...
- LM73の仕様書をみると0.125になりませんか? -- [[onusay]]...
- 確かにダブルミスをしておりました。修正し、補足説明を追...
- LEDのON/OFF を参考にして、Mathematica で制御できました...
- 「エレキジャックNo.8の付録に付いていたLM73という温度セ...
- LM73 温度センサーを手に入れることができた。「エレキジャ...
- ysatoさん、よかったですね。もっと入手のよいもので試して...
- IOピン配置の図ですが、GPIO21(PCM_DOUT)ってありますが、2...
- LM73による温度測定をMathematicaを使ってプロットできまし...
- Vernier温度センサーによる温度測定をMathematicaでプロッ...
- Mathematicaと外部センサーの連携成功おめでとうございます...
- 測定した温度データを Dropbox にアップロードできました。...
- 温度センサーLM73 と Vernier の測定データを比較した。温...
- すごい、それはLM73は精度がよいとことの証明ですね! -- [...
- marimoさんへ、私も同じ疑問を持ってました。2種類のpin位...
- ysatoさま、フォロー頂きましてありがとうございます。今後...
- このページのアクセス数が3万回を越えているのに驚きまし...
- ysatoさま、お知らせ頂きましてありがとうございます。これ...
- このページのアクセス数が 4万回を越えました。おめでとう...
- ysatoさま、ありがとうございます。まったく気づいておりま...
- このページのアクセス数が 5万回を越えました。おめでとう...
- このところInterfaceやトラ技でRaspberry Pi2の記事がある...
#comment_kcaptcha
ページ名:
SmartDoc