Cuprins:

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

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

Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 Steps
Video: Sistema de Riego Inteligente - Arduino - Aplicación Móvil - Iluminación automática. 2024, Noiembrie
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: Specialização em Arquitetura de Software Distribuído

Data: 2017-10-26

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

INTRODUCERE

Cum ar fi dacă ne-am putea uda plantele oricând și oriunde? Cu Proiectul WaterPlant va fi posibil. Acest proiect a fost dezvoltat cu scopul de a îmbunătăți confortul și caracterul practic pentru a trata acest lucru atât de important pentru planetă.

INTRODUÇÃO

Como seria se pudéssemos aguar nossas plantas a qualquer hora e de qualquer lugar? Com o Projeto WaterPlant va fi posibil. Acest proiect a fost dezvoltat vizând melhorar a comoditate și a practicitate pentru a trata acest lucru important pentru planeta.

FUNCIONAMENTO

O proiectul a fost dezvoltat pentru monitorizarea de grădini, unde este posibil să se efectueze o verificare a stării do solo, cu relația cu umiditatea sa. 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 for a API, armazenada na nuvem, care por sua vez é acessada pelo aplicativo mobile, that recebe e trata tais informações. Desta forma a aplicação mantem o usuário informado da situação do solo. O utilizatorário em contato com a aplicação poderá solicitar o irrigamento imediado do solo, this informationção é enviada para a API que por sua vez se comunica com a placa para acionamento do device de irrigação.

Pasul 1: COMPONENTE - DRAGONBOARD

COMPONENTE - DRAGONBOARD
COMPONENTE - DRAGONBOARD

DragonBoard 410C

A DragonBoard 410C este o primă placă de dezvoltare bazată pe un procesor da serie Qualcomm Snapdragon 400, contând cu conexiuni Wifi, Bluetooth și GPS în uma placa do tamanho aproximat de um cartão de crédito, este caracterizat cu un păr înalt desempenho do processator de 64 bits da Qualcomm rodando à 1.2GHz, com 1GB de memorie DDR3 533 MHz și 8GB de memorie de armazenamento (eMMC).

Preț: R $ 500 ~ R $ 750

Pasul 2: COMPONENTE - BAZĂ LINKER

COMPONENTE - BAZĂ LINKER
COMPONENTE - BAZĂ LINKER

Placa de expansiune pentru mapare și utilizare a porților, facilitând o utilizare a senzorilor.

Pasul 3: COMPONENTE - SENZOR

COMPONENTE - SENZOR
COMPONENTE - SENZOR

Sensor de Umidade do Solo

Este sensor utiliza dois eletrodos for passar current hair 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, dificultând un pasaj de curent. Com a absorbção da água, a resistência do solo diminui permitindo a passagem de curent între os eletrodos e fechando, desta forma, o circuit. Dessa forma putem defini când solo este molhado, sau când este 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 când a umidade for maior do that um valor predefinido, ajustado através do potenciômetro presente no módulo.

Preț: R $ 6 ~ R $ 20.

Pasul 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

O aplicație dezvoltată pentru rodarea na Dragonboard 410c a fost folosită folosind Windows 10 IoT Core.

O Windows 10 IoT Core este o platformă de dezvoltare criada pentru a facilita o viață a dezvoltatorilor în oră de programare a dispozitivelor sale. Com ele é possível developer for várias placas existentes no market, bastando ter instalado no computador os following itens (já em sequência of installationção, no case de uso da Dragonboard):

  • Visual Studio 2017 Community sau o altă versiune (https://www.visualstudio.com/thank-you-downloading…);
  • Instrumentul de actualizare DragonBoard;
  • Windows 10 IoT Core Dashboard;
  • DragonBoard Windows 10 IoT Core Image;
  • Șabloane de proiect Windows IoT;

O proces complet pentru instalare și configurare poate fi găsit la următorul link:

Așezați o instalație și o configurație conformă cu un tutorial de la Microsoft basta criar cu un proiect nou nu cu Visual Studio cu tipul Background Application.

Pentru acest tutorial avem posibilitatea de a utiliza codul finalizat de aplicație pentru GitHub în

Toda a configuração do aplicativo está no arquivo StartupTask.cs na raiz do projeto, e vamos explica abaixo parte a parte do code.

O metodă principală de aplicare este o Run () și codul dvs. este următorul:

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 () inițial variabile pentru serem utilizate na noastra aplicație enquanto as variáveis timer e timer2 criam 2 timers pentru serem executate la fiecare cantitate de timp, și în acest caz foram parametrizate 10 segundos (10 mil milisegundos) pentru fiecare timer. Pentru altar esse tempo basta mudar aceste valori nessa parte a codului.

O Método InitGPIO () a urma tem ca funcție definir as configuraçõese do pino that ativa a válvula solenoide de água. Nici un exemplu de cod pentru Dragonboard sau codul pentru pinul fost 36.

privat nul InitGPIO ()

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

O metodă InitSPI () configurează o poartă SPI0 din Dragonboard.

Private async Task InitSPI ()

{try {var settings = new SpiConnectionSettings (0); // Selectați un SPI0 de la DragonBoard settings. ClockFrequency = 500000; // Configurați ceasul de blocare SPI em 0.5MHz settings. Mode = SpiMode. Mode0; // COnfigura polaritatea și faza do clock do SPI var controller = await SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (setări); } catch (Exception ex) {throw new Exception ("Falha na initialização do SPI", ex); }}

O primă timer invocă o metodă Timer_Tick () care tem ca funcționare a verificării através de API se aștepta pentru comandă pentru a începe uma irigare. Următorul cod de cod este răspunzător pentru chamada API:

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

httpWebRequest. ContentType = "application / json"; httpWebRequest. Method = "OBȚINE";

Neste trecho de code deve ser alterado for o endereço unde será hospedado o code da API para buscar o comando de irrigação. Este în acest cod de cod care irigă și este încadrat de asemenea.

Pentru al doilea timer este invocat sau metoda Timer_Tick2 () care este responsabilă cu părul înfățișat de doi ani de umiditate doar la momentul nașterii. Nu este următorul cod de metodă care trebuie să fie configurat sau finalizat de API pentru dosarul dat:

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

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

O metodă LerADC (byte canal) este o metodă responsabilă pentru ler a conversorului analogic / digital os valori informate pelo sensor de umidade. Acest adaptor oferă informații despre o serie de octeți care se convertesc în întregime cu metodele ConvertToInt (

public în LerADC (canal de octeți)

{octet readBuffer = octet nou [3]; octet writeBuffer = octet nou [3] {0x00, 0x00, 0x00}; writeBuffer [0] = 0x01; writeBuffer [1] = canal; SpiADC. TransferFullDuplex (writeBuffer, readBuffer); adcValue = ConvertToInt (readBuffer); returnează adcValue; } public int ConvertToInt ([ReadOnlyArray] octet date) {int rezultat = 0; result = data [1] & 0x03; rezultat << = 8; rezultat + = date [2]; rezultatul returului; }

Pasul 5: PREPARAREA unui API

API a fost dezvoltat pe platforma NodeJS (https://nodejs.org), a fost utilizat de Swagger (https://swagger.io/specification/) a fim de modelare și documentare a resurselor utilizate în integrarea doamnei.

Pentru armazenamento dos dados a fost utilizat sau banco de dados MySQL, banco de dados relațional și open source.

Segue abaixo a arquitetura de camadas that compõem a API.

● / api: Camada care gerencia os recursos disponibilizados pentru că terceiros possam acessar.

○ / api / controller: Camada que gerencia as rotas definidas no document 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 o retorno ocorrido durante o proces de solicitare.

○ / api / swagger: Camada care contém o arquivo de configuração do swagger, unde este toată ca configurație a resurselor.

● / domain: Camada care contém toată codificația legată de regra negativă a aplicației.

○ / depozit: Camada de persistência de dados.

● / infrastructure: Cama de configuração das strings de conexão do banco de dados și prea doamna server care va fi aprovizionat cu pela de aplicație.

Pentru mai multe informații și consultați codul fontei de acces la link-ul github:

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

Método: POST

URI: / api / v1 / umidades

Descriere: Recurs utilizat pentru înregistrarea umidității coletate părului senzor de umiditate.

Exemplu de cerere:

{

„Vitejie”: 355}

Método: GET

URI: / api / v1 / umidades

Descriere: Recurs care recuperează toate înregistrările de valori ale umidității care foram salvează anterior.

Exemplu de răspuns:

[{„Id”: 1, „valor”: 355, „dataCadastro”: aaaa-LL-zz HH: MM}]

Método: POST

URI: / api / v1 / irrigacoes

Descriere: Recurs utilizat pentru ativarea sau dispozitivul de irigare.

Método: GET

URI: / api / v1 / irrigacoes

Descriere: Recurs utilizat pentru verificarea sau starea de umiditate atuală do solo.

Exemplu de răspuns:

{

„Vitejie”: 355}

Pasul 6: APP MOBILE

APP MOBILE
APP MOBILE
APP MOBILE
APP MOBILE

Scolhemos uma technology híbrida for gerar um code reutilizável for all as plataformas (Android e IOS) for aumentar a abrangência de usuários e diminuo o custo do projeto. O Ionic é um framework care possui uma gigantesca biblioteca de componente grafice care facilitează o implementare vizuală a aplicativului. Ele utilizează lingvistice web (HTML, CSS și Javascript) pentru o criză a telelor și a temei Angular ca și al tău nucleu (core). Através do cordova (biblioteca javascript) os resources do devices são accessados pelo webview do mesmo.

O aplicație constă în realizarea unor solicitări pentru un API de sistem a fișei de a obține informații despre o umiditate doar în regim sau chiar remot. Através de um event de botão uma requisição é enviada para o server e a ação correspondente este realizat.

Link-uri:

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

O cod de fontă a modelului aplicativ încontra-se nu GitHub, fără endereço

Pentru că o aplicație funcțională basta configurare o însoțire de API nu arquivo server.ts care încontra-se nu direcționar /src/entity/server.ts(https://github.com/jeordanecarlosbatista/temperat…) și modifica o variabilă URI_PREFIX, conform exemplu abaixo pentru endereço unde está hospedada a API:

clasa de export Server {

public static numai în citire URI_PREFIX: șir = "https://serverless-study.appspot.com/api/v1/"; / * public static readonly URI_PREFIX: string = "https://dominio.com/aplicacao/"; * /}

Pasul 7: FLUXOGRAMA

FLUXOGRAMA
FLUXOGRAMA

Pasul 8: REFERÊNCIAS

Instrucțiuni:

Qualcomm DragonBoard 410C:

Windows 10 și DragonBoard ™ 410c - Startul perfect pentru dezvoltarea IoT:

Monitore sua planta folosind Arduino:

Recomandat: