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

Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки

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

Arduino UNO1
Крона 9В (generic)1
Разъём 9В → Jack (barrel jack connector)1
ИК-излучатель (generic)1
Винт M34
Винт M2.53
Гайка M34
Гайка M2.53
Резистор 47 Ом (through-hole)2
Макетная плата 2.54 мм1
PCB-кнопка (тактовая)6
Pin header 36 pin (однорядный, длинный)1

Необходимые инструменты и станки

О проекте

Введение

У подруги сломанся пульт от телевизора. Можно было купить дешёвый универсальный, но мы оба инженеры — решили сделать свой вместе! Это веселый способ провести время на локдауне и разобраться, как работает эта бытовая технология. Домашний 3D-принтер тоже пригодился.

Как это работает

Чтение кнопок

Минимальный набор команд для нашего ТВ: 6 штук — Вкл/Выкл, Источник, Прог+, Прог-, Громк+, Громк-. Чтобы не ставить внешние подтягивающие резисторы, используем внутренние pull-up Arduino. Если пульт не в спящем режиме, каждый цикл loop опрашивает кнопки. Антидребезг реализован через millis().

Отправка ИК-сигналов

ИК-протокол обрабатывает библиотека IRremote.h (авторам уважение!). Надо выбрать протокол своего ТВ (у каждого бренда свой) и найти HEX-коды команд в гугле, привязать к кнопкам. В схеме ИК-светодиод обязан быть на пине 3 Arduino UNO (PWM).

Код поддерживает 3 типа ТВ: LG, Samsung, Sony — переключается закомментированием #define в начале скетча.

Экономия батареи

Для минимизации потребления (библиотеки avr/sleep.h, avr/power.h):

  • В setup() отключаем неиспользуемые периферийные модули: ADC, SPI, TWI (I2C), Timer1, USART.
  • Выключаем встроенный LED на пине 13 (PWM).
  • Решили даже отпаять питание-LED на плате Arduino UNO (он всегда горит) — не рекомендуемая операция, но мы рискнули.
  • Если 5 секунд ни одной кнопки не нажато — уходим в глубокий сон (SLEEP_MODE_PWR_DOWN). Пробуждение — прерывание от кнопки Вкл/Выкл (пин 2, настроен как WIRED NOR).

Как это собрано

Электроника: сборка на макетке

Вся схема на макетной плате, рассчитанной под pin header Arduino UNO. Кнопки припаяны с учётом их позиции в корпусе. На нижней стороне два резистора 47 Ом параллельно (для тока ИК-светодиода). Проводники на макетке соединяют кнопки и ИК-светодиод с pin header — получается shield, надежно вставляемый в Arduino.

Корпус: CAD и CAM

Корпус рассчитан под батарею «Крона», Arduino UNO + shield, с выводами только кнопок сверху и ИК-светодиода спереди.

Две половинки, спроектированы в SolidWorks, слайсинг в Ultimaker Cura, печать на Anycubic Mega Zero из PLA.

  • Arduino крепится к основанию 3 винтами M2.5 в вытянутые отверстия-стойки.
  • ИК-светодиод выходит за край shield, входит в отверстие передней стенки; три мини-стойки фиксируют его ножки при сборе.
  • Батарея вставляется в карман с натяжением (press-fit).
  • Крышка с гравировкой символов функций кнопок.
  • Сборка основания и крышки — 4 винта M3.

Фотогалерея

Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки
Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки
Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки
Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки

Код

TV_remote.ino (Arduino)

#include 
#include 
#include 

// Пины кнопок
#define OnOff 1
#define Source 0
#define CH_plus 4
#define CH_minus 5
#define Vol_plus 6
#define Vol_minus 7
#define Interrupt_Pin 2 // Только пин 2 или 3 на Uno

// Выбор модели ТВ (раскомментируйте нужное)
//#define LG_TV
//#define SAMSUNG_TV
#define SONY_TV

// HEX-коды команд для каждого бренда
#ifdef LG_TV
unsigned long on_off_code = 551489775;  // 0x20DF10EF
unsigned long vol_plus_code = 551502015; // 0x20DF40BF
unsigned long vol_minus_code = 551534655; // 0x20DFC03F
unsigned long ch_plus_code = 551485695;  // 0x20DF00FF
unsigned long ch_minus_code = 551518335; // 0x20DF807F
unsigned long source_code = 551538735;   // 0x20DFD02F
#endif

#ifdef SAMSUNG_TV
unsigned long on_off_code = 3772793023; // 0xE0E040BF
unsigned long vol_plus_code = 3772833823; // 0xE0E0E01F
unsigned long vol_minus_code = 3772829743; // 0xE0E0D02F
unsigned long ch_plus_code = 3772795063; // 0xE0E048B7
unsigned long ch_minus_code = 3772778743; // 0xE0E008F7
unsigned long source_code = 3772809343;  // 0xE0E0807F
#endif

#ifdef SONY_TV
unsigned long on_off_code = 2704;   // 0xA90
unsigned long vol_plus_code = 1168; // 0x490
unsigned long vol_minus_code = 3216; // 0xC90
unsigned long ch_plus_code = 144;   // 0x090
unsigned long ch_minus_code = 2192; // 0x890
unsigned long source_code = 2640;   // 0xA50
#endif

//#define DEBUG
IRsend irsend;
unsigned long debounce_time;
unsigned long last_time;

void setup() {
  analogWrite(13,0); // выкл встроенный LED
  pinMode(OnOff, INPUT_PULLUP);
  pinMode(Source, INPUT_PULLUP);
  pinMode(CH_plus, INPUT_PULLUP);
  pinMode(CH_minus, INPUT_PULLUP);
  pinMode(Vol_plus, INPUT_PULLUP);
  pinMode(Vol_minus, INPUT_PULLUP);
  pinMode(Interrupt_Pin, INPUT_PULLUP);

  // Power saving
  power_adc_disable();
  power_spi_disable();
  power_timer1_disable();
  power_usart0_disable();
  power_twi_disable();

#ifdef DEBUG
  Serial.begin(9600);
#endif
}

void loop() {
  // Опрос каждой кнопки с антидребезгом 40 мс
  // При нажатии: отправка ИК-кода через irsend (NEC/SAMSUNG/Sony)
  // Обновление last_time = millis()
  // ...

  // Сон через 5 сек бездействия
  if (millis() - last_time > 5000) {
#ifdef DEBUG
    Serial.println("Going to sleep...");
#endif
    going_to_sleep();
#ifdef DEBUG
    Serial.println("Waking up...");
#endif
  }
}

void going_to_sleep() {
  sleep_enable();
  attachInterrupt(digitalPinToInterrupt(Interrupt_Pin), wake_up, LOW);
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_cpu();
}

void wake_up() {
  sleep_disable();
  detachInterrupt(digitalPinToInterrupt(Interrupt_Pin));
}

Схемы

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

Самодельный пульт от ТВ на Arduino с 3D-корпусом и питанием от батарейки

Fritzing-файл: remote_sketch_r4f8a47oWX.fz

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

  1. Интегрированная система контроля доступа с QR, RFID и верификацией температуры
  2. Перехват команд ИК-пульта на Raspberry Pi без LIRC: подход через Python UART
  3. PiCy: Создайте своего компактного робота на Raspberry Pi
  4. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  5. Камера охраны с детектором движения на ESP32-CAM и отправкой фото в Discord
  6. Умная копилка: управление монетоприёмником на Arduino Nano
  7. Unopad: Бесшовный Arduino MIDI-контроллер для Ableton Live
  8. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  9. ЧПУ-точарный станок Millport SmartLathez 1740 — точность и мощь
  10. 5 ключевых преимуществ удаленного контроля производства для современной промышленности