Cov txheej txheem:
- Kauj ruam 1: QHIA - DRAGONBOARD
- Kauj Ruam 2: QHIA - LINKER BASE
- Kauj ruam 3: QHIA - SENSOR
- Kauj Ruam 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE
- Kauj Ruam 5: Npaj API
- Kauj Ruam 6: APP MOBILE
- Kauj Ruam 7: FLUXOGRAMA
- Kauj Ruam 8: REFERÊNCIAS
Video: SISTEMA DE IRRIGAÇÃO AUTOMÁTICA CONTROLADA POR SMARTPHONE: 8 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:24
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAISCurso: Tshwj xeeb tshwj xeeb hauv Arquitetura de Software Distribuído
Cov ntaub ntawv: 2017-10-26
Unidade: Tshaj tawm Liberdade
Kev qhuab qhia: Internet das Coisas
Xib fwb: 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])
QHIA
Nws yuav zoo li cas yog tias peb tuaj yeem ywg dej peb cov nroj tsuag txhua lub sijhawm, nyob qhov twg? Nrog WaterPlant Project nws yuav ua tau. Txoj haujlwm no tau tsim los txhawm rau txhim kho kev yooj yim thiab siv tau los kho qhov no yog qhov tseem ceeb rau ntiaj chaw.
INTRODUÇÃO
Yuav ua li cas thiaj li tau txais txiaj ntsig los ntawm kev cog qoob loo? Com los Projeto WaterPlant muaj peev xwm. Este projeto foi desenvolvido visando melhorar a comodidade e a praticidade para tratar deste ser tão importante para o planeta.
FUNCIONAMENTO
O projeto 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 avaliar a necessidade de sua irrigação.
Cov lus tshaj tawm xov xwm rau API, armazenada na nuvem, que por sua vez é acessada pelo aplicativo mobile, que recebe e trata tais informações. Desta forma aplicação mantem o usuário informado da situação ua ib leeg. 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.
Kauj ruam 1: QHIA - DRAGONBOARD
DragonBoard 410C
DragonBoard 410C yog tus thawj coj ua lag luam tsis muaj tus txheej txheem los ntawm kev siv Qualcomm Snapdragon 400, sib txuas nrog Wifi, Bluetooth thiab GPS em uma placa do tamanho aproximado de um cartão de crédito, e é caracterizada pelo alto desempenho do processador de 64 Qualcomm rodando à 1.2GHz, com 1GB ntawm kev nco DDR3 533 MHz thiab 8GB ntawm memória de armazenamento (eMMC).
Tus nqi: R $ 500 ~ R $ 750
Kauj Ruam 2: QHIA - LINKER BASE
Placa de expansão para mapeamento e utilização de portas, ua kom yooj yim thiab siv tau zoo.
Kauj ruam 3: QHIA - SENSOR
Sensor de Umidade do Solo
Este sensor siv ua haujlwm 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 sensor. Quando o solo estiver seco, a sua resistência aumenta, dificultando a passagem de corrente. Com a absorção da uagua, 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.
Nws yog qhov tseem ceeb tshaj plaws rau 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.
Tus nqi: R $ 6 ~ R $ 20.
Kauj Ruam 4: DESENVOLVIMENTO COM WINDOWS 10 IOT CORE
Aplicação desenvolvida para rodar na Dragonboard 410c foi feita utilizando o Windows 10 IoT Core.
O Windows 10 IoT Core é uma plataforma de 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, tsis muaj caso de uso da Dragonboard):
- Visual Studio 2017 Zej Zog los yog koj muaj peev xwm ua tau zoo dua (https://www.visualstudio.com/thank-you-downloading…);
- DragonBoard Hloov Kho Cuab Yeej;
- Windows 10 IoT Core Dashboard;
- DragonBoard Windows 10 IoT Core Duab;
- Windows IoT qhov haujlwm ua qauv;
Cov txheej txheem ua tiav rau kev teeb tsa thiab teeb tsa pode ser encontrado no seguinte txuas:
Após a instalação e configuração conforme o tutorial da Microsoft basta criar um novo projeto tsis muaj Visual Studio ua cov ntsiab lus keeb kwm yav dhau.
Para este tutorial vamos disponibilizar o código finalizado da aplicação através do GitHub em
Tam sim no teeb tsa ib qho kev pab cuam zoo li tsis yog arquivo StartupTask.cs na raiz do projeto, thiab vamos qhia meej txog cov neeg ua haujlwm ib feem ntawm código.
Tus thawj xibfwb thiab tus thov kev pabcuam o Run () e seu código é o seguinte:
pej xeem tsis muaj dab tsi khiav (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 executados a cada quantidade de tempo, e neste caso foram parametrizados 10 segundos timer. 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 exemplo de código rau Dragonboard lossis código do pino foi o 36.
ntiag tug tsis muaj dab tsi InitGPIO ()
{var gpio = GpioController. GetDefault (); yog (gpio == null) {pin = null; rov qab; } tus pin = gpio. OpenPin (36); if (pin == null) {rov qab; } pin. Write (GpioPinValue. High); tus pin. SetDriveMode (GpioPinDriveMode. Output); }
Kev xaiv InitSPI () teeb tsa tus qauv SPI0 ntawm Dragonboard.
ntiag tug async Task InitSPI ()
{sim {var nqis = tshiab SpiConnectionSettings (0); // Seleciona a porta SPI0 da DragonBoard settings. ClockFrequency = 500000; // Configura o clock do barramento SPI em 0.5MHz settings. Mode = SpiMode. Mode0; // COnfigura polaridade e fase ua moos ua SPI var maub los = tos SpiController. GetDefaultAsync (); SpiADC = controller. GetDevice (chaw); } ntes (Kev zam tshwj xeeb) {pov qhov zam tshiab ("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. Nws tseem ceeb heev uas yuav tsum tau ua raws li cov cai hauv qab no: API:
var httpWebRequest = (HttpWebRequest) WebRequest. Create ("https://serverless-study.appspot.com/api/v1/irrigacoes");
httpWebRequest. ContentType = "application/json"; httpWebRequest. Method = "TAU";
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 o método Timer_Tick2 () que é responsável pelo envio dos dados da umidade do solo naquele momento. É tsis muaj 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 (byte kwj dej) é o método responsável por ler ua tus hloov pauv analógico/digital os valores informados pelo sensor de umidade. Este adaptador informa um array de bytes que é convertido em inteiro através do método ConvertToInt ([ReadOnlyArray] byte cov ntaub ntawv). Segue os trechos de código:
pej xeem int LerADC (byte kwj dej)
{byte readBuffer = tshiab byte [3]; byte writeBuffer = tshiab byte [3] {0x00, 0x00, 0x00}; writeBuffer [0] = 0x01; writeBuffer [1] = kwj dej; SpiADC. TransferFullDuplex (writeBuffer, readBuffer); adcValue = ConvertToInt (readBuffer); rov adcValue; } public int ConvertToInt ([ReadOnlyArray] byte cov ntaub ntawv) {int tshwm sim = 0; tshwm sim = cov ntaub ntawv [1] & 0x03; tshwm sim << = 8; tshwm sim += cov ntaub ntawv [2]; rov qab los; }
Kauj Ruam 5: Npaj API
API foi desenvolvida na plataforma NodeJS (https://nodejs.org), foi utilizado o Swagger (https://swagger.io/specification/) a fim de modelar e documentar os recursos utilizados na integração do trabalho.
Para armazenamento dos dados foi utilizado o banco de dados MySQL, banco de dados relacional e qhib qhov chaw.
Segue abaixo a arquitetura de camadas que compõem a API.
● /api: Camada que gerencia os recursos disponibilizados para que terceiros possam acessar.
○ /api /maub los: Camada que gerencia as rotas definidas tsis muaj ntaub ntawv gerado pelo swagger.
○ /api /kev pabcuam: Camada que entrega os dados de entrada para serem tratados, depois escritos ou lidos pela camada de BO (descrita mais à diante). Nesta camada yog lub teeb tsa los ntawm retorno ocorrido durante lossis txheej txheem kev thov.
○ /api /swagger: Camada que contém o arquivo de configuração do swagger, onde estão toda as configurações dos recursos.
● /sau: Camada que contém toda codificação relacionada a regra de negócio da aplicação.
○ /chaw cia khoom: 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 nrog API:
Qhov chaw: POST
URI:/api/v1/umidades
Cov lus piav qhia: Rov siv tau dua rau kev sau npe umidade coletada pelo sensor de umidade.
Piv txwv ntawm kev xav tau:
{
"Siab": 355
Método: Tau
URI:/api/v1/umidades
Cov lus piav qhia: Rov ua dua que rov ua haujlwm tag nrho os registros de valores de umidade que foram salvos anteriormente.
Piv txwv li lus teb:
[{“Id”: 1, “valor”: 355, “dataCadastro”: yyyy-MM-dd HH: MM}]
Qhov chaw: POST
URI:/api/v1/irrigacoes
Descrição: Rov siv tau dua rau ativar o dispositivo de irrigação.
Método: Tau
URI:/api/v1/irrigacoes
Cov lus piav qhia: Rov siv tau dua qub rau qhov tseeb lossis estado de umidade atual do solo.
Piv txwv li lus teb:
{
"Siab": 355
Kauj Ruam 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 moj khaum que possui uma gigantesca biblioteca de componentes gráficos que facilita a implementação visual do aplicativo. Siv lub vev xaib linguagens (HTML, CSS thiab Javascript) rau criação das telas e tem o Angular como o seu núcleo (core). Através do cordova (biblioteca javascript) os recursos do dispositivos s ao acessados pelo webview do mesmo.
A aplicativo suav nrog em realizar 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 correspondente é realizada.
Txuas:
- https://ionicframework.com/
- https://angular.io/
- https://ionicframework.com/
O código fonte do aplicativo modelo encontra-se no GitHub, tsis muaj qhov kawg
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_PRE ua raws li cov lus pom zoo rau kev ua haujlwm lossis kev ua haujlwm ntawm API:
export chav Server {
pej xeem zoo li qub nyeem URI_PREFIX: hlua = "https://serverless-study.appspot.com/api/v1/"; /* pej xeem nyeem zoo li qub URI_PREFIX: hlua = "https://dominio.com/aplicacao/"; */}
Kauj Ruam 7: FLUXOGRAMA
Kauj Ruam 8: REFERÊNCIAS
Cov lus qhia:
Qualcomm DragonBoard 410C:
Windows 10 thiab DragonBoard ™ 410c-Pib Zoo Tshaj rau IoT Kev Txhim Kho:
Monitore sua planta siv Arduino:
Pom zoo:
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom - Cov Kauj Ruam ntawm Kauj Ruam: 4 Kauj Ruam
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom | Cov kauj ruam ib kauj ruam: Hauv txoj haujlwm no, kuv yuav tsim qhov yooj yim Arduino Tsheb Rov Qab Tsheb Nres Tsheb Nres Sensor Siv Arduino UNO thiab HC-SR04 Ultrasonic Sensor. Qhov no Arduino raws Lub Tsheb Rov Qab ceeb toom tuaj yeem siv rau Kev Tshawb Fawb Txog Tus Kheej, Robot Ranging thiab lwm yam
Qhov System De Irrigação Automático Para Plantas: 8 Kauj Ruam
Sistema De Irrigação Automático Para Plantas: A irrigação é uma das tecnologias mais utilizadas los ntawm kev ua liaj ua teb pois esta atividade independente da ocorrência de chuvas, garante uma safra uniforme, reduz a falha humana, minimiza o consumo de água (useizo
Tsev Automation Kauj Ruam ntawm Kauj Ruam Siv Wemos D1 Mini Nrog PCB Tsim: 4 Kauj Ruam
Tsev Automation Kauj Ruam Ib Leeg Siv Wemos D1 Mini Nrog PCB Tsim: Tsev Automation Kauj Ruam los ntawm Kauj Ruam siv Wemos D1 Mini nrog PCB Tsim cov tub ntxhais kawm ntawv qib siab. Tom qab ntawd ib tus ntawm peb cov tswv cuab tuaj
RC Taug Qab Neeg Hlau Siv Arduino - Kauj Ruam Ib kauj ruam: 3 Kauj Ruam
RC Tracked Robot Siv Arduino - Kauj Ruam Ib Nrab: Hav guys, Kuv rov qab los nrog lwm tus neeg hlau txias chassis los ntawm BangGood. Vam tias koj tau dhau los ntawm peb cov phiaj xwm yav dhau los - Spinel Crux V1 - Tus Cwj Pwm Tswj Tus Neeg Hlau, Spinel Crux L2 - Arduino Xaiv thiab Muab Neeg Hlau nrog Robotic caj npab thiab Badland Braw
Tsheb kauj vab GPS LOSSIS tsheb taug qab ntawm SMARTPHONE: 9 Kauj Ruam
GPS BIKE LOS YOG CAR TRACKING FROM SMARTPHONE: Nyob Zoo, Zoo Siab Txais Tos rau Kev Tsim Kho Buzz. Ntawm no kuv qhia koj Li Cas Koj Taug Qab Koj Lub Tsheb Tsheb lossis Tsheb. Koj tuaj yeem taug qab qhov chaw nyob ntawm lub tsheb kauj vab siv cov tswv yim no