kazuki538
Posts: 2
Joined: Mon Oct 05, 2015 12:41 pm

GrovePi+を使用したシリアル通信の返却値について

Mon Oct 05, 2015 1:06 pm

GrovePi+を使用したシリアル通信の返却値について

こんにちは。

ここ最近RaspberryPiを触り始めたものです。
現在、下記構成でCo2濃度取得を行おうと奮闘しております。
RaspberryPi B+
GrovePi+
Co2センサー(http://www.seeedstudio.com/wiki/Grove_-_CO2_Sensor)

Co2センサーはGrovePi+のRPISERに接続しております。

ソースは下記を参考に製造しております。
https://github.com/DexterInd/GrovePi/bl ... _sensor.py
修正点としては、56行目をコメントアウトして59行目を復帰させています。

そこでソースを実行すると、なぜかあまりにもありえない数値が取得出来ましたので、
ソースに手を加え、リードのタイミングで返却値の配列を出力するようにしました。
結果が以下です。
[11, 32, 0, 8, 112, 0, 21, 0, 0]
[8, 66, 40, 4, 1, 32, 164, 164, 192]
[16, 195, 139, 9, 0, 17, 14, 224, 118]
[3, 68, 48, 4, 2, 33, 134, 44, 128]
[193, 128, 62, 0, 84, 5, 33, 9, 67]
[6, 133, 32, 18, 24, 32, 0, 39, 36]
[72, 71, 102, 40, 56, 0, 65, 19, 63]
[136, 184, 30, 66, 164, 17, 2, 37, 90]
[2, 35, 0, 9, 1, 16, 213, 144, 48]

仕様書(http://www.seeedstudio.com/wiki/images/ ... eet_EN.pdf)では

[255, 134, XXX, XXX, XXX, 0, 0, 0 XXX]

のような型で返却されることになっておりましので、おかしいと思い、77行目のリードを
CO2.inp = ser.read(9) → CO2.inp = ser.readline()
のように変更し、直後に
print "ListLength:", len(CO2.inp)
を追加して配列数を出力しましたところ、
ListLength: 194
ListLength: 54
ListLength: 12
ListLength: 201
ListLength: 96
ListLength: 36
ListLength: 33
ListLength: 306
という結果になりました。

上記のように配列数が9個で返却される予定のものが考えられない数で返却されておりました。
この場合原因に考えられることはなにかありますでしょうか?

ソフトウェア畑の人間の為、ハードの知識に乏しく解決の糸口がつかめません。
また、初めてフォーラムに投稿することもあり拙い内容で申し訳ございませんが、
ご協力のほどよろしくお願い致します。

mitsunori
Posts: 45
Joined: Mon Dec 31, 2012 9:03 am
Location: Tokyo, Japan

Re: GrovePi+を使用したシリアル通信の返却値について

Sun Oct 11, 2015 9:29 am

kazuki538さん

mitsunoriと申します。初めまして。

時間が経ってしまったので解決済みでしょうか?
もしまだのようでしたら思い当たるものをいくつかあげますのでお試しください。

(1) Co2センサーはGrovePi+のRPISERに接続、とありますが、配線としてセンサーとRPIのシリアルポートの接続
はあっているでしょうか?たとえば、TXDとRXDが逆につながれていたりしませんか?

(2) シリアルポートの設定はあっているでしょうか?
Co2センサーのマニュアルには以下に相当することが書かれていませんので組み合わせを変更してみてくださ
い。
恐らく以下の通りになるのでしょうが、念のためご確認ください。

ボーレート 9600bps
スタートビット 1
ストップビット 1
パリティ 無し
データ 8bit

(3) Co2センサーをPCのシリアルポートに接続した場合、データの送受信はできているでしょうか?

(4) /dev/ttyAMA0は、標準でシリアルコンソールに使用されています。シリアルコンソールの設定は無効にしてい
るでしょうか?(参考の(1), (2), (3)参照)

(5) オシロスコープをお持ちでしたら、TXD、RXDの波形を観測して期待通りになるように合わせこんでください。

シリアル通信がうまくいかない場合の対策例を並べてみました。
以上ご参考まで。

mitsunori

参考:
(1) http://detail.chiebukuro.yahoo.co.jp/qa ... 1142359911
(2) http://nanicananica.blog.fc2.com/blog-entry-14.html
(3) http://chicklab.blog84.fc2.com/blog-entry-46.html

kazuki538
Posts: 2
Joined: Mon Oct 05, 2015 12:41 pm

Re: GrovePi+を使用したシリアル通信の返却値について

Tue Oct 13, 2015 10:03 am

mitsunoriさん

こんにちは。ご返信ありがとうございます。

何点か試してみましたので、結果をご報告します。

(1) 接続について
 配線について確認しましたところ問題は見つかりませんでした。
 試しに逆につけてみましたが特に反応がありませんでした。
   返却値 → [0,0,0,0,0,0,0,0]

(2) シリアルポートの設定について
 設定を確認しましたところ問題なりそうなところは見当たりませんでした。

(3) PCへの直接続
 直接続してみたところ返却値に変化がありました。
 ListLengthが3~15の間で遷移するようになりました。
 配列の中身を確認すると9以上になる場合、先頭配列から不定数が入り、後半9個で正しい配列変数になるようです
  例 → [10, 251, 0, 114, 255, 134, 2, 24, 76, 0, 0, 0, 112]

(4) シリアルコンソールの設定について
 有効になっておりましたので、無効に設定したところRPISERへ接続してもPCへの直接続した場合と同様の結果になりました。
 また配列9個になる確率も上がり、1/2程の確率で正しく取得できるようになりました。

(5) オシロスコープについて
 所持しておりませんので計測できませんでした。

その他自前で調査した内容
 Serial変数宣言時に設定するTimeOut値を変更
 0.1~1.0の間で0.1刻みで調査
  → 0.6が一番安定する
  → Raspberry Piを停止、24時間放置して再度測定
     → 0.3が一番安定する

以上です。
100%にはなりませんでしたが、このまま他の方法も試してみようと思います。

最後になりましたがmitsunoriさん情報のご提供ありがとうございました。

mitsunori
Posts: 45
Joined: Mon Dec 31, 2012 9:03 am
Location: Tokyo, Japan

Re: GrovePi+を使用したシリアル通信の返却値について

Tue Oct 13, 2015 1:25 pm

kazuki538さん

mitsunoriと申します。

動き始めたとのことおめでとうございます。

さて、GrovePi+の回路図で以下を確認しました。
回路図 : https://github.com/DexterInd/GrovePi/bl ... _schem.pdf

(1) Raspberry Piの拡張コネクタにおける信号は3.3Vインタフェース
(2) GrovePi+はレベルコンバータを搭載しており、RPISERコネクタは5Vインタフェース
(3) Co2センサーは3.3Vインタフェース
(4) GrovePi+に搭載のレベルコンバータ(TXB108)は、VIHが0.65*VCCIとなっていますので
VIH = 0.65 * 5 = 3.25V

GrovePi+とCo2センサーの信号レベルが合いませんね。
CO2センサーのインタフェースは3.3Vです。仮にVOH=VCCになったとしても、ケーブルを通
して(4)のレベルを満たすのは難しいかもしれません。ほんのわずかなことで通信エラーに
なりそうです。恐らく動作が不安定なのはこの辺りが原因と推測します。

RaspberryPiは3.3Vインタフェースですので直接引き出せば通信できるように思います。
GrovePi+の写真を見るに、RaspberryPiに直接接続しているコネクタの端子が長く出ている
ようですので、ここからTXD, RXDを引き出してみてはいかがでしょうか?

また、それでも不安定なようでしたら、信号線とGNDを撚り対線にしてみるとよいかもしれません。

以上ご参考まで。

mitsunori

mitsunori
Posts: 45
Joined: Mon Dec 31, 2012 9:03 am
Location: Tokyo, Japan

Re: GrovePi+を使用したシリアル通信の返却値について

Tue Oct 13, 2015 11:22 pm

kazuki538さん

毎度お世話様です。mitsunoriです。

先のコメントですが、お気づきとは思いますがもしGrovePi+のコネクタ端子から信号を
引き出すを実験されるのでしたら暫定レベルの動作確認でお願いいたします。

このまま運用したら出力端子を衝突させていますので、動作が不安定になるだけでなく
GrovePi+に搭載のレベルコンバータ(TXB108)またはCo2センサーの出力バッファのど
ちらかがいつの日か壊れることになることになります。

mitsunori

Return to “日本語”

Who is online

Users browsing this forum: No registered users and 3 guests