====== Модуль инфракрасного приемника TSOP4838 ======
===== Описание =====
Инфракрасный приемник - простой и недорогой вариант для приема инфракрасного сигнала. Идеально подходит для дистанционного управления устройствами в зоне прямой видимости на небольшом расстоянии. Позволяет принимать сигналы с пультов управления различной бытовой техники большинства производителей.

Модуль инфракрасного приемника удобен для использования в проектах для соединения без пайки. Модуль содержит светодиод - индикатор получения данных. Приёмник обладает повышенной помехоустойчивостью к радиочастотным помехам,  также обладает повышенной устойчивостью к оптическому шуму.

==== Технические характеристики ====
  * Потребляемый ток: 1 мА
  * Рабочая частота: 38 КГц
  * Расстояние приема сигнала: до 45 м
  * Эффективный угол приема сигнала: 90˚
  * Рабочее напряжение: 2,5 - 5,5 В

==== Физические размеры ====
  * Модуль (Д х Ш х В): 30 х 20 х 11 мм 

==== Плюсы использования ====
  * Простой в использовании и подключении
  * Идеально подойдет для проектов с беспроводной связью

==== Минусы использования ====
  * Между приемником и пультом не должно быть преград, что неудобно в управлении движущимися объектами

==== Отличия от модуля с VS1838B ====
  * Более низкое энергопотребление
  * Шире угол приёма сигнала
  * Большее расстояние приёма
  * Обладает высокой помехоустойчивостью


==== Файлы для загрузки ====
  * [[http://files.smartelements.ru/know_libs/irremote_master.zip|Библиотека для работы с приёмником (irremote)]]
  * [[http://files.smartelements.ru/datasheet/tsop4838.pdf|Даташит]]

<WRAP center round important 60%>
В среде разработки Arduino по-умолчанию присутствует библиотека для работы с ИК приёмником и передатчиком - она называется <RobotIRremote>, однако она работает некорректно и её необходимо удалить чтобы две библиотеки не конфликтовали друг с другом. Для этого перейдите в папку установки Arduino/Libraries и удалите папку RobotIRremote.
</WRAP>

<WRAP center round info 60%>
Обратите внимание что для работы ИК-приёмника и ИК передатчика используется одна и та же библиотека <IRremote>. Таким образом скачивать и устанавливать данную библиотеку дважды не требуется!
</WRAP>

==== Смотрите также проекты ====
  * [[main:comm:ir_send#пример_1|Передача 1 и 0 с помощью ИК-передатчика]]
  * [[main:comm:ir_send#пример_2|Удалённое включение и отключение светодиода]]
  * [[main:comm:ir_send#пример_3|Имитация нажатия кнопок пульта (HEX)]]
  * [[main:comm:ir_send#пример_4|Имитация нажатия кнопок пульта (DEC)]]
===== Пример подключения и использования =====
**Пример 1:** В примере иллюстрируется подключение модуля инфракрасного приемника TSOP4838, получение значений нажатия кнопок и вывод данных в монитор Serial - порта. (Примеры тестировались на контроллере Smart UNO)

^ Что нужно                                                                                                                                 ^ Кол-во, шт  ^
| [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]             |  1           |
| [[https://smartelements.ru/collection/shildy/product/sensor-shield|Sensor Shield]]             |  1           |
| [[https://smartelements.ru/collection/svyaz/product/modul-infrakrasnogo-priemnika-tsop4838|Модуль инфракрасного приемника TSOP4838]]  |  1          |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф "мама-мама" х3]]  |  1           |

**Схема подключения:**
{{ :главная:связь:модуль_ик_приемника-4838_н.png?nolink |}}

**Скетч для загрузки:**

//**Внимание!** В Arduino IDE уже есть предустановленная библиотека <RobotRemote>, однако она работает некорректно и её необходимо удалить перед загрузкой скетча и библиотеки <IRremote.h> (чтобы две библиотеки не конфликтовали между собой). Для этого перейдите в папку установки Arduino, в раздел Libraries и удалите папку RobotRemote.//

<file Arduino>
#include <IRremote.h> //подключение библиотеки
int IR_pin = 8; //пин подключения инфракрасного приемника
decode_results results; //переменная для хранения результата приема

IRrecv irreceiver(IR_pin); //создание объекта приемника

void setup()
{
  Serial.begin(9600); //инициализация Serial - порта
  irreceiver.enableIRIn(); //инициализация приемника
}

void loop()
{
  if (irreceiver.decode(&results)) { //если что-то пришло
    Serial.println(results.value); //сообщить значение приема в монитор
    irreceiver.resume(); //возобновление работы ИК приемника
  }
}
</file>

