สารบัญ:

SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ขั้นตอน
SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ขั้นตอน

วีดีโอ: SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ขั้นตอน

วีดีโอ: SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 ขั้นตอน
วีดีโอ: How To Program Grass Sprinkler Automatic System DIY Complete Tutorial 2024, พฤศจิกายน
Anonim
Image
Image
SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE
SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE
SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE
SISTEMA DE IRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAISCurso: เฉพาะเจาะจงใน Arquitetura de Software Distribuído

ข้อมูล: 2017-10-26

Unidade: Praça da Liberdade

สาขาวิชา: Internet das Coisas

ศาสตราจารย์: อิโล ริเวโร

Alunos: บรูโน่ วัลกัส ([email protected])

เดลแลน ฮอฟฟ์แมน พี. ซิลวา ([email protected])

เฮเบิร์ต อัลเวส เฟอร์ไรร่า ([email protected])

ฌอง คาร์ลอส บาติสตา ([email protected])

จอร์ดาเน บาติสตา ([email protected])

การแนะนำ

จะเป็นอย่างไรถ้าเราสามารถรดน้ำต้นไม้ได้ทุกที่ทุกเวลา? ด้วยโครงการ WaterPlant จะเป็นไปได้ โปรเจ็กต์นี้พัฒนาขึ้นโดยมีเป้าหมายเพื่อปรับปรุงความสะดวกและการใช้งานจริง เพื่อรักษาสิ่งนี้ให้มีความสำคัญต่อโลก

บทนำ

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. โปรเจ็กต์นี้

ฟังชันนาเมนโต

โปรเจ็กต์ 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 ยอมจำนน a necessidade de sua irrigação

ข้อมูลอ้างอิงสำหรับ API, armazenada na nuvem, que por sua vez é acessada pelo aplicativo mobile, que recebe e trata tais informações รูปแบบการใช้งาน aplicação mantem o usuário informado da situação do solo O usuário em contato com 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

A DragonBoard 410C ที่ใช้งานได้จริงบนพื้นฐานที่ไม่มีโปรเซสเซอร์ Qualcomm Snapdragon 400, รองรับการเชื่อมต่อ Wifi, Bluetooth และ GPS ที่ใช้งานได้จริงทั้งหมด Qualcomm rodando à 1.2GHz, com 1GB สำหรับหน่วยความจำ DDR3 533 MHz e 8GB สำหรับหน่วยความจำ (eMMC)

ล่วงหน้า: R$500 ~ R$750

ขั้นตอนที่ 2: ส่วนประกอบ - LINKER BASE

ส่วนประกอบ - ฐานเชื่อมโยง
ส่วนประกอบ - ฐานเชื่อมโยง

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

ขั้นตอนที่ 3: ส่วนประกอบ - เซ็นเซอร์

ส่วนประกอบ - เซ็นเซอร์
ส่วนประกอบ - เซ็นเซอร์

เซ็นเซอร์ 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 เซ็นเซอร์ Quando o เดี่ยว 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.

ล่วงหน้า: R$6 ~ R$20.

ขั้นตอนที่ 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE

แอปพลิเคชันสำหรับ Dragonboard 410c สำหรับใช้งานบน Windows 10 IoT Core

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

  • Visual Studio 2017 ชุมชนที่คุณเข้าถึงได้มากกว่า (https://www.visualstudio.com/thank-you-downloading…);
  • เครื่องมืออัปเดต DragonBoard;
  • Windows 10 IoT Core Dashboard;
  • อิมเมจหลักของ DragonBoard Windows 10 IoT;
  • แม่แบบโครงการ Windows IoT;

ดำเนินการเต็มประสิทธิภาพสำหรับการติดตั้ง e configuração pode ser encontrado no seguinte link:https://developer.microsoft.com/en-us/windows/iot/…

ติดตั้งและกำหนดค่าให้สอดคล้องหรือกวดวิชาสำหรับ Microsoft basta criar um novo projeto ไม่มี Visual Studio ทำ tipo แอปพลิเคชันพื้นหลัง

Para este กวดวิชา vamos disponibilizar o código finalizado da aplicação através do GitHub em

การกำหนดค่าตามความชอบสำหรับ aplicativo está no arquivo StartupTask.cs na raiz do projeto, e vamos explicar abaixo parte a parte do código.

O หลัก da aplicação é o Run() e seu código é o seguinte:

โมฆะสาธารณะ Run (IBackgroundTaskInstance taskInstance)

{ InitGPIO(); InitSPI(); _deferral = taskInstance. GetDeferral(); ตัวจับเวลา = ThreadPoolTimer. CreatePeriodicTimer (Timer_Tick, TimeSpan. FromMilliseconds(10000)); timer2 = ThreadPoolTimer. CreatePeriodicTimer (Timer_Tick2, TimeSpan. FromMilliseconds (10000)); }

ระบบปฏิบัติการ InitGPIO() และ InitSPI() เริ่มต้น variáveis para serem utilizadas na nossa aplicação enquanto as variáveis timer e timer2 criam 2 timers para serem executados a cada quantidade de neste tempogun s tempogun. 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 แบบอย่างของ código สำหรับ Dragonboard o código do pino foi o 36

โมฆะส่วนตัว InitGPIO()

{ var gpio = GpioController. GetDefault(); ถ้า (gpio == null) { ขา = null; กลับ; } พิน = gpio. OpenPin(36); if (pin == null){ return; } pin. Write(GpioPinValue. High); pin. SetDriveMode(GpioPinDriveMode. Output); }

O método InitSPI() กำหนดค่าพอร์ต SPI0 da Dragonboard

งาน async ส่วนตัว InitSPI()

{ ลอง { การตั้งค่า var = การตั้งค่า SpiConnection ใหม่ (0); // เลือกการตั้งค่าพอร์ต SPI0 da DragonBoard. ClockFrequency = 500000; // กำหนดค่านาฬิกาสำหรับ barramento SPI em 0.5MHz settings. Mode = SpiMode. Mode0; // กำหนดค่าคอนฟิกโพลาไรด์และ fase ทำนาฬิกาสำหรับตัวควบคุม SPI var = รอ SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (การตั้งค่า); } catch (ยกเว้นข้อยกเว้น){ โยนข้อยกเว้นใหม่ ("Falha na inicialização do SPI", อดีต); } }

O ตัวจับเวลาเบื้องต้น 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 = "แอปพลิเคชัน/json"; httpWebRequest. Method = "GET";

Neste trecho de código deve ser alterado para o endereço onde será hospedado o código da API สำหรับรถโดยสาร o comando de irrigação É neste trecho de código que a irrigação é encerrada ตัมเบม

Para o segundo timer é invocado o método Timer_Tick2() que é ตอบกลับ pelo envio dos dados da umidade ทำเดี่ยว naquele โมเมนโต É no seguinte trecho de código deste método que deve ser configurado o endereço da API สำหรับสภาพแวดล้อม dos dados:

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

httpWebRequest. ContentType = "แอปพลิเคชัน/json"; httpWebRequest. Method = "POST";

O método LerADC(byte canal) é o método responsável por ler do conversor analógico/digital os valores informados pelo sensor de umidade. Este adaptador ข้อมูล um array de byte que é convertido em inteiro através do método ConvertToInt([ReadOnlyArray] byte data) 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; } สาธารณะ int ConvertToInt ([ReadOnlyArray] ไบต์ ข้อมูล) { int ผลลัพธ์ = 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 และ documentar os recursos utilizados na integração do trabalho.

สำหรับอาร์มาเซนาเมนโต dos dados foi utilizado o banco de dados MySQL, banco de dados relacional และโอเพ่นซอร์ส

แยก abaixo a arquitetura de camadas que compõem a API

● /api: Camada que gerencia os recursos disponibilizados สำหรับ que terceiros possam acessar

○ /api/controller: Camada que gerencia เป็น rotas definidas ไม่มี 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á กำหนดค่า o retorno ocorrido Durante o ประมวลผลคำขอ

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

● /โดเมน: Camada que contém toda codificação relacionada a regra de negócio da aplicação

○ /repository: 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á prepareado pela própria aplicação

ข้อมูลพื้นฐานและที่ปรึกษา ao código fonte acesso o ลิงก์ไปยัง github:

Segue abaixo uma breve descrição de cada recurso disponibilizados ที่ API:

วิธีการ: POST

URI: /api/v1/umidades

คำอธิบาย: Recurso utilizado para registar umidade coletada pelo sensor de umidade.

ตัวอย่างข้อกำหนด:

{

“ความกล้าหาญ”: 355 }

วิธีการ: GET

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

วิธีการ: POST

URI: /api/v1/irrigacoes

คำอธิบาย: Recurso utilizado para ativar o dispositivo de irrigação.

วิธีการ: GET

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 and diminuir or custo do projeto. เพิ่มเติม O Ionic é um framework que possui uma gigantesca biblioteca de componentes gráficos que facilita a Implementação visual do aplicativo. Ele utiliza de linguagens web (HTML, CSS e Javascript) สำหรับการอ้างอิงถึง telas e tem o Angular como o seu núcleo (core) Através do Cordova (biblioteca javascript) ระบบปฏิบัติการ recursos do dispositivos são acessados pelo webview do mesmo

ใช้งานได้จริง algumas requisições para a API do sistema 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ção ผู้สื่อข่าว é 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 กำหนดค่า o endereço da API no arquivo server.ts que encontra-se no diretório /src/entity/server.ts(https://github.com/jeordanecarlosbatista/temperat…) และเปลี่ยนตัวเลือก URI_PREFIX Conforme แบบอย่าง 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: อ้างอิงÊNCIAS

คำแนะนำ:

Qualcomm DragonBoard 410C:

Windows 10 และ DragonBoard™ 410c – จุดเริ่มต้นที่สมบูรณ์แบบสำหรับการพัฒนา IoT:

Monitore sua planta usando Arduino:

แนะนำ: