Inhaltsverzeichnis:

SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE - Gunook
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE - Gunook

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE - Gunook

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE - Gunook
Video: IRRIGAÇÃO AUTOMATIZADA COM TOMADA INTELIGENTE E VÁLVULA SOLENOIDE 2024, November
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 GERAISKurs: Spezialisierung und Arquitetura de Software Distribuído

Daten: 26.10.2017

Unidade: Praça da Liberdade

Disziplin: Internet das Coisas

Professor: 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])

EINLEITUNG

Wie wäre es, wenn wir unsere Pflanzen jederzeit und überall gießen könnten? Mit dem WaterPlant-Projekt wird es möglich sein. Dieses Projekt wurde mit dem Ziel entwickelt, den Komfort und die Praktikabilität zu verbessern, um dies für den Planeten so wichtig zu behandeln.

EINLEITUNGÇÃO

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 majore para o planeta.

FUNCIONAMENTO

O projeto foi desenvolvido para monitoramento de jardins, onde é possível efetuar a verificação do estado do solo, com relação a sua umidade. Sendo assim, por meio de parâmetros da umidade 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 informações. Desta forma aplicação mantem o usuário informado da situação do solo. O usuário em conto com aplicação poderá solicitar o Irrigamento Imediado do solo, esta informação é enviada para a API que por sua vez se comunica com a place para acionamento do dispositivo de irrigação.

Schritt 1: KOMPONENTEN - DRAGONBOARD

KOMPONENTEN - DRAGONBOARD
KOMPONENTEN - DRAGONBOARD

DragonBoard 410C

Ein DragonBoard 410C é a primeira placa de desenvolvimento baseada no processador da série Qualcomm Snapdragon 400, contando com conexões Wifi, Bluetooth and GPS em uma placa do tamanho aproximado de um cartão de crédito, und é caracterizada da pelo do.alo deempen 64 Qualcomm Rodando mit 1,2 GHz, mit 1 GB DDR3 533 MHz Speicher und 8 GB bewaffnetem Speicher (eMMC).

Preis: R$500 ~ R$750

Schritt 2: KOMPONENTEN - LINKERBASIS

KOMPONENTEN - LINKERBASIS
KOMPONENTEN - LINKERBASIS

Placa de expansão para mapeamento e utilização de portas, facilitando a utilização de sensores.

Schritt 3: KOMPONENTEN - SENSOR

KOMPONENTEN - SENSOR
KOMPONENTEN - SENSOR

Sensor de Umidade do Solo

Este sensor utiliza dois eletrodos para passar corrente pelo solo e lê o nível de umidade 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 diminui allowindo 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), como uma saída analógica (A0). O sinal digital é ajustado para que tenha valor lógico 1 quando a umidade for maor do que um valor predefinido, ajustado através do potenciômetro presente no módulo.

Preço: R$6 ~ R$20.

Schritt 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Eine Anwendung für die Verwendung von Dragonboard 410c für die Nutzung von Windows 10 IoT Core.

O Windows 10 IoT Core ist eine Plattform für Desenvolvimento-Criada für die Erleichterung einer Vida-Dos-Desenvolvedores-Sitzung mit Programmen zur Verfügung. 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 oder qualquer outra versão(https://www.visualstudio.com/thank-you-downloading…);
  • DragonBoard-Aktualisierungstool;
  • Windows 10 IoT Core-Dashboard;
  • DragonBoard Windows 10 IoT Core-Image;
  • Windows IoT-Projektvorlagen;

O processo completo para instalação e configuração pode ser encontrado no seguinte link:

Dies ist eine Installation und eine konforme Konfiguration oder ein Tutorial von Microsoft, um ein neues Projekt ohne Visual Studio oder eine Hintergrundanwendung zu erstellen.

Dieses Tutorial ist verfügbar und kann finalisiert werden, wenn es auf GitHub auf

Dies ist eine Konfiguration, die keine Anwendung erfordert StartupTask.cs, die ein Projekt erstellt, und eine Erklärung für einen Teil eines Teils eines Codes ist.

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 metodos InitGPIO() und InitSPI() inicialize 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, and neste caso foram parametroso (10 smilisse). 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 magnete de água. Nesse exemplo de código para a Dragonboard o código do pino foi o 36.

private void InitGPIO()

{ var gpio = GpioController. GetDefault(); wenn (gpio == null) {pin = null; Rückkehr; } pin = gpio. OpenPin(36); if (pin == null) { zurück; } pin. Write (GpioPinValue. High); pin. SetDriveMode (GpioPinDriveMode. Output); }

O Methode InitSPI() configura a porta SPI0 da Dragonboard.

private asynchrone Aufgabe InitSPI()

{ try { var settings = new SpiConnectionSettings(0); // Wählen Sie einen SPI0-Port von DragonBoard settings. ClockFrequency = 500000; // Configura o clock do 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 (Einstellungen); } catch (Exception ex){ throw new Exception("Falha na inicialização do SPI", ex); } }

O primeiro timer invoca oder método Timer_Tick() que tem como função a verificação através da API se houve um comando para iniciar uma irrigação. O seguinte 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 = "GET";

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

Para oder segundo timer é invocado oder methodo Timer_Tick2() que é responsável pelo envio dos dados da umidade do solo naquele momento. É 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";

O método LerADC (Byte-Kanal) é o metodo responsável por ler do conversor analógico/digital os valores informados pelo sensor de umidade. Este adaptador informa um array de bytes que é convertido em inteiro através do método ConvertToInt([ReadOnlyArray] byte data). Abschnitt os trechos de código:

public int LerADC (Byte-Kanal)

{ byte readBuffer = neues Byte[3]; byte writeBuffer = neues byte[3] { 0x00, 0x00, 0x00}; writeBuffer[0] = 0x01; writeBuffer[1] = Kanal; SpiADC. TransferFullDuplex (writeBuffer, readBuffer); adcValue = ConvertToInt(readBuffer); Rückgabewert adcValue; } public int ConvertToInt ([ReadOnlyArray] byte data) { int result = 0; Ergebnis = Daten[1] & 0x03; Ergebnis <<= 8; Ergebnis += Daten[2]; Ergebnis zurückgeben; }

Schritt 5: PREPARANDO eine API

API für die Bereitstellung auf einer Plattform von NodeJS (https://nodejs.org), für die Verwendung von Swagger (https://swagger.io/specification/) als Modell- und Dokumentarfilm für rekursive Nutzungen bei der Integration von Trabalho.

Para Armazenamento dos dos foi utilizado or banco de dados MySQL, banco de dados relacional und Open Source.

Übergeben Sie 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 documento 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 oder retorno ocorrido durante oder processo de request.

○ /api/swagger: Camada que contém oder 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: Cama de configuração the strings de conexão do banco de dados e também do servidor que será Provisionado pela própria aplicação.

Para mais informações e consulta ao código fonte acesso oder link do github:

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

Methode: POST

URI: /api/v1/umidades

Beschreibung: Recurso utilizado para registar umidade coletada pelo sensor de umidade.

Beispiel für die Anforderung:

{

„Tapferkeit“: 355 }

Methode: GET

URI: /api/v1/umidades

Beschreibung: Recurso que recupera todos os registros de valores de umidade que foram salvos anteriormente.

Beispiel einer Antwort:

[{ „id“: 1, „valor“: 355, „dataCadastro“: jjjj-MM-tt HH:MM }]

Methode: POST

URI: /api/v1/irrigacoes

Beschreibung: Recurso utilizado para ativar o dispositivo de irrigação.

Methode: GET

URI: /api/v1/irrigacoes

Beschreibung: Recurso utilizado para verificar o estado de umidade atual do solo.

Beispiel einer Antwort:

{

„Tapferkeit“: 355 }

Schritt 6: APP MOBIL

APP MOBIL
APP MOBIL
APP MOBIL
APP MOBIL

Escolhemos uma tecnologia híbrida para gerar um código reutilizável para todas as plataformas (Android und IOS) für aumentar a abrangência de usuários e diminuir o custo do projeto. O Ionic é um Framework que possui uma gigantesca Biblioteca de Componentes gráficos que facilita a implementação visual do aplicativo. Ele utiliza de linguagens web (HTML, CSS e Javascript) für eine Criação das Telas e tem oder Angular como oder seu núcleo (core). Através do cordova (biblioteca javascript) oder recursos do dispositivos são acessados pelo webview do mesmo.

O aplicativoconsiste em realizar algumas requisições para a API do sistema a fim de se obter informações sobre a umidade do solo e regar o mesmo remotamente. Através de um evento de botão uma requisição é enviada para o servidor e ação Correspondente é Realizada.

Links:

  • 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 or endereço da API no arquivo server.ts que encontra-se no diretório /src/entity/server.ts(https://github.com/jeordanecarlosbatista/temperat…) und alterar a variável, URI_PREFIX konformes exemplo abaixo para o endereço onde está hospedada a API:

Exportklasse Server {

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

Schritt 7: FLUXOGRAMA

FLUXOGRAMA
FLUXOGRAMA

Schritt 8: REFERNCIAS

Instructables:

Qualcomm DragonBoard 410C:

Windows 10 und DragonBoard™ 410c – der perfekte Start für die IoT-Entwicklung:

Monitore sua planta usando Arduino:

Empfohlen: