Aktivieren Sie die Alexa-Steuerung für Ihren Deckenventilator
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
| ||||
| ||||
|
Über dieses Projekt
Ich werde hier detailliert beschreiben, wie ich meinen normalen Deckenventilator zu einem intelligenten gemacht habe, indem ich Amazon Alexa zur Geschwindigkeitssteuerung desselben integriert habe. Wir werden die Fähigkeiten von Amazon Alexa verwenden, um die Geschwindigkeitsänderung einzuleiten, und werden ngrok . sein Tunneling-Dienst, um die Anfrage an unseren lokal untergebrachten RPi-Server weiterzuleiten, der unserem Arduino uno mitteilt, das zugehörige Relais einzuschalten.
Einrichten unseres lokalen Raspberry Pi Servers
wir benötigen die folgenden Dienste um unseren Server nutzen zu können.
- Python PIP:um Python-Pakete zu installieren, wenn Sie Python 2.7 oder 3 verwenden, wird pip standardmäßig installiert, daher können Sie diesen Schritt vermeiden
sudo apt-get install python-pip
- Flask:Flask ist ein Serverpaket für Python, das Ihnen hilft, Python-Server einfach zu implementieren.
Pip Install Flask
- flask ask :eine Flask-Erweiterung zum einfachen Erstellen von alexa frendly-Programmen.
pip installflakon-ask
- pyserial:serielles Kommunikationsmodul für Python
sudo apt-get install pyserial
- libpython2.7-dev
sudo apt-get intall libpython2.7-dev
alle notwendigen Module werden installiert, um den Server zum Laufen zu bringen. wir müssen dafür das Python-Skript eingeben
from Flask import Flaskfrom Flask_ask import Ask, Statementimport Requestsimport jsonimport serial ser =serial.Serial("/dev/ttyAMA0",9600)app =Flask(__name__)ask =Ask(app, '/')@ [email protected]("FanOn")def on():ser.write(b'1') return statement("Deckenventilator eingeschaltet.")@ask.intent("FanOff")def off() :ser.write(b'0') return statement("Deckenventilator ausgeschaltet.")@ask.intent("FanLevelUp")def up():ser.write(b'+') return statement("Deckenventilator speed up.")@ask.intent("FanLevelDown")def down():ser.write(b'-') return statement("Ceiling Fan speed down.")if __name__ =="__main__":app.run (debug=Wahr)
Führen Sie dieses Python-Skript aus und tragen Sie dieses Skript in die Autostart-Liste Ihres RPi ein.
3. Ngrok herunterladen
Ngrok ist eine sichere Tunneling-Plattform, um Ihr Gerät online zu machen. Mit dieser Plattform können Sie Ihre Webanwendung oder jede Anwendung auf sehr einfache Weise online stellen. Zum Download gehen Sie auf die offizielle Website und laden Sie für ARM herunter.
https://ngrok.com/
Entpacken Sie es und gehen Sie in das Verzeichnis, in das Sie es entpacken. Führen Sie es mit dem Befehl aus
./ngrok http 5000
Alexa-Skill
Gehen Sie zur Amazon-Entwicklerseite und melden Sie sich für Ihr Entwicklerkonto an
https://developer.amazon.com/
Rufen Sie nach der Anmeldung die Entwicklerkonsole auf und geben Sie jetzt "Alexa Skill Kit" ein
wähle jetzt "Neue Fähigkeit hinzufügen"
Geben Sie den Namen für Ihren Skill und einen Aufrufnamen ein. Stellen Sie sicher, dass Ihr Aufrufname die erforderlichen Bedingungen erfüllt
speichern und mit dem nächsten Schritt fortfahren
Geben Sie hier die Absichten für den Aufruf der Fertigkeit und Äußerungsbeispiele ein, dh die Wortkombinationen, die jede Absicht einleiten sollen.
Absichten sind wie folgt
{ "intents":[ { "intent":"FanOn" }, { "intent":"FanOff" }, { "intent":"FanLevelUp" }, { "intent":"FanLevelDown" }] }
Beispieläußerungen
FanOn sagt Lüfter anFanOn sagt onFanOff sagt offFanOff sagt Lüfter ausFanLevelUp sagt Lüfterstufe hochFanLevelUp sagt Lüftergeschwindigkeit erhöhenFanLevelDown sagt Lüfterstufe runterFanLevelDown sagt Lüftergeschwindigkeit verringern
Speichern Sie und fahren Sie mit dem nächsten Schritt fort. Hier müssen Sie den Ort eingeben, an den Sie die Daten voraussichtlich senden sollen, sobald eine Absicht aufgerufen wird.
da wir ngrok verwenden , wählen Sie HTTPS, und geben Sie den sicheren Link ein, der in ngrok Serve generiert wird, speichern Sie ihn und fahren Sie mit dem nächsten Schritt fort
Wählen Sie die zweite Option für das SSL-Zertifikat und fahren Sie fort
Um zu überprüfen, ob unser Setup funktioniert oder nicht. Stellen Sie sicher, dass Ihr ngrok-Server funktioniert und das Python-Skript auch läuft, sonst funktioniert es nicht.
Wir können sehen, dass die Server Anfragen erhalten und sie aktualisieren.
Arduino-Code
Laden Sie die angehängte Skizze Ihres Arduino hoch und verbinden Sie sie mit Himbeer-Pi, wie im Schaltplan beschrieben.
int Fan[] ={13,12,11,10,9,8}; int n=0;void reset();void set(char);void setup() { // Setze deinen Setup-Code hier ein, um ihn einmal auszuführen:for(int i=0;i<6;i++){ pinMode(Fan [i], AUSGANG); } Serial.begin (9600); aufrechtzuerhalten. Void Schleife () { Zeichen x; wenn (Serial.available ()) { x =Serial.read (); zurücksetzen(); 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; brechen; Fall '+':n++; brechen; Fall '-':n--; brechen; Fall '0':n=0; brechen; } digitalWrite(Fan[n],HIGH);}
Hardware
Schließen Sie die Hardware wie im Schaltplan gezeigt an
Viel Spaß beim machen. Machen Sie jedes andere Gerät auf ähnliche Weise sprachaktiv :)
Code
- arduino-Skizze
- Python-Server-Code
Arduino-SkizzeArduino
Laden Sie diesen Code auf Ihr Arduino hoch und verbinden Sie ihn mit Ihrem Raspberry Pi-Serverint Fan[] ={13,12,11,10,9,8}; int n=0;void reset();void set(char);void setup() { // Setze deinen Setup-Code hier ein, um ihn einmal auszuführen:for(int i=0;i<6;i++){ pinMode(Fan [i], AUSGANG); } Serial.begin (9600); aufrechtzuerhalten. Void Schleife () { Zeichen x; wenn (Serial.available ()) { x =Serial.read (); zurücksetzen(); 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; brechen; Fall '+':n++; brechen; Fall '-':n--; brechen; Fall '0':n=0; brechen; } digitalWrite(Fan[n],HIGH);}
Python-ServercodePython
un diesen Code in Ihrem Spython, nachdem ngrok so eingerichtet ist, dass er Datenvom Flask-Import erhält Flaskfrom Flask_ask import Ask, Statementimport Requestsimport jsonimport serial ser =serial.Serial("/dev/ttyAMA0",9600)app =Flask(__name__ )ask =Ask(app, '/')@[email protected]("FanOn")def on():ser.write(b'1') return statement("Deckenventilator eingeschaltet.")@ ask.intent("FanOff")def off():ser.write(b'0') return statement("Deckenventilator ausgeschaltet.")@ask.intent("FanLevelUp")def up():ser.write (b'+') return statement("Deckenlüfter beschleunigen.")@ask.intent("FanLevelDown")def down():ser.write(b'-') return statement("Deckenlüfter Geschwindigkeit runter." )if __name__ =="__main__":app.run(debug=True)
Schaltpläne
so verbinden Sie die Geräte miteinanderHerstellungsprozess
- Aufbau eines drahtlosen Sensornetzwerks in Ihrem Zuhause
- Münzprüfer mit Arduino steuern
- Arduino-Kontrollzentrum
- Alexa-gesteuerte LEDs über Raspberry Pi
- Arduino mit Bluetooth zur Steuerung einer LED!
- Arduino-Befeuchtersteuerung
- Arduino Nano:Steuerung von 2 Schrittmotoren mit Joystick
- Steuern Sie Ihre LED mit Cortana
- Volle Kontrolle über Ihren Fernseher mit Alexa und Arduino IoT Cloud
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno