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

Управление телевизором через Alexa: Arduino и ESP8266

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

Arduino UNO1 шт.Для передачи IR-команд через IR-светодиод
NodeMCU ESP82661 шт.WiFi-модуль, эмулирует WEMO-устройство для Alexa
IR-передатчик/приёмник + резистор 100 Ом1 компл.Отправка IR-сигналов телевизору

Инструменты

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

О проекте

Управление ТВ через Alexa

Суть: записываем IR-коды пульта ТВ, затем Alexa по голосовой команде отправляет их через цепочку: Alexa → NodeMCU (WiFi) → Arduino (Serial) → IR-светодиод → ТВ. Можно повторить любую кнопку пульта.

Шаг 1: Установка библиотек

В Arduino IDE установите через Менеджер библиотек или вручную (ZIP):

Шаг 2: Прошивка NodeMCU (ESP8266)

Откройте скетч ESP8266-Alexa.ino. Настройте:

Загрузите в NodeMCU (в Менеджере плат добавьте поддержку ESP8266).

Управление телевизором через Alexa: Arduino и ESP8266

Шаг 3: Чтение IR-кодов пульта

Загрузите в Arduino скетч IR_REMOTE_read.ino. Наведите пульт на IR-приёмник, нажимайте кнопки — в Serial Monitor появятся HEX-коды. Запишите их.

Шаг 4: Прошивка Arduino для отправки IR через Alexa

Откройте IR-Alexa-Send.ino. Вставьте записанные HEX-коды в соответствующие блоки irsend.sendNEC(...). Загрузите в Arduino UNO.

Соберите схему: питание на оба модуля, соедините 4 сигнальных провода между NodeMCU и Arduino (см. схему). IR-светодиод к пину 3 Arduino через резистор 100 Ом.

Управление телевизором через Alexa: Arduino и ESP8266

Шаг 5: Тестирование с Alexa

В приложении Alexa: Умный дом → Добавить устройство. Найдутся 4 устройства из скетча ESP8266.

Управление телевизором через Alexa: Arduino и ESP8266

Команды для теста:

Исходный код

ESP8266-Alexa.ino (NodeMCU)

#include 
#include 
#include "fauxmoESP.h"

#define WIFI_SSID "your_ssid"
#define WIFI_PASS "your_password"
#define SERIAL_BAUDRATE 115200

fauxmoESP fauxmo;

void wifiSetup() {
  WiFi.mode(WIFI_STA);
  Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("."); delay(100);
  }
  Serial.println();
  Serial.printf("[WIFI] STATION Mode, SSID: %s, IP: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}

#define RELAY_PIN1 13
#define RELAY_PIN2 2
#define RELAY_PIN3 14
#define RELAY_PIN4 15

void setup() {
  pinMode(RELAY_PIN1, OUTPUT); digitalWrite(RELAY_PIN1, LOW);
  pinMode(RELAY_PIN2, OUTPUT); digitalWrite(RELAY_PIN2, LOW);
  pinMode(RELAY_PIN3, OUTPUT); digitalWrite(RELAY_PIN3, LOW);
  pinMode(RELAY_PIN4, OUTPUT); digitalWrite(RELAY_PIN4, LOW);

  Serial.begin(SERIAL_BAUDRATE);
  Serial.println("FauxMo demo sketch");
  wifiSetup();

  fauxmo.addDevice("TV");
  fauxmo.addDevice("GregsNetflix");
  fauxmo.addDevice("Sleep");
  fauxmo.addDevice("Office");
  fauxmo.onMessage(callback);
}

void callback(uint8_t device_id, const char* device_name, bool state) {
  Serial.printf("[MAIN] %s state: %s\n", device_name, state ? "ON" : "OFF");
  if (strcmp(device_name, "TV") == 0) {
    digitalWrite(RELAY_PIN1, state ? HIGH : HIGH); // Оба состояния HIGH — видимо, импульс
  }
  if (strcmp(device_name, "GregsNetflix") == 0) {
    digitalWrite(RELAY_PIN2, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "Sleep") == 0) {
    digitalWrite(RELAY_PIN3, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "Office") == 0) {
    digitalWrite(RELAY_PIN4, state ? HIGH : LOW);
  }
}

void loop() {
  fauxmo.handle();
  delay(500);
  digitalWrite(RELAY_PIN1, LOW);
  digitalWrite(RELAY_PIN2, LOW);
  digitalWrite(RELAY_PIN3, LOW);
  digitalWrite(RELAY_PIN4, LOW);
}

IR-Alexa-Send.ino (Arduino UNO)

#include 
IRsend irsend;

#define a 4  // TV
#define b 5  // Office
#define c 6  // Sleep
#define d 7  // Netflix

void setup() {
  Serial.begin(9600);
  pinMode(a, INPUT); pinMode(b, INPUT); pinMode(c, INPUT); pinMode(d, INPUT);
}

void loop() {
  if (digitalRead(a) == HIGH) {
    irsend.sendNEC(0x57E3E817, 32); // Power
    Serial.println("TV"); delay(500);
  }
  if (digitalRead(b) == HIGH) {
    // Последовательность для "The Office" на Netflix
    irsend.sendNEC(0x57E354AB, 32); delay(2000); // Enter
    irsend.sendNEC(0x57E39867, 32); delay(1000); // Up x3
    irsend.sendNEC(0x57E39867, 32); delay(1000);
    irsend.sendNEC(0x57E39867, 32); delay(1000);
    irsend.sendNEC(0x57E3B44B, 32); delay(1000); // Right
    irsend.sendNEC(0x57E354AB, 32); delay(2000); // Enter
    irsend.sendNEC(0x57E354AB, 32); delay(500);  // Enter
    Serial.println("The Office");
  }
  if (digitalRead(c) == HIGH) {
    // Sleep Timer
    irsend.sendNEC(0x57E38679, 32); delay(1500); // Options
    irsend.sendNEC(0x57E3CC33, 32); delay(700);  // Down x4
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3B44B, 32); delay(700); // Right x2
    irsend.sendNEC(0x57E3B44B, 32); delay(900);
    irsend.sendNEC(0x57E38679, 32); delay(500); // Options
    Serial.println("Sleep Timer");
  }
  if (digitalRead(d) == HIGH) {
    irsend.sendNEC(0x57E34AB5, 32); // Netflix кнопка
    Serial.println("Greg's Netflix"); delay(500);
  }
}

IR_REMOTE_read.ino (чтение кодов пульта)

#include 
#include 

LiquidCrystal lcd(12, 11, 5, 4, 9, 2);
int receiverpin = 10;
IRrecv irrecv(receiverpin);
decode_results results;

void setup() {
  lcd.begin(16, 2);
  pinMode(receiverpin, INPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume();
    lcd.clear();
    lcd.print(results.value, HEX);
    delay(150);
  }
}

Схемы

Управление телевизором через Alexa: Arduino и ESP8266

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

  1. Противозачаточные таблетки: история, польза, риски и производство
  2. Перевод промышленных систем управления на беспроводные сети
  3. Почему термореактивные композиты — идеальный выбор для современного производства
  4. Ремонт или замена промышленного сенсорного экрана: Экспертное руководство по принятию решения
  5. Управление потолочным вентилятором через Alexa: пошаговое руководство
  6. Освойте ремонт авто своими руками: DIY советы для надежности и экономии
  7. Защита систем промышленного управления: проверенные стратегии и лучшие практики
  8. Профи-гайд: сверление металла на станке — экспертные советы
  9. Восемь проверенных шагов для диагностики и устранения неисправностей системы процессного управления
  10. Удаленная активация ПК через PLCnext с Wake-on-LAN