Você está na página 1de 35

UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO

Devanildo Aparecido de Paiva - RA 2002171


Jose Vilson Bezerra de Albuquerque – RA 1712316
Marcelo Martins Ribeiro dos Santos – RA 2009113
Vital João da Silva Junior - RA 2000870

Gestão Inteligente de vagas em estacionamento para visitantes em


condomínios

Vídeo de apresentação do Projeto Integrador

< https://youtu.be/S-BPJJ1t4Z8 >

Barueri – SP
2023
UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO

Gestão Inteligente de vagas em estacionamento para visitantes em


condomínios

Relatório Técnico-Científico apresentado na disciplina de


Projeto Integrador para o curso de Engenharia de
Computação da Universidade Virtual do Estado de São
Paulo (UNIVESP).

Barueri - SP
2023
PAIVA, Devanildo A.; ALBUQUERQUE, José V. B.; SANTOS, Marcelo M. R.; JUNIOR,
Vital J. S. Gestão Inteligente de vagas em estacionamento para visitantes em condomínios.
35f. Relatório Técnico-Científico. Engenharia de Computação – Universidade Virtual do
Estado de São Paulo. Tutor: COSTA, Daniel A. Polo Barueri, 2023.

RESUMO

Devido ao grande aumento de condomínios residenciais e comerciais, a implantação de


sistemas de gerenciamento de vagas em estacionamentos nesses locais se torna necessário para
ajudar funcionários e condutores na localização de vagas. O principal objetivo do projeto é
desenvolver um sistema de gestão de vagas de estacionamento através de sensores que
verificam se estão ocupados ou não e uma unidade central que informa os condutores e
funcionários sobre o estado das vagas do estacionamento. A metodologia consiste no
desenvolvimento de um sistema inteligente com indicadores de vagas utilizando a plataforma
Arduino, recebendo dados de sensores ópticos instalados nos locais das vagas de carros. Essas
informações serão visualizadas na portaria do estacionamento em uma interface através que
utilizará um canal de comunicação a ser desenvolvido. Assim, este trabalho propõe uma solução
através da introdução da automação nos estacionamentos para facilitar aos motoristas a
localização de vagas disponíveis. Desta forma, o motorista se beneficia da qualidade do serviço
sentindo-se num local de maior conforto, e o estabelecimento se beneficia também, pois os
colaboradores trabalham de forma mais eficaz reduzindo custos, tempo e aumentando a
segurança do local.

PALAVRAS-CHAVE: Automação; Condomínios; Estacionamentos; Sensores;


Comunicação; Sistema Inteligente.
SUMÁRIO

1 INTRODUÇÃO ..................................................................................................................... 5

2 DESENVOLVIMENTO........................................................................................................ 7

2.1 Objetivos............................................................................................................................... 7
2.2 Justificativa e delimitação do problema ............................................................................... 7
2.3 Fundamentação teórica ......................................................................................................... 8
2.4 Aplicação das disciplinas estudadas no projeto integrador1817
2.5 Metodologia ........................................................................................................................ 18
2.6 Resultados preliminares: solução inicial ............................................................................ 20

3 RESULTADOS: 3424

3.1 Solução Final.......................................................................................................................24

4 CONSIDERAÇÕES FINAIS .............................................................................................. 31

5 REFERÊNCIAS .................................................................................................................. 34
5

1 INTRODUÇÃO

O desenvolvimento de novas tecnologias tem acelerado as transformações nas mais


variadas esferas da existência humana provocando mudanças de paradigmas, seja por meio da
otimização de processos simples, desenvolvimento de soluções inovadoras ou mesmo
transformações radicais nos modelos produtivos ou nas relações sociais entre os indivíduos.
Diante deste contexto, o trabalho de pesquisa aqui apresentado tem ambições modestas, pois
trata-se de uma proposta de melhoria de um processo simples, explorando as possibilidades de
digitalização e automação de uma prática manual de controle de vagas de estacionamento em
condomínios.
A ideia básica é a implementação de um sistema de Internet das Coisas (IoT), tanto a
parte de hardware quanto de software, buscando modernizar e facilitar a administração por parte
da portaria do condomínio das vagas de estacionamento disponíveis. Com isso, um problema
recorrente de eficiência no controle dessas vagas seria solucionado, contribuindo inclusive para
a segurança e a redução de conflitos entre visitantes, moradores e administradores.
Apesar de existirem soluções comerciais para esse tipo de problema, enxergamos uma
oportunidade bastante didática de aplicação dos conhecimentos trabalhados da universidade,
sendo o contexto geral da nossa área de trabalho bastante amplo, permitindo assim que nós
exercitemos a criatividade e a inovação para problemas bastante pontuais e específicos que
talvez soluções mais genéricas não sejam capazes de atender.
Além disso, mesmo partindo de uma premissa bastante simples, o maior desafio da
implementação dessa solução é a orquestração de vários serviços menores como: a captura de
dados ambientais por sensores, a ativação de atuadores de sinalização, transmissão dos dados
para gateways por meio de protocolos de comunicação específicos, construção de API’s para
disponibilização dos dados, consumo dos dados por plataformas de ingestão de dados,
construção de uma interface web para visualização dos dados em tempo real, além do
armazenamento em banco de dados para análises futuras e identificação de padrões.
O foco da pesquisa aqui apresentada está na busca pela forma mais eficiente de construir
uma infraestrutura capaz de coletar dados (ocupação ou não de vagas de estacionamento) e
exibir a disponibilidade de vagas em tempo real para a administração do condomínio.
Entretanto, reconhecemos que essa ideia, uma vez bem executada e aperfeiçoada, pode
facilmente ser extrapolada para inúmeros outros contextos envolvendo estacionamentos como
lojas, shoppings, parques, etc.
6

Portanto, partindo da motivação principal da escolha desse tema, isto é, o


reconhecimento de que atividades manuais e ineficientes podem ser otimizadas e automatizadas
por meio da adoção de tecnologias recentes, esperamos contribuir para o avanço desse tipo de
conhecimento, explorando as possibilidades que a Internet das Coisas (IoT), principal objeto
do trabalho, trouxe e está trazendo para as mais diversas áreas, contribuindo para um cotidiano
mais inteligente e confortável.
7

2 DESENVOLVIMENTO

2.1 OBJETIVOS

2.1.1 OBJETIVO GERAL

Desenvolver um sistema IoT com captura, análise e processamento de dados que utilize
sensores de detecção de espaços livres em um estacionamento, utilizando uma interface para
visualização dos dados capturados.

2.1.2 OBJETIVOS ESPECÍFICOS

• Apresentar os benefícios da automação gerada ao estabelecimento.


• Implementar o sistema utilizando a plataforma Arduino Uno, sensores de detecção,
rede de comunicação Wifi e demais componentes utilizados.
• Desenvolvimento de uma interface para visualização dos dados gerados pelos
módulos e recebidos através da rede de comunicação.

2.2 JUSTIFICATIVA E DELIMITAÇÃO DO PROBLEMA

Um dos integrantes do grupo de elaboração desse projeto verificou que em um


condomínio de apartamentos na cidade de Barueri, no seu dia a dia as vagas de estacionamento
de visitantes fica a uns 80 metros da portaria, não havendo nenhum meio eletrônico de
visualização das vagas que estão disponíveis nos dias de fluxo intenso de visitantes. Sendo
assim, havia dificuldades de verificação de disponibilidade de vagas no estacionamento para
visitantes que se localizava longe da portaria de serviços no condomínio obrigando o
profissional da portaria a se locomover até o local para identificar quantas e quais vagas estavam
livres para serem utilizadas. Nessa ocasião foram levantados vários problemas como: falta de
vagas devido a erros de leitura visual ou o não monitoramento de carros que desocupam vagas
que constavam como não livres, aumento da insegurança com a exposição do funcionário a
riscos de acidentes, ineficiência do estacionamento e outros.
Diante desses problemas levantou-se a pergunta de como se poderia melhorar a
eficiência do gerenciamento desse estacionamento.
8

A partir da delimitação deste problema, o grupo iniciou as discussões com a comunidade


do condomínio sobre a possibilidade de implantação de um sistema de IoT para gerenciamento
das vagas do estacionamento. Isso poderia resolver problemas de falta de vagas, aumentar a
segurança ou melhorar a eficiência do estacionamento, atendendo dessa forma o desafio
proposto pelo projeto integrador.

2.3 FUNDAMENTAÇÃO TEÓRICA

Nas construções da década de 1920, e no início dos anos 30, não havia estacionamentos,
as pessoas paravam os carros nas ruas, e só buscavam o carro caso precisasse dele. Ainda hoje
vemos muitos locais onde há casas com suas portas voltadas diretamente para a rua, sem
garagem ou espaço para guardar carros. Já nas áreas comerciais, a maioria das vagas de
estacionamentos era ocupada por funcionários, e muitas vezes não sobravam vagas para clientes
desses centros comerciais. Por ter muitos carros parados nas ruas, os problemas de
congestionamentos eram comuns em grandes cidades, e isso prejudicava os negócios.
Como o Brasil é um país em estado avançado de transição urbana (Ojima et al., 2013,
p. 2), isso se reflete na recente expansão da frota de veículos, facilitada pela maior oferta de
crédito e melhorias na distribuição da renda. Segundo Martine et al. (2012, p. 178), a frota de
veículos brasileiros dobrou entre 2000 e 2012, passando de 19,9 milhões para 40 milhões, o que
provocou um aumento da relação entre habitantes por carro de 9:1 em 2000 para 5:1 em 2012.
Isso agravou o problema dos congestionamentos frequentes nas grandes metrópoles.
Com o aumento da frota de carros, houve a necessidade de se construir estacionamentos
privativos para atender a demanda crescente ao longo dos anos. Este trabalho apresenta um
projeto específico para automação de um estacionamento com grande número de vagas visando
seu bom funcionamento e acesso as vagas, evitando congestionamentos e estresse por parte dos
motoristas e funcionários do condomínio. Para isso será utilizado o microcontrolador Arduino,
sensores e uma interface para visualização dos dados.

2.3.1 SOBRE A AUTOMAÇÃO

A automação é um processo pelo qual tarefas e operações são realizadas


automaticamente, sem a necessidade de intervenção humana direta. Existem várias razões pelas
quais a automação é amplamente aplicada em diversas áreas da indústria, negócios e vida
cotidiana. Aqui estão algumas das principais razões pelas quais a automação é importante:
9

• Eficiência: A automação permite que tarefas executadas de forma mais rápida e


eficiente do que quando realizadas manualmente. Máquinas e sistemas
automatizados podem operar 24 horas por dia, 7 dias por semana, sem pausas, fadiga
ou erros humanos.
• Redução de erros: A automação reduz significativamente a possibilidade de erros.

A automatização está inteiramente ligada a algo automático, repetitivo, que realiza


alguma ação, neste caso a automatização é apenas uma ação cega, que apenas faz o serviço,
mas não verifica se foi feito corretamente, não há uma correção do resultado de saída, o
resultado final sempre será o mesmo independente dos valores de entrada, por isso diz-se que
é um sistema de malha aberta. (Silveira & Santos,1999)
Já a automação em um sistema de malha fechada é diferente da automatização em um
sistema de malha aberta, principalmente devido à incorporação de feedback e à capacidade de
correção do resultado da saída.

2.3.2 A PLATAFORMA ARDUINO

O Arduino Uno é uma placa microcontroladora popular que faz parte da plataforma
Arduino. Ele foi projetado para iniciantes e amadores que desejam começar com eletrônica e
programação. Aqui estão alguns recursos e informações importantes sobre o Arduino Uno: 1.
Microcontrolador: O Arduino Uno é baseado no microcontrolador ATmega328P, que é um
microcontrolador AVR de 8 bits. Possui 32 KB de memória flash para armazenamento de
programas e 2 KB de SRAM para armazenamento de dados.
A plataforma Arduino de hardware e software livres (código aberto), teve sua origem
dentro do Instituto de Design de Interação Ivrea(IDII) na cidade italiana de Ivrea. Foi concebida
para permitir que pessoas com poucos conhecimentos de hardware e software pudessem
aprender eletrônica e programação de uma maneira mais simples, com um bom custo-benefício,
facilitando o processo de prototipagem e aprendizado.

A plataforma é composta pelos seguintes elementos:

- Placas microcontroladoras: Conforme o site https://www.arduino.cc/en/hardware,


existem várias famílias de hardware disponíveis dependendo da aplicação. As mais
populares são a UNO R3, UNO R4, UNO R3 WIFI, MEGA 2560.
10

- Sensores: Os sensores são dispositivos que permitem ampliar a capacidade das


placas arduino. Existem muitos tipos de sensores, dos quais os mais conhecidos são
os capacitivos, indutivos, ultrassônicos, magnéticos,
fotoelétricos, laser, etc.
- IDEs: O IDE(Integrated Development Environment) ou Ambiente de
Desenvolvimento Integrado, permite o desenvolvimento do código que será
carregado no Arduino.

Conforme mencionado, existem vários tipos de hardwares que podem ser utilizados
dependendo da necessidade da aplicação. Apresentaremos como exemplo detalhes do Arduino
UNO para entendermos os conceitos básicos de funcionamento desse elemento.
A tabela 1 apresenta suas principais especificações:

Tabela 1: Especificações do Arduino UNO R3

Fonte: https://docs.arduino.cc/hardware/uno-rev3
11

Na figura 1 temos as descrições de pinagens e componentes:

Figura 1: Pinagens e componentes do Arduino UNO R3

Fonte: Disponível em https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf

A figura 2 mostra a vista frontal da placa.

Figura 2: Vista frontal da placa Arduino UNO R3

Fonte: Disponível em https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf


12

2.3.3. SENSORES

Sensores são dispositivos sensíveis a alguma forma de energia do ambiente, tal


dispositivo nem sempre possui as características necessárias para um sistema de controle e por
isso, seu sinal de saída deve ser manipulado. Eles podem ser dos tipos analógicos ou digitais.
Os analógicos podem assumir qualquer valor, da sua faixa de operação, no seu sinal de saída
ao longo do tempo, já os digitais só podem assumir dois valores no seu sinal de saída. Os digitais
são utilizados geralmente na detecção de passagem de objetos, determinação de distância ou
velocidade, etc. (WENDLING, 2010).
Outra classificação é em relação ao funcionamento dos sensores que podem ser:
mecânicos, que são aqueles que sensoriam movimentos, posições ou presença utilizando
recursos mecânicos; fotoelétricos, que trabalham com luz e são mais rápidos que os mecânicos,
além de não possuir peças móveis que quebram ou desgastam; térmicos, que atuam em função
da variação da temperatura do meio em que se encontram; capacitivos, que dependem da
distância da face ativa para operar gerando um campo eletrostático; indutivo, detectam, sem
contato direto, elementos metálicos que atravessam seu campo magnético; e os ultrassônicos,
que detecta os objetos a partir do comprimento de uma onda ultrassônica. (WENDLING, 2010).
Os sensores de presença indutivos estão disponíveis de vários tamanhos e formatos,
assim como os outros sensores. São baseados no princípio da variação da indutância de uma
bobina quando um elemento metálico ou condutivo passa nas suas proximidades. (FRANCHI;
CAMARGO, 2013).
As vantagens de se utilizar os sensores indutivos são que eles não são afetados por
poeira ou ambientes que contenham sujeira; não são prejudicados pela umidade; não possuem
partes móveis nem contatos mecânicos e não são dependentes da cor do objeto do alvo; por
outro lado, somente detectam objetos metálicos e podem ser afetados por fortes campos
eletromagnéticos. (FRANCHI; CAMARGO, 2013).

2.3.4 SENSOR ULTRASSÔNICO HC-SR04

Sensores ultrasônicos são aplicados como detectores de objetos e utilizados para


identificar obstáculos e corrigir trajetos de robôs. O sensor utilizado nesse projeto foi o HC-
SR04.
Por meio da emissão de sinais Ultrassônicos é possível especificar à distância do sensor
até um determinado obstáculo. O range de atuação é da ordem de 4 metros, com distância
13

mínima de medição de 2 cm e incluindo obstáculos dentre de um ângulo de abertura de 15 graus


(ELETROGATE, 2017).
O princípio de funcionamento do HC-SR04 consiste na emissão de sinais ultrassônicos
pelo sensor e na leitura do sinal de retorno (reflexo/eco) desse mesmo sinal. A distância entre
o sensor e o objeto que refletiu o sinal é calculada com base no tempo entre o envio e leitura de
retorno (ELETROGATE, 2017).

Figura 3 - Sensor ultrassônico HC-SR04

Fonte:ELETROGATE, 2017 https://blog.eletrogate.com/sensor-ultrassonico-hc-sr04-com-arduino/

De acordo com a imagem, o sensor possui quatro pinos: VCC, Trig, Echo, GND, cujas fun-
ções estão descritas na tabela 2:
Tabela 2 – Pinagem do sensor HC-SR04

Pinos Descrição Funcional


VCC Alimentação (5V)
TRIG Pulso de gatilho para o sensor (entrada)
ECHO Largura de pulso correspondente à distância medida (saída)
GND Referência (0V)

Fonte: ELETROGATE, 2017

2.3.5. LINGUAGEM DE PROGRAMAÇÃO

“Linguagem de programação é um conjunto padronizado de instruções que o sistema


computacional é capaz de reconhecer.” (FRANCHI; CAMARGO, 2013).
Nós, humanos, devemos traduzir nossos pensamentos em uma forma que os
computadores possam processar. que é linguagem de máquina. Os computadores de hoje
14

(ainda) não conseguem entender a linguagem natural que usamos todos os dias por isso
necessitamos de outra “linguagem” especial para dizer ao computador para realizar as tarefas
que desejamos. Essa "linguagem" é uma linguagem de programação e, na verdade, existem
muitas delas.
Essas linguagens de programação também são conhecidas como linguagens de
programação de alto nível. A linguagem de programação utilizada no Arduino é C++ (com
pequenas modificações).
Para converter um programa redigido em uma linguagem de alto nível em linguagem
de máquina, usamos o que chamamos de compilador. A ação de converter um programa para
linguagem de máquina é chamada de compilação. Para compilar um programa normalmente
você usa um ambiente de desenvolvimento integrado (IDE), que é um aplicativo de computador
com um compilador integrado, no qual você pode escrever seu programa e compilá-lo. No
Arduino, esse ambiente de desenvolvimento é o Arduino IDE.
O texto escrito em um programa de uma linguagem de programação de alto nível
também é chamado de código-fonte do programa.

2.3.6 ALGORITMO (PROGRAMA)

Um algoritmo, ou simplesmente um programa, é uma forma de dizer a um computador


o que fazer de uma forma que seja fácil de ser entendida por nós, humanos. Os algoritmos são
frequentemente escritos em linguagens de programação de alto nível. Isso funciona em quase
todos os computadores, incluindo Arduino, onde o algoritmo também é chamado de sketch.
Um programa consiste em uma série de comandos, geralmente escritos em um arquivo
de texto. Abaixo descrevemos os comandos do programa Blink que é o mais simples do
Arduino, que apenas liga e desliga o LED:

int led = 13;


void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
15

digitalWrite(led, LOW);
delay(1000);
}

2.3.7 VARIÁVEIS

Variáveis são recursos usados em programas de computador para armazenar dados.


Todo computador possui algum tipo de memória e variáveis representam áreas da memória
usadas para armazenar informações específicas. Esta informação pode ser, por exemplo, uma
sequência de números, caracteres ou texto. Para podermos usar variáveis em um programa
Arduino, precisamos fazer uma declaração de variável, por exemplo:

int led;

Neste exemplo, declaramos uma variável do tipo int chamada led.

2.3.8 TIPO DE DADOS

Como o nome sugere, o tipo de dados de uma variável significa o tipo de informação
que essa variável pode armazenar. Em muitas linguagens de programação, como C++, os tipos
de dados devem ser definidos ao declarar uma variável, como vimos acima na declaração de
variável liderada. Para módulos Arduino usando processadores ATmega, os tipos de dados mais
comuns são:

• boolean: valor verdadeiro (true) ou falso (false)


• char: um caractere
• byte: um byte, ou sequência de 8 bits
• int: número inteiro de 16 bits com sinal (-32768 a 32767)
• unsigned int: número inteiro de 16 bits sem sinal (0 a 65535)
• long: número inteiro de 16 bits com sinal (-2147483648 a 2147483647)
• unsigned long: número inteiro de 16 bits sem sinal (0 a 4294967295)
• float: número real de precisão simples (ponto flutuante)
• double: número real de precisão dupla (ponto flutuante)
• string: sequência de caracteres
16

• void: tipo vazio (não tem tipo)

Para que o hardware seja utilizado de forma adequada, é necessário o ambiente de


desenvolvimento Arduino(IDE). Basta acessar a página oficial da Arduino e fazer o download.
O IDE é compatível com os sistemas operacionais Windows 10 64bits, Linux 64bits X86-64 e
macOS Intel / Apple. A linguagem utilizada para a programação é o C++. Na figura 3 temos a
imagem do ambiente de desenvolvimento integrado.
Para a integração e gerenciamento dos dispositivos Arduino, existem muitas plataformas
disponíveis tais como Arduino IoT Cloud, o Microsoft Azure IoT, o Google Cloud IoT, o AWS
IoT, o ThingSpeak e muitos outros. Na figura 4 temos um exemplo do Arduino IOT.
Completando o entendimento, é fundamental conhecer os tipos de protocolos utilizados
e suportados em plataformas do tipo IOT. A tabela 2 apresenta os tipos de protocolos e suas
características mais relevantes. Entender tais características, limitações e aplicações é
fundamental para a definição da melhor solução aplicável a cada projeto.

Figura 4: Visão da tela do IDE Arduino

Fonte: Disponível em https://docs.arduino.cc/software/ide-v1/tutorials/Environment


17

Figura 5: Visão da tela do Arduino IOT Cloud

Fonte: Disponível em https://docs.arduino.cc

Tabela 2: Tabela comparativa entre tecnologias de comunicação

Fonte: SANTOS

2.4 APLICAÇÃO DAS DISCIPLINAS ESTUDADAS NO PROJETO INTEGRADOR

Para a implementação do projeto integrador foi necessário lançar mão de vários


conhecimentos adquiridos ao longo do curso e suas inúmeras disciplinas. Evidentemente, todas
as disciplinas se complementam e são importantes na formação do conhecimento do engenheiro
de computação. A lista abaixo apresenta as que contribuíram de maneira geral para a construção
da solução:

- PENSAMENTO COMPUTACIONAL – COM100: Base no desenvolvimento de algoritmos;

- ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I – COM110:


Desenvolvimento e implementação de algoritmos;
18

- ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES II – COM120:


Desenvolvimento e implementação de algoritmos complexos;

- PROJETOS E MÉTODOS PARA A PRODUÇÃO DO CONHECIMENTO – INT100:


Métodos de pesquisa e construção do conhecimento;

- INTRODUÇÃO A CONCEITOS DE COMPUTAÇÃO - COM140: Conceitos básicos sobre


hardware e software e a correlação entre esses elementos;

- FUNDAMENTOS DE INTERNET E WEB – COM130: Conceitos sobre WWW, construção


de aplicativos WEB e comunicação na internet e seus elementos;

- SISTEMAS EMBARCADOS – COM370: Informações sobre implementação e utilização de


sistemas embarcados. Inclui um módulo específico sobre IoT;

- PROTOCOLOS DE COMUNICAÇÃO IoT – COM380: Informações detalhadas sobre


protocolos e sistemas IoT;

- PLATAFORMA DE INGESTÃO E ANÁLISE DE DADOS – COM420: Apresenta


ferramentas de como interagir com os diversos dispositivos, obter dados e tratá-los. Apresenta
aplicações de implementação sobre IoT;

- PROJETO E ANÁLISE DE ALGORITMOS – COM540: Construção de projetos e


especificidades de cada tipo de tecnologia e apropriada aplicação delas.

Contudo, COM370, COM380 e COM420 trouxeram os principais pilares para o


desenvolvimento do projeto, uma vez que tem em seu conteúdo muita informação e referências
relacionadas ao IoT.

2.5 METODOLOGIA

2.4.1 OUVIR E INTERPRETAR O CONTEXTO

O Design Thinking é um método criativo de resolução de problemas que envolve


empatia, colaboração, experimentação e aprendizado contínuo. Ele foi criado para ajudar as
pessoas a enfrentarem desafios complexos e ambíguos. Nessa primeira etapa a de ouvir,
também conhecida como empatia, o objetivo é entender o problema a ser resolvido a partir da
perspectiva do usuário. Isso significa ouvir suas necessidades, desejos, expectativas e
19

frustrações. Segundo Brown (2008), "a empatia é a base do pensamento do design, pois é
preciso entender as pessoas para criar soluções relevantes para elas".
Com o objetivo de criar uma solução relevante para nosso público-alvo composto pelos
moradores de um condomínio foi essencial essa etapa do Design Thinkin para compreender as
reais necessidades do controle das vagas de estacionamento, pois se tornou evidente e alarmante
o problema de falta de vagas, questões envolvendo a segurança e busca por uma melhor
eficiência no funcionamento do estacionamento.

2.4.2 CRIAÇÃO E PROTOTIPAGEM

A segunda etapa do Design Thinking é a criação e prototipagem. Nessa fase, o objetivo


é gerar ideias criativas para solucionar o problema identificado na etapa anterior. Para gerar
ideias, é possível utilizar diversas técnicas, como brainstorming, mapas mentais e técnicas de
visualização. Em seguida, é importante selecionar as melhores ideias e transformá-las em
protótipos, que podem ser maquetes, desenhos, modelos 3D ou outros tipos de representações
visuais. O objetivo é criar um protótipo que seja suficientemente simples para ser construído
rapidamente, mas que também seja realista o suficiente para ser testado.
Assim, desenvolvemos nosso primeiro protótipo a partir de técnicas de brainstorming
por meio de reuniões em grupo, troca de mensagens e de ideias. A solução inicial apresentada
buscou contemplar todos os requisitos que foram levantados e apresentamos esse protótipo por
meio de um modelo on-line que simula o funcionamento de um circuito de Arduino.

2.4.3 IMPLEMENTAÇÃO E TESTES

Para implementar o protótipo, é preciso levar em conta diversos fatores, como recursos
financeiros, tempo, tecnologia e recursos humanos. É importante trabalhar em equipe para
garantir que todas as etapas sejam concluídas com eficiência e eficácia. Durante essa fase, é
possível que ocorram mudanças significativas no produto ou serviço em função dos resultados
dos testes com os usuários.
Nesta etapa do Design Thinking, a de testes, o objetivo é testar o produto ou serviço
com usuários reais e obter feedback sobre sua usabilidade, funcionalidade e relevância.
Todo o desenvolvimento inicial foi realizado na plataforma TinkerCad, que é um
simulador para circuitos digitais, tanto para a especificação dos sensores e atuadores necessários
quanto para a construção da lógica de programação. Para o desenvolvimento completo do
projeto ainda temos a limitação financeira envolvendo a aquisição dos equipamentos
20

apresentados para que assim possamos testar em campo o seu funcionamento adequado. Já
providenciamos a compra de um kit de robótica que iremos utilizar para a finalização do projeto,
optamos pelo conjunto BlackBoard UNO R3 disponível no site: https://www.robocore.net/kit-
arduino/arduino-master-kit
Entretanto, apresentamos aos participantes principais, os porteiros do referido
condomínio, o desenvolvimento inicial na plataforma e as ideias conceituais foram muito bem
aceitas, sendo a única melhoria sugerida a sua conclusão e implementação física do que está
funcionando digitalmente.

2.5 RESULTADOS PRELIMINARES: SOLUÇÃO INICIAL

Nossa solução inicial para o problema envolvendo a identificação e controle de vagas


de estacionamento foi construída levando em consideração fatores como simplicidade,
agilidade e escalabilidade, isto é, nossa aplicação deveria ser simples e com uma interface do
usuário amigável e objetiva, além de ser rápida e atualizada em tempo real e capaz de escalar
para processar grandes volumes de dados.
Dispositivos inteligentes usados em IoT são construídos a partir de Sistemas
Embarcados, que são sistemas reativos, uma vez que a aplicação executada depende do
ambiente, do que o sensor capta do ambiente externo. A partir disso, a informação captada é
processada por um software, que é o programa embutido no microcontrolador, permitindo
manipulações diversas.
Nesse cenário, após analisar os diversos caminhos possíveis para a construção dessa
aplicação, realizamos a escolha de trabalhar com uma placa Arduino, que é uma placa de
hardware para prototipagem eletrônica com fins educativos. Trata-se de uma tecnologia
amplamente utilizada no campo da robótica e internet das coisas, sendo composto por um
microcontrolador programável, configurado para operar de acordo com seus pinos de entrada e
saída. Mais informações podem ser acessadas no site oficial https://arduino.cc.
Os componentes que utilizamos foram:

• Arduino Uno (R3)


• Placa de ensaio, “Protoboard“ - circuito eletrônico onde os componentes
interagem entre si por meio de uma matriz de contato com terminais conectados
entre si eletricamente.
21

• Sensor ultrassônico de distância (HC-SR04) - Permite fazer leitura de distância


que varia de 2cm até 4m, com uma precisão de 3mm.
• Resistores – O Microprocessador Arduino funciona com 5V, já o Led funciona
com apenas 2V. Assim o resistor serve para diminuir a potência que chega até o
LED. Para isso basta utilizarmos um resistor de 150 Ohms.
• Fios jumper para conexão
• LED – Semicondutor que acende uma luz quando energizado.

O Sensor ultrassônico de distância (HC-SR04) acabou assumindo um papel


fundamental na construção desse projeto. Esse sensor possui 4 conectores: VCC (Positivo),
TRIG – Emissor, ECHO – Receptor e GND (Negativo). Trig e Echo são nossos pinos de
controle, uma vez que o Trig emite o sinal ultrassônico até encontrar um objeto, em seguida o
sinal retorna e é captado pelo Ecco. A leitura é feita de acordo com o tempo percorrido,
dependendo do tempo, é calculado a distância do objeto em relação ao sensor.
Os testes iniciais para o desenvolvimento desse projeto foram realizados na plataforma
TinkerCad. Podemos verificar nas imagens abaixo a organização de nosso protótipo:

Figura 6 – Vista do Circuito

Fonte: Elaborado pelos autores

Neste primeiro momento, ainda estamos validando o protótipo junto a comunidade em


relação a seu funcionamento básico, logo, optamos por ainda não implementar a conexão com
a internet por meio do módulo WiFi ESP8266 ESP-01, mas sim verificar o correto
funcionamento do sensor de distância por meio apenas das luzes de LED. Na figura abaixo
temos a visão esquemática para o projeto:
22

Figura 7 – Vista Esquemática

Fonte: Elaborado pelos autores

Em seguida apresentamos o código utilizado para o correto funcionamento do protótipo,


partindo do princípio de que, quando um automóvel adentrar uma vaga de estacionamento, a
luz do LED verde que indica vaga disponível se apaga e a luz do LED vermelho se acende,
indicando que a vaga está ocupada. Para que isso ocorra, definimos uma distância mínima de
um metro do sensor até o carro para que a vaga seja considerada ocupada.

Figura 8 – Código em Bloco

Fonte: Elaborado pelos autores


23

Figura 9 – Código em C++

Fonte: Elaborado pelos autores

Nos testes realizados o circuito funcionou perfeitamente, atendendo muito bem nossas
expectativas. Os próximos passos do desenvolvimento da aplicação envolvem enviar as
informações coletadas para um bando de dados como o Firebase Realtime Database, AWS
DynamoDB ou mesmo o Google Cloud Firestore. Por último, será necessário consumir esses
dados por meio de uma API e exibir tais informações em uma página web com um painel
atualizado em tempo real.
24

3. RESULTADOS

3.1 SOLUÇÃO FINAL


De acordo com as sugestões, críticas e definição mais precisa dos requisitos
apresentadas pela comunidade de funcionários do condomínio em relação ao protótipo inicial,
o grupo desenvolveu a solução final. A aplicação evoluiu bastante conseguimos observar um
salto enorme na qualidade e funcionalidade do nosso produto. A principal pendência que
havíamos deixado na solução inicial se referia a forma como as informações coletadas seriam
enviadas para um banco de dados para em seguida serem consumidas pela aplicação web.
Contudo, após certa pesquisa e inúmeros testes malsucedidos, começamos a entender que talvez
estivéssemos adicionando camadas de complexidade desnecessárias e que uma solução muito
mais simples seria mais que o suficiente para nosso impasse. Todos os códigos desenvolvidos
para a aplicação podem ser acessados no repositório a seguir:
https://github.com/marcelo5g/univesp_PI5_prototipo.
A principal modificação do ponto de vista de hardware foi a inclusão de uma placa de
rede para a transmissão dos dados utilizando a própria rede WI-FI interna do condomínio. Esse
detalhe da rede interna se mostrou um fator determinante para as decisões que tomamos sobre
o tratamento dos dados, retornaremos a esse ponto mais adiante. Para que isso fosse feito
utilizamos a placa Arduino Ethernet Shield W5100 capaz de fornecer acesso à rede utilizando
os protocolos TCP ou UDP.
Figura 10 – Placa Ethernet Shield W5100

Fonte:ELETROGATE, 2022 https://blog.eletrogate.com/ethernet-shield-w5100-com-arduino/


25

Por outro lado, do ponto de vista do software, algumas mudanças foram necessárias no

código inicial buscando adequá-lo para o acréscimo de toda a lógica envolvendo o envio dos

dados. Para isso foi necessário importar a biblioteca Ethernet Library e realizar a conexão com

o roteador na conexão local, da mesma rede em que se encontra o computador que irá acessar

o painel de monitoramento.

Na imagem abaixo apresentamos em detalhes a configuração após a importação da

biblioteca. Após definir o endereço MAC, indicamos o endereço de IP da rede local, e em

seguida definimos a porta em que o pequeno servidor será ligado. No nosso caso escolhemos a

porta livre :80. Poderíamos usar uma porta acessível por dispositivos externos à rede local do

condomínio usando por exemplo uma porta :8080 mas isso adicionaria camadas extras de

complexidade envolvendo segurança por isso optamos por manter a página acessível somente

para dispositivos conectados na mesma rede interna da administração do condomínio.

Figura 10 – Trecho de Código para Conexão do servidor

Fonte: Elaborado pelos autores

Após ligar o servidor, é necessário configurar seu comportamento, em que ele fica

constantemente verificando se existe alguma requisição do cliente e envia como resposta o

estado atual dos sensores.


26

Figura 11 – Trecho de Código para Conexão do servidor

Fonte: Elaborado pelos autores

De acordo com a imagem acima, após verificar se a conexão está sendo realizada com

sucesso, a página HTML é carregada com todas as formatações e estilizações desenvolvidas

em arquivo separado a mesma é recarregada a cada 2 segundos conforme a linha 15 da imagem

acima, garantindo que as requisições sempre irão receber as respostas mais atuais possíveis

automaticamente, sem a necessidade do usuário ter que atualizar a página manualmente para

ver se houve alguma alteração na disponibilidade de vagas, pois a página é atualizada

independentemente se houver ou não alguma alteração de estado.

No esquema apresentado na figura 6, podemos verificar montagem na placa de

prototipagem em que a luz verde permanece acesa enquanto a vaga estiver livre, alterando seu

estado no momento em que o sensor detectar um carro na vaga (definimos o limite mínimo de

1 metro do carro em relação ao final da vaga e local onde será posicionado o sensor) a luz verde

se apaga e a vermelha se acende informando que a vaga encontra-se ocupada. Essa lógica de

funcionamento é detalhada na figura 9, porém na solução final adicionamos a lógica de

programação responsável pelo envio dos dados e apresentação em uma página.


27

Figura 12 – Trecho de Código para lógica condicional

Fonte: Elaborado pelos autores

No momento em que a luz vermelha se acende, isto é, quando o estado da porta 12 é

alterado para “HIGH”, enviamos via rede wi-fi o sinal de “VAGA OCUPADA” para o servidor

local. Com essa informação, o arquivo HTML configurado modifica a imagem apresentada na

página, substituindo a imagem com um carro e o fundo verde por uma imagem de fundo

vermelho e 2 segundos depois a página web que é exibida ao usuário é atualizada

automaticamente, indicando que a vaga não se encontra mais disponível.

Esse cenário nos fornece um ambiente que é atualizado constantemente e qualquer

alteração de estado será exibida no painel de monitoramento utilizado pela equipe do

condomínio, sem a necessidade de atualização manual da página por parte da equipe. Com isso

conseguimos atingir a um dos requisitos, que era a capacidade de acompanhar o estado das

vagas “em tempo real”.

A partir dos feedbacks coletados junto à comunidade no momento da solução inicial,

ficou nítido que as especificações técnicas como o modelo dos equipamentos, linguagem de

programação, hospedagem, não importam muito para o usuário final, sendo sua principal

preocupação saber se o seu problema será ou não resolvido. Dessa forma, foi essencial pensar
28

na usabilidade intuitiva e clara, além de seguir uma estética que fosse ao mesmo tempo simples,

moderna e profissional capaz de fato a agregar valor à forma como o trabalho é desenvolvido

no condomínio.

Uma vez que o sensor não está de fato ligado e enviando as informações a página

permanece estática, sem mudanças de estado. Na imagem abaixo apresentamos exemplos das

alterações que podem ocorrer de acordo com a ocupação das vagas num cenário didático em

que teríamos apenas 3 vagas de visitantes. A página web do protótipo pode ser acessada no link:

https://marcelo5g.github.io/univesp_PI5_prototipo/

Figura 13 – Interface web indicando que todas as vagas estão livres

Fonte: Elaborado pelos autores

Neste primeiro exemplo representa uma situação em que todas as vagas se encontram

disponíveis. Abaixo temos a representação do cenário em que todas estão ocupadas:


29

Figura 13 – Interface web indicando que todas as vagas estão ocupadas

Fonte: Elaborado pelos autores

A partir dos feedbacks coletados junto à comunidade no momento da solução inicial,

ficou nítido que as especificações técnicas como o modelo dos equipamentos, linguagem de

programação, hospedagem, etc, não importam muito para o usuário final, sendo sua principal

preocupação saber se o seu problema será ou não resolvido.

Desenvolver um projeto, buscando seguir a estrutura do plano de ação, seguindo todas

as etapas do processo de desenvolvimento de software incluindo testes, refatoração e ampliação

do escopo com a inclusão de novas funcionalidades se mostrou uma tarefa árdua e muito mais

complexa do que havíamos previsto. Entretanto, acreditamos ter atingido um resultado bom,

não somente pelo produto final, mas também pelo processo que se demonstrou bastante

desafiador, contribuindo para o desenvolvimento e amadurecimento de todos os envolvidos,

permitindo o surgimento de novas ideias e a exploração dos recursos necessários para

materializar tais ideias.


30

Refletindo sobre a metodologia proposta, buscamos sempre utilizar os princípios do

design thinking como um elemento norteador para o desenvolvimento da nossa aplicação, mas

com alguns ajustes e adaptações ao longo do caminho. No que se refere a ouvir a comunidade,

o contato foi permanente, sempre avaliando as demandas, críticas e sugestões, e isso foi

fundamental para a evolução do nosso projeto, pois permitiu o ajuste rápido de funções através

de uma comunicação clara e eficiente.

No que se refere a parte de criação, talvez tenha sido o ponto de maior amadurecimento

do grupo em relação ao projeto integrador anterior, pois os materiais teóricos das aulas se

mostraram muitas vezes insuficientes para resolver algumas questões mais práticas e a

familiaridade que estamos desenvolvendo com a área e com as documentações das tecnologias

usadas vem sendo fundamental para concluir cada etapa do desenvolvimento.

Novamente a multidisciplinaridade e heterogeneidade do grupo se mostrou bastante

vantajosa do ponto de vista das contribuições que cada um é capaz de fornecer de acordo com

suas experiências individuais. Além disso, como temos integrantes em diferentes níveis de

desenvolvimento na carreira e conhecimentos distintos, a comunicação foi essencial para que

todos pudessem entender o que estava feito e contribuir da melhor forma possível.
31

4. CONSIDERAÇÕES FINAIS

Finalmente, a partir do tema norteador de desenvolver um sistema IoT com captura,

análise de processamento de dados, nos aprofundamos na implementação de um sistema de

Internet das Coisas (IoT), tanto a parte de hardware quanto de software, que permitiu a gestão

inteligente de vagas em estacionamento para visitantes em um condomínio, buscando

modernizar e facilitar a administração sobre as vagas disponíveis. Com isso, um problema

recorrente de eficiência no controle dessas vagas foi solucionado, contribuindo inclusive para

a segurança e a redução de conflitos entre visitantes, moradores e administradores.

Nesse sentido, acreditamos ter alcançado nossos objetivos iniciais que giravam em torno

de desenvolver um sistema IoT com captura, análise e processamento de dados que utilizasse

sensores de detecção de espaços livres em um estacionamento, utilizando uma interface para

visualização dos dados capturados. Além disso, pudemos também apresentar os benefícios da

automação, da comunicação entre sensores, microcontroladores e interface web para

visualização de dados.

Importante também destacar o contexto em que nosso trabalho foi desenvolvido,

partindo da dificuldade de verificação de disponibilidade de vagas no estacionamento para

visitantes que se localizava longe da portaria de serviços no condomínio obrigando o

profissional da portaria a se locomover até o local para identificar quantas e quais vagas estavam

livres para serem utilizadas. Neste cenário, acreditamos que nosso projeto conseguiu apresentar

alguns caminhos possíveis para solucionar os problemas que foram identificados no início,

como falta de vagas devido a erros de leitura visual ou o não monitoramento de carros que

desocupam vagas que constavam como não livres, aumento da insegurança com a exposição do

funcionário a riscos de acidentes, ineficiência do estacionamento e outros.

Sendo assim, o monitoramento remoto via sensores se mostrou uma solução simples e

que resolve praticamente todos os problemas apresentados, e os principais resultados à luz das

referências estudadas foram justamente no que se refere à melhoria da eficiência dos processos

internos da organização do condomínio, além da redução de erros. A automação é um processo


32

pelo qual tarefas e operações são realizadas automaticamente, sem a necessidade de intervenção

humana direta, garantindo a segurança dos funcionários.

Uma limitação do nosso trabalho acabou sendo em relação a infraestrutura física do

local de vagas de visitantes, uma área descoberta sujeita a intempéries, que num

desenvolvimento futuro e implementação de fato desta aplicação, poderia se tornar um

problema encontrar um local adequado para instalar nossos sensores e conectá-los a rede interna

de Wi-Fi do condomínio. Além disso, um problema que pode surgir é a questão da

escalabilidade, num cenário em que tenhamos muitas vagas de visitantes (e não apenas 3 como

nosso exemplo didático) isso nos obrigaria a repensar o layout de nosso painel de

monitoramento para mostrar todas as vagas disponíveis e ocupadas. Entretanto, o restante da

lógica permanece praticamente inalterada.

O Impacto na comunidade foi significativo ao apresentar as possibilidades que a IoT

apresenta para as dinâmicas atuais, podendo modernizar processos, com impactos em diversas

esferas como a economia de recursos humanos, aumento da segurança, aumento da eficiência

dos processos, além de um maior profissionalismo alinhado com tendências atuais, frutos de

avanços recentes da tecnologia.

O principal balanço que podemos fazer entre solução inicial e final: Foi essencial

durante nossa pesquisa sobre qual o método mais eficiente para enviar e receber os dados dos

sensores, uma mudança de rota, adotando soluções mais simples que não havíamos cogitado

num primeiro momento, resultando na escolha de utilizar a placa Arduino Ethernet Shield

W5100 para a transmissão direta dos dados para uma página web, sem necessidade de se

hospedar os dados em algum banco de dados externo.

De forma geral, podemos dizer que houve uma evolução significativa em todos os

integrantes do grupo ao longo do desenvolvimento desse projeto integrador, seja pesquisando

a documentação das tecnologias utilizadas, testando e verificando os resultados, seja revisitando

materiais de disciplinas passadas para compreender melhor alguns conceitos, o que nos permitiu

uma apropriação bastante clara da proposta do Projeto Integrador em seu sentido mais amplo,

isto é, a integração envolvendo várias áreas de estudo e habilidades técnicas e comportamentais.


33

A satisfação em entregar a aplicação é imensa, porém sabemos que ela permanece aberta

e incompleta e ainda pode melhorar bastante. Temos em mãos um protótipo que cresceu

bastante em algumas quinzenas e que tem bastante potencial para crescer ainda mais.
34

5. REFERÊNCIAS

ARDUINO. Ambiente de Desenvolvimento Integrado (IDE) para Arduino. Disponível em:


https://docs.arduino.cc/software/ide-v1/tutorials/Environment. Acesso em: 02 out. 2023.

ARDUINO. Datasheet do Arduino Uno R3. Disponível em:


https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf. Acesso em: 02 out. 2023.

ARDUINO. Hardware. Disponível em: https://www.arduino.cc/en/hardware. Acesso em: 02


out. 2023.

ARDUINO. Software. Disponível em: https://www.arduino.cc/en/software. Acesso em: 02


out. 2023.

BROWN, Tim. Design thinking. Harvard Business Review, v. 86, n. 6, p. 85-92, jun.
2008
ELETROGATE, 2017. Sensor Ultrassônico HC-SR04 com Arduino. Disponível em:
https://blog.eletrogate.com/sensor-ultrassonico-hc-sr04-com-arduino/ Acesso em: 04 out 2023

FRANCHI, Claiton Moro; CAMARGO, Valter Luís Arlindo. Controladores lógicos


programáveis: Sistemas Discretos. 2. Ed. São Paulo: Érica, 2013.

MARTINE, G.; OJIMA, R.; FIORAVANTE, E. F. “Transporte individual, dinâmica


demográfica e meio ambiente”. In: MARTINE, R. G. et al População e sustentabilidade na era
das mudanças ambientais globais. Campinas: ABEP, 2012, p. 175-185.

OJIMA, R.; MONTEIRO, F. F.; NASCIMENTO, T. C. L. Deslocamentos pendulares,


reestruturação produtiva e o consumo do espaço na urbanização brasileira: explorando o tempo
de deslocamento casa-trabalho. In: SIMPÓSIO NACIONAL DE GEOGRAFIA URBANA, 13,
Rio de Janeiro, nov. 2013.

SANTOS, Bruno P. et al. Internet das Coisas: da Teoria à Prática. Minas Gerais.

SILVEIRA, Paulo Rogério da; SANTOS, Winderson Eugênio dos. A tecnologia da Informação.
In: ROGÉRIO DA SILVEIRA, Paulo; EUGENIO DOS SANTOS, Winderson. Automação e
Controle Discreto. 1999. ed. [S.l.]: Érica, 1998. cap. 1, p. 21-24.
35

WENDLING, Marcelo. Sensores. Versão 2.0. UNESP – Universidade Estadual Paulista,


2010. Disponível em: < www.feg.unesp.br/Home/PaginasPessoais/ProfMarceloWendling/4---
sensores-v2.0.pdf > Acesso em: 04 out. 2023.

Você também pode gostar