Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

FlickMote

Компоненты и расходные материалы

Ультразвуковой датчик
× 1
ИК-передатчик (общий)
× 1
Общий катод, рассеянный RGB
× 1
Arduino 101
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

ВВЕДЕНИЕ

Теперь повсеместно стало управлять бытовой техникой и электронными устройствами с помощью инфракрасного пульта дистанционного управления. Но та же самая задача управления может быть выполнена легче. Первичным мотивом создания новой системы дистанционного управления жестами руки является устранение необходимости заглядывать в ручной пульт и искать конкретную клавишу для определенной функции, в основном для более старых. В этом проекте представлена ​​новая система управления бытовой техникой с помощью жестов руки в качестве устройства дистанционного управления. В этом отчете проект будет называться flickremote. Он использует ультразвуковой дальномер для определения жестов пользователя и выводит ИК-сигнал, плата разработчика микроконтроллера Arduino 101

АППАРАТНЫЕ КОМПОНЕНТЫ

1. Arduino 101 или uno

2. Ультразвуковой модуль HC-SR04

3. Инфракрасный светодиод

4. Подходящий резистор для инфракрасного светодиода (220R)

5. Светодиод RGB

6. Макет и провода

КАК ЭТО РАБОТАЕТ:

В этом проекте используется ультразвуковой дальномер для определения жестов пользователя и вывод ИК-сигнала на телевизор по заданной команде. Расстояние или дюймы можно редактировать в коде, который соответствует вашему усмотрению

- Смахивание вверх (> 10 дюймов) =канал вверх

- Смахивание вниз =канал вниз

- Высокая задержка (> 10 дюймов) =увеличение громкости

- Низкое удержание =уменьшение громкости

- Датчик крышки (<3 дюйма) =Вкл. / Выкл.

Принципиальная схема с использованием фритзинга:

СТРОИТЕЛЬСТВО:

1. Подключите ИК-светодиод к контакту 3 через соответствующий резистор, а затем подключите катод к GND.

2. Подключите ультразвуковой датчик к 5 В и GND, где указаны контакты. Подключите контакт триггера к контакту 8, а контакт эхо - к 7. Вы можете настроить эти контакты в программе

3. Подключите светодиод RGB к GND и контактам 11 (красный), 10 (зеленый), 9 (синий). Эти контакты также можно настраивать.

КОНТРОЛЬ

Мощность

Если провести по датчику на расстояние не более 3 дюймов, светодиодный индикатор начнет мигать фиолетовым цветом. Это подтверждение того, что сигнал «включить / выключить» готов к отправке. Чтобы предотвратить случайное выключение телевизора, я заставил эскиз ждать второго смахивания в течение 5 секунд после первого для подтверждения. В этот момент на телевизор отправляется сигнал для включения или выключения.

Канал

Проведение в пределах 10 дюймов от датчика (но не в пределах 3) приведет к переключению канала вниз. Перемещение между 10 и 20 дюймами приведет к переключению канала вверх.

Объем

Если держать руку на расстоянии 10 дюймов от датчика (но не ближе 3), громкость снизится. Удерживание от 10 до 20 дюймов приведет к увеличению громкости. Громкость будет продолжать изменяться (увеличиваться или уменьшаться), пока ваша рука не будет убрана

ПРЕИМУЩЕСТВА И УЛУЧШЕНИЯ:

Устранит необходимость заглядывать в портативный пульт и искать определенную клавишу для определенной функции

Решение для управления гаджетом (телевизором) для слепых и инвалидов

Проект можно улучшить, добавив больше функций для управления всей бытовой техникой одним и тем же методом

СПАСИБО

Код

  • Код
Код C / C ++
 / * Дистанционное управление смахиванием В этом скетче используется ультразвуковой дальномер для определения жестов пользователя и вывод ИК-сигнала на телевизор sony в соответствии с заданной командой. Высокая задержка (> 10 дюймов) =Увеличение громкости - Низкая задержка =Уменьшение громкости - Датчик прикрытия (<3 дюйма) =Включение / выключение Создано Vignesh Jaishankar Этот код использует библиотеку IRremote (https://github.com/shirriff/Arduino-IRremote) * / # include  // Определяет для функций управления #define CONTROL_CH 1 // Изменение канала #define CONTROL_VOL 2 // Volume #define CONTROL_POW 3 // Power #define CONTROL_UP 1 #define CONTROL_DOWN -1 # define DIST_MAX 20 // Максимальное расстояние в дюймах, все выше игнорируется. # Define DIST_DOWN 10 // Порог для команд вверх / вниз. Если выше, команда «вверх». Если ниже, то «вниз». # Define DIST_POW 3 // Порог для команды питания, ниже чем =включение / выключение питания // IR PINconst int irPin =3; // это определено в библиотеке, эта переменная просто напоминание. ИЗМЕНЕНИЕ ЭТОГО ПИН-кода в БИБЛИОТЕКЕ НЕ ИЗМЕНЯЕТСЯ // 2 Pin Ping Sensorconst int pingPin =8; const int echoPin =7; // Светодиод подтверждения Pinsconst int led =13; // внутренний светодиод для отладки вверх / вниз const int ledR =11; const int ledG =10; const int ledB =9; // светодиод включен таймер unsigned long timer; // объект ИК-передатчика IRsend irsend; // флаг подтверждения питания (требуется два пролистывания для отправки сигнала) boolean powerConfirmed =false; void setup () {// инициализируем последовательную связь и устанавливаем контакты Serial.begin (9600); pinMode (светодиод, ВЫХОД); pinMode (ledR, ВЫХОД); pinMode (ledG, ВЫХОД); pinMode (ledB, ВЫХОД); pinMode (pingPin, ВЫХОД); pinMode (echoPin, ВХОД); timer =millis ();} void loop () {// Serial.println (millis ()); большая продолжительность, дюймы; значение int; // Проверяем продолжительность чтения =doPing (); // Таймер для подтверждения действий (в настоящее время только питание) if (timer &&timer <(millis () - 5000) &&(millis ()> 5000)) {Serial.println ("timer reset"); таймер =ложь; } digitalWrite (светодиод, НИЗКИЙ); setColor (0, 0, 0); // выкл // конвертируем время в расстояние inch =microsecondsToInches (duration); // Если расстояние меньше максимального дюйма, действовать if (дюймы  DIST_MAX) {doIR (CONTROL_CH, значение); // проведите пальцем по экрану} else {// объем int d =500; // первая задержка больше для однократного изменения громкости // повторяем, пока рука не будет убрана while (дюймы  DIST_DOWN) {digitalWrite (led, ВЫСОКИЙ); return CONTROL_UP; } else {digitalWrite (светодиод, НИЗКИЙ); вернуть CONTROL_DOWN; }} / ** Выключить правильный ИК-код * / void doIR (int control, int val) {switch (control) {case CONTROL_POW:// power Serial.println ("power on / off 0xa90"); для (int я =0; я <3; я ++) {setColor (255, 0, 0); irsend.sendSony (0xa90, 12); // Задержка кода питания телевизора Sony (40); } ломать; case CONTROL_CH:setColor (0, 255, 0); // выводим 'канал вверх / вниз' в зависимости от val if (val ==CONTROL_UP) {digitalWrite (led, HIGH); для (int я =0; я <3; я ++) {irsend.sendSony (0x90, 12); задержка (40); } Serial.println ("канал вверх 0xD00A"); } else // вниз {for (int i =0; i <3; i ++) {irsend.sendSony (0x890, 12); задержка (40); } Serial.println ("канал вниз 0x3002"); } ломать; case CONTROL_VOL:setColor (0, 0, 255); // вывод 'громкость вверх / вниз' в зависимости от val if (val ==CONTROL_UP) {digitalWrite (led, HIGH); для (int я =0; я <3; я ++) {irsend.sendSony (0x490, 12); задержка (40); } Serial.println ("увеличить громкость 0x490"); } else // вниз {for (int i =0; i <3; i ++) {irsend.sendSony (0xC90, 12); задержка (40); } Serial.println ("уменьшение громкости на 0xC90"); } ломать; }} void setColor (int красный, int зеленый, int синий) {analogWrite (ledR, красный); analogWrite (ledG, зеленый); analogWrite (ledB, синий);} long doPing () {digitalWrite (pingPin, LOW); delayMicroseconds (2); digitalWrite (pingPin, HIGH); delayMicroseconds (5); digitalWrite (pingPin, LOW); return pulseIn (echoPin, HIGH);} long microsecondsToInches (длинные микросекунды) {return microseconds / 74/2;} long microsecondsToCentimeters (длинные микросекунды) {return microseconds / 29/2;} 

Схема

flickmote_9Gx3XNFHEp.fzz

Производственный процесс

  1. Ультразвуковой левитационный аппарат с использованием ARDUINO
  2. Arduino Spybot
  3. Самодельный телевизор B-Gone
  4. Основные часы
  5. Найди меня
  6. Arduino Power
  7. Tech-TicTacToe
  8. Четвероногий Arduino
  9. Джойстик Arduino
  10. Мини-радар с Arduino