Բովանդակություն:

SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 քայլ
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 քայլ

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 քայլ

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 քայլ
Video: Замена отопления в новостройке. Подключение. Опрессовка. #17 2024, Նոյեմբեր
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 GERAIS Կուրսը ՝ Especialização em Arquitetura de Software Distribuído

Տվյալներ `2017-10-26

Unidade: Praça da Liberdade

Կարգապահություն. Ինտերնետ das Coisas

Պրոֆեսոր ՝ Իլո Ռիվերո

Ալունոս. Բրունո Վալգաս ([email protected])

Դելան Հոֆման Պ. Սիլվա ([email protected])

Հեբերտ Ալվեշ Ֆերեյրա ([email protected])

Jeanան Կառլոս Բատիստա ([email protected])

Ordորդան Բատիստա ([email protected])

ՆԵՐԱՈԹՅՈՆ

Ի՞նչ կլիներ, եթե մենք կարողանայինք մեր բույսերը ջրել ցանկացած պահի, ցանկացած վայրում: Pրային գործարան նախագծով դա հնարավոր կլինի: Այս նախագիծը մշակվել է ՝ նպատակ ունենալով բարելավել մոլորակի համար այդքան կարևոր վերաբերմունքի հարմարավետությունն ու գործնականությունը:

INTRODUÇÃO

Como seria se pudéssemos aguar nossas plantas a qualquer hora e de qualquer lugar? Com o Projeto WaterPlant- ի հնարավորությունը: 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, por meio de parâmetros da umidade do solo é possível avaliar a needidade de sua irrigação.

A placa envia informações para a API, armazenada na nuvem, que sua sua vez é écessa 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: Օգտագործելով մեր դիմումը, որը կարող է օգտագործվել միայնակ կամ ոռոգման համար անհրաժեշտ է կատարել միայնակ, մենք պետք է տեղեկացված լինենք API- ի կողմից, որը թույլ է տալիս օգտագործել ջրի մակարդակը, ինչպես նաև օգտագործել ջրի մակարդակը:

Քայլ 1. Բաղադրիչներ - DRAGONBOARD

Բաղադրիչներ - DRAGONBOARD
Բաղադրիչներ - DRAGONBOARD

DragonBoard 410C

A DragonBoard 410C- ն առաջին տեղն է զբաղեցնում տվյալների բազայի վրա, որը չի մշակվում Qualcomm Snapdragon 400- ի միջոցով, միացված է Wi -Fi- ին, Bluetooth- ին և GPS- ին, ինչպես նաև թույլ է տալիս արագացնել 64 -րդ գործընթացը: Qualcomm- ն աշխատում է 1.2 ԳՀց հաճախականությամբ, 1 ԳԲ հիշողությամբ DDR3 533 ՄՀց և 8 ԳԲ սպառազինության հիշողությամբ (eMMC):

Գինը ՝ 500 $ 750 750 դոլար

Քայլ 2. Բաղադրիչներ

ԿՈՄՊՈՆԵՆՏԵՆՆԵՐ - ԼԻՆՔԵՐԻ ՀԻՄՆԱԿ
ԿՈՄՊՈՆԵՆՏԵՆՆԵՐ - ԼԻՆՔԵՐԻ ՀԻՄՆԱԿ

Placa de expansão para mapeamento e utilização de portas- ը, հեշտացնում և օգտագործում են սենսորները:

Քայլ 3. Բաղադրիչներ - սենսոր

ՄԱՍՆԱԿՈԹՅՈՆՆԵՐ - Սենսոր
ՄԱՍՆԱԿՈԹՅՈՆՆԵՐ - Սենսոր

Sensor de Umidade do Solo

Սենսորը օգտագործվում է միայն էլեկտրոնային եղանակով, որը թույլ է տալիս օգտագործել միայնակ սենսորը, սակայն այն կարող է օգտագործվել որպես սենսորային դիմադրություն, որը թույլ է տալիս օգտագործել հզորությունը: Quando o solo estiver seco, a sua resistência aumenta, դժվարանում է passagem de corrente- ով: Com a absorção da gua, a resistencia 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.

Թարգմանե՞լ նկարագրությունը հայերեն (Հայաստան) Google Translate- ի օգնությամբ O sinal digital é ajustado para que tenha valor lógico 1 quando a umidade for maior do que um um valor predefinido, ajustado através do potenciômetro presente no módulo.

Գինը ՝ 6 $ ~ 20 դոլար:

Քայլ 4. DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Կիրառելի ծրագիր, որը նախատեսված է Dragonboard 410c- ի միջոցով օգտագործելու համար ՝ օգտագործելով Windows 10 IoT Core- ը:

O Windows 10 IoT Core- ն իր ծրագրային ապահովման պլատֆորմն է, որն ապահովում է ծրագրավորման և օգտագործման դյուրին միջոցներ: Com ele é possível desenvolver para várias placas existenes 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- ը կարող է որակապես դուրս գալ (https://www.visualstudio.com/thank-you-downloading…);
  • DragonBoard- ի թարմացման գործիք;
  • Windows 10 IoT Core Dashboard;
  • DragonBoard Windows 10 IoT հիմնական պատկեր;
  • Windows IoT նախագծի ձևանմուշներ;

Տեղադրման ամբողջական ընթացակարգը և կազմաձևումը, որը պարունակում է ծածկագիր, առանց որևէ հղման ՝

Տեղադրեք մի կարգաբերում կամ կազմաձևեք այն ձեռնարկի համար, որը նախատեսված է Microsoft- ի կողմից ՝ առանց նոր ծրագրերի, առանց Visual Studio- ի ՝ հետին պլանի կիրառման համար:

Այս դասընթացը նախատեսված է այն բանից հետո, երբ անհրաժեշտ է կիրառել GitHub em- ը

Toda a configuração do aplicativo está no arquivo StartupTask.cs na raiz do projeto, եւ 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 (); ժամանակաչափ = 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 utilisadas na nossa aplicação enquanto as variáveis timer e timer2 criam 2 timers para serem performados a cada quantidade de tempo, e neste caso foramramisadosos 10 segundisadosados 10os). 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.

մասնավոր դատարկ InitGPIO ()

{var gpio = GpioController. GetDefault (); if (gpio == null) {pin = null; վերադարձ; } pin = gpio. OpenPin (36); if (pin == null) {վերադարձ; } pin. Write (GpioPinValue. High); pin. SetDriveMode (GpioPinDriveMode. Output); }

Մուտքագրեք InitSPI- ն () կազմաձևեք SPI0- ի մուտքի վահանակը:

մասնավոր async Task InitSPI ()

{try {var settings = new SpiConnectionSettings (0); // Seleciona a porta SPI0 da DragonBoard- ի կարգավորումներ: Clock Frequency = 500000; // clockամացույցի կազմաձևում SPI em 0.5MHz պարամետրերով: Mode = SpiMode. Mode0; // COffigura polaridade e fase do clock do SPI var controller = սպասել SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (կարգավորումներ); } բռնել (Բացառություն բացառություն) {նետել նոր բացառություն («Falha na inicialização do SPI», նախկին); }}

O Primeiro timer invoca o método Timer_Tick () que tem como funcão a verificação através da API se houve um komando para iniciar կամ uma ոռոգում: 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 = "դիմում/json"; httpWebRequest. Method = "ՇՏԱՊԵԼ";

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 ié 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 = "դիմում/json"; httpWebRequest. Method = "ՓՈՍՏ";

O método LerADC (բայթ ջրանցք) կամ մեթոդը արձագանքելու համար, որը թույլ է տալիս փոխակերպել վերլուծական/թվային համակարգերի արժեքները, որոնք կօգնեն ձեզ ապահովել սենսորները: Հարմարվողական տեղեկատվություն այն զանգվածների համար, որոնցից բայթերը կարող են փոխակերպվել մեր ամբողջ ուժով, ինչպես նաև օգտագործել ConvertToInt ([ReadOnlyArray] բայթ տվյալները): Segue os trechos de código:

public int LerADC (բայթ ջրանցք)

{բայթ readBuffer = նոր բայթ [3]; բայթ writeBuffer = նոր բայթ [3] {0x00, 0x00, 0x00}; writeBuffer [0] = 0x01; writeBuffer [1] = ջրանցք; SpiADC. TransferFullDuplex (writeBuffer, readBuffer); adcValue = ConvertToInt (readBuffer); վերադարձ adcValue; } public int ConvertToInt ([ReadOnlyArray] բայթ տվյալներ) {int արդյունք = 0; արդյունք = տվյալներ [1] & 0x03; արդյունք << = 8; արդյունք += տվյալներ [2]; վերադարձի արդյունք; }

Քայլ 5. ՊԱՏՐԱՍՏԵՔ API

API- ն օգտագործում է NodeJS պլատֆորմը (https://nodejs.org), օգտվում է Swagger- ից (https://swagger.io/specification/) և ապահովում է մոդեռն մոդելի և փաստաթղթերի օգտագործումը ինտեգրման համար:

Para armazenamento dos dados foi utilizado o banco de dados MySQL, banco de dados relacional և բաց կոդով:

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

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

○ /api /վերահսկիչ.

○ /api /ծառայություն. Camada que entrega os dados de entrada para serem tratados, depois escritos կամ lidos pela camada de BO (descrita mais à diante): Nesta camada está configurado o retorno ocorrido durante o processo de request.

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

● /տիրույթ ՝ Camada que contém toda codificação relacionada a regra de negócio da aplicação:

○ /շտեմարան. Camada de persistência de dados.

● /ենթակառուցվածք. Cama de configuração das strings de conexão do banco de dados e também do servidor que será providerado pela própria aplicação.

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

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

Մեթոդո. ՓՈՍՏ

URI ՝/api/v1/umidades

Նկարագրություն. Recurso utilisado para գրանցման համար օգտագործեք ձեր սարքի սենսորները:

Exemplo de Requisição:

{

«Քաջություն» ՝ 355}

Մետոդո

URI ՝/api/v1/umidades

Recurso que recupera todos os registries de valores de umidade que foram salvos anteriormente.

Գործազրկման արձագանք.

[{«Id» ՝ 1, «քաջություն» ՝ 355, «dataCadastro» ՝ yyyy-MM-dd HH: MM}]

Մեթոդո. ՓՈՍՏ

URI ՝/api/v1/ոռոգիչ

Նկարագրություն. Recurso utilizado para ativar o dispositivo de irrigação.

Մետոդո

URI ՝/api/v1/ոռոգիչ

Recurso utilizado para verificar o estado de umidade atual do solo կատարման համար:

Գործազրկման արձագանք.

{

«Քաջություն» ՝ 355}

Քայլ 6: PՐԱԳԻՐ Շարժական

APP MOBILE
APP MOBILE
APP MOBILE
APP MOBILE

Escolhemos uma tecnologia híbrida para gerar um código reutilizável para todas as plataformas (Android և IOS) գործիքների և գործիքների օգտագործման նվազեցման կամ նվազեցման համար: O Ionic é um um շրջանակ, որը հնարավոր է որպես հսկայական գրադարանային բաղադրիչ բաղադրիչներ, որոնք թույլ են տալիս կատարելագործել տեսողական կիրառումը: Օգտագործեք լեզուների համացանցը (HTML, CSS և Javascript) ՝ արագ և արագ օգտագործելու համար ՝ անկյունային կոմունալ կամ միջուկային (հիմնական) միջոցով: Através do cordova (biblioteca javascript) os recursos do dispositivos são acessados pelo webview do mesmo.

Կիրառվում են API- ի համակարգերի կիրառման համար, որոնք պահանջում են տեղեկատվություն, որը թույլ է տալիս կատարել հեռավոր հեռավորություն: Através de um evento de botão uma requisição é enviada para o servidor e açãorespondente é realizada.

Հղումներ:

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

Odigi fonte do aplicativo modelo encontra-se no GitHub, no endereço

API- ի գործառնական գործառնական կարգավորումը կարող է օգտագործվել API- ի բացակայության դեպքում: server.ts- ն չի կարող մուտքագրել /src/entity/server.ts(https://github.com/jeordanecarlosbatista/temperat…) և փոփոխել URI_PREFIX- ը, conforme exemplo abaixo para o endereço onde está hospedada a API:

արտահանման դասի սերվեր {

հանրային ստատիկ միայն կարդալու համար URI_PREFIX: string = "https://serverless-study.appspot.com/api/v1/"; /* public static readonly URI_PREFIX: string = "https://dominio.com/aplicacao/"; */}

Քայլ 7: FLUXOGRAMA

ՖԼՈXԿՍՕԳՐԱՄԱ
ՖԼՈXԿՍՕԳՐԱՄԱ

Քայլ 8. ԳՆԱՀԱՏՈՄ

Հրահանգներ ՝

Qualcomm DragonBoard 410C:

Windows 10 և DragonBoard ™ 410c-IoT- ի զարգացման կատարյալ սկիզբ.

Monitore sua planta usando Arduino ՝

Խորհուրդ ենք տալիս: