Включение Alexa Control для потолочного вентилятора
Компоненты и расходные материалы
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
![]() |
|
Приложения и онлайн-сервисы
![]() |
| |||
![]() |
| |||
|
Об этом проекте
Здесь я подробно расскажу, как я сделал свой обычный потолочный вентилятор умным, интегрировав Amazon Alexa для управления его скоростью. Мы будем использовать набор навыков amazon alexa, чтобы инициировать изменение скорости, и это будет ngrok служба туннелирования для перенаправления запроса на наш локальный сервер RPi, который сообщит нашему Arduino uno включить соответствующее реле.

Настройка нашего локального сервера Raspberry Pi
нам нужны следующие службы для использования на нашем сервере.
- Python PIP:для установки пакетов python, если вы используете python 2.7, или 3 pip будут установлены по умолчанию, поэтому вы можете избежать этого шага.
sudo apt-get install python-pip
- Flask:Flask - это пакет для Python, который поможет вам легко реализовать серверы Python.
pip install flask
- flask ask:расширение flask, используемое для простого создания дружественных программ alexa.
pip install flask-ask
- pyserial:модуль последовательной связи для python
sudo apt-get install pyserial
- libpython2.7-dev
sudo apt-get intall libpython2.7-dev
все необходимые модули установлены, пора запустить сервер. нам нужно ввести скрипт Python для того же
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 ("Потолочный вентилятор включен.") @ ask.intent ("FanOff") def off () :ser.write (b'0 ') return statement («Потолочный вентилятор выключен.») @ ask.intent («FanLevelUp») def up ():ser.write (b' + ') return statement («Потолочный вентилятор ускориться. ") @ ask.intent (" FanLevelDown ") def down ():ser.write (b'- ') return statement (" Ceiling Fan speed down. ") if __name__ ==" __main__ ":app.run (отладка =True)
Запустите этот скрипт python и включите его в список автозапуска вашего RPi.
3. Скачать Ngrok
Ngrok - это безопасная платформа для туннелирования, позволяющая подключить ваше устройство к сети. С помощью этой платформы вы можете очень просто сделать свое веб-приложение или любое приложение онлайн. Для загрузки перейдите на официальный сайт и загрузите для ARM.
https://ngrok.com/
Разархивируйте его и перейдите в каталог, в который вы его распаковали. Запустите его с помощью команды
./ngrok http 5000
Алекса Навык
Перейдите на страницу разработчика Amazon и зарегистрируйтесь для своей учетной записи разработчика
https://developer.amazon.com/
Войдите в консоль разработчика после входа в систему и выберите "Набор навыков Alexa"

теперь выберите «Добавить новый навык»

Введите название вашего навыка и введите имя вызова. убедитесь, что ваше имя вызова соответствует необходимым условиям

сохранить и перейти к следующему шагу
здесь введите намерения для вызова навыка и примеры произнесения, т. е. словосочетания, которые будут инициировать каждое намерение.
намерения заключаются в следующем
{"намерение":[{"намерение":"FanOn"}, {"намерение":"FanOff"}, {"намерение":"FanLevelUp"}, {"намерение":"FanLevelDown" }]}
образцы высказываний
FanOn сказать вентилятор onFanOn сказать onFanOff сказать offFanOff сказать вентилятор выключенFanLevelUp сказать FanLevelUp повысить уровень вентилятора сказать увеличить скорость вентилятора


Сохраните и переходите к следующему этапу. здесь вам нужно будет ввести местоположение, в которое вы должны отправить данные после вызова намерения.
поскольку мы используем ngrok , выберите HTTPS, и введите безопасную ссылку, созданную в ngrok serve, сохраните ее и перейдите к следующему шагу
выберите второй вариант для SSL-сертификата и продолжайте
Чтобы проверить, работает наша установка или нет. Убедитесь, что ваш сервер ngrok работает и скрипт Python также работает, иначе он не будет работать.
мы видим, что серверы получают запрос и обновляют его.
Код Arduino
загрузите прикрепленный эскиз вашего Arduino и подключите его к Raspberry Pi, как показано на схеме.
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], ВЫХОД); } Serial.begin (9600); } void loop () {char x; если (Serial.available ()) {x =Serial.read (); перезагрузить(); set (x);}} void reset () {for (int i =0; i <6; i ++) {digitalWrite (Fan [i], LOW); }} недействительный набор (char x) {переключатель (x) {case '1':n =1; ломать; регистр '+':n ++; ломать; case '-':n--; ломать; case '0':n =0; ломать; } digitalWrite (Fan [n], HIGH);}
Аппаратное обеспечение
подключите оборудование, как показано на схеме

Счастливого создания. аналогичным образом активируйте голосовое управление любого другого устройства :)
Код
- эскиз Arduino
- Код сервера Python
эскиз Arduino Arduino
загрузите этот код на свой arduino и подключите его к серверу raspberry piint 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], ВЫХОД); } Serial.begin (9600); } void loop () {char x; если (Serial.available ()) {x =Serial.read (); перезагрузить(); set (x);}} void reset () {for (int i =0; i <6; i ++) {digitalWrite (Fan [i], LOW); }} недействительный набор (char x) {переключатель (x) {case '1':n =1; ломать; регистр '+':n ++; ломать; case '-':n--; ломать; case '0':n =0; ломать; } digitalWrite (Fan [n], HIGH);}
Код сервера Python Python
un этот код в вашем spython после того, как ngrok настроен так, чтобы получать данныеиз 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 («Потолочный вентилятор включен.») @ ask.intent ("FanOff") def off ():ser.write (b'0 ') return statement ("Потолочный вентилятор выключен.") @ ask.intent ("FanLevelUp") def up ():ser.write (b '+') оператор return («Скорость потолочного вентилятора увеличена.») @ ask.intent («FanLevelDown») def down ():ser.write (b'- ') оператор return («Скорость потолочного вентилятора снизилась». ) if __name__ =="__main__":app.run (debug =True)
Схема
вот как вы соединяете устройства вместе
Производственный процесс
- Создание сети беспроводных датчиков в вашем доме
- Управление монетоприемником с помощью Arduino
- Центр управления Arduino
- Светодиоды, управляемые Alexa через Raspberry Pi
- Arduino с Bluetooth для управления светодиодом!
- Управление увлажнителем Arduino
- Arduino Nano:управление двумя шаговыми двигателями с помощью джойстика
- Управляйте своим светодиодом с помощью Cortana
- Полный контроль над вашим телевизором с помощью Alexa и Arduino IoT Cloud
- 4-контактный ШИМ-контроль вентилятора, 25 кГц, с Arduino Uno