質問:
USB用センサーバス
Andi Giga
2016-09-06 13:01:22 UTC
view on stackexchange narkive permalink

http://www.raspiviv.com/

に似たプラグ&プレイ温室システムを構築したいのですが、バスシステムを考えていませんでした。現在バスシステムの経験。これまで、I2Cバス、Canバス、1-Wireに出くわしました。

要件:

  • 1〜20個のセンサー(温度、湿度)を接続したいラズベリーパイ3に。
  • ピンの編集ではなく、パイのUSBポートを使用したい(またはピンに適切なプラグ&playアダプターを使用したい*)
  • 必要があります。そのバスで利用できる安価なセンサーであること
  • 同じ種類のセンサーを持ち、ソフトウェア側で構成する機能
  • piまでのセンサー距離、最大10m、平均2〜5m

質問:

  • この目的に適したシステムはどれですか、なぜ、そして良いチュートリアルがありますか?
  • サンプルセットアップにはどのパーツが必要ですか?

*:パーツを簡単に接続できるようにするか、技術に詳しくないユーザーがパーツを接続できるようにする必要があります。

こんにちは。バスのおおよその長さ/センサーノードの距離を追加できますか?たとえば、I2Cは、ある程度の距離でも機能しますが、ICをボードレベルで接続することになっています。
センサーからコントローラーまで最大10mだと思います。おそらく2-5メートル以上。
質問を編集して、この追加情報を提供できます。これにより、将来の読者はコメントに比べて簡単になります。
ここでは、I2CやSPIよりもプログラミングが簡単だと思うのでUSBを好むことを意味します。これが当てはまる可能性はほとんどありません。 USBの利点は、潜在的な帯域幅がはるかに高いことです。通常、センサーで使用されない理由は、USBが必要ないためです(20 MB / sで温度データを読み取ることは非常に特別です...)。それらはUSB互換であり、*追加のハードウェアと費用が必要になります*が無意味です。
USBの要点は、ユーザーがセンサーをできるだけ簡単に接続できるようにしたいということです。技術に詳しくないユーザーにとってはばかげた証拠となるボードが存在する場合(おばあちゃんがこれを行っていると想像してください) )、センサーを配線するには、それも問題ありません。それを達成するために、私は開発側にもう少し努力したいと思います。
ああ。提案として(USBベースのセンサーを入手するのは難しく、コストがかかる可能性があると思いますが、それは単なる予感です。また、オンラインで一時的に一目見ただけで見つけたものには、ロギングなどの機能が含まれています。ほぼ確実にpiで動作しないプロプライエタリソフトウェアであり、USBデバイスのリバースエンジニアリングを開始するときは、開発時間が長くなると考えます)、ワイヤー上に単純なジャック(またはワイヤーで配線されたジャックのセット)を作成することを検討してください。 I2C)これはユーザーにとってより簡単になります。
One-wireは、プラグアンドプレイで最高の堅牢性を備えており、生のI2Cよりも少し高価ですが、多くのセンサーデバイスを入手できます。 https://www.maximintegrated.com/en/app-notes/index.mvp/id/1796
Z-Waveセンサーを確認することをお勧めします。 Z-Waveは、ホームオートメーションおよびIOTデバイス向けのワイヤレスの低電力規格です。 Raspberry Pi互換のソフトウェアツールはすでに存在し、メッシュベースのネットワークトポロジをサポートしているため、優れた範囲を備えています。彼らはまた、最近仕様を公開しました。これは、それを使用するためのより多くのツールがLinuxで利用可能になることを示唆しています。
五 答え:
Ghanima
2016-09-06 13:42:00 UTC
view on stackexchange narkive permalink

RS-485は、このタスクに適している可能性が高い別のバスです(ただし、技術的なやり過ぎかもしれません)。これは、単一のツイストワイヤでの差動信号に基づいているため、非常に堅牢で、複数のノードと最大4000フィートの距離を処理できます。USB-RS-485コンバータ(多くの場合、FTDI USBシリアルコンバータに基づく)は約で利用可能。 10ドルかそこら。ただし、センサー側では、安価なセンサーの供給が少し制限される場合があります。センサーノードを自分で作成する場合は、少なくともMAX485(または同等のトランシーバー)(それぞれ数ドル)とノード(ATinyなどの小型マイクロコントローラー)に関するインテリジェンスが必要になります。

関連項目:

指定された距離と20ノードの場合、I2Cは最低の周波数/速度設定で十分に機能する可能性があります(ここで説明)。 Piの専用I2Cピンを使用したくない場合は、USBからI2Cへの変換が可能です(これもFTDI USBシリアルコンバーターに基づいています)。 RS-485よりもI2C用のすぐに使用できるセンサーノードを見つける方がおそらく簡単です。

goldilocks
2016-09-06 17:13:38 UTC
view on stackexchange narkive permalink

この目的に適したシステムはどれですか。なぜ、優れたチュートリアルがありますか?

LinuxでUSBデバイスを操作するには、2つの基本的なアプローチがあります。

  • カーネルドライバー経由。

  • ユーザースペースusbfsインターフェース経由。

最初のものはより規範的であり、それについてのより多くの情報を見つけるでしょうが、これはオンラインチュートリアルよりも「本の長さ」の資料になる傾向がありますが、両方の数があります。 USBは複雑です。もちろん、Linuxドライバーは一般的に小さな世界でもあります。 Linuxカーネルの主要な開発者の1人であるGregKroah-Hartmanは、 Linux Device Drivers を共同執筆し、その第3版(別名「LDD3」)は無料で配布されています。 こちらがPDFこちらがオンライン版です。 USBの章を選択する2つの方法論のどちらに関係なく、基本についてはまともな入門書です。

usbfsインターフェースはおそらく十分に文書化されていません。ただし、Linuxバージョンの libusb(ク​​ロスプラットフォーム)で使用されているかどうかはわかりませんが、どちらの方法でもlibusbは存在します。 libusbが実際にどれほど完全であるかはわかりません。また、主要なドキュメントはここにあるようです(ホームページのリンクが機能しない場合)。

usbfsインターフェースのカーネルソースドキュメントに記載されています。、通常は / proc に含まれておらず(一部のドキュメントではそのように参照されている場合があります)、まったくマウントされていない可能性があります。もしそうなら、それはより一般的には / dev / bus / usb にあり、Raspbianで見つけることができます( / sys / bus / usb は機能的にあると思います異なる、ところで)。

KennetRunner
2016-09-06 18:14:21 UTC
view on stackexchange narkive permalink

別のオプションとして、Wifi / Httpを「バス」として使用することもできます。さまざまな数のIOピンを備えた ESP8266デバイスの多くのバージョンが(数ドル/ポンドで)すぐに利用できます。

基本的なESP8266-01にも2つのIOピンがありました。安価なセンサー(温度、湿度、圧力など)への一般的なインターフェイスであるI2Cとして使用できます。

次のようなもの:

  • Raspberry Pi、次のように設定Wifiアクセスポイント
  • 各センサーはESP8266に接続されています(I2CまたはストレートデジタルIOを介して)
  • ESP8266のコードはWifiAPに接続し、それ自体を登録/アナウンスします(そして取得します)構成データ)
  • ESP8266のコードは、スケジュールに従って(X秒ごとに)センサー値を読み取り、それをRaspberryPiに送信します。
Wifiは素晴らしいように聞こえますが、必要な電源は1つだけなので、通常のケーブル接続の方が良いと思います。
Christopher Biggs
2016-09-07 05:21:09 UTC
view on stackexchange narkive permalink

同様の状況で、私は2つのことを行いました。

  1. センサーをArduinoNanoに接続し、NanoをUSB経由でPiに接続します。 Node-REDとFirmataを使用してセンサーを読み取りました。 https://flic.kr/p/Kf7sLr(範囲、約5m、USBの設計限界。より広い範囲を取得するか、ブースターを試すことができます)。

  2. NodeMCUを実行しているESP8266モジュールにセンサーを接続し、センサーモジュールをWifi経由でPiで実行されているMosquitto MQTTサーバーに公開します: https://flic.kr/p/Kf7u1a (範囲:アンテナと障害物に応じて数十メートル)。 Pi上のソフトウェアは、MQTTサーバーを介してセンサーの更新をサブスクライブします。

  3. ol>
bruce
2016-09-07 22:38:19 UTC
view on stackexchange narkive permalink

私はI2Cをたくさん使用しており、これはデイジーチェーンに最適なプロトコルです。長距離を移動したい場合は、I2Cシグナルエンハンサーを使用できます。i2cを使用する利点はほとんどありません。

  1. 非常に使いやすく、コーディングはそれほど必要ありません。
  2. ハードウェアは最小限です。はんだ付けしたくない場合は、このラズベリーパイi2cハットを調べることができます。
  3. I2C通信に付属するセンサーは数百あります。したがって、ハードウェアを見つけるのはそれほど難しいことではありません。
  4. ol>

    このYouTubeビデオをチェックして、20以上のデバイスをラズベリーパイでチェーンする方法を示します。 ラズベリーパイのプラグアンドプレイ

それはUSBではありませんが、私が望むものにとてもよく似ています。デイジーチェーン内の同じタイプのセンサーをどのように区別できるか知っていますか? ic2の出口があるケースはありますか?彼らのウェブサイトでそれを見つけることができませんでした。
はい、ビデオをチェックアウトしてください。2つのi2cポートがあります。1つは入力用、もう1つは出力用です。これにより、リレーをデイジーチェーン接続しやすくなります。たとえば、これは[圧力センサー](https://www.controleverything.com/content/Altimeter?sku=MS8607-02BA01_I2CS)で、2つのポートがあります。 1つはラズベリーパイに接続し、もう1つは次のセンサーに接続します。
私が見たことはありますが、たとえば同じタイプの温度センサーが2つある場合、受信信号から、これがチェーンの最初であり、これが2番目であることがわかりますか?
とても簡単です。 2つの温度センサーがあるとします(ここですべての種類のコードを見つけることができます[Raspberry Pi I2Cライブラリ](https://github.com/ControlEverythingCommunity))。すべてのセンサーにはI2Cアドレスがあり、コードで読み取りたいセンサーを指定します。もし私があなただったら、4-5センサーから始めて、そこから行きます。すべてのセンサーは同じように機能するため、機能するものがほとんどなくなったら、追加するのは非常に簡単です。
そのため、センサーにジャンパーなどを付けて区別する必要はありません。私が尋ねているのは、例えばそのセンサーについて:https://www.controleverything.com/content/Temperature?sku = HTS221_I2CS説明には「0x4FI²C開始アドレス」と書かれているので、(同じ種類の)2つのセンサーが同じ場合はどうなるのか疑問に思いました。住所。
同じ種類の2つのセンサーを使用する場合は、それらが複数のアドレスをサポートしていることを確認してください。したがって、2つでこの問題を解決できます。1。同じアドレスを持たないアドレスを使用する2. i2cマルチプレクサ[I2Cマルチプレクサ]を使用する(https://www.controleverything.com/content/MUX?sku=PCA9547_I2CMUX)私は最初のオプションを選択します。そうすることで、i2cマルチプレクサを購入する必要がなくなります。


このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...