だいぶ忘れてたが、しばらくぶりにとりくんだらうまくいった。

やりたいこと

  • ヘッドフォン出力から UART 信号を入力する
  • (-1V〜1V) ぐらいを想定。何もしてないときは0V
  • 300mV ぐらいでも動いてほしい
  • UART へ出力する
    • 何もないときはHIGHになってほしい
    • 負を出力したときだけLOWになってほしい

シミュレーション

こんな回路で

入出力

入出力DCスイープ

回路の設計

1石で非反転にしたいのでベース接地とした。ヘッドフォン出力を入力にすることを想定しているので入力インピーダンスはそれほど高くなくても良いだろう。この回路の入力インピーダンスは約100Ω(100Ωと20kΩの並列)

そして出力インピーダンスは100kとかなり大きいがデジタル入力なのでたぶん大丈夫だろう……

バイアスは0Vから飽和になるように選び、負の出力のときだけLOWに。

実験

赤が入力(ヘッドフォン出力)、黄がUARTへの出力

4800baud

9600baud

9600baud 拡大

受信側はよくあるFTDI チップのUSBシリアル変換のもので、screen でデバイスファイルを指定して見ている。どのボーレートでも問題なく受信できた。

WebAudio 側の実装

まだ実験的なページしか作っていない。これでだいたいうまくいきそうなので汎用的に使えるようにしたい。

メモ

これ以上簡単な回路にはならない気がする。

最初オーディオ出力がハイになるときにスパイクが出てしまう。これは出力に100pFぐらいつけたらだいぶ良くなるが、別段つけなくても問題はなさそう。

なお ASUS Zenfone2 で実験を行なった。他のデバイスだとうまくいかないケースがあるかもしれない。

TODO

3.3V 版もつくる。たぶん↓でよさそう

  1. トップ
  2. tech
  3. WebAudio 直結 UART