亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 Alexa 控制您的电视!

组件和用品

Arduino UNO
这与红外发射二极管一起使用以将电视命令发送到电视
× 1
NodeMCU ESP8266 分线板
该组件是作为“WEMO”设备连接到亚马逊 Alexa 应用程序的 Wi-Fi 模块.将每个设备的脉冲发送到 Arduino UNO
× 1
红外发射器/接收器
该组件与 100 欧姆电阻串联使用,以向电视发送 IR 命令
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino IDE

关于这个项目

使用 Alexa 控制您的电视!

简介: 所以这个项目将讨论如何使用你的 Alexa 发送命令并通过与它交谈来控制你的电视。您的电视遥控器可以做的任何事情,您的 Alexa 都可以做。我们要做的是记录远程 IR 信号,并在发出语音指令时使用 Alexa 重新发送这些相同的信号。以下是实现此目的或观看此 YouTube 视频所需的步骤:

第 1 步:下载必备库

下载以下库并将它们放入您的 Arduino IDE 库中:

  • ESPAsyncTCP - https://github.com/me-no-dev/ESPAsyncTCP
  • ESPAsyncUDP - https://github.com/me-no-dev/ESPAsyncUDP
  • FauxMoESP - https://bitbucket.org/xoseperez/fauxmoesp> 下载> 下载存储库

第 2 步:编程 NodeMCU(Wi-Fi 模块)

打开 ESP8266-Alexa.ino 草图并将其上传到您的 NodeMCU(从 Arduino IDE 的 Board Manager 下载板信息)。您只需要更改 Wi-Fi 凭据和设备名称即可。

您可以自定义 ESP8266-Alexa.ino 草图中的设备名称和 IR-Alexa-Send.ino 草图中发出的信号:

第 3 步:从电视遥控器读取红外信号

将 IR_REMOTE_read.ino 草图上传到您的 Arduino 以读取远程信号命中并记录您收到的红外信号以供稍后参考,如本教程所示:

第 4 步:编程 Arduino 以通过 Alexa 发送电视红外信号

接下来,在 Arduino IDE 中打开 IR-Alexa-Send.ino 并将其上传到您的 Arduino Uno(确保将上传板信息更改为 UNO)。

将电源连接到两个模块和之间的连接线。确保 IR 发射器连接到 UNO 的端子 3。有关详细信息,请参阅随附的示意图:

第 5 步:使用 Alexa 测试项目

现在在您的移动设备或 PC 上进入您的 Amazon Alexa 应用程序,转到您的智能家居并按“添加设备”以查找您在 ESP8266-Alexa.ino 草图中设置的每个命令。

找到它们后,您可以使用以下命令结构之一对其进行测试:

  • “Alexa,打开设备名称 "
  • “Alexa,转设备名称 在”
  • “Alexa,打开设备名称 在”
  • “Alexa,打开设备名称 "

代码

  • ESP8266-Alexa.ino
  • IR-Alexa-Send.ino
  • IR_REMOTE_read.ino
ESP8266-Alexa.inoC/C++
这将被写入 NodeMCU 芯片以通过 Arduino IDE 模拟“WEMO”设备
#include #include #include "fauxmoESP.h"// ----- -------------------------------------------------- ----------------------// Wifi 凭据// ---------------------- -------------------------------------------------- -----#define WIFI_SSID "linksys"#define WIFI_PASS ""#define SERIAL_BAUDRATE 115200fauxmoESP fauxmo;// -------------------------- -------------------------------------------------- -// 无线上网// - - - - - - - - - - - - - - - - - - - - - - ---------------------------------void wifiSetup() { // 设置 WIFI 模块为 STA 模式 WiFi.mode( WIFI_STA); // Connect Serial.printf("[WIFI] 连接到 %s ", WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASS); // 稍等片刻 (WiFi.status() !=WL_CONNECTED) { Serial.print(".");延迟(100); Serial.println(); // 连接的! Serial.printf("[WIFI] STATION Mode, SSID:%s, IP address:%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 15void setup() { //初始化继电器引脚pinMode(RELAY_PIN1, OUTPUT);数字写入(RELAY_PIN1,低); pinMode(RELAY_PIN2, OUTPUT);数字写入(RELAY_PIN2,低); pinMode(RELAY_PIN3, OUTPUT);数字写入(RELAY_PIN3,低); pinMode(RELAY_PIN4, OUTPUT);数字写入(RELAY_PIN4,低); // 初始化串口并清理垃圾 Serial.begin(SERIAL_BAUDRATE); Serial.println(); Serial.println(); Serial.println("FauxMo 演示草图"); Serial.println("连接后,让Alexa/Echo'打开像素'或'关闭'或'打开继电器'或'关闭'"); // Wifi wifiSetup();// ----------------------------------------- ------------------------------------// Alexa 设备名称// ------- -------------------------------------------------- -------------------- // Fauxmo fauxmo.addDevice("TV"); fauxmo.addDevice("GregsNetflix"); fauxmo.addDevice("睡眠"); fauxmo.addDevice("Office"); fauxmo.onMessage(callback);}// ---------------------------------------- -------------------------------------// Alexa 操作调用// ------ -------------------------------------------------- ---------------------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) ) { // 立即调整继电器! if (state) { digitalWrite(RELAY_PIN1, HIGH); } else { digitalWrite(RELAY_PIN1, HIGH); } } if ( (strcmp(device_name, "GregsNetflix") ==0) ) { // 立即调整继电器! if (state) { digitalWrite(RELAY_PIN2, HIGH); } else { digitalWrite(RELAY_PIN2, LOW); } } if ( (strcmp(device_name, "Sleep") ==0) ) { // 立即调整继电器! if (state) { digitalWrite(RELAY_PIN3, HIGH); } else { digitalWrite(RELAY_PIN3, LOW); } } if ( (strcmp(device_name, "Office") ==0) ) { // 立即调整继电器! if (state) { digitalWrite(RELAY_PIN4, HIGH); } else { digitalWrite(RELAY_PIN4, LOW); } }}void loop() { fauxmo.handle();延迟(500);数字写入(RELAY_PIN1,低);数字写入(RELAY_PIN2,低);数字写入(RELAY_PIN3,低);数字写入(RELAY_PIN4,低);}
IR-Alexa-Send.inoC/C++
这是上传到 Arduino UNO 以从 NodeMCU 读取信号并通过红外发射二极管发送适当的红外信号
#include IRsend irsend;#define a 4#define b 5#define c 6#定义 7void setup() { Serial.begin(9600); pinMode(a, 输入); pinMode(b, 输入); pinMode(c, 输入); pinMode(d, INPUT);}void loop() { if (digitalRead(a) ==HIGH) { irsend.sendNEC(0x57E3E817, 32); //电源代码Serial.println("TV");延迟(500); } if (digitalRead(b) ==HIGH) { irsend.sendNEC(0x57E354AB, 32); //输入键延迟(2000); irsend.sendNEC(0x57E39867, 32); //向上键延迟(1000); irsend.sendNEC(0x57E39867, 32); //向上键延迟(1000); irsend.sendNEC(0x57E39867, 32); //向上键延迟(1000); irsend.sendNEC(0x57E3B44B, 32); //右键延迟(1000); irsend.sendNEC(0x57E354AB, 32); //输入延迟(2000); irsend.sendNEC(0x57E354AB, 32); //输入Serial.println("办公室");延迟(500); } if (digitalRead(c) ==HIGH) { irsend.sendNEC(0x57E38679, 32); //选项按钮延迟(1500); irsend.sendNEC(0x57E3CC33, 32); //向下键延迟(700); irsend.sendNEC(0x57E3CC33, 32); //向下键延迟(700); irsend.sendNEC(0x57E3CC33, 32); //向下键延迟(700); irsend.sendNEC(0x57E3CC33, 32); //向下键延迟(700); irsend.sendNEC(0x57E3B44B, 32); //右键延迟(700); irsend.sendNEC(0x57E3B44B, 32); //右键延迟(900); irsend.sendNEC(0x57E38679, 32); //选项按钮Serial.println("睡眠定时器");延迟(500); } if (digitalRead(d) ==HIGH) { irsend.sendNEC(0x57E34AB5, 32); //Netflix 代码 Serial.println("Greg 的 Netflix");延迟(500); }}
IR_REMOTE_read.inoC/C++
在您的 Arduino 上使用此代码读取从遥控器到红外接收器的 Clicker Hits。
//2017.06.22#include #include /* HOW TO WIRE UP LCD SCREEN从左到右引脚,顶部有引脚 * * GND - VCC - POT MIDDLE - 12 - GND - 11 - NONE - NONE - NONE - NONE - 5 - 4 - 9 - 2 - VCC - GND * * POT 必须有 5V 和GND 在它上面,可以旋转旋钮来改变 LCD 对比度 */ LiquidCrystal lcd(12, 11, 5, 4, 9, 2); //9 而不是 3 (NEED FOR TRANSMITTER)int receiverpin =10;IRrecvirrecv(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);简历.resume();液晶显示器(); lcd.print(results.value, HEX);延迟(150); }}

示意图

这是连接 Arduino 和 NodeMCU(Wi-Fi 模块)的最终原理图

制造工艺

  1. 避孕药
  2. 将您的工业控制系统迁移到无线
  3. 在您的产品中使用热固性复合材料的原因
  4. 修理或更换损坏的触摸屏控件?
  5. 对吊扇启用 Alexa Control
  6. 使用 Cortana 控制 LED
  7. 使用 Alexa 和 Arduino IoT Cloud 完全控制您的电视
  8. 控制自己的车辆维修
  9. 保护您的工业控制系统
  10. 如何使用钻孔机钻金属
  11. 调试过程控制系统的 8 个步骤
  12. 使用 PLCnext 到 WakeOnLan (WoL) 您的 PC