Você está na página 1de 11

UNIVERSIDADE FEDERAL DO AMAPÁ

DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS

DESENVOLVIMENTO DE UM PROTÓTIPO PARA CONTROLE DE FILAS


UTILIZANDO A PLATAFORMA ARDUINO

José Evaldo De Carvalho Gonçalves


José Vinicius Ximenes Nascimento
Marcio Rodrigues Pimentel
Marcio Sieben Lobo

RESUMO
As filas são estruturas organizacionais utilizadas no dia-a-dia para tornar mais eficientes
operações constantes, no contexto organizacional o tempo de espera em uma fila de
atendimento, pode definir a qualidade do estabelecimento, dessa forma, automatizar e otimizá-
la é importante para qualquer organização que lide com esta problemática. Através da
plataforma Arduino podemos simular a lógica das filas e desenvolver uma solução prática para
os problemas de organização que uma fila pode apresentar. Este trabalho buscou desenvolver
um modelo protótipo funcional de um gerenciador de filas utilizando a plataforma Arduino
UNO. O início do projeto se deu com o estudo da linguagem de programação C que seria
responsável pelo controle, após o desenvolvimento do código realizou-se a simulação e
posteriormente a montagem do protótipo, como resultados obtivemos um protótipo funcional
que pode ser implementado em qualquer estabelecimento que necessite de uma solução eficaz
e de baixo custo para o controle de filas.

Palavras-chave: fila; arduino; organização; IoT; automação.

ABSTRACT

Queues are organizational structures used in daily life to make constant operations more
efficient. In the organizational context, the waiting time in a service queue can define the quality
of the establishment; therefore, automating and optimizing it is important for any organization
dealing with this issue. Through the Arduino platform, we can simulate queue logic and develop
a practical solution for the organizational challenges that a queue may present. This project
aimed to create a functional prototype model of a queue manager using the Arduino UNO
platform. The project began with the study of the C programming language, which would be
responsible for control. After developing the code, a simulation was conducted, followed by the
assembly of the prototype. As a result, we achieved a functional prototype that can be
implemented in any establishment requiring an effective and cost-effective solution for queue
management.

Keywords: queues; arduino; organization; IoT; automation.

INTRODUÇÃO

O conceito de Internet das Coisas, ou IoT, apesar de não muito recente ainda é muito aplicado
na atualidade, a interligação de equipamentos que utilizamos no dia a dia com a internet, e a
automação de tarefas por meio da tecnologia são coisas cada vez mais presentes no nosso
cotidiano, com isso em mente, podemos pensar em situações usuais que podem ser facilmente
automatizadas, uma delas é a fila.

A estrutura de dados Fila é muito utilizada na vida cotidiana, em diversos locais que lidam com
atendimento ao público como por exemplo, bancos, agências lotéricas, postos de saúde e
unidades de atendimento ao cidadão. Estes são organizados por meio de uma fila onde o
primeiro a chegar é o primeiro a ser atendido. Além dos locais do dia-a-dia, as filas também
estão presentes nos ambientes de produção, por exemplo em uma linha de montagem de
automóveis em que cada etapa do processo é feita de forma sequencial e o primeiro veículo que
começou a ser produzido será o primeiro a ficar pronto.

O tempo de espera em uma fila de atendimento, pode definir sua qualidade, dessa forma,
automatizar e otimizá-la é importante para qualquer organização que lide com esta
problemática, desta forma o cliente terá uma melhor visão sobre o estabelecimento, também
fazendo que haja cada vez um maior fluxo de pessoas neste local devido a eficiência no
atendimento.

Neste projeto, optamos por utilizar a placa Arduino como ferramenta de aplicação do IoT, pois
além de possuir baixo custo de implementação, tem sua programação na linguagem C, o que o
torna mais acessível para o manuseio e execução.
OBJETIVOS

Geral

Desenvolver um modelo protótipo funcional de gerenciador/organizador de filas utilizando a


plataforma Arduino UNO.

Específicos

• Realizar a montagem do protótipo utilizando a placa Arduino UNO além de outros


componentes eletrônicos.
• Realizar a programação que ditará o funcionamento do protótipo utilizando a linguagem
C como base.
• Analisar a viabilidade da implementação do protótipo em um contexto real.

METODOLOGIA

O presente trabalho originou-se com o estudo da linguagem de programação C++ motivado


pela disciplina Programação Estruturada de Dados, em especial, no que se refere à alocação
dinâmica de memória, pois, o Arduino se trata de um microcontrolador, ou seja, não possui
memória suficiente disponível, em razão disso, a alocação dinâmica torna-se fundamental para
sua utilização.

Após a revisão da literatura a respeito da linguagem e o estudo da lógica de programação que


regeria o protótipo realizou-se a programação do código, com algumas pequenas alterações pois
a IDE utilizada pelo Arduino se baseia na linguagem C, que é bem semelhante a linguagem
C++.

Feito os testes em simuladores, realizou-se a montagem do protótipo físico. foram utilizados na


montagem: uma placa Arduino UNO, um display LCD, resistores de 1kohm, 330 ohms, botões,
um potenciômetro e jumpers de conexão. Posteriormente foram realizados testes para verificar
o devido funcionamento.

REFERENCIAL TEÓRICO

Filas

Hiller e Lieberman (2013) descrevem filas como como uma sequência de elementos em ordem
que desejam atendimento ou algum processo e precisam esperar até que este atendimento
ocorra, apesar de ser um conceito de fácil compreensão ele está presente no dia a dia de milhares
de pessoas, empresas e processos pelo mundo. De acordo com Prado (2002) existem cinco
pontos básicos que caracterizam uma fila, o tamanho da população, o processo de chegada, o
processo de atendimento, o número de servidores e a disciplina da fila, que serão definidos a
seguir:

• Tamanho da população: se trata basicamente da quantidade de elementos que estão


presentes na fila.
• Processo de chegada: a média de elementos que chegam na fila em um determinado
intervalo de tempo.
• Processo de atendimento: define a média de atendimento dos elementos da fila em um
determinado intervalo de tempo.
• Número de servidores: se refere ao número de atendentes que efetuam o atendimento
dos elementos da fila, essa característica tem direta influencia com o processo de
atendimento à medida que quanto maior o número de servidores, mais elementos serão
atendidos.
• Disciplina da fila: se trata da regra para atendimento na fila, a mais comum é
denominada FIFO (first in first out), ou seja, o primeiro a entrar na fila é o primeiro a
sair, também podemos ter a LIFO (last in first out) onde o último a chegar é o primeiro
a sair, além dessas também temos ordem de prioridade, serviço randômico, entre outros.

Linguagem C

Tendo como base as linguagens BCPL e B, o C foi desenvolvido por Dennis Ritchie em meados
de 1972 inicialmente como uma linguagem de base para o desenvolvimento do sistema
operacional UNIX, porém, o tempo mostrou que o C poderia ser usado de maneira muito
versátil em qualquer tipo de sistema operacional existente, sua rápida difusão em variados
hardwares levaram a criação de uma versão padrão do C, para fornecer a linguagem uma
definição inequívoca e independente do equipamento em 1989 foi aprovado o padrão
ANSI/ISSO 9899:1990 criado pelo comitê técnico X3J11, assim definindo padrões para o C
poder ser usado com menos problemas em qualquer tipo de plataforma (DEITEL; DEITEL,
2010).

Kernighan e Ritchie (1988) destacam que o C é uma linguagem de programação de uso geral
muito útil para escrever compiladores, sistemas operacionais e programas importantes em
diversos domínios diferentes, é uma linguagem que não é considerada de nível muito alto e não
é especializada em nenhuma área especifica de aplicação, porém, o fato desta linguagem ser
independente de qualquer arquitetura de máquina, faz com que ela possa ser usada para criar
programas para uma grande variedade de hardwares, com isso o C provou ser uma linguagem
muito eficaz e útil para uma infinidade de aplicações na programação

Arduino

McRoberts (2011) classifica o Arduino como um microcomputador programável composto por


entradas e saídas entre o dispositivo e os componentes eletrônicos externos, além disso também
é classificado como plataforma de computação embarcada, isto é, um sistema capaz de interagir
com o ambiente por meio de seu hardware e software.

Banzi e Shiloh (2014) apresentam o Arduino como uma união de duas partes: a placa Arduino
que é a peça com que se trabalha e se constroem os projetos, e o Arduino IDE (Integrated
Development Environment) que se trata do software onde é realizada toda a programação que
será carregada na placa e dirá o que ela deve fazer. A principal vantagem de se utilizar o Arduino
é a facilidade de se ter em uma pequena placa um microcontrolador integrado em um pequeno
circuito que é equivalente a um microcomputador composto por 14 entradas/saídas digitais, 6
entradas analógicas, 6 saídas analógicas, podendo ser alimentada através do conector USB do
computador ou através de uma fonte de 9V.

RESULTADOS

Finalizados os estudos teóricos sobre Programação Estruturada de Dados, a elaboração e análise


de uma simulação, na plataforma Autodesk Tinkercad, do circuito com a placa Arduino.

Desenvolveu-se a programação de um sistema de atendimento de filas com Arduino, para isso,


declaramos as constantes e variáveis de cada componente eletrônico que usamos no circuito.

Imagem 1: Definição de pinos do Arduino.


Logo após, criamos algumas estruturas que alocariam a fila e as funções que as manipulariam,
tais como: função criar, função inserir, função remover;

Imagem 2: Estruturas de Criação. Imagem 3: Estruturas de Operação.

E em seguida adicionamos ao laço “Void Setup” uma função que testa a tela LCD 16x2 e junto
a ela definimos o tipo de operação que as saídas digitais atribuídas aos botões iram realizar,
neste caso INPUT.

Imagem 4: Teste do LCD.

Antes de iniciarmos o laço “Void Loop” que realizará as operações de criação e atendimento
das senhas, inserimos uma função que irá imprimir as senhas na tela LCD.

Imagem 5: Função de Impressão.


Já no laço “Void Loop”, começamos definindo uma variável de leitura do estado dos botões
(buttonState) para criarmos as condições de funcionamento da fila através de operadores “IF”,
onde as condições acontecerão se os botões estiverem pressionados, podendo realizar uma das
três ações a seguir: 1º gerar senha, aloca-la na fila e imprimir na tela; 2º gerar senha prioritária,
aloca-la a frente das demais e imprimir na tela, 3º remover primeira senha da fila, imprimi-la
na tela e imprimir caixa de atendimento.

Imagem 6: Leitura do estado do Botão.

Sendo os botões:

• Botão 1, realizará a 2° ação.


• Botão 2, realizará a 1° ação.
• Botão 3, realizará a 3° ação para o caixa 1.
• Botão 4, realizará a 3° ação para o caixa 2.
• Botão 5, realizará a 3° ação para o caixa 3.

Imagem 7: Condição Botão 1.


Imagem 8: Condição Botão 2.

Imagem 9: Condição Botão 3.


Imagem 10: Condição Botão 4.

Imagem 11: Condição Botão 5.


Assim conseguimos construir um sistema de geração e atendimento de filas com a placa
Arduino, que pode ser aplicado em vários contextos que existem filas de atendimento.

Imagem 12: Protótipo finalizado.

CONCLUSÃO

Com a realização do protótipo podemos compreender mais a lógica que rege as filas e como
um conceito que aparenta ser tão intuitivo pode resolver problemas de logística complexos,
como: filas de atendimento e filas de espera, nos mais variados ambientes por exemplo: as
linhas de produção anteriormente citadas, filas de agencia lotérica e listas de compras de
mercado. E a análise dos resultados obtidos valida a competência do modelo de filas para o uso
em atendimentos, deixando essa prática com um fluxo mais rápido e de simples compreensão.
REFERÊNCIAS

PRADO, Darci. Teoria das filas e da simulação. 2. Ed. Belo Horizonte: Editora de
Gerenciamento Gerencial, 2004. 126p. (Série pesquisa operacional, v. 2). ISBN 85-86948-12-
8.

KERNIGHAN, Brian; RITCHIE, Dennis. The C programming language. 2. Ed. Nova


Jersey: Prentice Hall, 1988. ISBN 0-13-110370-9.

BANZI, Massimo; SHILOH, Michael. Make: Getting started with Arduino. 3. Ed.
California: Maker Media, 2014. ISBN 978-1-449-363338.

MCROBERTS, Michael. Arduino Básico. Tradução: Rafael Zanolli. São Paulo: Novatec
Editora, 2011. ISBN 978- 85-7522-274-4.

DEITEL, Harvey M.; DEITEL, Paul J. C: How to program. 6. Ed. Nova Jersey: Pearson
Education, 2010. ISBN 0-13-612356-2/978-0-13-612356-9.

HILLIER, Frederick S.; LIEBERMAN, Gerald J. Introdução à pesquisa operacional. 9. Ed.


Porto Alegre: AMGH Editora, 2013. ISBN 0073376299/9780073376299.

Você também pode gostar