Управление потолочным вентилятором через Alexa: пошаговое руководство
Компоненты и материалы
- Raspberry Pi 3 Model B — 1 шт. (локальный сервер)
- Arduino UNO — 1 шт. (управление реле)
- Релейный модуль (5 В, управляемый с Arduino) — 1 шт. (на 4–6 каналов для скоростей)
- Регулятор скорости вентилятора (старый резистивный тип) — 1 шт.
Инструменты
- Паяльник
Программное обеспечение и сервисы
- Arduino IDE
- Python 2.7/3 + pip
- Flask, flask-ask, pyserial
- ngrok (туннелирование HTTPS для локального сервера)
- Amazon Alexa Skills Kit (Developer Console)
О проекте
Обычный потолочный вентилятор становится умным: голосовые команды Alexa → Skill → ngrok HTTPS → Flask-сервер на Raspberry Pi → Serial → Arduino UNO → реле → включение/переключение скоростей регулятора.
Настройка Raspberry Pi (Flask + flask-ask)
# Установка зависимостей
sudo apt-get install python-pip
pip install flask flask-ask pyserial
sudo apt-get install libpython2.7-dev
Серверный скрипт (Python)
from flask import Flask
from flask_ask import Ask, statement
import serial
ser = serial.Serial("/dev/ttyAMA0", 9600) # или /dev/ttyUSB0
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)
Добавьте скрипт в автозагрузку (systemd / rc.local).
ngrok — публичный HTTPS для локального сервера
- Скачайте ngrok для ARM: ngrok.com.
- Распакуйте, запустите:
./ngrok http 5000. - Скопируйте HTTPS-URL (например,
https://abcd1234.ngrok.io).
Создание Alexa Skill
- Amazon Developer Console → Alexa Skills Kit → Add Skill.
- Invocation Name: «потолочный вентилятор» (или на английском).
- Intents:
FanOn,FanOff,FanLevelUp,FanLevelDown. - Sample Utterances: «turn on fan», «fan off», «increase fan speed», «decrease fan speed» и вариации.
- Endpoint: HTTPS, вставьте ngrok URL. SSL Certificate: «My development endpoint has a certificate from a trusted CA» (второй вариант).
- Сохраните, протестируйте в симуляторе.
Код Arduino (управление реле скоростей)
int Fan[] = {13, 12, 11, 10, 9, 8}; // пины реле для скоростей 0..5
int n = 0;
void setup() {
for (int i = 0; i < 6; i++) pinMode(Fan[i], OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char 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; // выкл.
}
if (n < 0) n = 0;
if (n > 5) n = 5;
digitalWrite(Fan[n], HIGH);
}
Схема подключения
- Arduino UNO → Raspberry Pi: USB (Serial /dev/ttyAMA0 или /dev/ttyUSB0).
- Реле: IN1–IN6 → пины 8–13 Arduino. COM реле — к входам регулятора скоростей, NO — к обмоткам/тапам.
- Питание реле — от 5 В Arduino (если модуль на 5 В) или внешнего БП.
Важные замечания
- ngrok бесплатный URL меняется при перезапуске — для продакшена нужен фиксированный домен/SSL.
- Регулятор резистивный — просто переключает тапы трансформатора/реостата реле.
- Безопасность: в продакшене добавьте аутентификацию на Flask-эндпоинте.
Производственный процесс
- Построение доступной беспроводной сети датчиков для дома
- Умная копилка: управление монетоприёмником на Arduino Nano
- Arduino Power Control Center: N-FET, P-FET, реле и RTC
- Управление светодиодами через Alexa с помощью Raspberry Pi – простое пошаговое руководство
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
- Управление светодиодом Arduino через Cortana по Bluetooth в Windows 10
- Управление телевизором через Alexa и Arduino IoT Cloud — пошаговое руководство
- Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты