
すべての人に良い一日を!
私のプロジェクトの一部として:
自宅でロボットを作成します
ロボット制御モジュールは、IRチャネルを介して作成されました。 それについて私がもっと詳しく書きたいと思います。 これには多くのアプリケーションがあるので。
実際、IR制御とは何ですか-説明する必要はないと思います。 Wi-Fi、Bluetooth、ZigBeeをより一般的に制御できるようになりました。 しかし、最小限のコストで「膝の上」で組み立てられるシンプルなデバイスが必要な場合は、この記事が役立ちます。 =)
この記事を特定のマイクロコントローラーにバインドするつもりはありませんが、AVR MKを使用したIRトランスミッタートランスミッターの動作の一般的な原理を説明します。
1.必要なもの
単純なIR制御を作成する場合、暗黙の標準はVishay TSOPxxxxレシーバーとTSALxxxxダイオードをトランスミッターとして使用することです。
TSOP17xxのデータシート
TSAL6200のデータシート
TSOPレシーバーの指定では、最後の2桁は送信信号が受信される周波数(kHz)を示します。 これらのコンポーネントを操作するのに特別な困難はありません。 独自の転送プロトコルを記述でき、既成のソリューションを使用できます。 私の場合、USARTを使用して2つのマイクロコントローラーをIRチャンネルに接続することにしました。 原理は、2つのMKを通常のワイヤで接続した場合と同じです。 唯一の微妙な違いは、キャリア周波数の変調とタイマーの設定です。
2.回路図
庭をフェンスしないように、データシートのTSOP包含スキームを使用します。

TSOP出力は、USART MK入力(RX)に直接接続する必要があります。
送信機の接続により、状況はわずかに異なります。 レシーバーは特定の周波数でのみ動作するため、エミッターで同じ周波数を設定する必要があります。 タイマーをプログラミングしてこれを行うことは難しくありません。 ATmega16の場合、次のようになります。
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84;
目的の周波数は、次の式から表現できます。

OCRn-希望の値があります。これを16進形式に変換し、OCR1Aレジスタに書き込む必要があります(MK ATmega16の場合)。
これで、TSOPが信号を受信します。 ただし、USARTを使用するには、信号を変調する必要があります。 これを行うために、スキームに従ってIRダイオードを接続します。

3.少しのコード
CodeVision AVRでファームウェアを書きました。
送信機のコードは次のとおりです。
#include <mega8.h>
#include <stdio.h>
void main(void)
{
PORTB=0x00;
DDRB=0x02;
DDRC=0x00;
PORTC=0xFF;
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84; //
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;
while (1)
{
if (PINC.4 == 0x00) { putchar('S');}/* , PINC.4 'S'. .*/
};
}
私はレシーバーコードを与えません、なぜなら は多くのスペースを占有し、送信機コードの一般的な原則を理解するには、十分だと思います。
リモートコントロールに加えて(これは既に広い範囲のアプリケーションですが)、このメソッドを障害物/オブジェクトセンサーに使用できます。多くのセンサーがあり、同じ周波数で動作する場合、互いに照らさないように異なるパケットを送信できます。
頑張って! 私はどんな質問\批判\提案に喜んでいるでしょう;)
UPD。 コンソール自体の写真をアップロードすることにしました。その結果、デバイスがPCに接続する中国の受信機としてだけでなく動作することがわかります。 可能性ははるかに広く、より汎用性があります。
