Съдържание:

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 стъпки
Видео: Planning lawn irrigation - calculation of sprinklers - Is my connection sufficient? 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 GERAISCurso: Especialização em Arquitetura de Software Distribuído

Данни: 26.10.2017

Унидаде: Praça da Liberdade

Дисциплина: Интернет das Coisas

Професор: Ило Риверо

Алунос: Бруно Валгас ([email protected])

Делън Хофман П. Силва ([email protected])

Хебърт Алвеш Ферейра ([email protected])

Жан Карлос Батиста ([email protected])

Джордан Батиста ([email protected])

ВЪВЕДЕНИЕ

Какво би било, ако можем да поливаме растенията си по всяко време и навсякъде? С проекта WaterPlant ще бъде възможно. Този проект е разработен с цел подобряване на удобството и практичността да се третира това като толкова важно за планетата.

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.

ФУНКЦИОНАМЕНТО

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.

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 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.

Стъпка 1: КОМПОНЕНТИ - DRAGONBOARD

КОМПОНЕНТИ - DRAGONBOARD
КОМПОНЕНТИ - DRAGONBOARD

DragonBoard 410C

DragonBoard 410C е първостепенна платка за десенволвименто на базата на процесор за серия Qualcomm Snapdragon 400, свързващ com conexões Wifi, Bluetooth и GPS, който е платен до tamanho приблизително от um cartão de crédito, e é caracterizada pelo alto desempenito do processador Qualcomm работи на 1,2 GHz, с 1 GB памет DDR3 533 MHz и 8 GB памет за арматура (eMMC).

Цена: R $ 500 ~ R $ 750

Стъпка 2: КОМПОНЕНТИ - БАЗА НА ЛИНКЕРА

КОМПОНЕНТИ - БАЗА НА ЛИНКЕРИТЕ
КОМПОНЕНТИ - БАЗА НА ЛИНКЕРИТЕ

Placa de expansão para mapeamento e utilização de portas, улесняващ използването на sensores.

Стъпка 3: КОМПОНЕНТИ - СЕНЗОР

КОМПОНЕНТИ - СЕНЗОР
КОМПОНЕНТИ - СЕНЗОР

Sensor de Umidade do Solo

Este сензорът използва dois eletrodos para passar corrente pelo solo e lê o nível de umidade por comparação com a resistanceência do potenciômetro do módulo do sensor. Quando o solo estiver seco, a sua resistanceência aumenta, dificultando a Passagem de corrente. Com a absorção da água, resistantência do solo diminui allowindo a Passionm 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.

Цена: R $ 6 ~ R $ 20.

Стъпка 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Приложение за десенволидация на Dragonboard 410c за използване на Windows 10 IoT Core.

O Windows 10 IoT Core е ума за плащане на десенволвименто криада за улеснение на визуализацията на десенволведорите на програмата за програмиране на 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):

  • Общността на Visual Studio 2017 или qualquer outra versão (https://www.visualstudio.com/thank-you-downloading…);
  • Инструмент за актуализиране на DragonBoard;
  • Табло за управление на Windows 10 IoT Core;
  • DragonBoard Windows 10 IoT Core Image;
  • Шаблони за проекти на Windows IoT;

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

Приложете инсталационно и конфигуриращо устройство за обучение за Microsoft basta criar um novo projeto без Visual Studio до типово фоново приложение.

В този урок можете да разкажете за окончателното завършване на приложението към GitHub

Днес конфигурацията за прилагане не съдържа arquivo StartupTask.cs на raiz do projeto, e vamos обяснява 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 milisada. 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 konfigurationsõ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 до Dragonboard.

частна асинхронна задача InitSPI ()

{try {var settings = new SpiConnectionSettings (0); // Избор на порта SPI0 до настройки на DragonBoard. ClockFrequency = 500000; // Конфигуриране на часовник за барамен SPI с настройки 0.5MHz. Mode = SpiMode. Mode0; // COnfigura polaridade e fase do clock to SPI var controller = await SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (настройки); } catch (Exception ex) {throw new Exception ("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 = "ВЗЕМИ";

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.

Параметърът за таймер за отваряне и извикване на метода Timer_Tick2 () que é responseá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 = "application/json"; httpWebRequest. Method = "POST";

O método LerADC (байтов канал) е método реагиращ портал за разговор аналогов/цифров os valores информационен пело сензор de umidade. Тук можете да адаптирате информационен масив от байтове, които трябва да преобразувате в интерактивни условия за преобразуване на 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] байт данни) {int резултат = 0; резултат = данни [1] & 0x03; резултат << = 8; резултат += данни [2]; възвръщаем резултат; }

Стъпка 5: ПОДГОТВЕТЕ API

API за десенволидация на NodeJS на платформата (https://nodejs.org), за използване на Swagger (https://swagger.io/specification/) и за моден модел и документален документ за рекурсивно използване на интеграция до трабал.

Para armazenamento dos dados за използване на banco de dados MySQL, banco de dados relational и open source.

Прегледайте abiixo a arquitetura de camadas que compõem API.

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

○ /api /controller: Camada que gerencia като rotas definidas no documento gerado pelo swagger.

○ /api /услуга: 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 contém o arquivo de configuração do swagger, onde estão toda като конфигурации 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á provisionado pela própria aplicação.

За допълнителна информация и консултация по Código Fonte Acesso или за връзка към Github:

Segue abaixo uma breve descriptionção de cada recurso disponibilizados по API:

Метод: POST

URI:/api/v1/umidades

Описание: Рекурсивно използване на регистър умдиден колетарен пело сензор за ум.

Exemplo de requisição:

{

„Доблест“: 355}

Метод: ВЗЕМЕТЕ

URI:/api/v1/umidades

Описание: Recurso que recupera todos os registerros de valores de umidade que foram salvos anteriormente.

Пример за отговор:

[{“Id”: 1, “valor”: 355, “dataCadastro”: гггг-MM-dd HH: MM}]

Метод: POST

URI:/api/v1/irrigacoes

Описание: Recurso utilizado para ativar o dispositivo de irrigação.

Метод: ВЗЕМЕТЕ

URI:/api/v1/irrigacoes

Описание: Recurso utilizado para verificar o estado de umidade atual do solo.

Пример за отговор:

{

„Доблест“: 355}

Стъпка 6: APP MOBILE

МОБИЛНО ПРИЛОЖЕНИЕ
МОБИЛНО ПРИЛОЖЕНИЕ
МОБИЛНО ПРИЛОЖЕНИЕ
МОБИЛНО ПРИЛОЖЕНИЕ

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 facilitate a implementação visual do aplicativo. Използване на езикови езици (HTML, CSS и Javascript) за a criação das telas e tem o Angular como o seu núcleo (ядро). Através do cordova (biblioteca javascript) oscursos 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 ação korespondente é 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 or 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_PREFIX, conforme exemplo abaixo para or 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: РЕФЕРЕНЦИИ

Инструкции:

Qualcomm DragonBoard 410C:

Windows 10 и DragonBoard ™ 410c-перфектният старт за разработка на IoT:

Monitore sua planta usando Arduino:

Препоръчано: