Você está na página 1de 15

UNIVERSIDADE ESTADUAL DE CAMPINAS

Luiz Augusto Richena de Lima


Guilherme de Freitas Lessio

Projeto prático

Campinas
2 de maio de 2018
Luiz Augusto Richena de Lima
Guilherme de Freitas Lessio

Projeto prático

Relatório apresentado ao curso de Engenharia


de Controle e Automação, da Universidade
Estadual de Campinas, na disciplina ES670 -
Projeto de Sistemas Embarcados.

UNIVERSIDADE ESTADUAL DE CAMPINAS

Campinas
2 de maio de 2018
Lista de ilustrações

Figura 1 – Requerimentos solicitados na parte I . . . . . . . . . . . . . . . . . . . 5


Figura 2 – Diagrama de blocos da parte I . . . . . . . . . . . . . . . . . . . . . . . 5
Figura 3 – Diagrama eletrônico do display de 7 segmentos . . . . . . . . . . . . . 6
Figura 4 – Diagrama eletrônico do LED 1 e Switch 1 . . . . . . . . . . . . . . . . 6
Figura 5 – Diagrama eletrônico do LED 2 e Switch 2 . . . . . . . . . . . . . . . . 7
Figura 6 – Diagrama eletrônico do LED 3 e Switch 3 . . . . . . . . . . . . . . . . 7
Figura 7 – Diagrama eletrônico do LED 4 e Switch 4 . . . . . . . . . . . . . . . . 7
Figura 8 – Requerimento solicitado na parte II . . . . . . . . . . . . . . . . . . . . 9
Figura 9 – Máquina de estados implementado na parte II . . . . . . . . . . . . . . 9
Figura 10 – Diagrama de blocos da parte II . . . . . . . . . . . . . . . . . . . . . . 10
Figura 11 – Diagrama de máquina de sequência da parte II . . . . . . . . . . . . . 10
Figura 12 – Requerimento solicitado na parte III . . . . . . . . . . . . . . . . . . . 12
Figura 13 – Diagrama de blocos da parte III . . . . . . . . . . . . . . . . . . . . . . 12
Figura 14 – Diagrama eletrônico do LCD . . . . . . . . . . . . . . . . . . . . . . . 13
Lista de tabelas

Tabela 1 – Matriz de rastreabilidade da parte I . . . . . . . . . . . . . . . . . . . 8


Tabela 2 – Matriz de rastreabilidade da parte II . . . . . . . . . . . . . . . . . . . 11
Tabela 3 – Matriz de rastreabilidade da parte III . . . . . . . . . . . . . . . . . . 13
Sumário

1 LEDS, SWITCHES E DISPLAY DE 7 SEGMENTOS . . . . . . . . 5


1.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Diagramas esquemáticos . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Matriz de rastreabilidade . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6 Códigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 PROTOCOLO DE COMUNICAÇÃO . . . . . . . . . . . . . . . . . . 9
2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Matriz de rastreabilidade . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Códigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 LIQUID CRYSTAL DISPLAY (LCD) . . . . . . . . . . . . . . . . . . 12


3.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Diagrama esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4 Matriz de rastreabilidade . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.6 Códigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5

1 LEDs, Switches e Display de 7 segmentos

1.1 Objetivo

O objetivo da primeira parte do projeto prático é promover a familiarização


com a metodologia de desenvolvimento de projetos embarcados. Isto será feito com a
implementação de três requisitos: teclado, LEDs e display de sete segmentos.

1.2 Modelagem

Na parte I do projeto prático, foram solicitados três requisitos: teclado, led e


display de sete segmentos. Os detalhes de cada requisito podem ser conferidos na Figura 1.

Figura 1 – Requerimentos solicitados na parte I

O diagrama de bloco contendo a modelagem do projeto pratico - parte I pode ser


conferido na Figura 2.

Figura 2 – Diagrama de blocos da parte I


Capítulo 1. LEDs, Switches e Display de 7 segmentos 6

1.3 Diagramas esquemáticos

Os diagramas esquemáticos dos componentes que foram utilizados na primeira


parte do projeto são apresentados a seguir. A Figura 3 apresenta o diagrama do display de
7 segmentos, enquanto que as Figuras 4 a 5 apresentam os diagramas dos LEDs e switches.

Figura 3 – Diagrama eletrônico do display de 7 segmentos

Figura 4 – Diagrama eletrônico do LED 1 e Switch 1


Capítulo 1. LEDs, Switches e Display de 7 segmentos 7

Figura 5 – Diagrama eletrônico do LED 2 e Switch 2

Figura 6 – Diagrama eletrônico do LED 3 e Switch 3

Figura 7 – Diagrama eletrônico do LED 4 e Switch 4


Capítulo 1. LEDs, Switches e Display de 7 segmentos 8

1.4 Matriz de rastreabilidade

A implementação associada a cada requisito pode ser verificada na matriz de


rastreabilidade apresentada na Tabela 1.

Tabela 1 – Matriz de rastreabilidade da parte I


ID do requisito Implementação
ledswi_hal.c
REQ1A – void ledswi_initLedSwitch(char cLedNum, char cSwitchNum)
– switch_status_type_e ledswi_getSwitchStatus(char cSwitchNum)
ledswi_hal.c
– void ledswi_initLedSwitch(char cLedNum, char cSwitchNum)
REQ1B
– void ledswi_setLed(char cLedNum);
– void ledswi_clearLed(char cLedNum);
sevenseg_hal.c
– void sevenseg_init(void)
REQ1C
– void sevenseg_clearValue (void)
– void sevenseg_setValue(char cDisplay, char cValue, char cDec)

1.5 Notas

O código main.c deve ser utilizado para verificar as funcionalidades dos requisitos
implementados. Para isso, basta definir o “DISPLAY_TEST” e o “LEDSWI_TEST” para
testar o display e os LEDs/Switches, respectivamente.

1.6 Códigos

O link do GitHub contendo os códigos do projeto pode ser verificado a seguir:


https://github.com/luizrichena/Sources
9

2 Protocolo de Comunicação

2.1 Objetivo

Progredir o modelo para que o mesmo seja capaz de receber comandos de alto
nível, interpretar comandos através de uma máquina de estados e permitir a atuação ou
transmissão de respostas.

2.2 Modelagem

Na parte II do projeto prático, foi solicitado a implementação de um requisito


relacionado ao protocolo de comunicação serial. Os detalhes do requisito podem ser
conferidos na Figura 8. A máquina de estados, o diagrama de blocos e o diagrama de
sequência podem ser conferidos nas Figuras 9, 10 e 11, respectivamente.

Figura 8 – Requerimento solicitado na parte II

Figura 9 – Máquina de estados implementado na parte II


Capítulo 2. Protocolo de Comunicação 10

Figura 10 – Diagrama de blocos da parte II

Figura 11 – Diagrama de máquina de sequência da parte II


Capítulo 2. Protocolo de Comunicação 11

2.3 Matriz de rastreabilidade

A implementação associada ao requisito pode ser verificada na matriz de rastreabi-


lidade apresentada na Tabela 2.

Tabela 2 – Matriz de rastreabilidade da parte II


ID do requisito Implementação
ledswi_hal.c
REQ1A – void ledswi_initLedSwitch(char cLedNum, char cSwitchNum)
– switch_status_type_e ledswi_getSwitchStatus(char cSwitchNum)
ledswi_hal.c
– void ledswi_initLedSwitch(char cLedNum, char cSwitchNum)
REQ1B
– void ledswi_setLed(char cLedNum)
– void ledswi_clearLed(char cLedNum)
sevenseg_hal.c
– void sevenseg_init(void)
REQ1C
– void sevenseg_clearValue (void)
– void sevenseg_setValue(char cDisplay, char cValue, char cDec)
cmdmachine_hal.c
– void ledCmd (int *iRxBuffer)
– void swiCmd (int *iRxBuffer)
– void buzzerCmd (int *iRxBuffer)
REQ2
– void interpretCmd(int *iRxBuffer)
serial_hal.c
– int receiveBuffer(void)
– void sendBuffer(int iValid)

2.4 Notas

O caractere “space” deve ser escrito ao final de cada comando para iniciar a
interpretação e execução da máquina de estados. Ex: "LS4 ".

2.5 Códigos

O link do GitHub contendo os códigos do projeto pode ser verificado a seguir:


https://github.com/luizrichena/Sources
12

3 Liquid Crystal Display (LCD)

3.1 Objetivo

Nessa terceira parte do projeto, o sistema deve evoluir e ser capaz de gerenciar o
módulo de Liquid Crystal Display (LCD).

3.2 Modelagem

Na parte III, foi solicitado a implementação de um LCD. Os detalhes do requisito


podem ser conferidos no Figura 12 e o digrama de blocos na Figura 13.

Figura 12 – Requerimento solicitado na parte III

Figura 13 – Diagrama de blocos da parte III


Capítulo 3. Liquid Crystal Display (LCD) 13

3.3 Diagrama esquemático

O diagrama esquemático do componente que foi utilizado na terceira parte do


projeto são apresentados a seguir:

Figura 14 – Diagrama eletrônico do LCD

3.4 Matriz de rastreabilidade

A implementação associada ao requisito pode ser verificada na matriz de rastreabi-


lidade apresentada na Tabela 3.

Tabela 3 – Matriz de rastreabilidade da parte III


ID do requisito Implementação
ledswi_hal.c
REQ1A – void ledswi_initLedSwitch(char cLedNum, char cSwitchNum)
– switch_status_type_e ledswi_getSwitchStatus(char cSwitchNum)
ledswi_hal.c
– void ledswi_initLedSwitch(char cLedNum, char cSwitchNum)
REQ1B
– void ledswi_setLed(char cLedNum)
– void ledswi_clearLed(char cLedNum)
sevenseg_hal.c
– void sevenseg_init(void)
REQ1C
– void sevenseg_clearValue (void)
– void sevenseg_setValue(char cDisplay, char cValue, char cDec)
cmdmachine_hal.c
– void ledCmd (int *iRxBuffer)
– void swiCmd (int *iRxBuffer)
– void buzzerCmd (int *iRxBuffer)
REQ2
– void interpretCmd(int *iRxBuffer)
serial_hal.c
– int receiveBuffer(void)
– void sendBuffer(int iValid)
lcd_hal.c
– void lcd_initLcd(void)
– void lcd_writeData(unsigned char ucData)
– void lcd_sendCommand(unsigned char ucCmd)
REQ3
– void lcd_write2Lcd(unsigned char ucBuffer, unsigned char cDataType)
– void lcd_writeString(const char *cBuffer)
– void lcd_setCursor(unsigned char cLine, unsigned char cColumn)
– void lcd_dummyText(void)
Capítulo 3. Liquid Crystal Display (LCD) 14

3.5 Notas

Um ajuste no tempo de execução do programa é necessário, pois uma diferença de


luminosidade entre algumas áreas da tela de LCD são perceptíveis.

3.6 Códigos

O link do GitHub contendo os códigos do projeto pode ser verificado a seguir:


https://github.com/luizrichena/Sources

Você também pode gostar