Sommario:

SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 passaggi
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 passaggi

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 passaggi

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 passaggi
Video: Yardian - The Multi-Functional Wi-Fi Smart Sprinkler Controller 2024, Dicembre
Anonim
Image
Image
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAISCurso: Especialização em Arquitetura de Software Distribuído

Dati: 2017-10-26

Unidade: Praça da Liberdade

Disciplina: Internet das Coisas

Professore: Ilo Rivero

Alunos: Bruno Valgas ([email protected])

Dellan Hoffman P. Silva ([email protected])

Hebert Alves Ferreira ([email protected])

Jean Carlos Batista ([email protected])

Jeordane Batista ([email protected])

INTRODUZIONE

Come sarebbe se potessimo innaffiare le nostre piante sempre e ovunque? Con il progetto WaterPlant sarà possibile. Questo progetto è stato sviluppato con l'obiettivo di migliorare la praticità e la praticità di trattare questo essere così importante per il pianeta.

INTRODUZIONE

Como seria se pudéssemos aguar nossas plantas a qualquer hora e de qualquer lugar? Com o Projeto WaterPlant será possível. Este projeto foi desenvolvido visando melhorar a comodidade e a praticidade para tratar deste ser tão importante para o planeta.

FUNZIONAMENTO

O projeto foi desenvolvido para monitoramento de jardins, onde é possível efetuar a verificação do stado do solo, com relação a sua umidade. Sendo assim, por meio de parâmetros da umidode do solo é possível avaliar a necessidade de sua irrigação.

A placa envia informações para a API, armazenada na nuvem, que por sua vez é acessada pelo aplicativo mobile, que recebe e trata tais information. Desta forma aplicação mantem o usuário informado da situação do solo. O usuário em contato com aplicação poderá solicitar o irrigamento imediado do solo, esta informação é prevista per API que por sua vez se comunica com a placa per acionamento do device de irrigação.

Fase 1: COMPONENTI - DRAGONBOARD

COMPONENTI - DRAGONBOARD
COMPONENTI - DRAGONBOARD

DragonBoard 410C

Un DragonBoard 410C è un primo piano di desenvolvimento non basato su processore da série Qualcomm Snapdragon 400, contando con connessioni Wifi, Bluetooth e GPS in uno spazio vicino a una carta di credito, ed è caratterizzato da un alto livello di processore a 64 bit da Qualcomm funziona a 1.2GHz, con 1GB di memoria DDR3 533 MHz e 8GB di memoria di armamento (eMMC).

Prezzo: R$500 ~ R$750

Fase 2: COMPONENTI - BASE LINKER

COMPONENTI - BASE LINKER
COMPONENTI - BASE LINKER

Placa di espansione per mappatura e utilizzo delle porte, facilitando l'utilizzo dei sensori.

Fase 3: COMPONENTI - SENSORE

COMPONENTI - SENSORI
COMPONENTI - SENSORI

Sensor de Umidade do Solo

Questo sensore utilizza gli elettrodi per il passaggio di corrente a pelo solo e lê o nível de umidode por comparação com a resistência do potenciômetro do módulo do sensor. Quando o solo estiver seco, a sua resistência aumenta, dificultando a passagem de corrente. Com a absorção da água, a resistência do solo diminuisperindo a passagem de corrente entre os eletrodos e fechando, desta forma, o circuito. Dessa forma podemos definir quando o solo está molhado, ou quando está seco.

O módulo fornece tanto uma saída digital (D0), come uma saída analógica (A0). O sinal digital é ajustado para que tenha valor lógico 1 quando a umidode for maior do que um valor predefinido, ajustado através do potenciômetro presente no módulo.

Prezzo: R$6 ~ R$20.

Passaggio 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Un'applicazione di sviluppo per rodar Dragonboard 410c per l'utilizzo di Windows 10 IoT Core.

O Windows 10 IoT Core è una piattaforma di sviluppo creata per facilitare una vita di sviluppatori in un'ora per programmare tutti i dispositivi. Com ele é possível desenvolver para várias placas existentes no mercado, bastando ter instalado no computador os seguintes itens(já em sequência de instalação, no caso de uso da Dragonboard):

  • Visual Studio 2017 Community o qualsiasi altra versione (https://www.visualstudio.com/thank-you-downloading…);
  • Strumento di aggiornamento di DragonBoard;
  • Dashboard di Windows 10 IoT Core;
  • Immagine DragonBoard Windows 10 IoT Core;
  • modelli di progetto Windows IoT;

O processo completo per installazione e configurazione pode ser encontrado no seguinte link:

A proposito di installazione e configurazione conforme o tutorial da Microsoft basta creare un nuovo progetto su Visual Studio e tipo Background Application.

Per questo tutorial vamos disponibilizar o código finalzado da aplicação através do GitHub em

Toda a configuração do aplicativo está no arquivo StartupTask.cs na raiz do projeto, e vamos explicar abaixo parte a parte do código.

O método principal da aplicação é o Run() e seu código é o seguinte:

public void Run(IBackgroundTaskInstance taskInstance)

{ InitGPIO(); InitSPI(); _deferral = taskInstance. GetDeferral(); timer = ThreadPoolTimer. CreatePeriodicTimer(Timer_Tick, TimeSpan. FromMilliseconds(10000)); timer2 = ThreadPoolTimer. CreatePeriodicTimer(Timer_Tick2, TimeSpan. FromMilliseconds(10000)); }

Os métodos InitGPIO() e InitSPI() inicializam variáveis para serem utilizadas na nossa aplicação enquanto as variáveis timer e timer2 criam 2 timers para serem executados a cada quantidade de tempo, e neste case foram parametrizados 10 segundos(10 mil) para milisse timer. Para alterar esse tempo basta mudar estes valores nessa parte do código.

O Método InitGPIO() a seguir tem como função definir as configuraçõese do pino que ativa a válvula solenoide de água. Nesse exemplo de código para a Dragonboard o código do pino foi o 36.

privato void InitGPIO()

{ var gpio = GpioController. GetDefault(); if (gpio == null){ pin = null; Restituzione; } pin = gpio. OpenPin(36); if (pin == null){ return; } pin. Write(GpioPinValue. High); pin. SetDriveMode(GpioPinDriveMode. Output); }

Il metodo InitSPI() configura una porta SPI0 da Dragonboard.

Attività asincrona privata InitSPI()

{ prova { var settings = new SpiConnectionSettings(0); // Seleziona una porta SPI0 dalle impostazioni di DragonBoard. ClockFrequency = 500000; // Configura l'orologio del barramento SPI em 0.5MHz settings. Mode = SpiMode. Mode0; // COnfigura polaridade e fase do clock do SPI var controller = wait SpiController. GetDefaultAsync(); SpiADC = controller. GetDevice (impostazioni); } catch (Exception ex){ throw new Exception("Falha na inicialização do SPI", ex); } }

O il primo timer invoca o il metodo Timer_Tick() que tem come funzione di verifica tramite API si trova in un comando per l'inizio dell'irrigazione. Seguente trecho de código é responsável pela chamada à API:

var httpWebRequest = (HttpWebRequest)WebRequest. Create("https://serverless-study.appspot.com/api/v1/irrigacoes");

httpWebRequest. ContentType = "application/json"; httpWebRequest. Method = "OTTIENI";

Neste trecho de código deve ser alterado per o endereço onde será hospedado o código da API per buscar o comando di irrigação. É neste trecho de código que a irrigação é ncerrada também.

Para o segundo timer é invocado o método Timer_Tick2() que é responsável pelo invio dos dados da umidode do solo naquele moment. É no seguinte trecho de código deste método que deve ser configurado o endereço da API para o envio dos dados:

var httpWebRequest = (HttpWebRequest)WebRequest. Create("https://serverless-study.appspot.com/api/v1/umidades");

httpWebRequest. ContentType = "application/json"; httpWebRequest. Method = "POST";

Il metodo LerADC(byte canal) è il metodo di risposta per il convertitore analogico/digitale per informazioni sui valori del sensore di umidità. Questo adattatore informa sull'array di byte che è convertito all'interno del metodo ConvertToInt([ReadOnlyArray] byte data). Segue os trechos de codigo:

int pubblico LerADC (canale byte)

{ byte readBuffer = nuovo byte[3]; byte writeBuffer = nuovo byte[3] { 0x00, 0x00, 0x00 }; writeBuffer[0] = 0x01; writeBuffer[1] = canale; SpiADC. TransferFullDuplex(writeBuffer, readBuffer); adcValue = ConvertToInt(readBuffer); restituisce adcValue; } public int ConvertToInt([ReadOnlyArray] byte data) { int result = 0; risultato = dati[1] & 0x03; risultato <<= 8; risultato += dati[2]; restituire il risultato; }

Passaggio 5: PREPARANDO un'API

API per la configurazione della piattaforma NodeJS (https://nodejs.org), per l'utilizzo di Swagger (https://swagger.io/specification/) e per la creazione di modelli e documenti ricorrenti utilizzati nell'integrazione del traffico.

Per armazenamento dei dati per utilizzo o banco di dati MySQL, banco di dati relazionali e open source.

Segue abaixo a arquitetura de camadas que compõem a API.

● /api: Camada que gerencia os recursos disponibilizados para que terceiros possam acessar.

○ /api/controller: Camada que gerencia as rotas definidas no document gerado pelo swagger.

○ /api/service: Camada que entrega os dados de entrada para serem tratados, depois escritos ou lidos pela camada de BO (descrita mais à diante). Nesta camada está configurado o retorno ocorrido durante o process de request.

○ /api/swagger: Camada que contém o arquivo de configuração do swagger, onde estão toda as configurações dos recursos.

● /domain: Camada que contém toda codificação relacionada a regra de negócio da aplicação.

○ /repository: Camada de persistência de dados.

● /infrastructure: consente di configurare le stringhe di connessione al banco di dati e il tasto di configurazione del server per la prima applicazione.

Per maggiori informazioni e consulta ao codice fonte acesso o link do github:

Segue abaixo uma breve descrição de cada recurso disponibilizados na API:

Metodo: POST

URI: /api/v1/umidades

Descrição: Recurso utilizado para registrarer umido coletada pelo sensor de umidode.

Esempio di richiesta:

{

“valore”: 355 }

Metodo: GET

URI: /api/v1/umidades

Descrição: Recurso que recupera todos os registros de valores de umidode que foram salvos anteriormente.

Esempio di risposta:

[{ “id”: 1, “valor”: 355, “dataCadastro”: aaaa-MM-gg HH:MM }]

Metodo: POST

URI: /api/v1/irrigacoes

Descrizione: Ricorso utilizzato per attivazione o dispositivo di irrigazione.

Metodo: GET

URI: /api/v1/irrigacoes

Descrição: Recurso utilizado para verificar o stado de umidode atual do solo.

Esempio di risposta:

{

“valore”: 355 }

Passaggio 6: APP MOBILE

APP MOBILE
APP MOBILE
APP MOBILE
APP MOBILE

Escolhemos uma technology híbrida para gerar um código reutilizável for todas as plataformas (Android e IOS) per aumentare e diminuire l'utilizzo e ridurre o personalizzare il progetto. O Ionic è un framework che può essere gigantesca biblioteca di componenti grafici che facilitano l'implementazione visiva dell'applicazione. L'utilità delle lingue web (HTML, CSS e Javascript) per la creazione di telai e temi o Angular como o seu núcleo (core). Através do cordova (biblioteca javascript) os ricorsi ai dispositivi con accesso solo webview mesmo.

O aplicativo consiste e realiza algumas requisições para a API do sistema a fim de se oter informações sobre a umidode do solo e regar o mesmo remotamente. Através de um event de botão uma requisição é enviada para o servidor e un ação corrispondente é realizada.

Link:

  • https://ionicframework.com/
  • https://angular.io/
  • https://ionicframework.com/

O código fonte do aplicativo modelo encontra-se no GitHub, no endereço

Para que o aplicativo funcione basta configurar o endereço da API no arquivo server.ts que encontra-se no diretório /src/entity/server.ts(https://github.com/jeordanecarlosbatista/temperat…) e alterar a variável URI_PREFIX, conforme exemplo abaixo para o endereço onde está hospedada a API:

classe di esportazione Server {

public static readonly URI_PREFIX: string = "https://serverless-study.appspot.com/api/v1/"; /* public static readonly URI_PREFIX: string = "https://dominio.com/aplicacao/"; */ }

Fase 7: FLUXOGRAMMA

FLUXOGRAMMA
FLUXOGRAMMA

Fase 8: REFERNCIAS

Instructables:

Qualcomm DragonBoard 410C:

Windows 10 e DragonBoard™ 410c: l'inizio perfetto per lo sviluppo IoT:

Monitore sua planta usando Arduino:

Consigliato: