Cuprins:
- Pasul 1: COMPONENTE - DRAGONBOARD
- Pasul 2: COMPONENTE - BAZĂ LINKER
- Pasul 3: COMPONENTE - SENZOR
- Pasul 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE
- Pasul 5: PREPARAREA unui API
- Pasul 6: APP MOBILE
- Pasul 7: FLUXOGRAMA
- Pasul 8: REFERÊNCIAS
Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 Steps
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
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
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
Placa de expansiune pentru mapare și utilizare a porților, facilitând o utilizare a senzorilor.
Pasul 3: 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
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
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:
Video Tutoriales De Tecnologías Creativas 05: ¿Hacemos Un Detector De Presencia? ¡Por Supuesto !: 4 Steps
Vídeo Tutoriales De Tecnologías Creativas 05: ¿Hacemos Un Detector De Presencia? ¡Por Supuesto !: În acest tutorial vom învăța cum să fac un detector de prezență cu un senzor de ultrasunete pe o placa Arduino Uno și folosind Tinkercad Circuits (folosind o contă gratuită)
Lámpara Portátil Con Carga Por Inducción (En Proceso): 4 Steps
Lámpara Portátil Con Carga Por Inducción (En Proceso): Primera versiune de lámpara transportable con carga por inducción.Componentes: Bateria Lipo 500mAh / 3.7V: https: //tienda.bricogeek.com/baterias-lipo/939-bat … Cargador de baterie LiPo USB și DC: https://tienda.bricogeek.com/cargadores-de-bateria…Car
Carregamento De Celular Por Meio Da Energia Eólica E Energia Solar: 5 Steps
Carregamento De Celular Por Meio Da Energia Eólica E Energia Solar: Este este un proiect de facultate care constă în utilizarea energiei hibride pentru carregamentul de aparate electronice. No video is pussível ver o celular sendo carregado pelas duas formes of energy. Primeiro este testat la energie solară separat și
Control De Foco Por Medio De Comandos De Voz: 22 Steps
Control De Foco Por Medio De Comandos De Voz: In this occasion traemos un tutorial for the control de el encendido y apagado de un foco por medio de comandos de voz ayudados de google assistant y nuestra plataforma de desarrollo wifi (Lolin), care poate fi este un modul Esp8266 o un Node mcu
Braço Robô Controlado Por Giroscópio Via Celular: 3 Steps
Braço Robô Controlado Por Giroscópio Via Celular: Este proiect ira ira te auxiliar na criação de um braço robótico controlado pelo giroscópio de um celular, irei separa em x partes: Lista de materiaisEsquema eletrônicoMovendo o BraçoCapturando as informações do giroscópioIntegrando celular e ardu