Kontrol Kipas Angin Langit-langit Anda dengan Alexa: Panduan Langkah demi Langkah
Komponen dan Perlengkapan
Raspberry Pi 3 Model B – 1 unit
Arduino UNO – 1 unit
Relay (generik) – 1 unit
Fan Regulator – 1 unit
Alat dan Mesin yang Diperlukan
Pakuin solder (generik)
Aplikasi dan Layanan Online
Arduino IDE
Amazon Alexa Alexa Skills Kit
Ngrok
Tentang Proyek Ini
Saya akan membahas di sini tentang bagaimana saya membuat kipas angin langit-langit reguler saya menjadi cerdas dengan mengintegrasikan Amazon Alexa untuk kontrol kecepatan yang sama. Kami akan menggunakan amazon alexa skill set untuk memulai perubahan kecepatan, dan akan menggunakan layanan terowongan ngrok untuk mengarahkan permintaan ke server RPi lokal kami, yang akan memberi tahu Arduino uno kami untuk menyala relay terkait.
Mengatur Server Raspberry Pi Lokal Kami
kita memerlukan layanan berikut untuk digunakan di server kami.
Python PIP : untuk menginstal paket python, jika Anda menggunakan python 2.7 atau 3 pip akan diinstal secara default, jadi Anda dapat melewati langkah ini
sudo apt-get install python-pip
Flask : Flask adalah paket server untuk python yang akan membantu Anda mengimplementasikan server python dengan mudah.
pip install flask
flask ask : ekstensi flask yang digunakan untuk membuat program yang ramah alexa dengan mudah.
pip install flask-ask
pyserial : modul komunikasi serial untuk python
sudo apt-get install pyserial
libpython2.7-dev
sudo apt-get intall libpython2.7-dev
semua modul yang diperlukan telah diinstal saatnya untuk mengatur server berjalan. kita perlu memasukkan skrip python untuk itu
from flask import Flask from flask_ask import Ask, statement import requests import json 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)
Jalankan skrip python ini, dan daftarkan skrip ini ke daftar auto start RPi Anda.
3. Unduh Ngrok
Ngrok adalah platform terowongan aman untuk membuat perangkat Anda online. Dengan platform ini Anda dapat membuat aplikasi web atau aplikasi apa pun menjadi online dengan cara yang sangat sederhana. Untuk unduh kunjungi situs resmi dan unduh untuk ARM.
https://ngrok.com/
Ekstrak dan pergi ke direktori tempat Anda mengekstraknya. Jalankan dengan perintah
./ngrok http 5000
Alexa Skill
Pergi ke halaman pengembang amazon dan daftar untuk akun pengembang Anda
https://developer.amazon.com/
Masuk ke developer console setelah sign in dan sekarang pilih "Alexa skill kit"
selanjutnya pilih "Add new skill"
Masukkan nama untuk keterampilan Anda, dan masukkan invocation name,. pastikan invocation name Anda memenuhi kondisi yang diperlukan
simpan dan lanjutkan ke langkah berikutnya
di sini masukkan intents untuk pemanggilan keterampilan, dan contoh ucapan, yaitu kombinasi kata untuk memulai setiap intent.
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
Simpan dan lanjutkan ke tahap berikutnya. di sini Anda akan perlu memasukkan lokasi tempat Anda diharapkan mengirim data setelah intent dipanggil.
karena kita menggunakan ngrok, pilih HTTPS, dan masukkan tautan aman yang dihasilkan di ngrok serve, simpan dan lanjutkan ke langkah berikutnya
pilih opsi kedua untuk SSL Certificate, dan lanjutkan
Untuk memeriksa apakah pengaturan kami bekerja atau tidak . Pastikan server ngrok Anda berfungsi dan skrip Python juga berjalan jika tidak ini tidak akan bekerja.
kita dapat melihat bahwa server menerima permintaan dan memperbaruinya.
Kode Arduino
unggah skrip terlampir ke arduino Anda dan hubungkan ke raspberry pi seperti yang dijelaskan dalam skema.
int Fan[] = {13,12,11,10,9,8}; int n=0; void reset(); void set(char); void setup() { // put your setup code here, to run once: 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
hubungkan perangkat keras seperti yang ditunjukkan dalam skema
Selamat membuat. buat alat rumah tangga lainnya diaktifkan suara dengan cara yang sama :)
Kode
sketch arduino
kode server Python
sketch arduino
unggah kode ini ke arduino Anda dan hubungkan ke server raspberry pi Anda
int Fan[] = {13,12,11,10,9,8}; int n=0; void reset(); void set(char); void setup() { // put your setup code here, to run once: 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); }
Kode server Python
jalankan kode ini di python Anda setelah ngrok diatur untuk menerima data
from flask import Flask from flask_ask import Ask, statement import requests import json 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)
Skema Rangkaian
ini adalah cara Anda menghubungkan perangkat bersama