2017-02-02 10 views
1

Android搭載機器でIRレシーバを実装することは可能ですか?AndroidThingsを搭載したIRレシーバ

第一のアイデア:入力として
利用GPIOおよび変更をバッファリングして、メッセージをデコードするためのバッファを解析してみてください。
結果:
GPIOリスナーメカニズムがIR信号を観測するには遅すぎます。
もう1つの方法は、GPIO無限ループを読み取ることです。しかし、すべてのIRプロトコルは時間に強く依存し、この場合のJava(dalvik)はあまり正確ではありません。

第二アイデア
利用UART の所見:
メッセージのすべてのビットを観察するためにボー・レートを調整することが可能であると考えられるが、UARTのAPI等、スタートビットの設定量に必要とし、これはありますIRプロトコルはそのスキーマに適合しないため、問題です。

現時点では、UARTが唯一の方法ですが、大きな回避策になります。

+0

GPIOリスナーがどのくらい遅いか、要件は何ですか? – shinymetal

+0

どのくらい遅いかわかりませんが、IRメッセージを読むには遅すぎます。 例NECプロト​​コルhttp://www.sbprojects.com/knowledge/ir/nec.php をチェックしてください。状態を確認する必要があります。それぞれ560μsです。 –

答えて

3

重要な問題は、非リアルタイムシステムでは、タイミング制約のためにこの入力を直接解析することが難しいことです。これは、タイマ割り込みにアクセスできるマイクロコントローラに最も適したジョブです。安価なtinyAVRまたはPICを取得してセンサーを管理してください。

receiver sensor(すでにこれを行っているかもしれません)を使用して、信号の解析を簡単にすることもできます。これらのセンサーには復調器が含まれています。つまり、38kHzのパルス信号を処理する必要はなく、入力はより標準的なPWM波に変換されます。

+0

IMHO専用受信機センサーで問題が解決されません。受信機からの信号は、標準GPIO(1msあたり2つの状態変化)に対してはまだまだ高速であり、(アンドロイドのもの)UARTパッケージ方式には適合しません。試してみたいことは何ですか? –

+0

確かに、あなたは、最初のものなしで勧告の後半を読むように聞こえます。このセンサーは解析に役立ちますが、必要なのは、入力をキャプチャして確定的な方法でパルス幅を解決するMCUです。 – Devunwired

+0

@Devunwiredあなたは他のコンポーネントの間にこのmcu..basicallyを追加すると言っていますか? – sirvon

0

私はJavaでIR信号を処理することはできませんが、読み取りパルスが少なくともラズベリーパイの読み取り解像度よりも速いからです。私はあなたがc + +でラズベリーとndkで行うことができると確信しています。正式にはサポートされていませんが、有効にするにはいくつかの手口があります。 cのgpioへの書き込み方法については、How to do GPIO on Android Things bypassing Javaを参照してください。そこから、タイトなループで読むのは簡単なはずです。これまで私はJavaからトリガをフックしようとしていますが、私はcで割り込みを記述/インストールする方法については明確ではありません。

+0

これは多くの利点を提供する可能性は低いです。主な問題はJava-Native Interfaceの境界ではなく、ハードウェアタイマーに直接アクセスすることなく、適切なIRキャプチャに必要なパルス幅を確実に計算することができないことです。 – Devunwired

+1

タイトなループを実行し、サンプルを50倍以上実行し、遷移時間に注釈を付けてジッタを修正することができます。面倒ですが、改善することができます。 – Fabio

関連する問題