2017-04-17 29 views
0

に成功した作業のに対し、私はArduinoのUNOにDHT11センサーを接続したとthe one from Arduino websiteに基づいてa simple libraryを書きました。私はYocto Linuxを実行しているArduinoの拡張ボードでインテルエジソンにDHT11を接続したい瞬間DHT11センサ故障いくつかの時間前、RPI

。ライブラリをPythonに書き直そうとしているうちに、その言語でマイクロ秒のスリープの問題が予想され、最後にを使ってRaspberry Pi DHT11 Libraryをリメイクすることに決めました。しかし、センサは機能しません。私はthe topic on Intel forumがEdisonポートを速いIN/OUT切り替え不可能だと非難していました。 2本のワイヤを使った提案された解決法も私を助けませんでした。

この導入後、いくつかの質問は、私の心に来る:

  1. ラズベリーとエジソンの両方が本当の プロセッサとLinuxでのコンピュータシステム(アルドゥイーノとは異なり、単純な マイクロコントローラで構成されている)、その理由であるため、 DHT11の問題に直面している人は エジソンですが、ラズベリーを使用している人はいませんか?

  2. これらの問題の原因は何ですか?それは エジソン(RPiは同じですか、 それを持っていない?)、デジタルピンの脆弱性または両方の非決定論的なOSのタイミングで接続されていますか?

  3. この使用2本のワイヤ(ダイオードと代替的 )を解決することも可能ですか?提案されたトライステート バッファがなければ不可能かもしれませんか?

  4. エジソンに1-Wireデバイスを接続する最も簡単な方法は何ですか?

答えて

0

ご存じのように、確定的タイミングが必要です。 EdisonやPCなどのコンピューティングプラットフォームでは、確定的タイミングを実行することはできません。あなたはusleep()を使ってそれに近いところに行くかもしれませんが、あなたのアプリはいつでも中断され、あなたのタイミングを乱すかもしれません。

GPIOの確定的タイミングがないシステムを使用する場合は、インターフェイスを使用してセンサを接続します。そのインターフェースは、決定的なタイミングを有する小さなマイクロを使用すべきである。 (つまり、Pic、ATTINYなど)。

  • OR- システム上で、UARTなどの確定的タイミングを持つ周辺機器を使用してください。

私は数年前にUARTを使って1-Wireプロトコルを実行する方法についてブログ記事を書きました。 http://wphost.spider-e.com/?p=231

+0

しかし、リンクされたライブラリはRPi上でどのようにうまく動作しますか?それは高速gpio切り替えにも依存します。 –

+0

@BartłomiejSzałach適切なカーネルドライバを使用すると、信号の変化に応答するのに十分速いかもしれません。それ以外の場合は、1)MCUを追加使用する、2)内部MCUを使用する、かなり遅い、3)リアルタイムOS(Linux RT、Zephyrなど)を使用するオプションがあります。 – 0andriy

関連する問題