Sadržaj:

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

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

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 koraka
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Studeni
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 GERAISKurso: Especialização em Arquitetura de Software Distribuído

Podaci: 26.10.2017

Unidade: Praça da Liberdade

Disciplina: Internet das Coisas

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

UVOD

Kako bi bilo kad bismo mogli zalijevati naše biljke bilo kada i bilo gdje? S projektom WaterPlant to će biti moguće. Ovaj je projekt razvijen s ciljem poboljšanja pogodnosti i praktičnosti u tretiranju ovog toliko važnog za planet.

INTRODUÇÃ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 importante para o planeta.

FUNCIONAMENTO

O projeto foi desenvolvido para monitorramento 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 needidade de sua irrigação.

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

Korak 1: KOMPONENTE - DRAGONBOARD

KOMPONENTE - DRAGONBOARD
KOMPONENTE - DRAGONBOARD

DragonBoard 410C

DragonBoard 410C je primarna ploča za desenvolvimento na bazi procesora za seriju Qualcomm Snapdragon 400, koji uključuje zajedničke konekcije Wi -Fi, Bluetooth i GPS na umu da se nalazi na tamanhu, približno na karti de crédito, ili je karakteriziran pelo alto desempenho do procesor Qualcomm radi na 1,2 GHz, ima 1 GB memorije DDR3 533 MHz i 8 GB memorije za armazenamento (eMMC).

Cijena: 500 USD ~ 750 USD

Korak 2: KOMPONENTE - BAZA LINKERA

KOMPONENTE - BAZA LINKERA
KOMPONENTE - BAZA LINKERA

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

Korak 3: KOMPONENTE - SENZOR

KOMPONENTE - SENZOR
KOMPONENTE - SENZOR

Sensor de Umidade do Solo

Este senzor utiis 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 resistanceência aumenta, dificultando a paragraphm de corrente. Com a absorção da água, resistência do solo diminui allowindo a passm 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 maior do que um valor predefinido, ajustado através do potenciômetro presente no módulo.

Cijena: 6 USD - 20 USD.

Korak 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Aplikacija koja se koristi za rad na Dragonboard 410c za korištenje u sustavu Windows 10 IoT Core.

O Windows 10 IoT Core je umanjena platforma za desenvolvimento criada para facilitar a vida dos desenvolvedores na hora de programar seus dispositivos. 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):

  • Zajednica Visual Studio 2017 ili qualquer outra versão (https://www.visualstudio.com/thank-you-downloading…);
  • DragonBoard Alat za ažuriranje;
  • Windows 10 IoT Core nadzorna ploča;
  • DragonBoard Windows 10 IoT Core Image;
  • Predlošci projekata za Windows IoT;

O procesu kompletiranja za instalaciju i konfiguraciju pode ser encontrado bez seguinte veze:

Aplikacija je instalirala i konfigurirala konfiguraciju o vodiču za Microsoft basta criar um novo projektovanje bez Visual Studija za pozadinsku aplikaciju.

Para este tutorial vamos disponibilizar o codigo finalizado da aplicação através do GitHub em

Danas je konfiguracija do apliciranja está no arquivo StartupTask.cs na raiz do projeto, a vamos eksplicar 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 executedos a cada quantidade de tempo, e neste caso foram parametrizados 10 milisos. Para alterar esse tempo basta mudar estes valores nessa parte do código.

O Método InitGPIO () seguir tem como função definir kao konfiguracije 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.

privatna praznina InitGPIO ()

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

O método InitSPI () konfigurirate port SPI0 do Dragonboard.

privatna asinkronizacija Zadatak InitSPI ()

{try {var settings = new SpiConnectionSettings (0); // Odabir a porta SPI0 do postavki DragonBoarda. ClockFrequency = 500000; // Konfiguracija takta do barijera SPI -ja na postavkama 0,5 MHz. Mode = SpiMode. Mode0; // COnfigura polaridade e fase do clock to SPI var controller = await SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (postavke); } catch (Exception ex) {throw new Exception ("Falha na inicialização do SPI", ex); }}

O primeiro timer invoka o 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 tregu de código i responvel pela chamada u API -ju:

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

httpWebRequest. ContentType = "aplikacija/json"; httpWebRequest. Method = "DOBI";

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

Para o segundo timer é poziva na método 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 = "aplikacija/json"; httpWebRequest. Method = "POST";

O metodi LerADC (kanal bajtova) o odazivu na povratne informacije o konverzijskom analitičkom/digitalnom os valores informados pelo sensor de umidade. Prilagodite podatke u niz polja po bajtovima koji su konvertirani u intero através do método ConvertToInt ([ReadOnlyArray] byte podaci). Segue os trechos de código:

javni int LerADC (kanal bajtova)

{byte readBuffer = novi bajt [3]; byte writeBuffer = novi bajt [3] {0x00, 0x00, 0x00}; writeBuffer [0] = 0x01; writeBuffer [1] = kanal; SpiADC. TransferFullDuplex (writeBuffer, readBuffer); adcValue = ConvertToInt (readBuffer); vrati adcValue; } public int ConvertToInt ([ReadOnlyArray] byte podaci) {int result = 0; rezultat = podaci [1] & 0x03; rezultat << = 8; rezultat += podaci [2]; povratni rezultat; }

Korak 5: PRIPREMITE API

API za desenvolvidu na platformi NodeJS (https://nodejs.org), za korištenje Swaggera (https://swagger.io/specification/) i za modelarne i dokumentarne dokumente o ponovnoj uporabi na integraciji do trabalja.

Za armazenamento dos dados za korištenje o banco de dados MySQL, banco de dados relacional i open source.

Zahtjevajte arquitetura de camadas que compõem API.

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

○ /api /controller: Camada que gerencia kao rotas definidas no documento gerado pelo swagger.

○ /api /usluga: 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 processo de request.

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

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

○ /spremište: Camada de persistência de dados.

● /infrastruktura: Cama de configuração das strings de conexão do banco de dados e também do servidor que será provisionado pela própria aplicação.

Za dodatne informacije i konzultacije o código fonte acesso o vezi do github-a:

Pogledajte i opis uma breve koji opisuje cada recurso disponibilizados na API -ju:

Metoda: POST

URI:/api/v1/umidades

Opis: Ponovno se koristi para registar umidade koletada pelo senzora de umidade.

Exemplo de requisição:

{

"Hrabrost": 355}

Metoda: GET

URI:/api/v1/umidades

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

Primjer odgovora:

[{"Id": 1, "valor": 355, "dataCadastro": gggg-MM-dd HH: MM}]

Metoda: POST

URI:/api/v1/irrigacoes

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

Metoda: GET

URI:/api/v1/irrigacoes

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

Primjer odgovora:

{

"Hrabrost": 355}

Korak 6: APLIKACIJA MOBILNA

APLIKACIJA MOBILNA
APLIKACIJA MOBILNA
APLIKACIJA MOBILNA
APLIKACIJA MOBILNA

Escolhemos uma tecnologia híbrida para gerar um código reutilizável para todas as plataformas (Android e IOS) para aumentar a abrangência de usuários e diminuir o custo do projeto. O Ionic é um framework que possui uma gigantesca biblioteca de componentsntes gráficos que facilitations a implementação visual do aplicativo. Ele utiliza de linguagens web (HTML, CSS e Javascript) para a criação das telas e tem o Angular como o seu núcleo (jezgra). Através do cordova (biblioteca javascript) oscursos do dispositivos são acessados pelo webview do mesmo.

O aplikaciji konziste 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 ação korespondente é realizada.

Veze:

  • 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 nema 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 API:

poslužitelj klase izvoza {

javni statički samo za čitanje URI_PREFIX: string = "https://serverless-study.appspot.com/api/v1/"; /* javni statički samo za čitanje URI_PREFIX: string = "https://dominio.com/aplicacao/"; */}

Korak 7: FLUXOGRAMA

FLUKSOGRAMA
FLUKSOGRAMA

Korak 8: REFERIKCIJE

Instrukcije:

Qualcomm DragonBoard 410C:

Windows 10 i DragonBoard ™ 410c-savršen početak za razvoj IoT-a:

Monitore sua planta usando Arduino:

Preporučeni: