赤外線送受信の実験
赤外線送信機と赤外線受信をそれぞれPICを使って製作.
開発環境はC言語(HI-TECH PICC-LITE).赤外線は通常38kHzで変調されているので,
まずはLEDを13マイクロ秒ごとにON-OFFするプログラム作成.
10回点減した後に10回分の待ち時間を入れた.(ただし,プログラムは動けばいい程度のレベル)
実験回路はこの通り.中央左が赤外線LED,右が受信機.
オシロスコープで波形の観測.上がLEDの発光波形.下が受信機の出力波形.
発振周波数は38kHzより低くなっている.
これは,処理時間が13マイクロ秒の待ち時間と比べて無視できない程度であるため.
待ち時間を減じて周波数を調整できるが,受信できているので微調整は省略.
次にパルス幅変調による多チャンネル化を考える.簡単化してデジタル2チャンネルの送信.
プログラムは次の通り,ポートAから2チャンネル分のデジタル値を入力し,
パルス幅を変えて2チャンネル分を順に出力する.その後十分なインターバルを入れてある.
実験した回路.スイッチ2つを並べて配置している.
スイッチはプルアップされ,押すとLレベル,離すとHレベルが入力される.
2チャンネル分の波形.スイッチを押さない場合は2チャンネルともパルス幅は同じ.
片方のスイッチを押したところ,2チャンネル目のパルス幅が短くなっている.
この信号を受信するプログラムと回路を作成.プログラムは次の通り.
Hレベルが続くインターバルを検出した後,パルス幅をカウントしてHレベルかLレベルかを判断する.
2チャンネル分読み取った後,ポートBに出力する.
実験回路の写真.左のPICで作られた信号が赤外線LEDで送られ,受信機で受信された信号がPICで解析され,
2チャンネル分の送受信を行う.
左側のスイッチを押した時,受信回路の左のLEDが消灯(負論理のため).
右のスイッチを押した時,右のLEDが消灯.
デジタル2チャンネル送受信の動画.
--追記--
Cのソースはあまり参考にしないでください.動けばいい,程度のものです.
BASICとアセンブラ世代なので,Cでちゃんとしたプログラムは組んだことありません.
また,Cのソースとコンパイル結果の関係からソースの記述を工夫する必要がありそうです.
ESP32 Wifi Bluetooth開発ボード |
Arduino Nano Every |
Raspberry Pi pico |
FPGA XILINX Artix-7 |