Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Je TV bedienen met Alexa: Arduino & ESP8266 Setup

Onderdelen en benodigdheden

Arduino UNO 1
NodeMCU ESP8266 Breakout Board 1
IR-zender/ontvanger (met 100Ω weerstand in serie) 1

Benodigde tools en machines

  • Soldeerbout

Apps en online diensten

  • Arduino IDE

Over dit project

Alexa gebruiken om je TV te bedienen!

Intro: Dit project laat zien hoe je Alexa kunt gebruiken om commando's te sturen en je TV te bedienen door er tegen te praten. Alles wat je TV-afstandsbediening kan, kan Alexa ook. We gaan de IR-signalen van de afstandsbediening opnemen en Alexa deze laten herhalen wanneer je spraakcommando's geeft. Hier zijn de stappen of bekijk deze YouTube-video:

Stap 1: Vereiste bibliotheken downloaden

Download de volgende bibliotheken en plaats ze in je Arduino IDE bibliotheken-map:

Stap 2: NodeMCU (WiFi-module) programmeren

Open de ESP8266-Alexa.ino sketch en upload deze naar je NodeMCU (download de board-info via Board Manager in Arduino IDE). Je hoeft alleen de WiFi-gegevens en de Apparatenamen aan te passen.

Je kunt de Apparatenamen aanpassen in de ESP8266-Alexa.ino sketch en de Signalen die uitgezonden worden in de IR-Alexa-Send.ino sketch:

Je TV bedienen met Alexa: Arduino & ESP8266 Setup
Apparatenamen aanpassen in de code

Stap 3: IR-signalen van TV-afstandsbediening uitlezen

Upload de IR_REMOTE_read.ino sketch naar je Arduino om de afstandsbediening-signalen te lezen en de ontvangen IR-signalen te registreren voor later gebruik, zoals in deze tutorial getoond:

Stap 4: Arduino programmeren om TV IR-signalen via Alexa te sturen

Open IR-Alexa-Send.ino in de Arduino IDE en upload het naar je Arduino Uno (vergeet niet het bord te wijzigen in UNO).

Voed beide modules en verbind de draden tussen ze. Zorg dat de IR-zender is aangesloten op terminal 3 van de UNO. Zie het bijgevoegde schema voor meer informatie:

Je TV bedienen met Alexa: Arduino & ESP8266 Setup
Schema: Arduino UNO en NodeMCU verbinding

Stap 5: Het project testen met Alexa

Ga nu in je Amazon Alexa-app op je mobiele apparaat of PC, ga naar Smart Home en druk op "Apparaten toevoegen" om elk van de commando's te vinden die je in de ESP8266-Alexa.ino sketch hebt ingesteld.

Je TV bedienen met Alexa: Arduino & ESP8266 Setup
Apparaten detecteren in Alexa app

Zodra ze gevonden zijn, kun je ze testen met een van de volgende commando-structuren:

  • "Alexa, zet APPAREELNAAM aan"
  • "Alexa, zet APPAREELNAAM aan"
  • "Alexa, zet de APPAREELNAAM aan"
  • "Alexa, zet de APPAREELNAAM aan"

Code

ESP8266-Alexa.ino (voor NodeMCU)

Deze code emuleert een "WEMO"-apparaat via Arduino IDE voor de NodeMCU-chip.

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"

// WiFi Credentials
#define WIFI_SSID "linksys"
#define WIFI_PASS ""
#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 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 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();
  Serial.println();
  Serial.println("FauxMo demo sketch");
  Serial.println("After connection, ask Alexa/Echo to 'turn pixels on' or 'off' or 'turn relay on' or 'off'");
  
  wifiSetup();
  
  // Alexa Apparatenamen
  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) {
    if (state) digitalWrite(RELAY_PIN1, HIGH);
    else digitalWrite(RELAY_PIN1, HIGH); // Let op: beide HIGH? Check originele code
  }
  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();
  delay(500);
  digitalWrite(RELAY_PIN1, LOW);
  digitalWrite(RELAY_PIN2, LOW);
  digitalWrite(RELAY_PIN3, LOW);
  digitalWrite(RELAY_PIN4, LOW);
}

IR-Alexa-Send.ino (voor Arduino UNO)

Deze code leest signalen van de NodeMCU en stuurt de juiste IR-signalen uit via de IR-zenddiode.

#include <IRremote.h>
IRsend irsend;
#define a 4
#define b 5
#define c 6
#define d 7

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 Code
    Serial.println("TV");
    delay(500);
  }
  if (digitalRead(b) == HIGH) {
    irsend.sendNEC(0x57E354AB, 32); // Enter Key
    delay(2000);
    irsend.sendNEC(0x57E39867, 32); // Up Key
    delay(1000);
    irsend.sendNEC(0x57E39867, 32); // Up Key
    delay(1000);
    irsend.sendNEC(0x57E39867, 32); // Up Key
    delay(1000);
    irsend.sendNEC(0x57E3B44B, 32); // Right Key
    delay(1000);
    irsend.sendNEC(0x57E354AB, 32); // Enter
    delay(2000);
    irsend.sendNEC(0x57E354AB, 32); // Enter
    Serial.println("The Office");
    delay(500);
  }
  if (digitalRead(c) == HIGH) {
    irsend.sendNEC(0x57E38679, 32); // Options Button
    delay(1500);
    irsend.sendNEC(0x57E3CC33, 32); // Down key
    delay(700);
    irsend.sendNEC(0x57E3CC33, 32); // Down key
    delay(700);
    irsend.sendNEC(0x57E3CC33, 32); // Down key
    delay(700);
    irsend.sendNEC(0x57E3CC33, 32); // Down key
    delay(700);
    irsend.sendNEC(0x57E3B44B, 32); // Right Key
    delay(700);
    irsend.sendNEC(0x57E3B44B, 32); // Right Key
    delay(900);
    irsend.sendNEC(0x57E38679, 32); // Options Button
    Serial.println("Sleep Timer");
    delay(500);
  }
  if (digitalRead(d) == HIGH) {
    irsend.sendNEC(0x57E34AB5, 32); // Netflix Code
    Serial.println("Greg's Netflix");
    delay(500);
  }
}

IR_REMOTE_read.ino (voor Arduino om IR-codes uit te lezen)

Gebruik deze code op je Arduino om de kliks van je afstandsbediening te lezen via de IR-ontvanger.

//2017.06.22
#include <IRremote.h>
#include <LiquidCrystal.h>

/* LCD AANSLUITING (LINKS NAAR RECHTS, PINNEN BOVENZIJDE)
 * GND - VCC - POT MIDDEN - 12 - GND - 11 - NIETS - NIETS - NIETS - NIETS - 5 - 4 - 9 - 2 - VCC - GND
 * POT MOET 5V EN GND HEBBEN EN KAN GEDRAAID WORDEN VOOR LCD CONTRAST
 */
LiquidCrystal lcd(12, 11, 5, 4, 9, 2); // 9 ipv 3 (NODIG VOOR ZENDER)
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);
  }
}

Schema

Je TV bedienen met Alexa: Arduino & ESP8266 Setup
Eindschema: Arduino UNO en NodeMCU (WiFi-module) verbonden

Productieproces

  1. Industriële Touchscreen Repareren Of Vervangen: Expert Beslissingsgids
  2. Anticonceptiepil: Geschiedenis, Voordelen, Risico's en Productie
  3. Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding
  4. Een Arduino LED besturen met Cortana via Bluetooth op Windows 10
  5. Pro Gids: Metalen Boren met Uw Machine – Expert Tips
  6. Word meester in autoreparaties: DIY-tips voor betrouwbaarheid en besparing
  7. Bescherming van Industriële Besturingssystemen: Bewezen Strategieën & Best Practices
  8. Acht Bewezen Stappen om Uw Procescontrolsysteem te Diagnosticeren en Repareren
  9. Uw PC Opwekken op Afstand met PLCnext via Wake-on-LAN
  10. Industriële besturingssystemen overstappen naar draadloze netwerken
  11. Waarom thermohardende composieten de ideale keuze zijn voor moderne manufacturing