Разработчик электроники
0,0
рейтинг
28 января 2010 в 19:10

Дистанционное управление по ИК


Всем добрый день!


В рамках моего проекта:
Создаем робота в домашних условиях
был сделан модуль управления роботом по ИК каналу. Вот о нём я бы и хотел написать поподробнее. Так как применений этому можно найти очень много.

Собственно, что такое ИК-управление — объяснять, думаю, не нужно. Сейчас более распространено управление по Wi-Fi, Bluetooth, ZigBee. Но если вам требуется простое устройство, которое можно собрать «на коленке» при минимальных затратах, то эта статья для вас. =)


Я не буду привязывать эту статью к определённому микроконтроллеру, а опишу общие принципы работы ИК прёмо-передатчика с AVR МК.

1. Что потребуется

При создании простого ИК-управления, негласным стандартом является использование приёмника от компании Vishay TSOPxxxx и диода TSALxxxx в качестве передатчика.

Datasheet на TSOP17xx
Datasheet на TSAL6200

В обозначении приёмников TSOP последние две цифры означают частоту (в кГц) на которой воспринимается передаваемый сигнал. Сложностей в работе с этими компонентами особых нет. Можно писать свой протокол передачи, можно воспользоваться уже готовыми решениями. В моём случае я решил связать два микроконтроллера ИК-каналом, используя USART. Принцип такой же, как если бы мы соеденили два МК обычными проводами. Нюанс только в модулировании несущей частоты и в настройке таймера.

2. Схемки

Чтобы не городить огородов, воспользуемся схемой включения TSOP из его даташита:


Выход TSOPа нужно подключить напрямую к входу (RX) USART МК.

С подключением передатчика ситуация немного другая. Так как приёмник работает только на определённой частоте, то нужно задать эту же частоту на излучателе. Это сделать не сложно запрограммировав таймер. Для ATmega16 это будет выглядить вот так:
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84;


Нужную частоту можно выразить из формулы:

OCRn — будет искомое значение, которое нужно перевести в шестнадцатеричный формат и записать в регистр OCR1A (для случая с МК ATmega16).

Теперь TSOP будет принимать наш сигнал. Но чтобы можно было использовать USART, нужно промодулировать наш сигнал. Чтобы это можно было делать — подключим ИК-диод по схеме:


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. Решил выложить фото самого пульта, чтобы было видно, что работает девайс не только как китайские приёмники, которые подключаются к ПК. Возможности гораздо шире и универсальнее.
Photobucket
Анатолий @Lockdog
карма
127,0
рейтинг 0,0
Разработчик электроники
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (48)

  • +4
    О! сделаю пульт который открывает браузер или закрывает его, а на каналы повешу нужные закладки.
  • +6
    Чё то как то жестоко для меня) ни чё не понятно) Но робот это круто)
    • +1
      Статья и вправду получилась не для новичков, извините. Хотелось написать что-то интересное и полезное =)
      • +1
        Интересно. С любопытством читаю ваши статьи. Правда, к сожалению, для меня они тоже кажутся сложными, но это не ваша, а моя вина.

        Если появится желание написать вводные статьи по электротехнике, не минуты не сомневайтесь — пишите )
        • 0
          В комментах к статье про робота меня просили написать вводную по микроконтролеррам. А тут прямо с азов начинать? =)
          Надо будет подумать над этим.
          • 0
            Ну я сказал «если будет желание» ) Мне бы было приятнее читать ваши статьи, чем учебники.
          • 0
            Было бы очень, очень полезно. На русском языке действительно хорошей литературы нет. Все «подразумевают» что люди в каких-то закромах родины накопают спецификации на микроконтроллеры, поймут, что значат подписи к выводам a la PB6/XTAL1, потом быстро всё спаяют и будут работать. Не говоря уже о теории электрический цепей, которую учат, по большей мере, на физфаке, а простые смертные предложением рассчитать четырехполюсник из резистора и конденсатора будут повергуты в апатию.

            Очень сложно написать введение в какую-то область науки, если она уже знакома, это я уже успел проверить, пытаясь написать руководство по программированию для новичков. Нужны как раз те самые, заинтересованные новички, которые будут канючить «что это за буковки такие, я ничего не понял.» Если у вас появится желание написать первый хороший гайд на русском языке, не стесняйтесь обращаться к его будущей аудитории. Например, ко мне :)
            • 0
              помилуйте, как же нет хорошей литературы? как ещё назвать замечательную книгу фрунзе «микроконтроллеры? это же просто!»? первый (3,4 MB), второй (4,6 MB) и третий (1,5 MB) тома. если речь идёт именно об avr, то у господина dihalt'а есть весьма любопытный для новичка цикл статей — вот здесь, в частности, очень доступно рассказывается об обозначении и устройстве этих самых выводов pb* и иже с ними.

              а уж познавать электрические цепи с научившей уму-разуму не одно поколение балбесов книгой рудольфа свореня «электроника шаг за шагом» (19,1 MB) настолько увлекательно, что забываешь даже о своём страхе перед всеми этими жуткими и непонятными четырёхполюсниками и гетеродинами.
              • 0
                боюсь, я как новичок попал впросак. почему вырезались парсером все теги?

                «микроконтроллеры? это же просто!» — том первый: flibusta.net/b/111529/download (3,4 MB);
                том второй: flibusta.net/b/111530/download (4,6 MB);
                том третий: flibusta.net/b/111531/download (1,5 MB).

                «электроника шаг за шагом»: publ.lib.ru/ARCHIVES/S/SVOREN'_Rudol'f_Anatol'evich/Shag_za_shagom._Elektronika.(1991).[djv].zip (19,1 MB)
                • 0
                  Вам просто ОГРОМНОЕ спасибо!!!
                  Сейчас как раз стала интересна тема микроконтроллеров и встал вопрос литературы…
                  • 0
                    прошу прошения — комментарии «не туда»))
      • 0
        Хорошая статья.
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Проще сделать свою железку, чем ковыряться в китайской, тем более, что роботом управляю с самодельного пульта
        • НЛО прилетело и опубликовало эту надпись здесь
          • +1
            Посмотрите, пожалуйста, UPD внизу статьи. :) Я не спорю, что к компьютеру удобнее прикрутить готовый девайс. Статья описывает устройство, которое можно прикрутить к чему угодно.
            • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Прикольно было бы создать пульт в виде клавиатуры которая будет перепрограмировать второй МК — было бы прикольно делать всё на ходу
  • 0
    Думаю многие пробовали WinLIRC. Я, например, узнал про проект из справки к плееру Light Alloy. Электронных компонентов там минимум, а удовольствия- море. Ностальгия… Моя первая электронная схема, собранная своими руками. А вообще LIRC пользовался (пользуется?) популярностью в определённых кругах.
  • 0
    Как-то по первой схеме собирал ИК приемник для ком порта. не помню уже программа которая там была… в общем насколько я понял, уперлось все в процессорные приоритеты — на то время Атлон 1700+ обрабатывал принятые команды… например запуск видеоплеера ровно до момента его запуска, после команды если и принимало, то ооочень с большой задержкой.
  • 0
    знакомый корпус… не в ЧиД случайно куплен? :)
    • +2
      Именно там. :)
  • 0
    А для ленивых:)
    www.dealextreme.com/details.dx/sku.26368
    • +1
      кто нить юзал этот девайс?
      • 0
        • +1
          спасибо

          по описанию вродь ничего :)
          • 0
            За свои 300р думаю отличная вещь
            • +1
              :) купить чтоль да поиграться
            • 0
              на запах человек ругается
    • 0
      ? А где такое в России купить, я про интернет магазины.
      • 0
        Зачем в России? Чтобы в 3-4 раза дороже?
  • 0
    А каких размеров получился приемничек? Я как раз сейчас озадачен, почему-то был уверен что можно без проблем найти USB-irda порт размером с современные micro bluetooth-адаптеры. А на практике самый мелкий девайс какой удалось нагуглить — размером со среднюю флешку… втыкать такое в компактный неттоп рука не поднимается, серьезно думаю по поводу того, можно ли из этого выкрутиться своими руками…
    • +3
      Размеры сложно оценить, так как стоит в составе общего модуля. Если делать своими руками, то есть 3 варианта:
      — поставить AVR с USB: плюсы в том что всё в одной микросхеме, минусы в программировании USB и высокая плотность монтажа.
      — поставить AVR + микросхема USB-RS232: плюсы в люгкости программирования, т.е. устройство определяется на компе как COM-порт с которым и работаем, минусы в ОЧЕНЬ высокой плотности монтажа.
      — поставить обычную ATmega и установить V-USB, но тоже геморрой с USB.
      • 0
        Можно подробнее про atmega и v-usb? он программно реализуется?
  • 0
    как устойчивость работы? количество ошибок? я одно время склонялся таким образом реализовать связь по ИК но отказался от этой затеи в пользу другого протокола, более защищеного от помех. Насколько я помню USART достаточно критичен к таймингам и разница в частотах между МК в 5% может оказаться фатальной.
    • +1
      Работает замечательно, есть пару моментов, но это скорее из-за моих каких-либо недочётов либо из-за наводок от двигателей
  • +1
    я себе пару лет назад сделал приемник, подключается по com-порту, затем используя winlirk(если память не изменяет) управлял любым пультом как от телевизора, так и от домашнего кинотеатра, если кто захочет выложу фотку, выглядит все достаточно аккуратненько
    • 0
      в Light Alloy в справке есть инструкция как собрать такой ИК-приёмник
    • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        извиняюсь, не было времени выложить раньше, фото плоховатое т.к. снимал на яблокофон



        • 0
          я тоже спаял подобное устройство. Правда, вид был менее приличный. WinLirc у меня не хотел видеть сей девайс. Но зато программа Girder отлично с ним работала.
          Недавно подарил это устройство другу. Он на кухню приволок сервер, в качестве медиа-центра. Теперь его любимыми приборами стали не нож и вилка, а ложка и пульт ДУ
          • 0
            я в основном использовал winlirc, если память не изменяет, то как раз по схеме для него и делал у них по моему на сайте схема была выложена.сейчас валяется без дела над кому нить подарить чтоле, а то в ноуте втыкать некуда) если тока на юсб переделать, да и не надо он мне)
  • 0
    а почему не ZigBee? на базе какого-нибуть maxstream'овского модуля? его также очень легко прикрутить как удлинитель уарта.

    только из соображений дальнейшего использования в качестве датчика препятствий? для робота это актуально я понимаю, но там свой плюс есть — целится пультом в приемник не надо )
    • 0
      Считайте, что это был мой удачный эксперимент. =) Мне не требовалась большая дальность и не было на тот момент возможности заказывать дополнительные модули.
  • 0
    Тоже разбираюсь с TSOP сенсором. Скажите пожалуйста, а времена у вас в микросекундах были указаны, я правильно понимаю?
    Хочу эксперимента ради вручную считать все биты сигнала от TSOP без сторонних библиотек. (С ардуино работаю)
    • 0
      прошу прошения — комментарии «не туда»))

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.