Inhoudsopgave:

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

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

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE - Ajarnpa
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 GERAISCurso: Especialização em Arquitetura de Software Distribuído

Gegevens: 2017-10-26

Unidade: Praça da Liberdade

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

INVOERING

Hoe zou het zijn als we onze planten altijd en overal water konden geven? Met het WaterPlant Project kan het. Dit project is ontwikkeld om het gemak en de bruikbaarheid te verbeteren om dit zo belangrijk voor de planeet te behandelen.

INLEIDINGÃO

Como seria se pudéssemos aguar nossas plantas a qualquer hora e de qualquer lugar? Com o Projeto WaterPlant is mogelijk. 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 monitoramento de jardins, onde é possível efetuar a verificação do estado do solo, com relação a sua umidade. Sendo assim, door meio de parâmetros da umidade do solo é possível avaliar a necessidade de sua irrigação.

Een 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 a aplicação mantem of usuário informado da situação do solo. U kunt ons gebruiken om een aanvraag te doen voor een 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.

Stap 1: COMPONENTEN - DRAGONBOARD

COMPONENTEN - DRAGONBOARD
COMPONENTEN - DRAGONBOARD

DragonBoard 410C

Een DragonBoard 410C is een primeira op de basis van de serie Qualcomm Snapdragon 400, aangesloten op Wifi, Bluetooth en GPS op de kaart van de creditcard, en op 64 bits van het proces Qualcomm rodando 1.2GHz, met 1GB geheugen DDR3 533 MHz en 8GB geheugen geheugen (eMMC).

Prijs: R$500 ~ R$750

Stap 2: COMPONENTEN - LINKERBASIS

COMPONENTEN - LINKERBASIS
COMPONENTEN - LINKERBASIS

Placa de expansão para mapeamento en utilização de portas, facilitando and utilização de sensores.

Stap 3: COMPONENTEN - SENSOR

COMPONENTEN - SENSOR
COMPONENTEN - SENSOR

Sensor de Umidade do Solo

Este sensor utilizadois eletrodos para passar corrente pelo solo e lê o nível de umidade by comparação com een resistencia 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 permitindo a passagem de corrente entre os eletrodos e fechando, desta forma, of circuito. Dessa forma podemos definir quando of solo está molhado, of quando está seco.

O módulo fornece tanto uma saída digital (D0), como uma saída analógica (A0). O sinal digital é a justado 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.

Prijs: R $ 6 ~ R $ 20.

Stap 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Een gebruiksvriendelijke versie van Dragonboard 410c voor gebruik van Windows 10 IoT Core.

O Windows 10 IoT Core is een platform voor het uitvoeren van een facilitaire procedure voor het programmeren van programma's. Het is mogelijk om verschillende dingen te doen die bestaan, zonder tussenkomst van Dragonboard:

  • Visual Studio 2017-gemeenschap of meer dan vers (https://www.visualstudio.com/thank-you-downloading…);
  • DragonBoard-updatetool;
  • Windows 10 IoT Core-dashboard;
  • DragonBoard Windows 10 IoT Core-afbeelding;
  • Windows IoT-projectsjablonen;

O processo completo para installação en configuração pode ser encontrado no seguinte link:https://developer.microsoft.com/en-us/windows/iot/…

Er is een installatie en configuratie conform de tutorial van Microsoft nodig om een nieuw project te starten zonder Visual Studio om een achtergrondtoepassing te gebruiken.

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

Het is mogelijk om een configuratie uit te voeren die niet beschikbaar is voor StartupTask.cs om een project te starten, en om een voorbeeld te geven van een deel van de procedure.

O met de belangrijkste toepassing van 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)); }

De methode van InitGPIO() en InitSPI() kan worden ingesteld voor het gebruik van verschillende soorten timers en timers en 2 timers voor het uitvoeren van een cada quantidade de tempo, en neste caso 10 milgunguntriza(10). Para alterar esse tempo basta mudar estes valores nessa parte do código.

O Método InitGPIO() een seguir tem como função definir as configuraçõese do pino que ativa a válvula solenoide de água. Een voorbeeld van een voorbeeld van een Dragonboard en een voorbeeld van een pino van 36.

privé leegte InitGPIO()

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

Om met InitSPI() een porta SPI0 van Dragonboard te configureren.

privé asynchrone taak InitSPI()

{probeer {var instellingen = nieuwe SpiConnectionSettings(0); // Selecteer een porta SPI0 da DragonBoard-instellingen. 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 (instellingen); } catch (Exception ex){ throw new Exception("Falha na inicialização do SPI", ex); } }

O primeiro timer invoca of método Timer_Tick() voor een verificatie van de API die u kunt gebruiken om te beginnen met irrigaço. O seguinte trecho de código é respons op pela chamada à API:

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

httpWebRequest. ContentType = "applicatie/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 o comando de irrigaço. É neste trecho de código que a irrigação é encerrada também.

Para o segundo timer é invocado o método Timer_Tick2() que é respons op pelo envio dos dados da umidade do solo naquele momento. Er is geen seguinte trecho de código deste método que deve ser configurado o endereço da API voor o envio dos dados:

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

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

O método LerADC(byte canal) é o método 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 attravés do método ConvertToInt([ReadOnlyArray] byte data). Segue os trechos de código:

openbaar int LerADC(bytekanaal)

{ byte readBuffer = nieuwe byte [3]; byte writeBuffer = nieuwe byte [3] { 0x00, 0x00, 0x00 }; schrijfbuffer[0] = 0x01; writeBuffer[1] = kanaal; SpiADC. TransferFullDuplex (schrijfbuffer, leesbuffer); adcValue = ConvertToInt(readBuffer); retour adcWaarde; } public int ConvertToInt([ReadOnlyArray] byte data) { int resultaat = 0; resultaat = gegevens[1] & 0x03; resultaat <<= 8; resultaat += gegevens[2]; resultaat teruggeven; }

Stap 5: PREPARANDO een API

API voor het ontwerpen van een plataforma NodeJS (https://nodejs.org), voor het gebruik van Swagger (https://swagger.io/specification/) en voor het modelleren en documenteren van gebruiksgegevens voor integratie.

Parawapens voor het gebruik van dados voor MySQL, voor relacional banco's en open source.

Segue heeft een 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 of retorno ocorrido durante of processo de request.

○ /api/swagger: Camada que contém of 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.

/infrastructuur: Cama de configuração das strings de conexão do banco de dados en Também do servidor que será provisionado pela própria aplicação.

Voor meer informatie en advies, zoals lettertypen en een link naar github:

Een korte beschrijving van het cada-recursor beschikbaar voor API:

Methode: POST

URI: /api/v1/umidades

Beschrijving: Gebruiksvoorschrift voor de registratie van de pelo sensor de umidade.

Voorbeeld van vereiste:

{

“moed”: 355 }

Methode: GET

URI: /api/v1/umidades

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

Voorbeeld van antwoord:

[{ "id": 1, "valor": 355, "dataCadastro": jjjj-MM-dd UU:MM }]

Methode: POST

URI: /api/v1/irrigacoes

Beschrijving: Gebruikt voor het verwijderen van irrigatie.

Methode: GET

URI: /api/v1/irrigacoes

Beschrijving: Gebruiksvoorschrift om te verifiëren of om het zelf te doen.

Voorbeeld van antwoord:

{

“moed”: 355 }

Stap 6: APP MOBIEL

APP MOBIEL
APP MOBIEL
APP MOBIEL
APP MOBIEL

Escolhemos uma tecnologia híbrida para gerar um código reutilizável para todas as plataformas (Android en IOS) para aumentar een abrangência de usuários en diminuir o custo do projeto. O Ionic e um framework que possui uma gigantesca biblioteca de componentes que facilita a implementação visual do aplicativo. Ele utiliza de linguagens web (HTML, CSS en Javascript) para a criação das telas e tem o Angular como seu núcleo (core). Através do cordova (biblioteca javascript) en andere bronnen voor toegang tot webview do mesmo.

O aplicativo con 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 reotamente. Através de um eventto de botão uma requisição é enviada para o servador e ação correspondente é realizada.

Links:

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

O código fonte do aplicativo modelo encontra-se geen GitHub, geen 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…) en verander een variável URI_PREFIX, conform voorbeeld abaixo para o endereço onde está hospedada a API:

export klasse Server {

openbare statische alleen-lezen URI_PREFIX: string = "https://serverless-study.appspot.com/api/v1/"; /* openbare statische alleen-lezen URI_PREFIX: string = "https://dominio.com/aplicacao/"; */ }

Stap 7: FLUXOGRAMA

FLUXOGRAMA
FLUXOGRAMA

Stap 8: REFERNCIAS

Instructables:

Qualcomm DragonBoard 410C:

Windows 10 en DragonBoard™ 410c – de perfecte start voor IoT-ontwikkeling:

Monitor van planta usando Arduino:

Aanbevolen: