Índice:

Monitoramento de casa inteligente usando Alexa e Arduino: 9 etapas (com imagens)
Monitoramento de casa inteligente usando Alexa e Arduino: 9 etapas (com imagens)

Vídeo: Monitoramento de casa inteligente usando Alexa e Arduino: 9 etapas (com imagens)

Vídeo: Monitoramento de casa inteligente usando Alexa e Arduino: 9 etapas (com imagens)
Vídeo: 6 DICAS - Como COMEÇAR CORRETAMENTE sua Casa Inteligente desde o Início 2024, Dezembro
Anonim
Image
Image
Reunindo os materiais
Reunindo os materiais

No mundo atual, as pessoas passam mais tempo no local de trabalho do que em suas casas. Daí a necessidade de um sistema de monitoramento residencial onde as pessoas possam conhecer as condições da casa enquanto estão no trabalho. Seria ainda melhor se alguém pudesse perguntar a "alguém" sobre sua casa durante o horário de trabalho. Isso pode ser feito usando o Amazon Alexa como um assistente que pode fornecer ao usuário as informações necessárias sobre sua casa.

Não só o local de trabalho, os usuários podem conhecer as condições da casa em qualquer lugar do mundo, desde que tenham uma conexão com a internet e o Amazon Alexa.

As seguintes funções são implementadas neste projeto:

1) Controle os dispositivos domésticos como ventilador e luz

2) Informa o status dos dispositivos

3) Informa as condições climáticas da casa (temperatura e umidade)

4) Envia o instantâneo do interior da casa para o usuário via Gmail quando necessário.

5) Envia notificação em caso de -

* Intruso (também envia foto)

* Incêndio

* Convidado (também envia foto)

Etapa 1: reunindo os materiais

Reunindo os materiais
Reunindo os materiais
Reunindo os materiais
Reunindo os materiais
Reunindo os materiais
Reunindo os materiais

Materiais requisitados

Arduino Uno

Módulo ESP8266 Wifi

Linkit Smart 7688 Duo

DHT11

Relés

Sensor de obstáculo infravermelho

Webcam

Amazon Echo Dot

Placa de ensaio e fios de jumper

Software e serviços online:

Thingspeak.com

IDE Arduino

Conjunto de habilidades do Amazon Alexa

Amazon Alexa Echosim.io (para habilidade de teste)

Sem backend

PushingBox

Etapa 2: Programação do Arduino e ESP8266

Programação do Arduino e ESP8266
Programação do Arduino e ESP8266
Programação do Arduino e ESP8266
Programação do Arduino e ESP8266

Baixe o Arduino IDE do site oficial:

Abra o IDE do Arduino e vá para arquivo-> preferências-> no tipo de URL do gerenciador de placa adicional -

Vá para ferramentas -> placas -> Gerenciador de placas e instale o pacote esp8266 encontrado por último.

Para programar o arduino, basta conectar o cabo USB do arduino ao computador e selecionar Arduino / Genuino UNO em ferramentas-> placas. Certifique-se também de selecionar as portas COM de direitos em Ferramentas (o número da porta COM pode ser encontrado no Gerenciador de dispositivos). Escreva o programa requerido, compile-o e clique em upload se não houver erros.

Para programar o ESP8266, faça a conexão conforme mostrado no diagrama. conecte o usb do arduino ao computador. Em ferramentas-> placa-> selecione Generic ESP8266 e também selecione a porta COM correta. Escreva o programa requerido, compile-o e clique em upload se não houver erros. Certifique-se de conectar o Arduino RST ao GND (o arduino atua como um programador no ESP8266).

Neste projeto, primeiro o ESP8266 é programado e, em seguida, as conexões do circuito são removidas. Em seguida, o circuito é reconectado conforme mostrado na figura chamada "Conexões do circuito". E então o arduino é programado.

Etapa 3: Configurando Thingspeak.com

Configurando Thingspeak.com
Configurando Thingspeak.com

Crie uma conta em thingspeak.com.

usamos canais no thingspeak para armazenar as informações de controle do dispositivo e encaminhá-las para arduino / alexa. também armazenamos os valores de temperatura e umidade nos canais. É como um local de armazenamento para as informações.

Faça login no thingspeak, vá para canais meus canais e crie um novo canal. Dê nome e descrição aos seus canais. Em nosso projeto, precisamos de 8 canais (você pode fazer o trabalho usando menos canais, mas será um pouco complicado durante a programação). Além disso, o thingspeak tem uma restrição de tempo durante a atualização de um canal. Deve haver um intervalo de 10-15 segundos entre as atualizações sucessivas de um determinado canal.

Oito canais com seus valores e significados são dados abaixo

nome do canal (significado do valor1, significado do valor2, etc):

1) Controle de dispositivo (0 -lightON, 1- lightOff, 2- ventilador ligado, 3- ventilador desligado)

2) status da luz (0- luz apagada, 1 luz acesa)

3) status do ventilador (0- ventilador desligado, 1- ventilador ligado)

4) umidade (valor da umidade)

5) temperatura (valor da temperatura)

6) notificação de intruso (1- alerta de intruso)

7) notificação de incêndio (1- alerta de incêndio)

8) notificação de convidado (1- alerta de convidado)

ao clicar em qualquer canal, você pode ver seu id de canal e escrever chaves de API na guia Chaves de API. o id do canal é necessário para obter a informação / valor no canal. E a chave de escrita é necessária para armazenar um valor no canal.

A solicitação http para atualizar um canal é:

api.thingspeak.com/update?api_key=&field1=

é substituído pelas teclas de gravação correspondentes do canal e pode ser (0/1 no caso de controle de dispositivo ou valores de temperatura / umidade)

A solicitação http para ler o valor de um canal é:

api.thingspeak.com/channels//field/field1/last.html

é substituído pelo id de canal específico do canal do qual queremos ler.

Etapa 4: o programa

O programa está dividido em 3 partes:

A) Programa para Arduino: o programa para arduino é muito simples. Ele recebe os dados do ESP8266 em série e com base nos dados recebidos, os dispositivos são controlados. Mais informações sobre o programa podem ser encontradas nos comentários do próprio programa.

B) Programa para ESP8266: o programa para ESP8266 envolve 3 coisas

1) atualizar a temperatura e umidade usando solicitação

client.print (String ("GET") + "/ update? key = & field1 =" + umidade + "HTTP / 1.1 / r / n" + "Host:" + host + "\ r / n" + "Conexão: fechar / r / n / r / n "); // atualizar umidade

client.print (String ("GET") + "/ update? key = & field1 =" + temperatura + "HTTP / 1.1 / r / n" + "Host:" + host + "\ r / n" + "Conexão: fechar / r / n / r / n "); // atualizar a temperatura

o é substituído pela tecla de escrita correspondente encontrada no canal de coisaspeak para umidade e temperatura, respectivamente. e o host é api.thingspeak.com.

baixe a biblioteca dht em:

2) leitura dos canais correspondentes do thingspeak e dispositivo de controle com base nos valores obtidos: client.print (String ("GET") + "/channels//field/field1/last.html HTTP / 1.1 / r / n" + " Host: "+ host +" / r / n "+" Conexão: fechar / r / n / r / n ");

onde é substituído pelo id de canal correspondente encontrado em thingspeak.

3) Envio de alerta em caso de alta temperatura através da caixa de pressão

String host1 = "api.pushingbox.com";

client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 / r / n" + "Host:" + host1 + "\ r / n" + "Conexão: fechar / r / n / r / n ");

onde é substituído pelo id do seu dispositivo no pushbox.

Etapa 5: Configurar Linkit Smart 7688 Duo e Webcam

Configurando Linkit Smart 7688 Duo e Webcam
Configurando Linkit Smart 7688 Duo e Webcam
Configurando Linkit Smart 7688 Duo e Webcam
Configurando Linkit Smart 7688 Duo e Webcam
Configurando Linkit Smart 7688 Duo e Webcam
Configurando Linkit Smart 7688 Duo e Webcam

Neste projeto, a webcam e o linkit smart 7688 duo são usados para capturar a foto necessária e enviá-la ao usuário. Você também pode usar o módulo de câmera arduino e fazer a interface com o arduino ou pode usar qualquer câmera IP.

Pressione e segure o botão wi-fi no linkit smart 7688 por 20 segundos para reiniciar a placa. Depois que a configuração de wi-fi for redefinida, você poderá ver o nome do ponto de acesso nas conexões de rede sem fio. Agora conecte o computador a essa rede. depois de conectá-lo, abra o navegador e digite 192.168.100.1 na barra de endereço. Você poderá ver seu portal. defina uma senha para fazer login em seu portal.

Depois de fazer o login, vá para a guia rede e selecione o modo Estação (precisamos dele (linkit smart 7688 duo) para acessar a internet) e conecte-o à sua rede Wifi e pressione Configurar e reiniciar.

Depois que a placa for reiniciada, ela receberá um endereço IP local. Descubra o endereço usando qualquer ferramenta de IP ou o portal do roteador. No meu caso era 192.168.1.4. Agora digite o endereço IP local na barra de endereços do navegador. certifique-se de que o computador está conectado à mesma rede que o linkit smart. Você será solicitado a fazer o login novamente.

Para habilitar o streaming da webcam, você deve habilitar o-j.webp

Depois de fazer o login, vá para a guia de serviço e marque Habilitar streamer-j.webp

Após a configuração, você pode conectar sua webcam ao host usb linkit smart 7688 duo por meio de um cabo OTG. Agora, para ver o Stream, abra o navegador e digite: na barra de endereço. no meu caso é 192.168.1.4:4400

para tirar a foto instantânea, digite o comando:? action = snapshot

Agora, esta imagem está disponível localmente, mas precisamos disponibilizá-la para o serviço de push box. Para conseguir isso, precisamos fazer o encaminhamento de porta. O encaminhamento de portas pode ser feito no portal do roteador. A identificação do processo é diferente para roteadores diferentes. Basta google para saber como encaminhar a porta para um roteador específico. Geralmente, está disponível no serviço NAT. Após o encaminhamento de porta, o uso pode acessar essa porta (ou seja, 4440) do seu IP externo. O IP externo pode ser encontrado ao amarrar "whats my ip" no google.

Você precisa colocar este endereço

ou seja, https://::? action = snapshot

no pushbox (que é explicado no próximo passo) para que o pushbox possa acessar esta imagem e anexá-la ao e-mail e enviá-la a você sempre que necessário.

Você também pode armazenar a imagem no cartão SD, pois o Linkit smart 7688 duo também vem com um slot para cartão SD para armazenar informações. Mais informações sobre isso podem ser encontradas em:

docs.labs.mediatek.com/resource/linkit-sm…

Etapa 6: Configurando PushingBox

Configurando PushingBox
Configurando PushingBox

O pushbox é usado para enviar notificações sobre diferentes alertas no projeto para o gmail.

fazer login no pushbox usando a conta do Google:

vá para meus serviços adicionar serviço. existem muitos serviços para escolher, como Gmail, Twitter, notificação push para Android, etc …

selecione Gmail (pois precisamos enviar a foto como anexo) e preencha a configuração do nome do gmail e a id do gmail do usuário para o qual o alerta deve ser enviado.

vá para meus cenários e crie um novo cenário. dê nome ao cenário (ex: ALERTA) adicione o serviço criado anteriormente.

escreva o assunto e o corpo do e-mail adequados e digite a url para tirar a captura de tela da webcam para anexar a foto. Crie diferentes cenários para diferentes alerts.api para a execução de um cenário de push box:

Etapa 7: Criando a habilidade Alexa usando backendless

Criando a habilidade Alexa usando backendless
Criando a habilidade Alexa usando backendless
Criando a habilidade Alexa usando backendless
Criando a habilidade Alexa usando backendless
Criando a habilidade Alexa usando backendless
Criando a habilidade Alexa usando backendless

backendless é usado para criar a habilidade alexa. É uma programação simples de arrastar e soltar usada para criar habilidade de alexa (ou qualquer programa) que pode ser acessada por API sem backend.

crie uma conta no backendless:

  • Faça login em sua conta em uma conta sem backend. clique em Criar aplicativo e dê um nome a seu aplicativo
  • Clique no ícone Business Logic localizado na barra de ícones à esquerda. Você verá a tela API SERVICES.
  • Clique no ícone “+” para criar um novo serviço. Certifique-se de selecionar CODELESS no pop-up “Novo serviço”. Digite “AlexaService” para o nome do serviço. Clique no botão SALVAR:
  • Backendless cria o serviço de API e solicitará que você crie um método para o serviço. Este será o método que processará as solicitações de Alexa. Digite “handleRequest” para o nome do método. Certifique-se de selecionar POST para a operação REST e declarar um argumento com o nome de “req” e digite “Any Object” conforme mostrado:
  • Backendless cria um espaço reservado para a lógica sem código do método. Clique no botão EDITAR para iniciar a mudança para o Codeless Logic Designer. No bloco de espaço reservado da função criada, clique na área que diz “doSomething” e altere para “sendAlexaResponse”. Esta função é usada para fazer alexa dizer algo que pode ser passado como argumento. Clique no botão SALVAR para que a função seja salva.
  • Clique no ícone de engrenagem localizado no bloco roxo ao lado da palavra “Função”. Adicione dois argumentos arrastando os blocos de entrada conforme mostrado na imagem abaixo. Atribua os nomes dos argumentos como “whatToSay” e “waitForResponse“. Observe que, à medida que você adiciona argumentos, a área dos Blocos de Contexto é preenchida automaticamente com os blocos que representam os valores dos argumentos.
  • Modifique a lógica da função para que se pareça com a imagem. Para os blocos “Criar Objetos”, use o ícone de engrenagem para alterar o nome das propriedades do objeto. Não se esqueça de salvar seu trabalho clicando no botão SALVAR.
  • Agora que a função personalizada foi construída, volte para o método handleRequest do serviço AlexaService. Clique na categoria Funções personalizadas na barra de ferramentas à esquerda e arraste o bloco sendAlexaResponse para conectar com o conector de retorno do seu método de serviço
  • As etapas acima também podem ser encontradas em seu site:
  • Clique no nó “Add New” em Functions na seção BROWSER. No bloco de placeholder da função criada, clique na área que diz “doSomething” e altere para “getIntentName” modifique os blocos para que a função se pareça com a imagem mostrada. obterá o nome do intent com base em exemplos de expressões. Volte para api services-> handle request na seção do navegador. Variáveis e lógica são criadas a partir da seção do sistema. Crie as seguintes variáveis mostradas nas imagens.
  • a seguir, armazenamos o nome da intenção na variável de solicitação. E então compare com as intenções. por exemplo, se a solicitação for "introdução", a variável de resposta será definida como "oi! Eu posso controlar ……." e esta resposta é lida em voz alta por alexa, finalmente. modifique o bloco como mostrado.
  • se a solicitação for LightsOn intent, então atualizamos o canal thingspeak para '0' usando http get request e, ao mesmo tempo, atualizamos o status do dispositivo (1/0 dependendo de On / Off). A mesma coisa é repetida para LightsOff, FanOn e FanOff.
  • Para o clima, lemos no canal de temperatura e umidade e armazenamos o resultado na variável de resposta. Como o canal só fornece valores, acrescentamos textos para tornar a resposta significativa
  • para um instantâneo da sala de estar, executamos o cenário pushbox
  • para o status do dispositivo, lemos informações do canal de status do thingspeak:
  • para notificações e alertas que lemos nos canais de alerta (incêndio, intruso e visitante):
  • com base nos valores que obtemos do campo de notificação, as mensagens de alerta correspondentes são armazenadas na variável respond0. se não houver notificação, nenhuma mensagem de notificação será armazenada.
  • assim que a notificação for lida, o '0' será atualizado nos canais de notificação para que alexa não leia a mesma notificação novamente. Então, finalmente, com base na solicitação, a variável respond0 / respond é lida em voz alta.

Etapa 8: Configurar o Alexa Skill no Amazon Developer Console:

Configurando Alexa Skill no Amazon Developer Console
Configurando Alexa Skill no Amazon Developer Console
Configurando Alexa Skill no Amazon Developer Console
Configurando Alexa Skill no Amazon Developer Console
Configurando Alexa Skill no Amazon Developer Console
Configurando Alexa Skill no Amazon Developer Console

vá para o console do desenvolvedor amazon e faça login usando a conta amazon.

vá para o console do desenvolvedor e clique na guia ALEXA. Clique em alexa skills kit para começar.

crie um tipo de habilidade personalizado, dê nome e nome de invocação à habilidade. As respectivas intenções e expressões de exemplo são fornecidas no código.

na guia de configuração, selecione HTTPS como o tipo de ponto de extremidade do serviço e preencha a URL padrão com a URL da API de backendless. Selecione a segunda opção em Certificado para ponto de extremidade padrão no certificado SSL. Você também pode testar a habilidade usando o simulador de teste.

Após a conclusão do teste, você pode publicar a habilidade com as informações de publicação necessárias.

Etapa 9: Configuração final e conclusão

Configuração final e conclusão!
Configuração final e conclusão!
Configuração final e conclusão!
Configuração final e conclusão!

Faça a conexão do circuito conforme mostrado.

Às vezes, ESP8266 não funcionará corretamente devido a corrente insuficiente. Portanto, embora não seja mencionado no circuito, é recomendado alimentar o ESP8266 de uma fonte separada de 3,3 V. Se você estiver usando um banco de energia, certifique-se de reduzir a tensão de 5v para 3,3v usando um regulador de tensão de 3,3v. Carregue o programa para ESP8266 e arduino. Eu mostrei a conexão com a lâmpada, a mesma coisa pode ser estendida para o ventilador ou qualquer dispositivo. Por fim, use amazon echo ou echosim.io para testar suas habilidades.

Você deve ativar a habilidade usando o nome de invocação (como é o meu caso - "myhome"). Às vezes, não funcionará se for usado sem o nome de invocação, como mostrei algumas vezes em meu vídeo

Espero que tenha gostado do tutorial!

Obrigada!

Recomendado: