SmartHome - V4

About: Interessado em IoT, eletrônica, programação e utilização de framework para aplicações em dispositivos móveis visando o desenvolvimento de apps híbridas.

"Smart Homes ou Casas Inteligentes são aquelas que utilizam soluções tecnológicas para funcionar melhor a fim de proporcionar praticidade e conforto.


Empresas e pessoas se baseiam no conceito de Internet das Coisas (Internet of Things - IoT) para desenvolver seus dispositivos, automatizando áreas, tais como a gestão de energia, sistema de áudio e vídeo, iluminação, segurança e inúmeras outras." (Inatel - IoT aplicada a Smart Home)

IoT aplicada a Smart Home - Inatel : Objetivos:

  • Entender o funcionamento de sensores e atuadores;
  • Conhecer a Plataforma da Qualcomm para IoT;
  • Utilizar a linguagem C e Python para IoT;
  • Conhecer a plataforma Linker Mezzanine;
  • Utilizar a placa DragonBoard da Qualcomm;
  • Publicar pelo menos um projeto no Instructables;
  • Desenvolver um App híbrido para controle de hardware;
  • Utilização de framework para aplicações em dispositivos móveis visando o desenvolvimento de apps híbridas;
  • Desenvolver uma plataforma Web para controle de hardware.

Step 1: Smart Home Projeto V4 [Dragonboard410c / Linker Mezzanini]

Criação de um projeto para Smart Home com os seguintes requisitos:

Requisitos obrigatórios:

- utilização de pelo menos 4 sensores/atuadores do Linker Mezzanini Kit;

- utilização de algum serviço na nuvem para envio de informações (ex: Dweet.io)

- utilização de um aplicativo mobile/web com Ionic para controlar o sistema.

- criação e publicação de um tutorial explicando o hardware,software e qualquer procedimento necessário para utilizar o sistema.

Requisitos extras:

- utilização de algum sensor/atuador que não faz parte do Kit;

- utilização de algum serviço que não seja o Dweet.io

- gravação de um vídeo sobre o projeto para postar no site: www.instructables.com

Step 2: Material Utilizado

  • DragonBoard 410C + Fonte Alimentação 12V
  • Linker Mezzanine
  • Monitor HDMI / Switch HDMI
  • Teclado / Mouse sem Fio
  • Sensores e Atuadores:
    • Relé
    • Sensor de temperatura
    • Sensor de luminosidade (LDR)
    • Sensor de toque
    • Sensor de movimento ('tilt')
    • Led
    • Potenciômetro deslizante
  • Transistores BD139 , BC548
  • Resistores 120Ω, 150Ω, 220Ω
  • Diodo 1N4007
  • Fonte 12V / Regulador de Tensão 3.3V / 5V
  • Amplificador de som st PAM8403 Classe D
  • Bluetooth + Mic
  • Lâmpada 40mA
  • Multímetro digital

Step 3: Identificação GPIOs & Low Speed Expansion Connector

Com base nestes quadros é possível identificar e mapear as GPIOs e seus respectivos 'pinos' no conector de expansão de baixa velocidade. São utilizadas ainda as portas digitais D1, D2, D3 e D4 e analógicas ADC1 e ADC2.

Step 4: Instalação E Configuração Do Sistema Operacional

Debian Downloads for DragonBoard-410c

https://www.96boards.org/documentation/consumer/dr...

Linaro Releases

https://releases.linaro.org/96boards/dragonboard41...

A Dragonboard vem com o Android instalado em sua memória interna; existem outros sistemas operacionais que podem ser instalados e usados na Dragonboard:

  • Debian;
  • OpenEmbedded;
  • Android;
  • Ubunto Core;
  • Windows IoT Core

Outras configurações:

https://www.instructables.com/id/Habilitando-SPI-V...

https://www.96boards.org/documentation/ConsumerEdi...

https://www.96boards.org/documentation/ConsumerEdi...

sudo apt-get update<br>sudo apt-get upgrade 

----------------------------------------------------------------------------

sudo apt-get dist-upgrade [obs.: não executar este comando]

----------------------------------------------------------------------------

#Editor de texto<br>sudo apt-get install gedit 
sudo apt-get install python-pip

#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/jackmitch/ com/96boards/96BoardsGPIO.git

+ Alterar os arquivos abaixo:

/usr/local/etc/libsoc.conf
/usr/share/libsoc/dragonboard410c.conf

-----------------------------------------------------------------------------

#96Boards
sudo gedit /home/linaro/96boardsGPIO/lib/ gpio.c

-----------------------------------------------------------------------------

#96Boards
cd 96BoardsGPIO/

sudo ./autogen.sh

sudo ./configure

sudo make

sudo make install

sudo ldconfig

----------------------------------------------------------------------------

# SPIDEV
git clone https://github.com/doceme/pyspidev.git

cd py-spidev

sudo python setup.py install

sudo ldconfig

sudo reboot

----------------------------------------------------------------------------

sudo gedit /usr/local/etc/libsoc.conf

[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

--------------------------------------------------------------------------

Step 5: Configurações De POST E GET No Dweet.io

Em

https://dweet.io/play/

Atribuir os valores iniciais em 'content' t 'thing' (para POST e GET):

----------------------------------------

POST /dweet/for/{thing}

content

Response Body

----------------------------------------

GET /get/latest/dweet/for/{thing}

thing

Response Body

----------------------------------------

Step 6: Montagem E Configuração Dos Módulos De Acionamento Motor E Lâmpada

Módulos de acionamento motor e lâmpada:

Motor:

BD139 / 1N4007 / Motor 5V

120Ω, 220Ω

Lâmpada:

BC548

Mini lâmpada 12V x 40mA

120Ω, 150Ω

Step 7: Módulo Amplificador De Som Estéreo PAM8403

Fazer as ligações conforme a figura a fim de aproveitar o acionamento da 'carga' (no caso o 'amplificador de áudio' PAM8403) por meio do relê.

COM : Comum

NO : Normalmente Aberto

Step 8: Arquivos Mais Importantes Para Acionamento E Configurações Para App Híbrido

smart_home03.py

home.html

home.ts

dweet.ts

Step 9: Preparação Do Ambiente De Desenvolvimento​

https://assets.amuniversal.com/a021a5f0a905013416c...

https://dilbert.com/buy?date=2017-01-02

MAC OS

Android Visual Studio

https://visualstudio.microsoft.com/pt-br/vs/androi...

Desenvolvimento híbrido

Estrutura do Cordova

Node JS & NNPM

https://nodejs.org/en/

Download Node JS

Teste da instalação do NODE e NPM

Instalação do Ionic

Criação do App

Primeira aplicação Ionic

Typescript

https://www.typescriptlang.org/

Angular

https://angular.io/

Atom

https://atom.io/

Brackets

http://brackets.io/

Visual Studio Code

https://code.visualstudio.com/

Sistema SmartHome

O projeto se divide em 3 partes:

Hardware: Dragonboard, Linker Mezzanine Board, sensores e atuadores do kit;

Aplicativo Mobile: Será usado o framework Ionic para criação do aplicativo e com isso ele poderá ser testado no navegador, em um celular Android ou em um celular com iOS;

Solução na nuvem: Dweet será usado para receber e fornecer informações provenientes da Dragonboard e do aplicativo.

Ligação do Hardware

Dragonboard:

• Linker Mezzanine Board

• Sensor de toque: Ligado na D1 da Linker

• Módulo com o Relé: Ligado na D2 da Linker

• Módulo com o Led: Ligado na D3 da Linker

• Sensor de luminosidade (LDR): Ligado na ADC1 da Linker

• Sensor de temperatura: Ligado na ADC2 da Linker

• Sensor 'tilt': Ligado na D4 da Linker

Módulos de acionamento de carga (motor & lâmpada):

=> conforme descrito no passo 6 acima.

[Montagem e configuração dos módulos de acionamento motor e lâmpada]

Criação do App Ionic

https://ionicframework.com/docs/components/#overvi...

Android Studio / Dispositivo Virtual Android [ IoT ] / Visual Studio Code

=> Tela do Aplicativo

=> Inspecionar

=>Device tool

Provider => arquivo dweet.ts

Step 10: Testando O Aplicativo Com Blisk

[Design responsivo]

Utilizando o "Blisk" temos a opção de visualizar o aplicativo em diversos modelos de dispositivos móveis e ao mesmo tempo como em um navegador comum na janela a lado.

https://blisk.io/

https://blisk.io/download/

"Blisk vem com um conjunto bem bacana de emuladores pré-instalados de dispositivos populares, tornando mais fácil o teste dos projetos em vários dispositivos e navegadores. O recurso é particularmente útil para comparar como o projeto responde a diferentes resoluções de tela e proporções de pixel.

Projetado especificamente para os desenvolvedores e atualmente disponível para o Windows(mas já já tem para Mac e Linux), Blisk é um navegador baseado no Chromium gratuito que visa melhorar a produtividade e qualidade do código, fornecendo uma ampla gama de ferramentas para desenvolvimento Web e testar tanto para desktop e móvel." Blisk em, https://tableless.com.br/blisk-e-o-navegador-que-...

Step 11: Android Studio / Dispositivo Virtual Android [ IoT ] / Visual Studio Code

Usando o dispositivo virtual no Android Studio (emulador):

ionic cordova run android
ou
ionic --verbose cordova run android

Ao desenvolver um aplicativo com Ionic e Cordova será possível adicionar novos controles para dispositivos sensores e atuadores.

Step 12: Funcionamento Básico Do Protótipo Da Smart Home Com a DragonBoard410c

Aqui um breve vídeo demonstrando o funcionamento básico do protótipo da Smart Home com a DragonBoard410c.

Step 13: Curiosidades: Broker Mosquitto & MQTT

Mosquitto, MQTT, https://www.96boards.org/projects/Mosquitto/

Demo 96board-mqtt, https://github.com/bfletcher/96board-mqtt-demo

ngx-mqtt, https://sclausen.github.io/ngx-mqtt/

MQTT.js : client library for the MQTT protocol, written in JavaScript for node.js and the browser : https://github.com/mqttjs/MQTT.js

Eclipse Mosquitto, https://projects.eclipse.org/projects/technology....

Paho, https://www.eclipse.org/paho/

The Paho MQTT Python Client-Beginners Guide, http://www.steves-internet-guide.com/into-mqtt-py...

Eclipse OM2M, https://projects.eclipse.org/projects/technology....

Eclipse Mosquitto, http://www.mosquitto.org/

O 'Mosquitto' é um broker MQTT de código aberto, desenvolvido para aplicações de comunicação M2M e IoT, que implementa alguns padrões MQTT e oferece métodos para transportar 'mensagens', permitindo a 'publicação' e 'assinatura' por dispositivos móveis, sensores, computadores embutidos/embarcados e microcontroladores.

O mosquito pode ser instalado em uma instância da Amazon Web Services (AWS) − [Serviços de computação em nuvem], em uma instância no VirtualBox Linux ou VirtualBox FreeBSD [ports em /net/py-paho-mqtt ], ou ainda, em uma Raspberry PI (com Raspbian ou Ubuntu MATE).

Instalação em Linux:

sudo apt update
sudo apt upgrade
sudo apt install mosquitto
verificar se o processo foi iniciado automaticamente:
Linux:
ps aux | grep mosquitto
FreeBSD:
# mosquitto &
sudo apt install mosquitto-clients
Teremos instaladas as três principais ferramentas a seguir:
1. mosquitto_sub
2. mosquito_pub
3. mosquitto_passwd

Arquivo de configuração:

Linux Debian
/etc/mosquitto/mosquitto.conf

Linaro:
/etc/mosquitto/mosquitto.conf
(adicionar um usuário: 'user linaro')

FreeBSD:
/usr/local/etc/mosquitto/mosquitto.conf

O "Mosquitto" é iniciado como um serviço na porta 1883 e um teste pode ser feito 'assinando' um tópico e 'publicando' a mensagem neste tópico.

mosquitto_sub -t smarthome/luminosidade

Podemos publicar algumas mensagens em formato JSON sobre o tópico 'smarthome/luminosidade' repetindo algumas vezes o seguinte comando para efetuar testes:

mosquitto_pub -t smarthome/luminosidade -m {"l",60}
mosquitto_pub -t smarthome/luminosidade -m {"l",55}

Ou enviar a mensagem a cada 10 segundos:

watch -n 10 mosquitto _pub -t smarthome/luminosidade -m {"l",50}

Pode ser utilizado o coringa "#" no tópico de assinatura o que fará com que receba todos os dados enviados com comando de publicação (sub):

mosquito_sub -h 192.168.15.20 -t smarthome/#
mosquitto_pub -t smarthome/luminosidade -m {"l",50}
mosquitto_pub -t smarthome/temperatura -m {"t",23}

Step 14: Referências:

Share

    Recommendations

    • Paper Contest

      Paper Contest
    • Organization Contest

      Organization Contest
    • Epilog X Contest

      Epilog X Contest

    2 Discussions