赤外線リモコン送信機(イヤホンジャック接続)の回路

soundIR 送信機

前回は受信機で、今回は送信機を作ってみました。
受信機と違って、送信機の作成は少し面倒です。

部品リスト

部品 数量 記号 備考
ATTiny10 1 IC1 米粒AVR
赤外線LED 1 LED1  
抵抗 – 47 1 R1  
抵抗 – 100k 3 R2, R3, R4  
抵抗 – 150k 1 R5  
コンデンサ – 0.1u 1 C1 積層セラミックコンデンサ
コンデンサ – 1u 1 C2 積層セラミックコンデンサ
電池 1    
3.5mmプラグ 1   3極または4極プラグ
       

※2013/2/3 R5の抵抗の値が間違っていました。正しくは150kです(´・ω・`)

 

回路図

soundIR 送信機の回路図

※2013/1/31 回路図修正しました。PB0とPB1の接続が逆になっていました。どうも申し訳ないです(´・ω・`)

 

Tiny10用ソース

米粒AVRのプログラムです。
Atmel Studio 6(Ver 6.0.196 sp2)を使って作成しました。

<br />
#ifndef F_CPU<br />
#define F_CPU 1000000UL<br />
#endif<br />
<br />
#include <avr/io.h><br />
#include <avr/interrupt.h><br />
#include <avr/sleep.h><br />
#include <avr/cpufunc.h><br />
<br />
#define LED_PIN        PB2<br />
<br />
ISR(ANA_COMP_vect)<br />
{<br />
}<br />
<br />
int main(void)<br />
{<br />
    CCP = 0xD8;<br />
    CLKMSR = 0x00;<br />
    CCP = 0xD8;<br />
    CLKPSR = 0x03;<br />
    <br />
    DDRB |= _BV(LED_PIN);<br />
    PORTB &= ~_BV(LED_PIN);<br />
    <br />
    ACSR = 0b00001011;<br />
    DIDR0 = 0b00000011;<br />
    PRR = 0b00000011;<br />
    <br />
    uint8_t count=0;<br />
    <br />
    set_sleep_mode(SLEEP_MODE_IDLE);<br />
    cli();<br />
<br />
    for(;;)<br />
    {<br />
        if(ACSR&_BV(ACO))<br />
        {<br />
            PORTB |= _BV(LED_PIN);<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            PORTB &= ~_BV(LED_PIN);<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            _NOP();<br />
            count=0;<br />
        }<br />
        else<br />
        {<br />
            count++;<br />
            if(count>250)<br />
            {<br />
                count=0;<br />
                sleep_enable();<br />
                sei();<br />
                sleep_cpu();<br />
                sleep_disable();<br />
                cli();<br />
            }<br />
        }<br />
    }<br />
}

 

解説

米粒AVR

tiny10
赤外線リモコンの信号は、38kHz程度のパルスに乗せて送信する必要があります。
今回は、この38kHzのパルスを発生させるために米粒AVRことATTiny10を使っています。
プログラムの書き込みには、AVRISPmk2を使っています。

 

赤外線LED

何でも良いと思います。
秋月電子でも多種の赤外線LEDが扱われているので、好きなのを選びましょう。

 

電源

リチウムコイン電池 CR2032
この回路では、米粒AVRを動作させる為と、赤外線LEDを光らせる為に外部の電源が必要です。
この回路で想定している電圧は3Vですが、だいたい3V~5V程度で動作すると思うので、リチウムコイン電池なら1個、1.5V乾電池なら2本、エネループ等のニッケル水素充電池なら3本。
ちなみに6Vを超えるとAVRが壊れます。

 

3.5mmプラグ

4極プラグ・ピンアサイン
今回の回路は送信専用で受信を行わないので、MIC入力が必要ありませんので3極プラグで十分です。
もちろん4極プラグでも問題ありません。
100均で購入する場合、3極も4極も値段は同じですが、3極だと金メッキされたプラグをちらほらと見かけるので、金メッキのプラグが有ればそちらをお勧めします。

 

回路の仕組み

Android側では、イヤホンジャックからの音声出力を、リモコン信号に合わせてON/OFFをコントロールします。
回路上の米粒AVRは、音声出力の状態をアナログコンパレーターで検知し、ONの間だけ約38kHzのパルスを出力する。
このパルス出力は、直接赤外線LEDを光らせて、赤外線リモコンと同等の動作をするという仕組みです。

オシロスコープ soundIRの出力
DSO QUADで波形を確認。
黄色い線がAndroidの音声出力、水色の線が赤外線LEDへの出力です。
Androidの音声出力がONの時だけパルス出力しているのが分かります。 

 

フリスクケースで作ってみた

主な材料

フリスクケース、米粒AVR、64ホールユニバーサル基板、CR2032
基板には秋月電子の64ホールユニバーサル基板(1.16mm)、ケースにはフリスクケース、電源にはCR2032(3Vリチウムコイン電池)を使いました。

 

完成した回路

soundIR 送信機の内部 soundIR 送信機の内部2
中はスカスカ
多分、電源を入れっぱなしでも数ヶ月は持つ計算ですが、念のため電源スイッチを追加しています。ケースをスライドさせると見えます。

 

接続

soundIR フリスク
IS05と繋ぐとこんな感じです。

 

実際に使ってみる

この回路はイヤホンジャック接続でサウンドデータを使ってリモコン操作が可能です。
サウンドデータなので、wavファイルとしてデータを保存しておき、ミュージックプレイヤーで再生することで特別なアプリ無しでリモコン操作をすることも可能です。
今回はとりあえず、この方法で試用できるようにサウンドデータを公開しておきます。
※注意、予めAndroidの「音の設定」で「タッチ操作音」を消しておいて下さい。

 

日立 TV用
三菱 TV用
パナソニック TV用
SHARP TV用
SONY TV用
東芝 TV用

対応するデータをダウンロード・解凍して、Android端末に転送してプレイヤーで再生するだけ。
ちなみに、標準のミュージックプレイヤーの曲リストから直接再生すると一気に全曲再生されてしまうので、ファイルマネージャー等を経由して1曲づつ再生することをお勧めします。

※尚、NexsusOneでは上記で公開しているデータは使えません。 NexusOneでは下記のアプリを使って各自でリモコンを学習させてデータを作成すれば利用することができます。

 

データの作成は

なおこのリモコン操作用サウンドデータは、以前紹介したアプリのVer 1.1.0以降で作成できるようになってます。
アプリのダウンロードはGooglePlayからお願いします。

Get
Get it on Google Play

 

関連記事

thermometer

パソコンで温度計 #2

今回は温度表示とログ取りアプリを作ったので公開。 前回にArduino+STTS751で作った

記事を読む

ssh_connected

Raspberry PiをWindowsで操作する(SSH)

SSHを使って、Raspberry Piを外部PC(Windows)で操作する。

記事を読む

no image

S2 Resistor Color Code 公開しました。

このアプリは、抵抗のカラーコードから抵抗値を素早く見る為のAndroidアプリです。 4本帯と、5

記事を読む

no image

Android+Arduinoでリモコン4(Microbridge接続)

前回AndroidAccessory接続で作った赤外線学習リモコンを、今回はMicrobridge接

記事を読む

no image

赤外線リモコン受信機(イヤホンジャック接続)を作ってみた

最近、このブログ何も書いて無かったので、作成中の物の紹介・・・  これは、Andro

記事を読む

no image

PIC24FJ64GB002でADKを試す(その2)

 前回「PIC24FJ64GB002でADKを試す(その1)」では回路の説明までしたので、

記事を読む

raspi-config

Raspbianの最初の設定

  Raspbianのインストール後にraspi-configを使って行う最初の設定

記事を読む

no image

米粒AVRの動作周波数

  米粒AVR(ATtiny10)のデフォルトでは内臓発振器利用の1MHzが指定されてい

記事を読む

no image

Wimeji Client for Arduino

前回紹介したWimeji Client for WindowsXPをArduinoでやってみました。

記事を読む

no image

米粒AVRのEAGLEライブラリ

EAGLEを使って米粒AVR(ATtiny10)の回路図を書こうと思ったら何か様子がおかしい。

記事を読む

Comment (10件)

  1. りんりん

    こんにちは、はじめましてりんりんでず。
    今回学校の卒業研究でアンドロイドプログラミングの研究をしており、赤外線リモコン送信機と赤外線リモコン受信機を作ろうとおもいました。
    質問とお願いなんですが、ATTiny10にプログラムを書き込む装置を教えてください(名前と購入先)あと、この装置の(ブレットボード)の真上からの画像をください。
    よろしくお願いします。

    1. Futaba

      こんにちは。はじめまして。
      (先日メールを頂いたりんりんさんとは別の方ですね?)

      Tiny10にプログラムを書き込む装置は、AVRISPmk2と言います。秋月電子で購入しました。
      http://s2jp.com/2012/08/avrispmk2/
      あと、ブレッドボードは既に分解していて、真上からの写真はありません。
      電子工作としては比較的簡単な回路なので、なんとかご自身で頑張って下さい。
      よろしくお願いします。

    2. Futaba

      質問とは関係ありませんが、部品の一覧に記載していたR5の抵抗の値が間違っていました。正しくは150kです。
      どうも申し訳ございません。
      ご購入の際にはご注意下さい。

  2. りんりん

    回答ありがとうございました。
    もう一点質問なんですが、イヤフォンジャックのGNDはどこに繋げばいいですか?

    1. Futaba

      GNDは共通ですので、回路のGND(電池のマイナス)に繋ぐといいです。
      回路図にも追加しておきましたので、ご確認下さい。

      1. りんりん

        回答ありがとうございました。
        作動確認用のLEDをつけたいのですが可能でしょうか?

  3. りんりん

    質問なんですが、AVR Studio6でプログラムを書き込むときに、Flashでファイルを指定しProgramを押すとこのようなエラーが出てしまい書き込めませんでした。
    Unable to enter programming mode. Verify device selection, interface settings, target power and connections to the target device.
    Details
    Timestamp: 2013-02-13 21:43:06.076
    Severity: ERROR
    ComponentId: 20100
    StatusCode: 1
    ModuleName: TCF (TCF command: Device:startSession failed.)
    Failed to enter programming mode. Error status received from tool: Result received is 0×03.
    電圧は5.4Vですし、ビルドでもエラーは出ませんでした。
    どうすれば書き込めますか?
    お手数ですがよろしくお願いします。

    1. まさ

      はじめまして。
      課題研究でラジコンをスマートフォンで制御したいと思っています。
      質問なのですがATTiny10の代わりにR8C38Cを使うことはできますか?
      よろしくお願いします。

      1. Futaba

        >まさ様
        コメントありがとうございます。
        残念ながらR8C38Cを使ったことが無くて、良く分かりません。
        申し訳ないです。

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑