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 plafondventilator bedienen met Alexa: Stap-voor-stap handleiding

Onderdelen en benodigdheden

Raspberry Pi 3 Model B × 1
Arduino UNO × 1
Relais (standaard) × 1
Ventilatorregelaar × 1

Benodigde tools en machines

  • Soldeerbout (standaard)

Apps en online diensten

  • Arduino IDE
  • Amazon Alexa Alexa Skills Kit
  • Ngrok

Over dit project

Hier leg ik uit hoe ik mijn gewone plafondventilator slim maakte door Amazon Alexa te integreren voor snelheidsregeling. We gebruiken de Alexa Skills Kit voor de spraakcommando's en ngrok als tunneling-service om verzoeken naar de lokale Raspberry Pi-server te sturen, die de Arduino UNO aanstuurt om het juiste relais in te schakelen.

Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding

Lokale Raspberry Pi-server instellen

Benodigde pakketten:

  • Python PIP: sudo apt-get install python-pip (standaard in Python 2.7/3)
  • Flask: pip install flask
  • flask-ask: pip install flask-ask (Alexa-vriendelijke extensie)
  • pyserial: sudo apt-get install pyserial
  • libpython2.7-dev: sudo apt-get install libpython2.7-dev

Python-script voor de server:

from flask import Flask
from flask_ask import Ask, statement
import serial
ser = serial.Serial("/dev/ttyAMA0", 9600)
app = Flask(__name__)
ask = Ask(app, '/')

@ask.launch
@ask.intent("FanOn")
def on():
    ser.write(b'1')
    return statement("Plafondventilator aangezet.")

@ask.intent("FanOff")
def off():
    ser.write(b'0')
    return statement("Plafondventilator uitgezet.")

@ask.intent("FanLevelUp")
def up():
    ser.write(b'+')
    return statement("Plafondventilator sneller.")

@ask.intent("FanLevelDown")
def down():
    ser.write(b'-')
    return statement("Plafondventilator langzamer.")

if __name__ == "__main__":
    app.run(debug=True)

Draai dit script en voeg toe aan autostart van de RPi.

Ngrok installeren

Ngrok maakt je lokale server publiek bereikbaar. Download de ARM-versie van ngrok.com, pak uit en start:

./ngrok http 5000

Alexa Skill aanmaken

  1. Registreer op Amazon Developer Console.
  2. Kies "Alexa Skills Kit" → "Add new skill".
  3. Geef een naam en invocation name (bijv. "ventilator").
  4. Definieer intents en sample utterances:
{
  "intents": [
    { "intent": "FanOn" },
    { "intent": "FanOff" },
    { "intent": "FanLevelUp" },
    { "intent": "FanLevelDown" }
  ]
}

Sample utterances:

FanOn say fan on
FanOn say on
FanOff say off
FanOff say fan off
FanLevelUp say fan level up
FanLevelUp say increase fan speed
FanLevelDown say fan level down
FanLevelDown say decrease fan speed
Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding
Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding

Bij "Endpoint" kies HTTPS en plak de Ngrok-URL. Kies voor SSL-certificaat optie 2.

Test of Ngrok en Python-script draaien. Controleer of verzoeken binnenkomen.

Arduino-code

Upload de sketch en sluit de Arduino aan op de Raspberry Pi volgens het schema.

int Fan[] = {13,12,11,10,9,8};
int n=0;
void reset();
void set(char);
void setup() {
  for(int i=0;i<6;i++) pinMode(Fan[i], OUTPUT);
  Serial.begin(9600);
}
void loop() {
  char x;
  if (Serial.available()) {
    x=Serial.read();
    reset();
    set(x);
  }
}
void reset() {
  for(int i=0;i<6;i++) digitalWrite(Fan[i], LOW);
}
void set(char x) {
  switch (x) {
    case '1': n=1; break;
    case '+': n++; break;
    case '-': n--; break;
    case '0': n=0; break;
  }
  digitalWrite(Fan[n],HIGH);
}

Hardware

Sluit de hardware aan volgens het schema.

Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding

Veel plezier! Maak andere apparaten op dezelfde manier spraakgestuurd.

Code

Arduino sketch Arduino

int Fan[] = {13,12,11,10,9,8};
int n=0;
void reset();
void set(char);
void setup() {
  for(int i=0;i<6;i++) pinMode(Fan[i], OUTPUT);
  Serial.begin(9600);
}
void loop() {
  char x;
  if (Serial.available()) {
    x=Serial.read();
    reset();
    set(x);
  }
}
void reset() {
  for(int i=0;i<6;i++) digitalWrite(Fan[i], LOW);
}
void set(char x) {
  switch (x) {
    case '1': n=1; break;
    case '+': n++; break;
    case '-': n--; break;
    case '0': n=0; break;
  }
  digitalWrite(Fan[n],HIGH);
}

Python Server code Python

from flask import Flask
from flask_ask import Ask, statement
import serial
ser = serial.Serial("/dev/ttyAMA0", 9600)
app = Flask(__name__)
ask = Ask(app, '/')

@ask.launch
@ask.intent("FanOn")
def on():
    ser.write(b'1')
    return statement("Ceiling Fan turned on.")

@ask.intent("FanOff")
def off():
    ser.write(b'0')
    return statement("Ceiling Fan turned off.")

@ask.intent("FanLevelUp")
def up():
    ser.write(b'+')
    return statement("Ceiling Fan speed up.")

@ask.intent("FanLevelDown")
def down():
    ser.write(b'-')
    return statement("Ceiling Fan speed down.")

if __name__ == "__main__":
    app.run(debug=True)

Schema's

Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding

Productieproces

  1. Een Betaalbaar Draadloos Sensornetwerk Bouwen voor Uw Huis
  2. Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
  3. Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
  4. LED's bedienen met Alexa via Raspberry Pi – Eenvoudige stapsgewijze handleiding
  5. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  6. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  7. Twee Stappenmotors Sturen met Arduino Nano & Joystick – Simpele Tutorial
  8. Een Arduino LED besturen met Cortana via Bluetooth op Windows 10
  9. Je TV bedienen met Alexa via Arduino IoT Cloud – stapsgewijze handleiding
  10. Centrale Verwarming Slim Maken met Arduino en OpenTherm
  11. 25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test