■もう一年越しになる新型の家電コントローラーにようやっとXBeeモジュールを追加した。追加したついでに以前からなんとかしたかったホストプロセッサとの通信モニタを作ることにしました。
XBeeとプロセッサ間は相互に送受信を交わす格好になっているのだけど、UARTは全二重通信経路で、双方が送信線を持っている。Xbeeとプロセッサの間で交わされる通信を脇からモニタする場合、単純にUSB-UART(FTTI)のI/Fをつけると、どちらかの送信データしか拾えない。双方の送信線を併せてUSB-UARTの受信につなげてしまうと、混信してしまってよくない。
2系統ある送信データを拾って合成するけど混信しないようにすることが必要で、あれこれ回路を考えた。UARTが正論理なら単純に双方の信号を合成すればよく、混信しないようにダイオードでもかませればいいのだろうけど、負論理なので、単純に合成してしまうと信号が消えてしまう。合成される信号はどちらかの信号が0なら0、両方1の場合のみ1にする必要がある。
ダイオードで合成するのを基本として、どちらかの信号が0になったらもう片方も0に落として…などと考えていたのだけど、これ、単純なAND演算です。AND演算ならロジックICがあるんじゃないかと思ったらもちろんありました。ロジックICって昔、ショートさせた時の用心とか思って余分に買っていたなと探したら、ありました。74HC08AP。3.3Vでも動作します。
このICはANDが4回路あるのでもったいないと言えばもったいないのですが、1回路だけ使ってAND合成した出力をUSB-UARTのRXにつなげて無事に読み込めるようになりました。
プロセッサとXBee双方のやりとりをモニタできるようになったので、これまでちょっと面倒で手を出さないできた、プロセッサからXBeeにATコマンドを投げる実装を作りこみたいと思います。XBeeのステータスを監視して、接続性を良くしたいと思っています。