সুচিপত্র:

SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ধাপ
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ধাপ

ভিডিও: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ধাপ

ভিডিও: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ধাপ
ভিডিও: Faça um Controle de Irrigação Inteligente com Arduino 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

ইউনিডেড: প্রান দা লিবার্ডেড

শৃঙ্খলা: ইন্টারনেট দাস কোইসাস

অধ্যাপক: ইলো রিভেরো

অ্যালুনোস: ব্রুনো ভালগাস ([email protected])

ডেলান হফম্যান পি সিলভা ([email protected])

হেবার্ট আলভেস ফেরেরা ([email protected])

জিন কার্লোস বাতিস্তা ([email protected])

জর্ডান বাতিস্তা ([email protected])

ভূমিকা

যদি আমরা আমাদের উদ্ভিদকে যে কোন সময়, যে কোন জায়গায় পানি দিতে পারি তাহলে কেমন হবে? ওয়াটারপ্ল্যান্ট প্রকল্পের মাধ্যমে এটি সম্ভব হবে। এই প্রকল্পটি গ্রহটির জন্য এটি এত গুরুত্বপূর্ণ বলে বিবেচনার সুবিধার্থে এবং ব্যবহারিকতার উন্নতির লক্ষ্যে তৈরি করা হয়েছিল।

ভূমিকা

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 monitoramento de jardins, onde é possível efetuar a verificação do estado do solo, com relação a sua umidade। সেন্ডো অ্যাসিম, পোর মেইও ডি প্যারিমেট্রোস দা উমিডেডো ডো সোলো এবং প্যাসিভেল অ্যাভালিয়ার এ নিসিডিডেড ডি সুয়া ইরিগানো।

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 a aplicação mantem o usuário informado da Situçã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।

ধাপ 1: উপাদান - ড্রাগনবোর্ড

উপাদান - ড্রাগনবোর্ড
উপাদান - ড্রাগনবোর্ড

ড্রাগন বোর্ড 410C

A DragonBoard 410C é a primeira placa de desenvolvimento baseada no processador da série Qualcomm Snapdragon 400, contando com conexões Wifi, Bluetooth e GPS em uma placa do tamanho aproximado de um cartão de crédito, e é caractero deo depeno deelo deelo deo deo Qualcomm rodando à 1.2GHz, com 1GB de memória DDR3 533 MHz e 8GB de memória de armazenamento (eMMC)।

Preço: R $ 500 ~ R $ 750

ধাপ 2: উপাদান - লিঙ্কার ভিত্তি

উপাদান - লিঙ্কার ভিত্তি
উপাদান - লিঙ্কার ভিত্তি

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

ধাপ 3: উপাদান - সেন্সর

উপাদান - সেন্সর
উপাদান - সেন্সর

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 permitindo 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 maior do que um valor predefinido, ajustado através do potenciômetro presente no módulo।

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

ধাপ 4: DESENVOLVIMENTO COM উইন্ডোজ 10 IOT কোর

উইন্ডোজ 10 আইওটি কোর ব্যবহার করার জন্য একটি অ্যাপ্লিকেশন

O Windows 10 IoT Core é uma plataforma de desenvolvimento criada para facilitar a vida dos desenvolvedores na hora de programmar 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):

  • ভিসুয়াল স্টুডিও 2017 কমিউনিটি আপনার যোগ্যতার বাইরে (https://www.visualstudio.com/thank-you-downloading…);
  • ড্রাগনবোর্ড আপডেট টুল;
  • উইন্ডোজ 10 আইওটি কোর ড্যাশবোর্ড;
  • ড্রাগনবোর্ড উইন্ডোজ 10 আইওটি কোর ইমেজ;
  • উইন্ডোজ আইওটি প্রকল্প টেমপ্লেট;

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

ইনস্টলেশন এবং কনফিগারেশন কনফর্ম বা টিউটোরিয়াল মাইক্রোসফট বাস্ট ক্রিয়ার উম নোভো প্রজেটো কোন ভিজ্যুয়াল স্টুডিও টিপো ব্যাকগ্রাউন্ড অ্যাপ্লিকেশন নেই।

এই টিউটোরিয়াল vamos disponibilizar o código finalizado 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 প্রধান da aplicação é o Run () e seu código é o seguinte:

পাবলিক অকার্যকর রান (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 utizidas na nossa aplicação enquanto as variáveis timer e timer2 criam 2 timers para serem execados a cada quantidade de tempo, e neste caso foram paramisados paramedisados 10 । Para alterar esse tempo basta mudar estes valores nessa parte do código।

O Método InitGPIPO () 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 (); যদি (gpio == null) {pin = null; প্রত্যাবর্তন; } পিন = gpio. OpenPin (36); if (pin == null) {return; } pin. Write (GpioPinValue. High); pin. SetDriveMode (GpioPinDriveMode. Output); }

O método InitSPI () একটি পোর্টা SPI0 da Dragonboard কনফিগার করে।

প্রাইভেট অ্যাসিঙ্ক টাস্ক ইনিশপিএসপিআই ()

{চেষ্টা করুন {var সেটিংস = নতুন SpiConnectionSettings (0); // সেলেসিয়ানা এবং পোর্টা SPI0 da DragonBoard সেটিংস। ClockFrequency = 500000; // কনফিগুরা বা ঘড়িটি ব্যারামেন্টো SPI em 0.5MHz সেটিংস। মোড = স্পাইমোড। // COnfigura polaridade e fase do clock do SPI var controller = অপেক্ষা SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (সেটিংস); } ধরা (ব্যতিক্রম প্রাক্তন) {নতুন ব্যতিক্রম নিক্ষেপ ("Falha na inicialização do SPI", ex); }}

O Primeiro timer invoca 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 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 o comando de irrigação। Es neste trecho de código que a irrigação é encerrada também।

Para o segundo timer é invocado o método Timer_Tick2 () que é responsável pelo envio dos dados da umidade do solo nakele momento। Se 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 (বাইট ক্যানেল) é o método responsável por ler do Convertor 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] বাইট ডেটা)। Segue os trechos de código:

পাবলিক 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] বাইট data) {int result = 0; ফলাফল = ডেটা [1] এবং 0x03; ফলাফল << = 8; ফলাফল += ডেটা [2]; ফেরার ফলাফল; }

ধাপ 5: একটি API প্রস্তুত করুন

API foi desenvolvida na plataforma NodeJS (https://nodejs.org), foi utilizado o Swagger (https://swagger.io/specification/) a fim de modelar e documentar os recursos utilizados na integração do trabalho।

Para armazenamento dos dados foi utilizado o banco de dados MySQL, banco de dados relacional 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 documento gerado pelo swagger।

Ap /এপিআই /সার্ভিস: কামাডা কিউ এন্ট্রেগা ওস দাদোস দে এন্ট্রাডা প্যারা সেরেম ট্রাটাডোস, ডিপোইস এসক্রিটোস ওউ লিডোস পেলা কামাডা ডি বিও (ডেসক্রিটা মাইস à ডায়ান্টে)। 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।

Domain /ডোমেইন: Camada que contém toda codificação relacionada a regra de negócio da aplicação।

○ /সংগ্রহস্থল: Camada de persistência de dados।

Infrastructure /অবকাঠামো: 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।

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

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

Mtodo: পোস্ট

URI:/api/v1/umidades

বর্ণনা: রেজিস্টার উমিডেড কোলেটাডা পেলো সেন্সর ডি উমিডেড।

উদাহরণস্বরূপ প্রয়োজনীয়তা:

{

"বীরত্ব": 355}

Mtodo: পান

URI:/api/v1/umidades

বর্ণনা: Recurso que recupera todos os registros de valores de umidade que foram salvos anteriormente।

উদাহরণস্বরূপ প্রতিক্রিয়া:

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

Mtodo: পোস্ট

URI:/api/v1/irrigacoes

বর্ণনা: Recurso utilizado para ativar o dispositivo de irrigação।

Mtodo: পান

URI:/api/v1/irrigacoes

বর্ণনা: Recurso utilizado para verificar o estado de umidade atual do solo।

উদাহরণস্বরূপ প্রতিক্রিয়া:

{

"বীরত্ব": 355}

ধাপ 6: অ্যাপ মোবাইল

অ্যাপ মোবাইল
অ্যাপ মোবাইল
অ্যাপ মোবাইল
অ্যাপ মোবাইল

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 ingredientses gráficos que facilita a বাস্তবায়নçã ভিজ্যুয়াল ডু অ্যাপ্লিক্যাটিভো। এল ইউটিলিজা ডি লিঙ্গুয়াজেন্স ওয়েব (এইচটিএমএল, সিএসএস এবং জাভাস্ক্রিপ্ট) একটি ক্রিয়াও দাস টেলাস এবং টেম ও কৌণিক কোমো ও সিইউ নিউক্লিও (কোর)। Através do cordova (biblioteca javascript) os recursos do dispositivos são acessados pelo webview do mesmo।

O aplicativo consiste em realizar algumas requisições para a API do systeme a 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 correspondente é realizada।

লিঙ্ক:

  • 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_PRE, কনফর্ম exempel abaixo para o endereço onde está hospedada a API:

এক্সপোর্ট ক্লাস সার্ভার {

পাবলিক স্ট্যাটিক শুধুমাত্র URI_PREFIX: string = "https://serverless-study.appspot.com/api/v1/"; /* পাবলিক স্ট্যাটিক শুধুমাত্র URI_PREFIX: string = "https://dominio.com/aplicacao/"; */}

ধাপ 7: FLUXOGRAMA

ফ্লুক্সোগ্রামা
ফ্লুক্সোগ্রামা

ধাপ 8: রেফারেন্স

নির্দেশিকা:

কোয়ালকম ড্রাগন বোর্ড 410 সি:

উইন্ডোজ 10 এবং ড্রাগনবোর্ড ™ 410c-আইওটি উন্নয়নের জন্য নিখুঁত সূচনা:

Monitore sua planta usando Arduino:

প্রস্তাবিত: