Habilite o controle Alexa para o seu ventilador de teto
Componentes e suprimentos
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
![]() |
|
Aplicativos e serviços online
![]() |
| |||
![]() |
| |||
|
Sobre este projeto
Eu estarei detalhando aqui como tornei meu ventilador de teto regular inteligente integrando o Amazon Alexa para controle de velocidade do mesmo. Estaremos usando o conjunto de habilidades amazon alexa para iniciar a mudança de velocidade e será ngrok serviço de tunelamento para rotear a solicitação para nosso servidor RPi hospedado localmente, que dirá ao nosso Arduino uno para ligar o relé relacionado.

Configurando nosso servidor Raspberry Pi local
precisamos dos seguintes serviços para fazer uso de nosso servidor.
- Python Python:para instalar pacotes python, se você estiver usando python 2.7 ou 3 pip será instalado por padrão, portanto, você pode evitar esta etapa
sudo apt-get install python-pip
- Flask:Flask é um pacote servidor para python que o ajudará a implementar servidores python facilmente.
pip install flask
- flask ask:uma extensão de flask usada para criar programas alexa frendly facilmente.
pip install flask-ask
- pyserial:módulo de comunicação serial para python
sudo apt-get install pyserial
- libpython2.7-dev
sudo apt-get intall libpython2.7-dev
todos os módulos necessários são instalados na hora de definir o servidor em execução. precisamos inserir o script python para o mesmo
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 ') declaração de retorno ("Ventilador de teto ligado.") @ ask.intent ("FanOff") def off () :ser.write (b'0 ') return statement ("Ventilador de teto desligado.") @ ask.intent ("FanLevelUp") def up ():ser.write (b' + ') return statement ("Ventilador de teto acelerar. ") @ ask.intent (" FanLevelDown ") def down ():ser.write (b'- ') return statement (" Ceiling Fan speed down. ") if __name__ ==" __main__ ":app.run (debug =True)
Execute este script python e inscreva-o na lista de inicialização automática do seu RPi.
3. Baixar Ngrok
Ngrok é uma plataforma de tunelamento segura para tornar seu dispositivo online. Com esta plataforma você pode fazer sua aplicação web ou qualquer aplicação ficar online de uma forma muito simples. Para fazer o download, acesse o site oficial e faça o download para ARM.
https://ngrok.com/
Descompacte-o e vá para o diretório de onde você o extraiu. Execute-o usando o comando
./ngrok http 5000
Habilidade Alexa
Vá para a página do desenvolvedor amazon e inscreva-se para sua conta de desenvolvedor
https://developer.amazon.com/
Entre no console do desenvolvedor depois de entrar e agora selecione "Alexa skill kit"

agora selecione "Adicionar nova habilidade"

Insira o nome da sua habilidade e insira um nome de invocação. certifique-se de que seu nome de invocação atenda às condições necessárias

salve e prossiga para a próxima etapa
aqui, insira as intenções de invocação da habilidade e exemplos de uso, ou seja, as combinações de palavras para iniciar cada intenção.
as intenções são as seguintes
{"intents":[{"intent":"FanOn"}, {"intent":"FanOff"}, {"intent":"FanLevelUp"}, {"intent":"FanLevelDown" }]}
exemplos de expressões
FanOn dizer fan onFanOn dizer onFanOff dizer offFanOff dizer fan offFanLevelUp dizer fan level upFanLevelUp dizer aumentar fan speedFanLevelDown dizer fan level downFanLevelDown dizer diminuir fan speed


Salve e prossiga para a próxima etapa. aqui você terá que inserir o local para o qual deve enviar os dados assim que um intuito for invocado.
já que estamos usando ngrok , selecione HTTPS, e digite o link seguro gerado no ngrok serve, salve-o e prossiga para a próxima etapa
escolha a segunda opção para o Certificado SSL e prossiga
Para verificar se nossa configuração está funcionando ou não. Certifique-se de que seu servidor ngrok esteja funcionando e que o script Python também esteja em execução, caso contrário, ele não funcionará.
podemos ver que os servidores estão recebendo solicitações e atualizando-as.
Código Arduino
carregue o esboço anexado ao seu arduino e conecte-o ao raspberry pi conforme explicado no esquema.
int Ventilador [] ={13,12,11,10,9,8}; int n =0; void reset (); void set (char); void setup () {// coloque seu código de configuração aqui, para executar uma vez:for (int i =0; i <6; i ++) {pinMode (Fan [i], SAÍDA); } Serial.begin (9600); } void loop () {char x; if (Serial.available ()) {x =Serial.read (); Redefinir(); 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; pausa; caso '+':n ++; pausa; case '-':n--; pausa; caso '0':n =0; pausa; } digitalWrite (Fan [n], HIGH);}
Hardware
conecte o hardware conforme mostrado no esquema

Feliz fabricação. tornar qualquer outro aparelho ativado por voz de maneira semelhante :)
Código
- esboço do arduino
- Código do servidor Python
esboço do arduino Arduino
carregue este código para o seu arduino e conecte-o ao seu servidor raspberry piint Fan [] ={13,12,11,10,9,8}; int n =0; void reset (); void set (char); void setup () {// coloque seu código de configuração aqui, para executar uma vez:for (int i =0; i <6; i ++) {pinMode (Fan [i], SAÍDA); } Serial.begin (9600); } void loop () {char x; if (Serial.available ()) {x =Serial.read (); Redefinir(); 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; pausa; caso '+':n ++; pausa; case '-':n--; pausa; caso '0':n =0; pausa; } digitalWrite (Fan [n], HIGH);}
Código do servidor Python Python
un este código em seu spython após o ngrok ser configurado para receber dadosdo 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 ("Ventilador de teto ligado.") @ ask.intent ("FanOff") def off ():ser.write (b'0 ') return statement ("Ventilador de teto desligado.") @ 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)
Esquemas
é assim que você conecta os dispositivos juntos
Processo de manufatura
- Construindo uma rede de sensores sem fio em sua casa
- Aceitar moeda de controle com Arduino
- Arduino Control Center
- LEDs controlados por Alexa através do Raspberry Pi
- Arduino com Bluetooth para controlar um LED!
- Controle do umidificador Arduino
- Arduino Nano:Controle 2 motores de passo com joystick
- Controle o seu LED com a Cortana
- Controle total de sua TV usando Alexa e Arduino IoT Cloud
- Controle de ventilador PWM de 4 pinos de 25 kHz com Arduino Uno