Introduction: BeerFridgeIoT With Dragonboard 410C (Inatel EAD)

O projeto corrente da Geladeira IoT é um protótipo para monitoramento de uma geladeira de cerveja. O objetivo é garantir a cerveja gelada no verão, verificando se a temperatura está adequada e a cerveja pronta para o consumo.

A aplicação também monitora a abertura da porta e registra o log de quando foi a última vez que porta da geladeira foi aberta. Será que alguém andou pegando uma das minhas cervejas?

A Dragonboard será responsável por controlar a geladeira, acionando o seu compressor quando a temperatura estiver acima do desejado, a luz interna conforme acionamento de um botão e exibir o status/log de porta fechada.

Também irá enviar informações a nuvem, neste projeto utilizando o site www.dweet.com. Através de um aplicativo híbrido, desenvolvido no framework Ionic Cordova será possível monitorar remotamente a geladeira.

Step 1: Lista De Materiais

  • Dragonboard 410C;
  • Placa de expansão Linker Base Mezzanine Card;
  • Sensor de temperatura – Linker Temperature;
  • Botão - Touch Sensor;
  • Botão – Linker Button;
  • Led – Linker Led;
  • Relé – Linker Relay;

Step 2: Conexões

  • Conectar o sensor de temperatura na entrada analógica ADC2;
    • Leitura da temperatura interna da geladeira;
  • Conectar o relé (Linker Relay) na saída digital D2;
    • Este relé será responsável por acionar o compressor da geladeira para refrigerar a câmara;
  • Conectar o led (Linker Led) na saída digital D3;
    • Esta saída será utilizada para simular a iluminação da geladeira;
  • Conectar o botão (Linker Button) na entrada digital D1;
    • Este botão será utilizado como sensor de porta, indicando se a porta da geladeira está aberta ou fechada;
  • Conectar o botão (Touch Sensor) na entrada digital D4;
    • Esta entrada será utilizada como botão para acionamento da lâmpada da geladeira;

Step 3: Programa

O programa de controle da Geladeira IoT foi desenvolvido em Python.

Para instalação do Python e as bibliotecas adicionais na Dragonboard, siga as seguintes instruções:

  • Inicialmente abra o terminal e execute;
    • sudo apt-get update
    • sudo apt-get upgrade
    • sudo apt-get dist-upgrade
  • Editor de texto:
    • sudo apt-get install gedit
    • sudo apt-get install python-pip
  • Biblioteca 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
    • Antes de instalar essa biblioteca é necessário verificar se a sua versão é compatível com a versão da LIBSOC previamente instalada. No arquivo /home/linaro/96boardsGPIO/lib/gpio.c procure pela string LS_SHARE e substitua por LS_GPIO_SHARED;
    • Após prossiga com a instalação:
      • cd 96BoardsGPIO/
      • sudo ./autogen.sh
      • sudo ./configure
      • sudo make
      • sudo make install
      • sudo ldconfig
  • SPIDEV
    • Para acesso aos sensores analógico é utilizado o protocolo SPI. A instalação da biblioteca é explicada a seguir:
    • git clone https://github.com/doceme/pyspidev.git
    • cd py-spidev
    • sudo python setup.py install
    • sudo ldconfig
    • sudo reboot
    • Será necessário incluir no arquivo sudo gedit /usr/local/etc/libsoc.conf a seguinte definição GPIO-CS = 18

O código fonte principal está nomeado como BeerFridgeIoT.py. O código fonte dweet.py contém as funções necessárias para acesso ao portal dweet. Os dois arquivos devem estar na mesma pasta para executar o programa.

Para executar o programa utilize o seguinte comando: sudo python BeerFridgeIoT.py

Step 4: Nuvem

Para postagem na nuvem foi escolhido o portal Dweet.

Para testar a aplicação é necessário acessar o site www.dweet.io e clicar a "coisa".

Clique no botão Play e configure como segue:

No item POST/dweet/for/{thing}

Thing:

BeerFridgeIoT

Content:

{

"SetPoint": 10,

"Temperatura": 20,

"Porta": 0,

"LogPortaAberta": 0,

"Compressor": 0,

"Lampada": 0

}

Step 5: Aplicativo

O aplicativo foi desenvolvido em uma plataforma híbrida utilizando o Ionic Framework.

Uma mobile app nativa é aquela desenvolvida com as linguagens padrão da SDK do dispositivo. No caso do Android o Java e no caso do iOS o Objective-C, e mais recentemente o Swift. Já uma app híbrida é aquela que é toda desenvolvida com html, css e javascript e que mesmo assim pode ser empacotada e distribuída nas app stores como uma app nativa. O desenvolvimento híbrido consiste em utilizar html, css e javascript para a construção de uma mobile app que depois será instalada e executada do mesmo modo de uma app nativa. Isso só é possível pois, assim que a app é aberta pelo usuário, todo esse código roda dentro de algo chamado webview.

A partir do aplicativo é possível visualizar as principais informações da geladeira, como por exemplo, temperatura corrente, se a porta está fechada ou aberta e a última vez que a geladeira foi acessada.

Step 6: Referências