したがって、一般的な高レベルの観点から、シリアルデバイスからデータを取得し、このデータをBluetooth経由で送信する必要があります。 Bluetoothモデムを選択しました。 arduinoに接続する方法を理解しています。ただし、arduinoと通信するシリアルデバイスをフックする方法がわかりません。
同時シリアル接続をやりすぎているようです。
したがって、一般的な高レベルの観点から、シリアルデバイスからデータを取得し、このデータをBluetooth経由で送信する必要があります。 Bluetoothモデムを選択しました。 arduinoに接続する方法を理解しています。ただし、arduinoと通信するシリアルデバイスをフックする方法がわかりません。
同時シリアル接続をやりすぎているようです。
シリアルプロトコルは、ほとんどの場合、異なるアドレス指定スキームを持つマスター/スレーブ構成を使用します。
ライブラリ Mikal Hartによる NewSoftSerial を使用すると、ユーザーはシリアル通信用の割り込み駆動型ソフトウェア(UART周辺機器などのハードウェアではなく)ルーチンを実装できます。必要に応じて使用しますが、干渉する割り込みのデバッグは、ポーリングルーチンのデバッグよりも難しいことに注意してください(これは明らかにデフォルトのライブラリが行うことです)。
たぶんソフトウェアシリアルを見てください-それは複数のシリアル接続を可能にします。 Arduinoの任意のデジタルピンをシリアル通信に使用でき、通常のシリアルピンを引き続きBluetoothモデムに使用できます。
はい、ソフトウェアシリアル(上記のリンクもあります)を使用することがあなたの答えです。同時にarduinoで他の多くの重いことを行わない限り、かなり堅牢であり、ボーレートは賢明なものです。モデムまたはデバイスにハードウェアUARTを使用し、ソフトウェアシリアルポートにリンクするかどうかを選択します。
両方のデバイスにUARTを使用していると想定していますが、使用している場合は、ループ内にarduinoは必要ないことをご存知ですか?デバイスをblutoothモデムのUART入力/出力に直接配線するだけで(両方がTTLまたはその他の互換性のある電圧を使用していることを確認してください)、SPPを使用してBluetoothリンクのもう一方の端でデータを取得できます(とにかく私が行うように)想定)
ジム
私が覚えていることから、arduinoでUSARTとSPI、またはUSARTとI2Cを同時に使用できるはずです。ブルートゥースとシリアルデバイスの詳細を教えていただければ、誰かがあなたに決定的な答えを与えることができるはずです。
最も速い(制限はありますが)方法は、読み取りたいデバイスを(非同期シリアルストリームであると仮定して)AVRのRXに接続し、次にAVRTXピンをBTモジュールのRXピンに接続することです。次に、UARTから読み取り、必要な処理を実行して(またはまったく処理せずに)、UARTに書き戻すことができます。
主な制限は、BT無線とのボーレートです。デバイスは一致する必要があります。ただし、ほとんどのBT無線ではボーレートを調整できます。また、一方向の通信で立ち往生しています。
処理を行っていない場合は、直接接続できます。
より簡単なオプションの1つは、シリアルインターフェイスを備えたBluetoothモジュールを使用して、転送するシリアル回線に接続することです。Arduinoを追加/プログラムする必要はありません。