Spisu treści:

SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 kroków
SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 kroków

Wideo: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 kroków

Wideo: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 kroków
Wideo: Высокая плотность 2022 2024, Listopad
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

Data: 26.10.2017

Unidade: Praça da Liberdade

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

WPROWADZANIE

Jak by to było, gdybyśmy mogli podlewać nasze rośliny zawsze i wszędzie? Dzięki projektowi WaterPlant będzie to możliwe. Ten projekt został opracowany w celu poprawy wygody i praktyczności traktowania tego, co jest tak ważne dla planety.

WPROWADZENIE

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 tao Importante para o planeta.

FUNKCJONALNOŚĆ

O projeto foi desenvolvido para monitormento de jardins, onde é possível efetuar a verificação do estado do solo, com relação a sua umidade. Sendo assim, por meio de parametros da umidade do solo é possível avaliar a necessidade de sua irrigação.

Placa envia informações para API, armazenada na nuvem, que por sua vez é acessada pelo aplicativo mobile, que recebe e trata tais informações. Desta forma aplicação mantem lub usuário informado da situação zrobić 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.

Krok 1: KOMPONENTY - DRAGONBOARD

KOMPONENTY - DRAGONBOARD
KOMPONENTY - DRAGONBOARD

DragonBoard 410C

DragonBoard 410C jest głównym miejscem, w którym nie ma procesorów z serii Qualcomm Snapdragon 400, jest połączony z połączeniami Wi-Fi, Bluetooth i GPS w miejscu, w którym znajduje się karta kredytowa, i jest wyposażony w 64-bitowy proces Qualcomm łączy się z 1,2 GHz, z 1 GB pamięci DDR3 533 MHz i 8 GB pamięci broni (eMMC).

Cena: 500 R$ ~ 750 R$

Krok 2: KOMPONENTY - BAZA ŁĄCZNIKA

KOMPONENTY - BAZA ŁĄCZNIKA
KOMPONENTY - BAZA ŁĄCZNIKA

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

Krok 3: KOMPONENTY - CZUJNIK

KOMPONENTY - CZUJNIK
KOMPONENTY - CZUJNIK

Sensor de Umidade do Solo

Este sensor utiliza dois eletrodos para passar corrente pelo solo e le o nível de umidade por comparação com a Resistancencia do potenciômetro do módulo do sensor. Quando o solo estiver seco, sua Resistancencia aumenta, dificultando a passagem de corrente. Com a absorção da água, a Resistancencia 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.

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.

Cena: 6 BRL ~ 20 BRL.

Krok 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

Aplikacja przeznaczona do gry w Dragonboard 410c do użytku w systemie Windows 10 IoT Core.

O Windows 10 IoT Core jest platformą, na której można się rozwijać, ułatwiając dostęp do nowych użytkowników w różnych programach. 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 Community ou qualquer outra versão (https://www.visualstudio.com/thank-you-downloading…);
  • Narzędzie do aktualizacji DragonBoard;
  • Główny pulpit nawigacyjny systemu Windows 10 IoT;
  • Obraz rdzenia DragonBoard Windows 10 IoT;
  • Szablony projektów Windows IoT;

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

Można zainstalować i skonfigurować konformację lub samouczek przez Microsoft, jeśli chodzi o nowy projekt, bez Visual Studio do aplikacji w tle.

Para este tutorial vamos disponibilizar lub código sfinalizowane z 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 principal da aplicação é o Run() e seu código é o seguinte:

public void Uruchom(IBackgroundTaskInstance taskInstance)

{ InitGPIO(); InitSPI(); _deferral = taskInstance. GetDeferral(); timer = ThreadPoolTimer. CreatePeriodicTimer(Timer_Tick, TimeSpan. FromMilliseconds(10000)); timer2 = ThreadPoolTimer. CreatePeriodicTimer(Timer_Tick2,TimeSpan. FromMilliseconds(10000)); }

Metodę InitGPIO() i InitSPI() zainicjuj różne funkcje sera w nowej aplikacji, używając różnych funkcji timera i timera2 criam 2 timery dla sera wykonywanych w określonym tempie, i zagnieżdżone w czasie, gdy masz ustawione parametry 10. Para alterar esse tempo basta mudar estes valores nessa parte do código.

O Método InitGPIO() seguir tem como função definir jako 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.

private void InitGPIO()

{ var gpio = GpioController. GetDefault(); if (gpio == null){ pin = null; powrót; } pin = gpio. OpenPin(36); if (pin == null){ return; } pin. Write(GpioPinValue. High); pin. SetDriveMode(GpioPinDriveMode. Output); }

O metodzie InitSPI() skonfiguruj porta SPI0 przez Dragonboard.

prywatne zadanie asynchroniczne InitSPI()

{ spróbuj { ustawienia var = new SpiConnectionSettings(0); // Wybierz port SPI0 z ustawień DragonBoard. ClockFrequency = 500000; // Skonfiguruj zegar do barramento SPI z ustawieniami 0.5MHz. Mode = SpiMode. Mode0; // KONfiguracja polaryzacji e fase do zegara do SPI var controller = await SpiController. GetDefaultAsync(); SpiADC = kontroler. GetDevice(ustawienia); } catch (Exception ex){ throw new Exception("Falha na inicialização do SPI", ex); } }

O pierwsze wywołanie licznika czasu lub metodę Timer_Tick() jest to funkcja, która umożliwia weryfikację i przeprowadzanie weryfikacji przez interfejs API, aby uzyskać polecenie dotyczące rozpoczęcia nawadniania. 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 = "aplikacja/json"; httpWebRequest. Method = "POBIERZ";

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 lub metodo Timer_Tick2() que é 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 = "aplikacja/json"; httpWebRequest. Method = "POST";

O metodzie LerADC (kanał bajtów) lub o metodzie odpowiada za przekonwertowanie analogowe/cyfrowe lub wartościowe informacje o czujnikach obsługi. Jest to adaptor informa um array de bytes que é é é to convertido em inteiro através to method ConvertToInt([ReadOnlyArray] byte data). Segue o trechos de código:

public int LerADC (kanał bajtów)

{ byte readBuffer = nowy bajt[3]; byte writeBuffer = new byte[3] { 0x00, 0x00, 0x00 }; bufor zapisu[0] = 0x01; writeBuffer[1] = kanał; SpiADC. TransferFullDuplex (bufor zapisu, bufor odczytu); adcValue = ConvertToInt(readBuffer); zwróć wartość adc; } public int ConvertToInt([ReadOnlyArray] byte data) { int wynik = 0; wynik = dane[1] i 0x03; wynik <<= 8; wynik += dane[2]; zwróć wynik; }

Krok 5: PRZYGOTOWANIE API

API dla platformy NodeJS (https://nodejs.org), dla użycia lub Swaggera (https://swagger.io/specification/) filmu modelowego i dokumentalnego, które są wykorzystywane do integracji.

Dla armazenamentu dados do korzystania z banku Dados MySQL, banku Dados relacyjnego i open source.

Segue abaixo arquitetura de camadas que compõem API.

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

○ /api/controller: Camada que gerencia jako rota 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 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.

○ /repozytorium: 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:

Metoda: POST

URI: /api/v1/umidades

Opis: Recurso utilizado para registar umidade coletada pelo sensor de umidade.

Przykład wymagań:

{

„męstwo”: 355 }

Metoda: GET

URI: /api/v1/umidades

Opis: Recurso que recupera todos os registros de valores de umidade que foram salvos anterioremente.

Przykładowa odpowiedź:

[{ “id”: 1, “valor”: 355, “dataCadastro”: rrrr-MM-dd GG:MM }]

Metoda: POST

URI: /api/v1/irrigacoes

Opis: Recurso utilizado para ativar o dispositivo de irrigação.

Metoda: GET

URI: /api/v1/irrigacoes

Opis: Recurso utilizado para verificar o estado de umidade atual do solo.

Przykładowa odpowiedź:

{

„męstwo”: 355 }

Krok 6: APLIKACJA MOBILNA

APLIKACJA MOBILNA
APLIKACJA MOBILNA
APLIKACJA MOBILNA
APLIKACJA MOBILNA

Escolhemos uma tecnologia hibrida para gerar um código reutilizável para todas as plataformas (Android i IOS) dla aumentar a abrangência de użytkowych i diminuir o klienta projektu. O Ionic é um framework que possui uma gigantesca biblioteca de componentes graficos que facilita a implementação visual do aplicativo. Użyj sieci języków (HTML, CSS i Javascript) do szukania wiadomości i motywów w Angular lub seu núcleo (rdzeń). Através do cordova (biblioteca javascript) os recursos do dispositivos são acessados pelo webview do mesmo.

O aplicativo składa się em realizar algumas requisições para API zrobić sistema a fim de se obter informações sobre a umidade zrobić solo e regar o mesmo remotamente. Através de um evento de botão uma requisição é enviada para o servidor e ação korespondent é realizada.

Spinki do mankietów:

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

O código fonte do aplicativo modelo encontra-se bez GitHub, bez 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_PREFIX, Conforme exemplo abaixo para o endereço onde está hospedada a API:

klasa eksportu Serwer {

public static readonly URI_PREFIX: string = "https://serverless-study.appspot.com/api/v1/"; /* public static readonly URI_PREFIX: string = "https://dominio.com/aplicacao/"; */ }

Krok 7: FLUXOGRAM

FLUXOGRAM
FLUXOGRAM

Krok 8: REFERENCJE

Instrukcje:

Qualcomm DragonBoard 410C:

Windows 10 i DragonBoard™ 410c - idealny początek rozwoju IoT:

Monitoruj swoją roślinę za pomocą Arduino:

Zalecana: