IoT - Smart Home - EaD INATEL
![cover instructables.jpg](/proxy/?url=https://content.instructables.com/F9K/90QL/JAMTSH9T/F9K90QLJAMTSH9T.jpg&filename=cover instructables.jpg)
![Blocos.jpg](/proxy/?url=https://content.instructables.com/FIF/RI7I/JAMTSLDC/FIFRI7IJAMTSLDC.jpg&filename=Blocos.jpg)
Projeto Smart Home
Esse Tutorial vai mostrar os passos para implementação de uma solução Smart Home contendo serviço na nuvem dweet.io, utilização de cinco atuadores e sensores do kit Linker Mezzanine e mais um sensor externo.
A solução ainda inclui um aplicativo desenvolvido com Ionic que realiza o controle e notificações da solução Smart Home.
O aplicativo foi desenvolvido para uso em smartphones baseados em Android.
A figura abaixo mostra o diagrama em blocos da solução:
Material
1 DragonBoard 410C;
1 Linker Mezzanine;
1 Teclado;
1 Mouse;
1 Monitor com HDMI;
1 Relé;
1 Sensor de temperatura;
1 Sensor de luminosidade;
1 Sensor ultrassônico;
1 Sensor de toque;
3 Leds;
3 Resistores de 1kΩ;
1 Transistores BC337
Criar As Coisas No Dweet.io
![fig 1.png](/proxy/?url=https://content.instructables.com/FM9/UJ8W/JAMTS7HA/FM9UJ8WJAMTS7HA.png&filename=fig 1.png)
![fig 2.png](/proxy/?url=https://content.instructables.com/FH5/SE64/JAMTS7HB/FH5SE64JAMTS7HB.png&filename=fig 2.png)
![fig 3.png](/proxy/?url=https://content.instructables.com/FA0/EYDF/JAMTS7HE/FA0EYDFJAMTS7HE.png&filename=fig 3.png)
![fig 4.png](/proxy/?url=https://content.instructables.com/F5M/4QQY/JAMTS7HF/F5M4QQYJAMTS7HF.png&filename=fig 4.png)
No site dweet.io clique no botão PLAY, como mostra a figura abaixo:
Figura 1
A imagem mostrada abaixo é a página que será aberta após o clique no PLAY:
Figura 2
A solução utiliza onze coisas no dweet.io. São elas:
- "Luzes": Controla o acionamento manual das luzes (acende ou apaga um Led).
Valores possíveis:
0 desligado
1 ligado
- "ArCondicionado": Controla o acionamento manual do Ar condicionado (aciona/desativa o relé)
Valores possíveis:
0 desligado
1 ligado
- "AutoTemperatura": Liga/desliga o controle automático de temperatura
Valores possíveis:
0 desligado
1 ligado
- "TemperaturaDesejada": Temperatura desejada para a casa
Valores possíveis:
Mínimo 18⁰C
Máximo 30⁰C
- "Temperatura": Temperatura ambiente medida pelo sensor
Valores possíveis:
Mínimo - 50⁰C
Máximo 125⁰C
- "AutoLuminosidade": Liga/desliga o controle automático de temperatura
Valores possíveis:
0 desligado
1 ligado
- "LuzDesejada": Luminosidade desejada para a casa
Valores possíveis:
Mínimo 0
Máximo 1000
- "Luminosidade": Luminosidade ambiente medida pelo sensor
Valores possíveis:
Mínimo 0
Máximo 1000
- "DistanciaMedida": Indica a distância medida pelo sensor ultrassônico em centímetros.
- "SistemaDesligado": Indica se o sistema foi desligado manualmente
Valores possíveis:
Sistema Ligado 1
Sistema Desligado 0
A figura a seguir mostra o POST para a solução Smart Home.
Figura 3
A figura a seguir mostra o resultado bem-sucedido de um POST para a coisa “SmHo_CarMene”:
Figura 4
Conexões Dos Sensores E Atuadores
![circuito.png](/proxy/?url=https://content.instructables.com/FZM/KBJV/JAMTS7JC/FZMKBJVJAMTS7JC.png&filename=circuito.png)
![LED.jpg](/proxy/?url=https://content.instructables.com/FOY/CGS9/JAMTS7JE/FOYCGS9JAMTS7JE.jpg&filename=LED.jpg)
![Distancia.jpg](/proxy/?url=https://content.instructables.com/F0V/QDNZ/JAMTS7JG/F0VQDNZJAMTS7JG.jpg&filename=Distancia.jpg)
A figura abaixo mostra os sensores e atuadores para essa solução:
Figura Circuito
O sensor de temperatura deve ser conectado na porta analógica ADC2 da Linker Mezzanine.
O sensor de luminosidade deve ser conectado na porta analógica ADC1 da Linker Mezzanine.
O sensor de toque deve ser conectado na porta digital D1 da Linker Mezzanine.
O Relé deve ser conectado na porta digital D2 da Linker Mezzanine.
O Led que será usado como indicativo de acionamento das luzes deve ser conectado na GPIO E, como ilustrado na figura a seguir:
Figura LED
O sensor de distância ultrassônico HC-SR04 possui duas portas. Uma de entrada (Trigger) e uma de saída (Echo). A porta Trigger deve ser conectada na GPIO 24 e a porta Echo na GPIO 25, como ilustrado na figura a seguir:
Figura Distancia
Abaixo, link com a explicação geral do funcionamento do circuito e solução:
Instalação Do Ionic No Computador Pessoal
Antes de desenvolver o aplicativo para o smartphone, é preciso instalar o Ionic no computador pessoal. Os passos para a instalação e verificação se a mesma foi bem-sucedida é mostrado abaixo:
- Entre no site: https://nodejs.org/en/ e faça o download da versão mais recente LTS do Node
- Instale o Node no seu computador pessoal
- Envie os comandos do prompt de comandos (cmd) para verificar se a instalaçaum foi feita com sucesso:
node -v
npm -v
- Instale o Ionic com os comandos abaixo através do prompt de comandos (cmd):
npm install –g cordova ionic
npm install –g cordova
- Verifique se o Ionic foi instalado com sucesso usando o comando abaixo:
ionic -v
Desenvolvimento De Um Aplicativo No Smartphone Usando Ionic
![Home Blank.png](/proxy/?url=https://content.instructables.com/FE3/KJWW/JAMTS7OY/FE3KJWWJAMTS7OY.png&filename=Home Blank.png)
![Home Smart Home.png](/proxy/?url=https://content.instructables.com/FDN/IE5U/JAMTS7OZ/FDNIE5UJAMTS7OZ.png&filename=Home Smart Home.png)
![lookfeel_1.png](/proxy/?url=https://content.instructables.com/F18/C3YA/JAMTS7P0/F18C3YAJAMTS7P0.png&filename=lookfeel_1.png)
![lookfeel_2.png](/proxy/?url=https://content.instructables.com/F4L/0IUO/JAMTS7P1/F4L0IUOJAMTS7P1.png&filename=lookfeel_2.png)
![luzes&ar.png](/proxy/?url=https://content.instructables.com/FLV/87WL/JAMTS7P2/FLV87WLJAMTS7P2.png&filename=luzes&ar.png)
![autotemp.png](/proxy/?url=https://content.instructables.com/FIQ/IN53/JAMTS7P3/FIQIN53JAMTS7P3.png&filename=autotemp.png)
![autoluz.png](/proxy/?url=https://content.instructables.com/FK9/U29I/JAMTS7P4/FK9U29IJAMTS7P4.png&filename=autoluz.png)
![sensordistancia.png](/proxy/?url=https://content.instructables.com/FBG/MS2O/JAMTSAAY/FBGMS2OJAMTSAAY.png&filename=sensordistancia.png)
Para criar um aplicativo em branco deve-se executar a seguinte linha de comando no prompt de comando do seu computador pessoal (botão direito do mouse no “Windows”, clicar em “Executar”, em “Abrir:” digitar “cmd”).
No prompt de comando do seu computador pessoal digite o comando abaixo:
ionic start shome_cmmm blank (use o nome do seu projeto)
Um novo projeto será criado na pasta do usuário utilizado para executar o comando acima.
Vá para o diretório com o comando abaixo:
cd shome_cmmm
Para executar a aplicação execute o comando abaixo:
ionic serve
A página abaixo será aberta no seu navegador (preferencialmente o Google Chrome):
Figura Home Blank
Crie o provider dweet.ts com o comando abaixo:
ionic generate provider dweet
Abra o aplicativo IDE de desenvolvimento “Visual Studio Code”.
Abra a pasta contendo o projeto (shome_cmmm).
Substitua os arquivos:
- home.html (src/pages/home)
- home.ts (src/pages/home)
- dweet.ts (src/providers/dweet)
- app.module.ts (src/app)
Pelos arquivos anexados.
Após a substituição dos arquivos a página do seu projeto será atualizada e aparecerá algo como a figura abaixo:
Figura Home Smart Home
O aplicativo desenvolvido com Ionic tem funcionalidades para controle manual de liga/desliga para ar-condicionado, luzes, sistema automático de temperatura e sistema automático de luminosidade.
Ainda possui a capacidade de permitir ao usuário controlar os valores de temperatura e luminosidade desejadas através de controles deslizantes.
Abaixo figura com o “look & feel” do aplicativo no smartphone (utilize o App “Ionic DevApp” para Android):
Figura lookfeel_1
Figura lookfeel_2
As funções destacadas na figura abaixo mostram o controle manual para ligar/desligar em ordem de cima para baixo as luzes e ar-condicionado:
Figura luzes&ar
As funções abaixo se referem ao controle automático da temperatura. É possível ligar/desligar o controle automático.
Figura autotemp
Quando o mesmo está ligado, o controle deslizante pode ser utilizado para determinar a temperatura desejada no ambiente.
A lógica de funcionamento é simples e utiliza a temperatura desejada como referência para acionar ou não o equipamento (ar-condicionado) para que a temperatura medida pelo sensor fique igual ou abaixo da desejada.
As funções abaixo se referem ao controle automático da luminosidade. É possível ligar/desligar o controle automático.
Figura autoluz
Quando o mesmo está ligado, o controle deslizante pode ser utilizado para determinar a luminosidade desejada no ambiente.
A lógica de funcionamento é simples e utiliza a luminosidade desejada como referência para acionar ou não o equipamento (luzes) para que a luminosidade medida pelo sensor fique igual ou abaixo da desejada.
A função mostrada na figura abaixo se refere ao medidor de distância idealizado para ser instalado na garagem da casa inteligente e que irá auxiliar o motorista a não se chocar com a parede.
Figura sensordistancia
A distância mínima definida é de 10cm da parede e o aplicativo irá informar a distância em que se encontra o automóvel da parede.
Iniciar a DragonBoard 410c
Conectar monitor HDMI, teclado e mouse. Usar a aplicação “Terminal” para acessar o prompt de comandos.
Verificar Se Todas As Bibliotecas Necessárias Estão Instaladas Na DragonBoard 410c
Executar os seguintes comandos na aplicação “Terminal” da DragonBoard 410C, caso não tenha configurado a Dragonboard para utilização dos sensores analógicos ainda:
NOTA: Caso já tenha a Dragonboard configurada para uso de sensores analógicos, desconsidere esse passo e vá para o próximo.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Siga o tutorial abaixo para instalar as bibliotecas necessárias.
#Bibliotecas adicionais:
sudo apt-get install build-essential autoconf
automake libtool-bin pkg-config python-dev
sudo reboot
# LIBSOC
git clone https://github.com/jackmitch/
libsoc.git
cd libsoc
sudo autoreconf -i
sudo ./configure --enable-python=2 --enableboard=dragonboard410c --with-board-configs
sudo make
sudo make install
sudo ldconfig /usr/local/lib
sudo reboot
#96Boards
git clone https://github.com/96boards/96BoardsGPIO.git
Após instalar a biblioteca 96Boards é necessário verificar, e se for o caso, substituir a string "LS_SHARED" por "LS_GPIO_SHARED" no arquivo "/home/linaro/96boardsGPIO/lib/gpio.c".
Instale a biblioteca 96Boards como apresentado abaixo:
#96Boards
cd 96BoardsGPIO/
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
sudo ldconfig
Instale a biblioteca SPIDEV que permitirá que os sensores analógicos possam ser usados pela DragonBoard 410C.
# SPIDEV
git clone https://github.com/doceme/pyspidev.git
cd py-spidev
sudo python setup.py install
sudo ldconfig
sudo reboot
Após a instalação da biblioteca é preciso configurar o arquivo "/usr/local/etc/libsoc.conf". Inclua as linhas destacadas em negrito abaixo, se as mesmas ainda não estiverem presentes no arquivo:
[board]
model = Qualcomm Technologies, Inc. APQ 8016
SBC
[GPIO]
# dragonboard 410c pin layout
#
GPIO-A = 36
GPIO-B = 12
...
GPIO-K = 28
GPIO-L = 33
GPIO-CS = 18
# include mappings by pin number on board
GPIO-23 = 36
GPIO-24 = 12
...
GPIO-33 = 28
GPIO-34 = 33
GPIO-12 = 18
Para que as funções POST e GET funcionem com o site dweet.io é necessário instalar a biblioteca “requests”. O procedimento é mostrado abaixo:
sudo pip install requests
Software Na DragonBoard 410c
Copiar os seguintes arquivos para o diretório /home/linaro/Downloads:
- dweet.py
- Smart_Home_CMMM.py
Os arquivos estão anexos.
Execução Aplicativo Python Na DragonBoard 410c
Vá para o diretório /home/linaro/Downloads:
cd Downloads (se já se encontrar no /home/linaro)
Envie o comando abaixo para que os sensores passem a realizar o sensoriamento da casa e enviar as informações para a nuvem (dweet.io):
sudo python smart_home_cmmm.py
Execução Aplicativo Smart Home No Smartphone
Para executar o aplicativo de controle Smart Home a partir do smartphone é necessário fazer o seguinte procedimento:
- Instale o App “Ionic DevApp” no seu smartphone
- Certifique-se que o smartphone e o computador com o ionic estejam na mesma rede Wi-Fi
- Abra o aplicativo no smartphone
- Escolha o projeto Ionic criado anteriormente (executado com o comando “ionic serve”)
- Pronto! Agora é usar o aplicativo!
Veja links com vídeos mostrando a utilização do App: