O projeto iFinger, referente ao quarto período do curso de...

27
1 RESUMO O projeto iFinger, referente ao quarto período do curso de Engenharia de Computação da Pontifícia Universidade Católica do Paraná, propõe o desenvolvimento de um display braile com o propósito de acoplamento a elevadores, para que o mesmo exiba o andar correspondente de forma dinâmica. Palavras-chave: braile, display braile, elevador, display em elevadores.

Transcript of O projeto iFinger, referente ao quarto período do curso de...

Page 1: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

1

RESUMO

O projeto iFinger, referente ao quarto período do curso de Engenharia de

Computação da Pontifícia Universidade Católica do Paraná, propõe o

desenvolvimento de um display braile com o propósito de acoplamento a

elevadores, para que o mesmo exiba o andar correspondente de forma

dinâmica.

Palavras-chave: braile, display braile, elevador, display em elevadores.

Page 2: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

2

SUMÁRIO

1 INTRODUÇÃO ................................................................................................ 3

2 OBJETIVOS .................................................................................................... 4

2.1 OBJETIVO GERAL ................................................................................... 4

2.2 OBJETIVOS ESPECÍFICOS ..................................................................... 4

3 MATERIAIS UTILIZADOS .............................................................................. 5

4 DESCRIÇÃO GERAL ..................................................................................... 6

4.1 HISTÓRIA DO PROJETO ......................................................................... 6

4.1.1 Eletrônica ........................................................................................... 7

4.1.2 Eletro-Mecânica ................................................................................. 8

4.1.3 Software ........................................................................................... 10

5 CIRCUITOS ELÉTRICOS ............................................................................ 11

5.1 Comunicção I²C ...................................................................................... 11

5.2 Display de 7 segmentos .......................................................................... 13

5.3 Placa do Arduino .................................................................................... 14

5.4 Alimentação ........................................................................................... 15

5.5 Controle do display braile eletromagnético ............................................ 15

6 CÓDIGO FONTE .......................................................................................... 16

7 PROBLEMAS ENCONTRADOS ................................................................. 23

8 CONCLUSÃO .............................................................................................. 24

9 REFERÊNCIAS ............................................................................................ 25

10GLOSSÁRIO ............................................................................................... 26

Page 3: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

3

1 INTRODUÇÃO

O projeto iFinger tem como proposta a adequação da sinalização dos

elevadores atuais adicionando um display braile que terá como função única a

exibição do andar em que o elevador se encontrar.

O diferencial da proposta do grupo é a inovação, pois até o momento

não foi possível verificar nada parecido no mercado além da possibilidade de

uma maior inclusão social dos deficientes visuais.

Page 4: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

4

2 OBJETIVOS

Para uma boa compreensão do projeto é necessário conhecer suas

principais características e todos os requisitos que o mesmo deverá atender.

2.1 OBJETIVO GERAL

Desenvolver um projeto para os programas de aprendizagem das

disciplinas de Física IV, Resolução de Problemas em Engenharia II e Sistemas

Digitais II que consista em um display braile capaz de informar ao usuário o

andar em que o elevador se encontra.

2.2 OBJETIVOS ESPECÍFICOS

Abaixo serão listados os objetivos que regeram o desenvolvimento do

projeto:

Desenvolver um modelo de atuador eletromagnético;

Agrupar quatro atuadores eletromagnéticos para formar o display;

Desenvolver tabela de conversão numérica para braile;

Confeccionar circuito e software de controle do display;

Criar um painel com oito botões, oito LEDs e adicionar o display ao

conjunto para simular um painel interno de elevadores.

Desenvolver circuito de leitura dos botões e escrita nos respectivos

LEDs;

Implementar algoritmo para simular iteração com um elevador.

Page 5: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

5

3 MATERIAIS UTILIZADOS

1 Arduino Nano;

4 relés de 12V;

13 transistores BC548;

1 LM7805;

2 capacitores cerâmicos de 100nF;

1 capacitor eletrolíticos de 100uF;

1 capacitor eletrolíticos de 470uF;

4 diodos 1N4007;

4 resistores de 1kΩ;

9 resistores de 10kΩ;

8 resistores de 4.7kΩ;

10 resistores de 220Ω;

7 resistores SMD 0603 330Ω;

8 LEDs de 3mm, azuis de brilho difuso;

2 LEDs de 3mm, azuis de alto brilho;

1 Conector Jack;

2 Circuitos integrados PCF8574;

1 Circuito integrado 74HC164

2 Placas universal 5x7cm;

Barra de pinos reta;

Barra de pinos 90º;

Placa virgem de composite;

8 chaves push button;

1 placa de acrílico de 6mm;

2 placas de madeira de 10mm;

1 Display 7 segmentos;

Papel Contato;

Adesivos encomendados;

Fonte linear de 12V;

Fonte chaveada de 5V;

1 Buzzer contínuo de 3V;

6 Parafusos;

8 pinos de plástico;

Page 6: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

6

4 DESCRIÇÃO GERAL

4.1 HISTÓRIA DO PROJETO

Inicialmente a ideia do projeto foi de criar um display braile sem

aplicação imediata, algo comparável a um display de 7 segmentos, mas para

fins educativos seria programado a receber instruções via documentos de texto

ou algo similar. Seguindo a sugestão do professor Afonso o grupo decidiu

desenvolver este protótipo e aplica-lo a elevadores, onde serviria de

sinalização para deficientes visuais que então poderiam saber o andar em que

o elevador se encontraria.

Após revisar e estipular os conceitos do projeto o mesmo foi oficializado

em forma de plano de trabalho e entregue ao professor da disciplina de

Resolução de Problemas em Engenharia II como proposta de trabalho para o

semestre.

Page 7: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

7

4.1.1 ELETRÔNICA

Para desenvolver a parte eletrônica do projeto foi inicialmente analisado

o que seria necessário controlar no projeto, para isto foi criado um diagrama de

blocos, como mostrado na figura 1, e verificado quantos pinos de controle

seriam necessários. Em um primeiro momento, foi verificado que seriam

necessários utilizar 29 pinos, e o Arduino Nano possui apenas 14 portas

digitais e 8 analógicas, portanto foi discutidas as opções disponíveis para

reduzir o numero de pinos utilizados.

Figura 1. Diagrama de blocos

O primeiro lugar em que poderíamos reduzir o numero de portas

utilizadas seria no painel do elevador, este iria possuir oito botões e oito leds, o

que representava a maior parte do numero de pinos da contagem inicial. As

soluções analisadas foram a utilização de um registrador paralel-in serial-out

para a leitura dos botões e um serial-in paralel-out para a escrita nos leds, esta

solução iria reduzir para 5 o numero de pinos utilizados. A outra solução

analisada foi a utilização de circuitos integrados de comunicação via protocolo

I²C, esta solução utilizaria apenas 3 portas do microcontrolador e era muito

mais simples de ser implementada que a primeira. Foi escolhido, portanto a

utilização da comunicação I²C, devido a facilidade de implementação e também

Page 8: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

8

por ser mais tolerante a falhas, solução esta já representada do diagrama de

blocos da figura 1.

Apenas com a solução para redução dos pinos dos botões e leds já seria

suficiente para o projeto. Seria interessante, porém, possuir portas sobrando no

Arduino caso fosse necessário implementar algo a mais no projeto, portanto foi

utilizado um registrador serial-in paralel-out para utilizar o display de sete

segmentos, reduzindo o numero de portas utilizadas por este circuito de quatro

para apenas duas.

A alimentação do projeto é realizada a partir de uma fonte linear de 12V,

a tensão de 12V é utilizada para alimentar o display braile eletromagnético.

Para o resto do projeto é utilizada um tensão de 5V, esta é obtida a partir da

regulação da tensão de 12V para 5V por meio do regulador de tensão linear

LM7805.

4.1.2 ELETRO-MECÂNICA

Este projeto possui poucas partes mecânicas, porém estas são o foco do

projeto, que são os dois modelos de display braile criados durante o projeto. O

primeiro utiliza quatro servos motores fixados embaixo de uma placa de acrílico

com quatro furos no centro, como pode ser observado na figura 2. Os pinos do

display estão fixados a uma cruzeta do servo motor, e estes podem ser

levantados ou abaixados variando o ângulo do servo motor, sendo possível

criar o caractere braile referente ao andar em que o elevador se encontra.

Page 9: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

9

Figura 2. Display braile com servos motores

O outro display braile construído é constituído da estrutura interna de

quatro reles. Foi fixado um “braço” sobre a parte móvel do rele de forma que o

seu movimento seja ampliado e sobre a sua extremidade está colado o pino.

Isto foi feito para todos os quatro relés e estes estão fixados sobre uma placa

de protótipo, com as conexões elétricas feitas e também foi colocado 4 diodos

de proteção. Esta estrutura esta fechada por uma caixa de mdf, como pode ser

visto da figura 3.

Figura 3. Display braile eletromagnético

Page 10: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

10

4.1.3 SOFTWARE

A primeira etapa tomada para o desenvolvimento do software foi criar

uma tabela de conversão de decimal para braile, armazenando em um vetor

binários que correspondentes às portas do Arduino que seriam ativadas. O

índice do vetor corresponde ao decimal e o binário ao caractere braile.

O funcionamento completo do software consiste em aguardar um

comando do usuário relativo ao andar que o mesmo deseja acessar, em

seguida o mesmo entra num ciclo de subida ou descida. Se estiver em um ciclo

de subida ele verifica apenas andares acima do atual para realizar ou não

paradas, se estiver em um ciclo de descida faz o mesmo porém com andares

abaixo do atual.

Para a apresentação do projeto também foi implementada uma função

que de a cada 15 segundos ociosos selecionava um andar aleatório.

Page 11: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

11

5 CIRCUITOS ELÉTRICOS

Nesta seção serão apresentados os esquemas, boards e fotos de todos

os circuitos utilizados no projeto.

5.1 Comunicação I²C

Figura 4. Circuito de saída de dados

Figura 5. Circuito de entrada de dados

Page 12: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

12

Figura 6. Placa de comunicação I²C, vista superior

Figura 7. Placa de comunicação I²C, vista inferior

Page 13: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

13

5.2 Display de 7 segmentos

Figura 8. Circuito de escrita no display de sete segmentos

Figura 9. Placa do circuito de escrita no display de sete segmentos

Page 14: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

14

5.3 Placa do Arduino

Figura 10. Circuito de comunicação com o arduino

Figura 11. Circuito de comunicação com o arduino a esquerda

Page 15: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

15

5.4 Alimentação

Figura 12. Circuito de alimentação

5.5 Controle do display braile eletromagnético

Figura 11. Circuito de Controle do display braile eletromagnético

Page 16: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

16

6 CÓDIGO FONTE

#include <I2C.h>

#include <Servo.h>

#define LEITURA 32

#define ESCRITA 33

#define servo1 3

#define servo2 5

#define servo3 6

#define servo4 9

#define clockS7 7

#define dataOUT 8

#define LED 10

Servo A, B, C, D;

volatile int leitura=0;

volatile int dado=255, aux = 0;

long int time=millis(), tempo;

int lastLeitura=0;

int rele[4] = {13,4,12,11};

int andar = 0;

boolean subindo = true;

int conv7[10] = {B1111110, B0110000, B1101101, B1111001, B0110011,

B1011011, B1011111, B1110000, B1111111, B1111011};

int lastFloor=0;

Page 17: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

17

int cont=0;

byte tabBraille[10]={0xE, 0x1,0x3,0x5,0xD,0x9,0x7,0xF,0xB,0x6};

void setup(){

A.attach(servo1);

B.attach(servo2);

C.attach(servo3);

D.attach(servo4);

A.write(1);

B.write(181);

C.write(183);

D.write(1);

I2c.begin();

Serial.begin(9600);

pinMode(clockS7, OUTPUT);

pinMode(dataOUT, OUTPUT);

pinMode(LED, OUTPUT);

pinMode(A0, OUTPUT);

digitalWrite(clockS7, LOW);

digitalWrite(LED, HIGH);

display7(andar);

printLED();

Page 18: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

18

attachInterrupt(0, readFloor, FALLING);

}

int newFloor;

void loop(){

int j;

if(subindo){

for(j=andar;j<8 && ((dado&0x01<<j)!=(0x01<<j));j++);

if(j==8)

subindo = false;

else{

for(lastFloor; lastFloor<andar*(255/7); lastFloor++){

Serial.print(char(lastFloor));

delay(50);

}

Braille(andar);

display7(andar);

if(andar!=j)

andar++;

else{

dado = dado&(~(0x01<<j));

printLED();

display7(andar);

delay(250);

Som();

delay(2000);

Page 19: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

19

Braille(andar);

}

}

}

if(!subindo){

for(j=andar;j>-1 && ((dado&0x01<<j)!=(0x01<<j));j--);

if(j==-1)

subindo = true;

else{

for(lastFloor; lastFloor>andar*(255/7); lastFloor--){

Serial.print(char(lastFloor));

delay(50);

}

Braille(andar);

display7(andar);

if(andar!=j)

andar--;

else{

dado = dado&(~(0x01<<j));

printLED();

display7(andar);

delay(500);

Som();

delay(2000);

Braille(andar);

}

Page 20: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

20

}

if(dado==0 && (millis()-time)>=15000){

do{

newFloor=random(8);

}while(newFloor==andar);

dado = 1<<newFloor;

printLED();

}

}

}

void Som(){

delay(250);

tone(A0,660,100);

delay(175);

tone(A0,660,100);

delay(250);

}

void readFloor(){

I2c.read(LEITURA,0,0x00);

leitura = I2c.receive();

tone(A0,660,100);

delay(125);

if(leitura & dado)

dado = dado & ~leitura;

else

dado = dado | leitura;

Page 21: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

21

printLED();

}

void printLED(){

aux = dado;

aux =

(aux&0xF0)|((aux&0x08)>>3)|((aux&0x04)>>1)|((aux&0x02)<<1)|((aux&0x01)<<

3);

I2c.write(ESCRITA, 0x00, aux);

}

void display7(int numero){

numero = conv7[numero%10];

digitalWrite(clockS7, LOW);

for(int y=0 ; y<7 ; y++){

digitalWrite(dataOUT, numero&1);

digitalWrite(clockS7, HIGH);

digitalWrite(clockS7, LOW);

numero = numero>>1;

}

}

void Braille(int num){

num = tabBraille[num];

if(num & B00000001){

A.write(11);

digitalWrite(rele[0],HIGH);

Page 22: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

22

}

else{

A.write(1);

digitalWrite(rele[0],LOW);

}

if(num & B00000010){

B.write(172);

digitalWrite(rele[1],HIGH);

}

else{

B.write(181);

digitalWrite(rele[1],LOW);

}

if(num & B00000100){

C.write(170);

digitalWrite(rele[2],HIGH);

}

else{

C.write(180);

digitalWrite(rele[2],LOW);

}

if(num & B00001000){

D.write(12);

digitalWrite(rele[3],HIGH);

Page 23: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

23

}

else{

D.write(1);

digitalWrite(rele[3],LOW);

}

time = millis();

}

7 PROBLEMAS ENCONTRADOS

PROBLEMAS APRESENTADOS SOLUÇÕES ENCONTRADAS

O primeiro e maior problema encontrado foi a construção do atuador magnético, diversos modelos foram testes e ao fim um bom modelo foi construído, porém sua complexidade de confecção atribuía ao mesmo um tamanho exagerado e imprecisões inesperadas.

Utilizar o sistema mecânico de relés apenas adicionando uma extensão plástica para alcançar um movimento mais amplo.

Insuficiência de portas do Arduino para executar todas as funções necessárias.

Utilizar o circuito integrado PCF8574, para realizar, através do protocolo I²C, a leitura dos botões correspondentes aos andares e respectiva escrita nos LEDs correspondentes, economizando 16 portas e um registrador para fazer a comunicação entre o Arduino e o display de 7 segmentos.

Page 24: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

24

8 CONCLUSÃO

Aplicando os conhecimentos obtidos até o presente momento foi

possível alcançar os objetivos traçados para o projeto. A principal proposta do

projeto, expressa pela disciplina de RPE, foi percebida de maneira

extremamente clara, visto que diversas vezes o grupo se deparou com

problemas diferentes dos propostos em sala de aula e, ao buscar soluções,

compreendeu os problemas cotidianos de um profissional da área de

engenharia.

Diferente do semestre passado, foi possível perceber uma maior

maturidade e naturalidade ao lidar com um projeto, as divisões de atividades

ocorreram de forma natural e espontânea, o grupo se envolveu e pode

perceber que os resultados foram extremamente satisfatórios.

Page 25: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

25

9 REFERÊNCIAS

Processing. Disponível em: http://processing.org/;

Dimensão da Célula Braille. Disponivel em: http://www.gesta.org/braille/dimensao.htm;

Arduino I2C Master Library - UPDATED. Disponivel em:h ttp://dsscircuits.com/articles/arduino-i2c-master-library.html;

Usando i2c com Arduino. Disponivel em:

http://labdegaragem.com/profiles/blogs/usando-i2c-com-

arduino?id=6223006%3ABlogPost%3A87731&page=2;

Tutorial sobre PCF8574 e como utilizá-lo com Arduino. Disponivel em:

http://labdegaragem.com/profiles/blogs/tutorial-sobre-pcf8574-e-como-utiliz-lo-

com-arduino.

Page 26: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

26

10 GLOSSÁRIO

CI - Circuito Integrado. Circuito eletrônico miniaturizado.

PCF8574 - CI que realiza comunicação serial com um microcontrolador, a partir

do protocolo I²C.

Buzzer - Beeper. Dispositivo de sinalização sonora comumento utilizado em

eletrônica.

LED - Diodo emissor de luz, ou do inglês Light Emitting Diode. Utilizado em

eletrônica para sinalização visual.

Push-button - Botão. Dispositivo utilizado para cortar ou permitir a passagem

de corrente elétrica.

Circuito - Circuito elétrico. Ligação de elementos elétricos de tal forma que

forneça pelo menos um caminho fechado para a corrente elétrica.

Board - Nome dado ao desenho a ser impresso na na placa de fenolite.

Resistor de pull Down - Resistor utilizado em circuitos elétricos para garantir o

estado lógico "baixo".

Capacitor - Dispositivo utilizado para armazenar energia temporariamente.

VCC - Voltagem Corrente Contínua. Sigla utilizada para denominar o ponto de

maior potencial do circuito.

GND - Ground (do inglês). Terra. Sigla utilizada para denominar o ponto de

menor potencial do circuito.

Fim-de-curso - Sensor de toque. Dispositivo mecânico responsável por indicar

ao controlador a interrupção do movimento.

Arduino - Plataforma de prototipagem eletrônica de hardware livre, projetada

com um microcontrolador ATmega328P. É programado com uma linguagem de

programação própria baseada na linguagem C.

PCI/PCB - Placa de circuito impresso ou, do inglês, Printed circuit board. Placa

contendo o circuito impresso em uma superfície de cobre.

EagleCAD Soft - Software utilizado para o desenho de circuitos a serem

impressos.

Shield - Placas que podem ser plugadas no topo do arduino, extendendo suas

funções.

Page 27: O projeto iFinger, referente ao quarto período do curso de ...embedded.microprocessadores.com.br/wp-content/... · 6 CÓDIGO FONTE ... Fonte linear de 12V; Fonte chaveada de 5V;

27

Linguagem de Programação - Método padronizado para comunicar

isntruções para um computador. Conjunto de regras sintáticas e semânticas

usadas para definir um programa de computador.

Função - Desvio de código que agrupa comandos que são utilizados diversas

vezes durante o programa