Управление ИК-приемником с помощью пульта дистанционного управления

 

Цель работы:

Научиться управлять с помощью пульта дистанчионного управления схемой с ИК-модулем. Промониторить с помощью последовательного порта кнопки пульта дистанционного управления. Написать код в среде разработки Arduino IDE для этой схемы.

 

Приобретаемые навыки:
  1. Начальные принципы электроники и схемотехники;
  2. Составление принципиальных схем;
  3. Сборка элетрических схем на плате беспаячного монтажа;
  4. Знание простейшей элементной базы;
  5. Получения опыта работы с микроконтроллером Arduino;
  6. Получение навыков работы в среде программирования Arduino IDE;

 

Необходимые базовые знания, которыми вы должны обладать, для успешного выполнения работ:

 

Прежде чем приступить к работе, пройдите тестирование:

Пройти тест

 

Ответьте на дополнительные вопросы по теории, если какие-либо вопросы вызовут затруднение, ниже вы сможете получить информацию, которая поможет дать ответ:

  1. Опишите принцип работы инфракрасного приёмника:
     
  2. ?
     
  3. Что такое последовательный порт?
      

Общий план выполнения работы:

  1. Разработать принципиальную схему устройства с влюченным ИК-приёмником,с помощью которой можно - пультом посылать на приёмник сигналы к действию.
  2. Реализовать данную схему на плате безпаячного монтажа.
  3. Написать программу для микроконтроллера.
  4. Провести тестирование устройства.

Ссылки на информацию, которая может помочь при выполнении работы:

  1. Информация о среде программирования  Adruino IDE
  2. Информация о ИК-модуле

Непосредственное выполнение работы:

Описание схемы:

Необходимые материалы:

  1. Плата Adruino - 1шт.
  2. Макетная плата - 1шт.
  3. Светодиод - 1шт.
  4. Резистор - 220 Ом - 1шт.
  5. ИК-модуль -1шт.
  6. Пульт ДУ - 1шт.
  7. Провода папа - папа - 9шт.

Возьмите все необходимые материалы. Удобно расположите плату беспаячного монтажа и микроконтроллер. Аккуратно, без сильных нажимов, во избежании поломки материалов, подсоедините каждый элемент как показано на схеме. Внимательно проверьте правильно ли подключены элементы, проверьте полярность элементов, посмотрите заземлены ли цепь.

Схема лабораторной установки: 

Макетная плата:



Принципиальная схема:

Пояснение к принципиальной схеме: 

Как видно на схеме вместо элемента приемника стоит другой, это сделано вследствие того, что в программе не было ИК-модуля. Как видно из схемы у модуля 7 выходов. Распиновка сверху-вниз:

  1. GND
  2. VCC
  3. D0
  4. D1
  5. D2
  6. D3
  7. VT

Задание на программирование лабораторной установки:

Написать программу для собранной схемы, которая будет выполнять следующие действия: запрограмировать 4 канала

при нажатии на кнопку_1 светодиод должен моргать бесперебойно меняя состояние каждые 50мс, при нажатии на кнопку_3 светодиод должен включиться и гореть пока есть питания, либо пока не будет выключен соответствующей кнопкой. Кнопка_2 - отменяет действие кнопки_1, при работающем светодиоде от кнопки 3 не должно происходить ничего. Кнопка_4 отменяет действие кнопки_3, при работающем светодиоде от кнопки_1 не должно происходить ничего.

Алгоритм написания программы:

  1. Уяснение задачи;
  2. Поиск теоретических ресурсов и полезных материалов;
  3. Подключение библиотеки, по мере необходимости;
  4. Написание программного кода;
  5. Компиляция.

Фото/видео отчет по выполненному заданию:


Программный код:

#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>

const int button_A = 5;
const int button_B = 9;
const int button_D = 4;
const int button_C = 3;
const int led = 6;

void setup ()
{
pinMode (button_D, INPUT);
pinMode (button_A, INPUT);
pinMode (button_C, INPUT);
pinMode (button_B, INPUT);
pinMode (led, OUTPUT);
Serial.begin (9600);
}

void loop ()
{
if (digitalRead(button_D) == HIGH)
{
Serial.println (button_D);
for (int i = 1; i > 0; i++)
{
digitalWrite (led, HIGH);
delay (500);
digitalWrite (led, LOW);
if (digitalRead(button_C) == HIGH){
Serial.print ("button C was pushed:");
Serial.println(button_C);
break;
}
}
}
if ((digitalRead(button_B) == HIGH))
{
Serial.println (button_B);
for (int i = 1; i > 0; i++)
{
digitalWrite (led, HIGH);
delay (50);
digitalWrite (led, LOW);
delay (50);
if (digitalRead(button_A) == HIGH){
Serial.print ("button A was pushed:");
Serial.println(button_A);
break;
}
}
}

}

Выполните творческое задание:

Подключите реле с сервомотором, и датчик звука. И запрограмируйте 4 канала следующим образом: 1. включает реле с сервомотором, и отключает датчик звука если включен. 2. включает датчик звука. 3. выключает реле с сервомотором. 4.Имитирует замок - принажатии поворачивает сервомотор от 0 до 180 далее зажигается светодиод который оповещает "Замок открыт", если в течение 10 секунд е происходит никаких действий(нажатий), то  поворачивает сервомотор в предыдущее состояние.

Замечания к работе:

  1. Сформулируйте замечания к работе:
  2. Есть ли в работе какие-либо непонятные места?

Заключение: Я выполнил лабораторную работу в которой изучается модуль с ИК-приемником управляемый с помощью четырёхканального пульта дистанционного управления. Собрал схему с включением этих элементов. И реализовал поставленную программную задачу.