Você está na página 1de 84

EDERSON FERRONATO

PAINEL DE LEDs CONTROLADO SEM FIO UTILIZANDO


O PROTOCOLO ZIGBEE

Florianpolis
2011

EDERSON FERRONATO

PAINEL DE LEDs CONTROLADO SEM FIO UTILIZANDO


O PROTOCOLO ZIGBEE

Monografia apresentada ao curso de ps-graduao


em desenvolvimento de produtos eletrnicos digitais
do Instituto Federal de Santa Catarina como requisito
parcial obteno do ttulo de especialista em
desenvolvimento de produtos eletrnicos digitais.

Orientador:
Prof. Charles Borges de Lima Dr. Eng.

Florianpolis
2011

DEDICATRIA

Dedico este trabalho a minha querida esposa Alline,


que sofreu comigo nos momentos difceis e me encorajou
sempre para que eu no desistisse e aos meus filhos
Pedro e Gustavo, que souberam entender a minha
ausncia.

A G R A D E C IM E N T O S

Agradeo a todos que me apoiaram, principalmente


a NEOTEC, que me ajudou no transporte e despesas com
a viagem, ao meu colega Juliano, que me acompanhou
nesta jornada e ao meu orientador, Prof. Charles.

R E SU M O

Este trabalho apresenta o projeto de um painel de leds dispostos na forma


de uma matriz, composta por 7 linhas e 60 colunas, onde cada led um ponto da
matriz. O sistema liga os LEDs atravs da varredura dos leds em linha e utiliza a
persistncia da viso para formar as palavras no display alfanumrico. As
mensagens so criadas em um software instalado em um computador e transmitidos
via rede sem fio para o painel de leds. Quando o painel recebe os dados, os
processa e apresentar a mensagem corretamente.

Palavras-Chave: Wireless, ZigBee e Matriz de LEDs.

ABS TRACT

This paper presents the design of a panel of LEDs arranged in the form
of a matrix

made

of 7 rows

and 60 columns, where

each LED

is a point

in

the matrix. The system turns on the LEDs of the LED through the online scan and
uses the

persistence

display. Messages

of

are

transmitted wireless to

the

vision to

form the

created in a

software installed

panel LEDs. When

process and display the message correctly.


Key words: Wireless, ZigBee e Matrix Led.

words on
the

the

alphanumeric

on a computer

panel receives

the

and
data,

L I S T A D E F IG U R A S

Figura 1 - Estrutura de um microcontrolador. ............................................................ 15


Figura 2 - Arquitetura Von-Neumann. ........................................................................ 16
Figura 3 - Arquitetura Harvard. .................................................................................. 16
Figura 4 - Diagrama de bloco do ATmega162 ........................................................... 22
Figura 5 - Exemplo de aplicao com rede ZigBee. .................................................. 25
Figura 6 - Tipos de dispositivos da rede ZigBee. ....................................................... 27
Figura 7 - Topologias da rede ZigBee........................................................................ 28
Figura 8 - Diagrama de bloco simplificado do fluxo da mensagem. .......................... 30
Figura 9 Interface do Software ................................................................................ 37
Figura 10 - Mdulo XBee-PRO .................................................................................. 38
Figura 11 - Software X-CTU para configurao do mdulo XBee . ........................... 42
Figura 12 - Diagrama do painel de matriz de leds ..................................................... 43
Figura 13 - Clock externo para o AVR ....................................................................... 45
Figura 14 - Ligao entre o microcontrolador e o mdulo X-Bee .............................. 46
Figura 15 - Diagrama lgico do TPIC6B595 .............................................................. 50
Figura 16 - Diagrama simplificado das ligaes linha e coluna ................................. 51
Figura 17 - Diagrama do display mostrando a letra A................................................ 53
Figura 18 - Imagem da parte da frente do Painel de Leds funcionando. ................... 60
Figura 19 Imagem da parte de traz mostrando os componentes do painel de leds.
................................................................................................................................... 60

L IS T A D E T A B E L A S

Tabela 1 - Tabela padro ASCII (ASCII Table and Description , 2010). ................... 32
Tabela 2 - Protocolo de envio e confirmao de mensagem ..................................... 35
Tabela 3 - Tabela mostrando o byte de leitura .......................................................... 36
Tabela 4 - Resposta de uma leitura de mensagem do painel.................................... 36
Tabela 5 - Lista da pinagem do mdulo XBee-PRO (DIGI, 2011) ............................. 38
Tabela 6 - Baud Rate para algumas frequencias de clock (ATMEL, 2011). .............. 48
Tabela 7 - Valores em Bit da letra A .......................................................................... 54

SUMRIO

DEDICATRIA ......................................................................................... 3
AGRADECIMENTOS ............................................................................... 4
RESUMO .................................................................................................. 5
ABSTRACT .............................................................................................. 6
LISTA DE FIGURAS ................................................................................ 7
LISTA DE TABELAS ............................................................................... 8
SUMRIO ................................................................................................. 9
1

INTRODUO ................................................................................. 12

1.1

Tema e Problema da Pesquisa ....................................................................... 12

1.2

Objetivos.......................................................................................................... 13

1.2.1

Objetivo Geral ............................................................................................... 13

1.2.2

Objetivos Especficos .................................................................................... 13

1.3

Justificativa ...................................................................................................... 14

MICROCONTROLADORES ............................................................ 15

2.1

Arquitetura ....................................................................................................... 16

2.2

Memrias ......................................................................................................... 17

2.2.1

Memria de Programa ................................................................................... 17

2.2.2

Memria de Dado e RAM .............................................................................. 18

2.2.3

Memrias de Armazenamento ...................................................................... 18

2.3

Linguagem de programao (Firmware) ......................................................... 18

2.4

Microcontrolador ATMEGA162........................................................................ 19

2.4.1

Caractersticas do ATmega162 ..................................................................... 19

2.4.2

Perifricos do ATmega162 ............................................................................ 20

COMUNICAO SEM FIO .............................................................. 23

Tipos de redes sem fio .................................................................................... 23

3.1
3.1.1

IEEE 802.15.1 WPAN Bluetooth ................................................................... 23

3.1.2

IEEE 802.15.2 WPAN Coexistence ............................................................... 24

3.1.3

IEEE 802.15.3 WPAN Alta Velocidade ......................................................... 24

3.1.4

IEEE 802.15.4 WPAN Baixa Velocidade....................................................... 24

3.2

ZigBee Aliance ................................................................................................ 25

3.3

Tipos de Dispositivos....................................................................................... 26

3.3.1

Coordenador ZigBee ..................................................................................... 26

3.3.2

Roteador ZigBee ........................................................................................... 26

3.3.3

Dispositivo Final ............................................................................................ 26

3.4

Topologia das redes ZigBee............................................................................ 27

3.4.1

Topologia Estrela .......................................................................................... 28

3.4.2

Topologia rvore ........................................................................................... 28

3.4.3

Topologia Malha ............................................................................................ 29

DESENVOLVIMENTO ..................................................................... 30

4.1

Protocolo de Comunicao Serial ................................................................... 31

4.1.1

Modelo do Protocolo ..................................................................................... 31

4.1.1.1

Tabela ASCII ............................................................................................... 32

4.1.1.2

Byte de escrita ou leitura do painel ............................................................. 33

4.1.1.3

Inicio e fim do protocolo .............................................................................. 33

4.1.1.4

Quantidade de Bytes transmitidos .............................................................. 33

4.1.1.5

Tipo de apresentao da mensagem .......................................................... 33

4.1.1.6

Cor de apresentao da mensagem ........................................................... 34

4.1.1.7

Mensagem................................................................................................... 34

4.1.1.8

Exemplo de escrita de mensagem .............................................................. 35

4.1.1.9

Exemplo de leitura da mensagem ............................................................... 35

4.2

Software computador ...................................................................................... 36

4.3

Mdulo XBee ................................................................................................... 37

4.3.1

Comandos do Mdulo XBee ......................................................................... 39

4.3.2

ATDL ............................................................................................................. 39

4.3.3

ATMY ............................................................................................................ 40

4.3.4

ATWR ............................................................................................................ 40

4.3.5

ATCN ............................................................................................................. 40

4.3.6

ATNI .............................................................................................................. 40

4.3.7

ATVR ............................................................................................................. 40

4.3.8

ATBD ............................................................................................................. 41

4.3.9

Programa de configurao ............................................................................ 41

4.4

Painel de Leds ................................................................................................. 43

4.5

Hardware ......................................................................................................... 44

4.5.1

Microcontrolador ............................................................................................ 44

4.5.2

Velocidade de operao (clock) .................................................................... 44

4.5.3

Comunicao serial RS232 ........................................................................... 45

4.5.4

Dispositivos de Entrada e Sada ................................................................... 49

4.5.5

Criando os caracteres ................................................................................... 53

4.5.6

Mostrando uma letra no painel ...................................................................... 56

4.5.7

Criando os efeitos da mensagem no painel .................................................. 57

RESULTADOS ................................................................................. 60

CONCLUSO................................................................................... 63

RECOMENDAES PARA TRABALHOS FUTUROS ................... 64

BIBLIOGRAFIA ................................................................................ 65

ANEXO A CDIGO DO PROGRAMA ................................................ 68


ANEXO B ESQUEMTICO DO PAINEL DE MATRIZ DE LED ......... 77
ANEXO C SHIFT REGISTER TPIC6B595 .......................................... 80
ANEXO D MICROCONTROLADOR ATMEGA162 ............................ 81
ANEXO E DATASHEET MDULO XBEE-PRO DA DIGI .................. 82
ANEXO F DATASHEET DA NATRIZ DE LED ................................... 84

1 IN T R O D U O

Na ltima dcada aumentou a tecnologia dos microcontroladores


diminuindo drasticamente o seu custo, em conseqncia, os produtos eletrnicos
embarcados por estes microcontroladores. Hoje a tecnologia est presente no
cotidiano de todas as pessoas, como: telefones celulares, controles remotos,
televisores, microondas, foges eltricos e a gs, entre outros.
Antigamente, devido ao alto custo das tecnologias, as redes sem fio eram
desenvolvidas para trabalhar em freqncias de transmisso cada vez maiores, para
a utilizao na transferncia de vdeo, dados, voz etc. Atualmente, com o baixo
custo das tecnologias, esto sendo desenvolvidos produtos com comunicao sem
fio para vrias aplicaes. Uma das tecnologias o ZigBee, que foi desenvolvido
para redes sem fio para controle e sensores. As caractersticas para a rede ZigBee
so baixo consumo de energia, baixo custo de instalao e um grande numero de
dispositivos conectados a mesma rede.
Com a complexidade de alguns projetos, surgiu a necessidade de
utilizao de algumas tcnicas de multiplexao, para aumentar o nmero das
entradas e sadas dos microcontroladores. Estas tcnicas so empregadas aqui
para formao da mensagem no painel de leds.

1 .1 T e m a e P r o b le m a d a P es q u is a

Com o aumento da popularidade dos microcontroladores e da


comunicao sem fio, sua utilizao esta sendo disseminada em vrias reas de
atuao. Uma das principais aplicaes para facilitar a comunicao de
informaes longa distncia sem a necessidade de conexo de cabos para o envio
e recebimento de dados.
Pensando nisso, se props desenvolver um painel luminoso composto por
12 matrizes com dimenses de 7 linhas por 5 colunas cada matriz, contendo leds
verdes e vermelhos. Esta configurao forma um painel de leds com 840 pixeis,
sendo 420 da cor verde e outros 420 da cor vermelha, gerando um letreiro eletrnico

13

bicolor com 7 linhas e 60 colunas. Para formar todos os caracteres do alfabeto


necessrio 5 colunas resultando na apresentao de 12 caracteres na matriz de
leds.
onde sero apresentadas mensagens alfanumricas enviadas via wireless de um
computador pessoal.

1.2 Objetivos

1.2.1 Objetivo Geral

Este trabalho tem como objetivo propor o desenvolvimento de um painel


de leds controlado por um microcontrolador que apresentar mensagens enviadas
por um computador atravs de uma comunicao sem fio.

1.2.2 Objetivos Especficos

No desenvolvimento deste projeto pretende-se atingir os seguintes


objetivos especficos:

Desenvolver uma placa composta por 12 matrizes de leds verdes e vermelhos


de 7 linhas por 5 colunas para formar um painel com 840 pixeis, com a
finalidade de apresentar 12 caracteres formados por 7 linhas e 5 colunas;

Desenvolver um software de computador para montagem das mensagens a


serem mostradas no painel de leds;

Adquirir mdulos ZigBee para implementao da comunicao wireless entre


o software que estar em um computador e o Painel;

Implementar o programa para receber e mostrar mensagens alfanumricas.

14

1 .3 Ju s t i f i c a t i va
Com o aumento da popularidade da tecnologia e devido a reduo do seu
custo nos ltimos anos, comum encontrar pessoas procurando mais comodidade e
agilidade para executar tarefas de seu dia a dia. Assim, cada vez mais as
tecnologias esto invadindo casas, escritrios e empresas, ocupando espaos cada
vez maiores nestes meios.
Hoje em dia podemos contar com produtos modernos para a exibio de
mensagens informativas, porm com um custo elevado tanto do equipamento como
da instalao. Como por exemplo, os televisores de LCD executando funes de
apresentao de mensagens complexas com imagens em altas resolues.
proposto o desenvolvimento de um produto para exposio de
mensagem sem a necessidade da utilizao de fios para sua transmisso. O produto
no tem a necessidade de utilizar equipamentos caros, visando construo de um
sistema embarcado dedicado para receber a mensagem enviada de um computador
e exibir essa mensagem em painel de leds, tendo como beneficio a transmisso sem
fio e o baixo custo de sua instalao e aplicao.

15

2 MICROCONTROLADORES

Com o avano das tecnologias foi possvel desenvolver chips com


capacidade de realizar inmeras operaes lgicas e aritmtica, baseada em
instrues armazenadas em memria chamadas de memrias programveis. Os
microcontroladores so formados basicamente por uma memria de programa, onde
ficar as instrues que devero ser executadas, a memria RAM, onde so
armazenadas as variveis temporrias, os pinos de entrada e sada, que possuem
diversas funes e a CPU, que a unidade central de processamento, que
interpretar as instrues lgicas e aritmticas contidas no programa.
Os microcontroladores so basicamente iguais aos microprocessadores,
mas a diferena est na integrao dos perifricos, como memria de programa,
memria de dados, conversores ADs, circuito de clock, entre outros. Na Figura 1
mostrado um esquema simplificado da estrutura de um microcontrolador (LIMA,
2010).

Oscilador

Memria de
Dados

Memria
EEPROM

Memria
RAM

Barramento

CPU

Temporizador
Contador

Memria de
Programa

Interface de
Entrada e
Sada

Interface
Serial

A/D

Comparador

Figura 1 - Estrutura de um microcontrolador.


(LIMA, 2010)

PWM

16

2.1 Arquitetura

Os microcontroladores se diferem em duas arquiteturas, Von-Neumann,


onde as instrues e dados compartilham apenas um barramento mostrado na
Figura 2 e Harvard, onde as instrues e dados utilizam barramentos distintos
mostrados na Figura 3.

Memria de
Programa

Endereos

CPU
Memria de
Dados

Dados Instrues

Figura 2 - Arquitetura Von-Neumann.


(LIMA, 2010)

Memria de

Endereos

Programa
Instrues
Memria de
Dados

Endereos
Instrues

Figura 3 - Arquitetura Harvard.


(LIMA, 2010)

CPU

17

As

arquiteturas

supracitadas,

tambm

se

diferenciam

pelo

processamento de suas instrues. Na arquitetura Von-Neumann utilizado um


conjunto complexo de instrues (CISC Complex intructions set Computer). A
arquitetura Harvard emprega um conjunto de instrues simples sendo capas de
executar uma instruo por ciclo de mquina (RISC Reduced Instruction Set
Computer) (LIMA, 2010).

2.2 Memrias

Quando os microcontroladores foram inventados, as memrias eram


caras e suas tecnologias no permitiam que fossem apagadas e regravadas vrias
vezes, seu potencial de armazenamento de informao era reduzido e o custo era
bastante elevado, fazendo com que os microcontroladores se tornassem caro. Com
a evoluo tecnolgica, outros tipos de memrias foram inventados. Hoje se
consegue apagar uma memria vrias vezes, o seu armazenamento aumentou
drasticamente e seu custo reduziu fazendo com que o valor dos microcontroladores
diminusse, aumentando sua popularidade (FLOYD, 2007).

2.2.1 Memria de Programa

Antigamento a maioria dos microcontroladores s podia ser gravadas uma


vez, pois utilizavam memria do tipo OTP (One Time Programmable). Alguns
microcontroladores utilizavam uma janela para apagamento da memria, utilizando
para isto raios ultravioletas. Com o avano da tecnologia surgiram memrias
eletricamente apagveis como a EEPROM (Electrical Erasable Programming Read
Only Memory), nas quais se pode escrever e apagar apenas um byte de cada vez, e
a memria Flash, na qual o apagamento e escrita feita por setores (LIMA, 2010).

18

2.2.2 Memria de Dado e RAM

A memria de dados utilizada para armazenar os registradores


utilizados pela CPU durante sua execuo para acesso aos perifricos e demais
funes. A memria RAM (Random Access Memory), utilizada para o salvamento
de dados temporrios exigidos pelo programa (LIMA, 2010).

2.2.3 Memrias de Armazenamento

A memria de armazenamento necessita que as informaes sejam


retidas quando o sistema esta desenergizado, similar as memrias de programas.
As memrias empregadas para isto so as EEPROM (Electrical Erasble
Programming Read Only Memory) (LIMA, 2010).

2 .3 L i n g u a g e m d e p r o g r am a o ( F ir m w a r e )

No decorrer deste projeto ser adotada a linguagem C para a criao do


firmware que ser programado no microcontrolador. A escolha da linguagem C em
vez do assembly se da atravs de algumas vantagens controversas, mas que tem
algumas ressalvas importantes que devem ser esclarecidas, principalmente que os
microcontroladores ATmega possuem uma arquitetura de hardware que favorecem
muito a utilizao da linguagem C (LIMA, 2010).
O C uma linguagem de programao de alto nvel em comparao ao
assembly e por isso muito mais produtiva. Os programas escritos para um chip
podem ser facilmente adaptados para funcionar em outro, tornando a linguagem C
portvel. Utilizando C a curva de aprendizado de uma nova plataforma de
microcontrolador pode ser reduzida, uma vez que o programador tem de se
preocupar basicamente com os perifricos e no com a linguagem do chip
(PEREIRA F. , 2003).

19

A pesar de todas essas vantagens, em alguns momentos deveremos


aplicar a linguagem Assembly, especialmente em rotinas crticas de tempo que
necessitam ser executadas rapidamente (PEREIRA F. , 2005).

2 .4 M ic r o c o n t r o l a d o r A T M E G A 1 6 2

Para este projeto foi utilizado o ATMEGA162, que um microcontrolador


que compe a famlia AVRmega da empresa ATMEL, composto por vrios
perifricos, tais como: multiplicador por hardware, memria de programa flash de
16 kbytes, 512 bytes de memria de armazenamento EEPROM e 1 kbytes de
memria de dados SRAM. Este microcontrolador tem processador de 8 bits, uma
estrutura RISC avanada, composta por um grande numero de instrues,
permitindo a produo de um cdigo mais eficiente voltada para programao de
alto nvel, como a linguagem C (LIMA, 2010).

2.4.1 Caractersticas do ATmega162

Microcontrolador de baixa potncia, com arquitetura RISC avanada.

130 instrues, a maior parte executada em um ou dois ciclos de clock.

32 registradores de trabalho de propsito geral (8 bits cada).

Barramento de dados de 8 bits.

Instrues do ATmega so de 16 bits, cada instruo consome 2 bytes da


memria de programa.

Acesso a memria de programa feito de dois em dois bytes comeando


sempre pelo endereo do byte par.

Operao de at 16 MIPS (milhes de instrues por segundo) a 16 MHz.

Multiplicao por hardware em 2 ciclos de relgio.

16 kbytes de memria de programa flash de auto programao In-System.

512 bytes de memria EEPROM.

20

1 kbyte de memria SRAM.

Seo para cdigo de Boot Loader.

Bits de bloqueio para proteo contra a cpia do firmware.

Power-on reset e deteco Brown-out programvel.

Oscilador interno RC.

Fontes de interrupes internas e externas.

5 modos de Sleep.

Tenso de operao: 1,8 5,5V ATmega162V.

Tenso de operao: 2,7 5,5V ATmega162.

Consumo de corrente a 4 MHz (3V, 25C): ativo = 3,6mA, Idle = 1mA e


Power-down = 500nA.

2.4.2 Perifricos do ATmega162

44 entradas e sadas (I/Os) programveis.

2 temporizadores/contadores de 16 bits com Prescaler separado, um modo


de comparao e captura.

1 temporizador/contador de 16 bits com Prescaler, modo de comparao e


captura.

Contador de tempo real (com cristal externo de 32,768 kHz, conta


precisamente 1s).

6 canais PWM.

8 canais AD com preciso de 10 bits.

Interface serial para dois fios orientada a byte (TWI), compatvel com
protocolo I2C.

Interface serial USART.

Interface serial SPI Master/Slave.

Watchdog Timer com oscilador interno separado.

21

1 comparador analgico.
Na Figura 4 mostrado um diagrama detalhado da CPU do AVR e seus

perifricos. A CPU (Unidade lgica de processamento) tem a funo de garantir a


execuo do programa, acessando as memrias, executando clculos, controlando
os perifricos, e as portas de I/Os e suas interrupes (ATMEL, 2011).

22

Figura 4 - Diagrama de bloco do ATmega162


(ATMEL, 2011)

23

3 C O M U N IC A O S E M F I O

As comunicaes sem fio esto crescendo muito ultimamente sendo


compostas por vrias tecnologias, onde a comunicao entre os dispositivos
executada principalmente atravs de radiofreqncia. Existem atualmente vrios
padres de redes sem fio, Bluetooth, WiMax, WiFi, onde pode-se atingir mdias e
altas velocidade de transmisso de dados para aplicaes em vdeo, voz e dados
como uma rede de computadores .
As redes de transmisso de dados de baixa velocidade para ambientes
industriais e residenciais esto sendo pouco explorados tecnicamente. Uma das
tecnologias disponveis, o ZigBee Alliance vem ganhando espao principalmente
pela sua vasta caracterstica, que se adapta as necessidades de coletar, armazenar,
processar e transferir dados em distancias de at 500m em ambientes com barreiras
fsicas, rudos, altas temperaturas e interferncia eletromagntica (ALLIANCE,
2011).

3 .1 T i p o s d e r e d e s s e m f io

As redes sem fios que so denominadas de redes WPAN (Wireless


Personal Area Network), voltado para comunicao local de pequeno alcance, so
utilizadas para agrupar vrios dispositivos fixos e mveis definidos pelo padro IEEE
802.15, divididos em quatro grupos, Bluetooth, Coexistence, WPAN de Alta
velocidade e WPAN de Baixa velocidade (PINHEIRO, 2004).

3.1.1 IEEE 802.15.1 WPAN Bluetooth

O padro IEEE 802.15.1 WPAN Bluetooth um grande subconjunto do


que o Bluetooth oferece e foi integralmente aprovado pelo grupo que controla o
padro Bluetooth, o Bluetooth SIG. O Bluetooth foi inicialmente considerado como

24

uma alternativa ao Wi-Fi, barata e sensvel ao uso de baterias. As principais


caractersticas do protocolo Bluetooth a alta velocidade de transmisso de dados,
o baixo consumo e a capacidade de fazer repetidas vezes conexes simples e
rpidas (ADAM ENGST, 2005).

3.1.2 IEEE 802.15.2 WPAN Coexistence

Verses futuras do Wi-Fi e do Bluetooth, por meio dos esforos de outro


comit IEEE conhecidas como 802.15.2, devem funcionar lado a lado com menos
conflitos e interferncias. A especificao 802.15.2 requer dispositivos para
minimizar a utilizao de freqncias ocupadas (ADAM ENGST, 2005).

3.1.3 IEEE 802.15.3 WPAN Alta Velocidade

O WPAN se concentrou no grupo do 802.15.3 em alta velocidade, curta


distncia, e transferncias fceis de arquivos. Estes dispositivos podem chegar a
oferecer 110 Mbps em dez metros e 480 Mbps em um metro, provavelmente
utilizando banda ultra larga sendo uma promissora tecnologia de baixo consumo de
energia (ADAM ENGST, 2005).

3.1.4 IEEE 802.15.4 WPAN Baixa Velocidade

Este grupo foi criado para tentar estender as baterias em meses e at


anos dos dispositivos, fornecendo uma baixa velocidade de transmisso de dados,
apenas alguns Kbps nas transferncias de curto alcance. O objetivo deste grupo
substituir cabeamento de sensores de alarmes, equipamentos com baixo volume de
dados mas de longa utilizao, por dispositivos sem fio que possam conversar entre
si. O nome comercial mais utilizado para este padro o ZigBee (ADAM ENGST,
2005).

25

3 .2 Z i g B e e A l ia n c e

Um grupo de empresas se juntou e criou o padro IEEE 802.15.4 que foi


homologado como ZigBee Alliance, as empresas que compes este grupo so:
Philips, Mitsubishi, Motorola, Honeywell, Freescale, Samsung, Texas Instruments e
Siemens. Em 1999 a IEEE criou uma norma para conectividade de redes pessoais
sem fio WPANs. A finalidade deste grupo definir um conjunto especial de padres
para as camadas fsicas e de controle de acesso ao meio, com o objetivo de obter
comunicao sem fio entre os dispositivos respeitando o modelo de referncia OSI
(ALLIANCE, 2011).
A Figura 5 mostra o agrupamento de vrias aplicaes que podem ser
feitas com a rede ZigBee.

Figura 5 - Exemplo de aplicao com rede ZigBee.


(MESSIAS, 2008)

26

3 .3 T i p o s d e D i s p o s it iv o s
3.3.1 Coordenador ZigBee

O coordenador o dispositivo mais completo, pois pode atuar como


coordenador de uma rede em rvore, ver captulo 3.4.2, servindo tambm de ligao a
outras redes. Existe exatamente um coordenador em cada rede, onde o inicio do n.
Pode armazenar informaes sobre a rede e atuar como sendo o seu centro de
confiana na distribuio de chaves cifradas (ALLIANCE, 2011).

3.3.2 Roteador ZigBee

O roteador tem a funo de oferecer rotas alternativas dentro de uma


rede Zigbee, aumentando o seu alcance. Utilizando dispositivos roteadores podemse fazer ligaes entre diversas redes estrelas, gerando redes do tipo arvore, ver
ilustrao na Figura 7 (ALLIANCE, 2011).

3.3.3 Dispositivo Final

Este dispositivo tem as funes necessrias para se comunicar somente


com um coordenador ou um roteador, no podendo transmitir informaes com
outros dispositivos. Com isso este dispositivo pode ficar sem transmitir no modo
standby na maior parte do tempo, aumentado assim o tempo de vida das baterias. Um
dispositivo final requer pouca memria e , portanto significativamente barato
(ALLIANCE, 2011).
Na Figura 6 apresentado um exemplo de ligao entre os dispositivos de
uma rede ZigBee.

27

ZigBee Coordinator (FFD)


ZigBee Router (FFD)
ZigBee End Device
(RFD or FFD)
Star
Mesh

Figura 6 - Tipos de dispositivos da rede ZigBee.


(ALLIANCE, 2011)

3 .4 T o p o lo g ia d a s r e d e s Z ig B e e

Utilizando todas as possibilidades de topologia de rede (estrela, malha, ou


arvore), pode-se chegar at 64770 ns. Isso possvel atravs do agrupamento de
255 conjuntos (clusters), onde todos os clusters podem ter at 254 ns. Na Figura 7
exemplificado as 3 topologias da rede ZigBee .

28

Figura 7 - Topologias da rede ZigBee.


(MESSIAS, 2008)

3.4.1 Topologia Estrela

A principal vantagem desta rede, por ela ser mais simples de


implementar do que todas as outras redes, existe apenas o coordenador e os
dispositivos finais. Isto um aspecto negativo, pois diminui o alcance da rede. Esta
rede normalmente aplicada em locais com poucos obstculos para a transmisso
do sinal (MESSIAS, 2008).

3.4.2 Topologia rvore

Esta topologia formada por sub-redes utilizando roteadores para a


comunicao. Nesta topologia mais de um coordenador administra a rede. Como
temos mais presena de dispositivos coordenadores e roteadores aumenta a
distancia de comunicao (MESSIAS, 2008).

29

3.4.3 Topologia Malha

Para topologia Malha permite que a rede se ajuste automaticamente ao ser


inicializa a entrada de novos dispositivos ou a sada de dispositivos. Com isso, cria-se
mltiplos caminhos entre os diferentes ns e a rede auto-suficiente para otimizar o
trfego de dados. Usando esta configurao pode-se ter redes muito extensas, cobrindo
largas reas geogrficas (MESSIAS, 2008).

30

4 DESENVOLVIMENTO

O painel de leds foi desenvolvido para mostrar mensagens alfanumricas


enviadas de um computador para um ambiente externo, com longo alcance, sem a
utilizao de cabos de comunicao. Para que isso fosse possvel foram
implementadas vrias tcnicas de eletrnica digital. Os passos necessrios para que
essa mensagem seja enviada, processada e visualizada no painel de leds
mostrada abaixo:
1) Cria-se a mensagem utilizando um software especfico instalado em
um computador.
2) Envia-se a mensagem atravs de radio freqncia utilizando um
adaptador com protocolo ZigBee.
3) A mensagem recebida por outro adaptador ZigBee e transferida para
um microcontrolador.
4) O microcontrolador processa a informao recebida e mostra esta
informao no conjunto de leds do painel.
A Figura 8 mostra um diagrama simplificado do sistema de envio de
mensagem, processamento e visualizao.

Software

RS232
(USB)

Computador

Mdulo XBee

wireless

Coordenador

Painel de leds
Mostra a
mensagem visual

Multiplexao
de IO

Mdulo XBee
Disp. Final

RS232
Microcontrolador
Processa a
Mensagem

Figura 8 - Diagrama de bloco simplificado do fluxo da mensagem.

31

4.1 Protocolo de Comunicao Serial

Para a transferncia de dados entre o computador e os painis, foi criado


um protocolo de comunicao serial onde so enviadas as informaes necessrias
para que a mensagem seja recebida e interpretada pelo microcontrolador sem erros
e utilizando o protocolo ZigBee para a comunicao wireless.
Como esto sendo utilizados os mdulos XBee, o protocolo utilizado ser
o padro IEEE 802.15.4 (captulo 3.2), entre os dispositivos ZigBee. O protocolo
padro ZigBee utiliza os endereamentos de seus dispositivos para comunicao
dos dados e a verificao de erros de entrega dos mesmos. Como o protocolo criado
para transmitir a mensagens entre o painel de leds e o computador ser empacotado
e transmitido atravs do protocolo ZigBee, no existe a necessidade de transmitir o
endereo do painel e verificar os erros eventuais dos dados, uma vez que isso ser
feito pelo ZigBee.

4.1.1 Modelo do Protocolo

O protocolo de transmisso de mensagem foi elaborado para que os


dados enviados pelo computador ao painel possam ser processados sem que haja
erro de interpretao das mensagens recebidas.
Este protocolo como qualquer outro, tem como base a funo de
organizar a informao a ser enviada. Para isso criou-se algumas regras para que a
mensagem seja montada, enviada e interpretada, da mesma maneira quando
recebida. Estas regras so:
Escrita da mensagem:

Tipo de caracteres do protocolo.

Tempo de inicio e fim da mensagem.

Byte de escrita da mensagem.

Quantidade de bytes a ser transmitido.

Tipo de apresentao da mensagem.

32

Cor de apresentao da mensagem.

Os caracteres que compe a mensagem.

Leitura da mensagem

Tempo de inicio e fim da mensagem.

Byte de leitura do painel.

4.1.1.1 Tabela ASCII

Todos os bytes que compem o protocolo de envio de mensagem esto


no padro ASCII como mostrado na Tabela 1.
Tabela 1 - Tabela padro ASCII (ASCII Table and Description , 2010).

33

4.1.1.2 Byte de escrita ou leitura do painel

Temos duas opes de comunicao com o painel de leds, a escrita da


mensagem e a leitura da mensagem da memria do microcontrolador. Para validar a
mensagem recebida pelo microcontrolador, gravada em sua memria, o painel
devolve a mesma mensagem que acabou de ser gravada ao computador como
confirmao.

4.1.1.3 Inicio e fim do protocolo

O inicio e final de uma mensagem caracterizado por um intervalo de


tempo de 20 ms entre as mensagens. Todo novo byte recebido com um intervalo
maior ser identificado como nova mensagem, ento, os bytes recebidos
anteriormente sero processados para criar a mensagem.

4.1.1.4 Quantidade de Bytes transmitidos

Esta informao no programa indica a quantidade total de bytes a ser


transmitido pelo computador e recebido pelo painel. Na recepo ele tem a funo
de indicar quantos bytes o microcontrolador dever processar para formar a
mensagem. Se este valor for incorreto, a mensagem processada ser distorcida e
ser apresentada uma informao incorreta no painel.

4.1.1.5 Tipo de apresentao da mensagem

A mensagem pode ser apresentada de diferentes maneiras. Para que isso


seja possvel deve-se neste campo indicar os tipos de deslocamento no painel:
1. Deslocamento da esquerda para direita. Este tipo apropriado
para mensagens longas, mensagens que no cabem no painel.

34

2. Deslocamento de cima para baixo. A mensagem ficar parada at


que outra mensagem seja apresentada, ou que a mesma
mensagem seja apresentada, refazendo o movimento.
3. Deslocamento de baixo para cima, este tipo de apresentao
contrria do item anterior.

4.1.1.6 Cor de apresentao da mensagem

Esta informao indicar qual cor a mensagem dever ter. O display


consiste de duas cores primrias, verde e vermelho, com a juno destas duas
cores pode-se obter uma terceira cor, a laranja. Utilizando este artifcio, a mensagem
pode ser mostrada no display contendo trs cores: verde, vermelho, amarelo e um
efeito aleatrio destas, chamado de colorido. Para ativar estas a mensagem os
seguintes cdigos:
1. Para mensagem na cor vermelha;
2. Para mensagem na cor verde;
3. Para mensagem na cor laranja;
4. Para mensagem na cor aleatria.

4.1.1.7 Mensagem

A mensagem que dever ser mostrada no painel composta por uma


seqncia de bytes no formato ASCII, formando um total mximo de 60 bytes devido
limitao do tamanho da memria de armazenamento. A mensagem ficar
gravada na memria EEPROM do microcontrolador, para que mesmo com alguma
falta de energia, no se perca a mensagem nem configuraes do painel.

35

4.1.1.8 Exemplo de escrita de mensagem

Quando for criada a mensagem, ela deve seguir algumas regras. Abaixo
segue um exemplo para escrever a mensagem TESTE DE ENVIO na memria do
microcontrolador posteriormente mostrada no painel de leds:
1 indica que a mensagem ser escrita (1 byte);
2 Quantidade de bytes que ser enviado considerando os bytes de
configurao e de mensagem (2 bytes);
3 Mensagem apresentada da direita para a esquerda (1 byte);
4 Mensagem ter a cor verde (1 byte)
5 TESTE DE ENVIO Mensagem a ser enviada (14)
A Tabela 2 apresenta a concatenao dos bytes acima, o protocolo de escrita.

Tabela 2 - Protocolo de envio e confirmao de mensagem

N Bytes

10 11 12 13 14 15 16 17 18 19

Bytes

Somando todos os bytes a serem enviados o total ser de 19 bytes. O


microcontrolador interpretar a mensagem considerando o total de bytes enviados.
Aps o recebimento da mensagem o microcontrolador retorna a mesma mensagem
para que o software no computador valide o envio da mensagem e tenha certeza
que a mensagem foi recebida sem erro.

4.1.1.9 Exemplo de leitura da mensagem

A leitura da mensagem se d enviando um byte com o valor 2 em cdigo


ASCII com um intervalo maior do 20 ms. Quanto este tempo passar, o painel ir
responder seguindo o protocolo de escrita, porm os valores enviados sero os que

36

estiverem gravados na memria. Abaixo temos um exemplo de uma leitura e


resposta de mensagem:
Leitura
Tabela 3 - Tabela mostrando o byte de leitura

N Bytes

Bytes

Resposta
Tabela 4 - Resposta de uma leitura de mensagem do painel

N Bytes

10 11 12 13 14 15 16 17 18 19

Bytes

4 .2 S o f t w a r e c o m p u t a d o r

Para ajudar a simplificar a criao das mensagens, foi desenvolvido um


software com telas grficas para computadores com sistema operacional Windows.
Este software faz a interface de desenvolvimento e configurao do painel de leds,
permite a troca e criao das mensagens feita pelo usurio e as enviada ao painel.
Na Figura 9 apresentada a interface do software.

37

Figura 9 Interface do Software

No software possvel a configurao da porta serial entre do PC para


uso com o mdulo XBee. O mdulo conectado a porta USB, utilizando uma porta
serial RS232 virtual. As outras configuraes possveis correspondem criao da
mensagem, tais como: tipo de apresentao no painel, cor da mensagem, qual
painel ir receber a mensagem para uso com vrios painis. Aps a configurao, a
mensagem ser enviada ao dispositivo selecionado, caso haja a necessidade de se
saber a configurao atual da mensagem gravada no painel, pode-se l-lo, e o
software apresentar a mensagem existente na memria do painel.

4 .3 M d u l o X B e e

Os mdulos utilizados para o desenvolvimento deste projeto so


fornecidos pela MaxStream, e o modelo escolhido o XBee-PRO, a potncia do
sinal de RF neste caso pode chegar at 63mW permitindo, assim, a comunicao

38

com distncias de at 1600m. Na Figura 10 apresentado o mdulo XBee PRO


(DIGI, 2011).

Figura 10 - Mdulo XBee-PRO

O consumo de corrente do mdulo XBee PRO de 63 mA para recepo


e 270 mA para transmisso. Pode-se encontrar este produto com trs tipos de
antenas, com antena, com antena externa e com chip antena que integrada ao
mdulo atravs de um chip (DIGI, 2011). Na tabela abaixo pode-se observar a sua
pinagem.
Tabela 5 - Lista da pinagem do mdulo XBee-PRO (DIGI, 2011)

Pinos

Funo

Descrio

VCC

Entrada positiva de alimentao

DOUT

Sada de dados serial

DIN

Entrada de dados serial

DO8

Sada de dados digital

RESET

Reset do mdulo ZigBee

PWM0/RSSI

Sada PWM ou sinal de potncia

PWM1

Sada de PWM

NC

Reservado

DTR

Pino de controle

10

GND

Pino de referencia da alimentao

11

AD4

Entrada analgica

39

12

CTS

Pino de controle

13

ON

Estado do mdulo

14

Vref

Entrada de referencia para entrada AD

15

AD5

Entrada analgica

16

RTS

Pino de controle

17

AD3

Entrada analgica

18

AD2

Entrada analgica

19

AD1

Entrada analgica

20

AD0

Entrada analgica

4.3.1 Comandos do Mdulo XBee

Pode-se configurar os mdulos XBee atravs da porta serial utilizando


uma srie de comandos indicados pelo fabricante. Para entrar no modo de
configurao do mdulo XBee necessrio enviar uma seqncia de caracteres
+++ para o mdulo. Uma vez no modo de configurao, basta esperar 10
segundos sem qualquer envio de comandos, desta forma o mdulo sai da funo de
configurao salvando as ltimas alteraes (DIGI, 2011).

4.3.2 ATDL

Com o comando ATDL define-se o endereo do dispositivo com o qual se


deseja comunicar na rede ZigBee. Por exemplo, se o endereo digitado for
ATDL5000 significa que a comunicao ser realizada com o dispositivo que tiver o
endereo 5000 na rede (DIGI, 2011).

40

4.3.3 ATMY

Atravs do comando ATMY pode-se definir qual ser o endereo do


dispositivo. Por exemplo, se for enviado ATMY5000, o endereo do dispositivo ser
5000 (DIGI, 2011).

4.3.4 ATWR

O comando ATWR permite gravar as alteraes feitas na memria flash


do mdulo, evitando, assim, que seja necessrio configurar o mdulo sempre que o
mesmo for inicializado (DIGI, 2011).

4.3.5 ATCN

Este comando permite sair do modo de configurao sem precisar


esperar os 10 segundos que o mdulo precisa para sair desta configurao (DIGI,
2011).

4.3.6 ATNI

O comando ATNI permite que se possa dar um nome ao mdulo na rede.


Neste caso alm do endereo pode-se enderear um mdulo na rede atravs de seu
nome. Nomear os dispositivos da rede facilita a sua identificao (DIGI, 2011).

4.3.7 ATVR

Com o comando ATVR pode-se saber a verso do firmware gravado


dentro do mdulo XBee (DIGI, 2011).

41

4.3.8 ATBD

Atravs do comando ATBD pode-se alterar a velocidade de comunicao


do mdulo ZigBee, a sua velocidade padro 9600 bps (DIGI, 2011).

4.3.9 Programa de configurao

O modulo pode ser configurado de duas formas, utilizando-se o


microcontrolador atravs da porta serial ou atravs de um programa de configurao
fornecido pela MaxStream. A MaxStream fornece este software gratuitamente em
seu site para download. O software de nome X-CTU configura os mdulos XBee de
maneira prtica sem a necessidade de outro dispositivo, apenas utilizando a porta
serial do computador. A Figura 11 pode-se ver a tela do software X-CTU (DIGI,
2011).

42

Figura 11 - Software X-CTU para configurao do mdulo XBee .


(DIGI, 2011)

43

4 .4 P a i n e l d e L ed s

O painel de leds nada mais do que um dispositivo embarcado, que,


contm uma eletrnica para processar uma informao e gerar um resultado, este
resultado uma mensagem alfanumrica em um display formado por matrizes de
leds como se fossem pixel de uma tela de televiso. Na figura abaixo temos um
diagrama de bloco do painel.

Mdulo XBee

Serial TX

Sinal para
acionar as
linhas

Serial RX

dispositivo final

Microcontrolador
ATMega162

Drive
Corrente

Drive das
linhas

Sinal Serial

Serial
Paralelo

Serial
Paralelo
Sinal Paralelo

Serial
Paralelo
Acionamento
das Colunas

Figura 12 - Diagrama do painel de matriz de leds

O painel composto por 12 matrizes de leds no formato 7x5, formando um conjunto


de 7 linhas por 60 colunas, empregando leds bicolores, resultando num total de 840
leds. Possui um microcontrolador para controle e utiliza registradores de
deslocamento com adequados drivers de corrente para o acionamento dos leds. O

44

painel possui uma interface serial para comunicao com um dos mdulos ZigBee.
No computador est o outro mdulo, conectado a sua porta serial (USB), e o
software de controle.

4 .5 H ar d w a r e

4.5.1 Microcontrolador

O microcontrolador dever ter algumas caractersticas para executar a


tarefa de receber, processar e mostrar a mensagem no painel, entre elas pode-se
citar:
1) Velocidade de operao.
2) Comunicao USART.
3) Temporizadores.
4) Quantidade de memria de programa disponvel.
5) Quantidade de entradas e sadas.
Para implementar o painel de leds foi desenvolvida uma lgica
computacional na linguagem de programao C que executa as seguintes tarefas:
1) Recebe o protocolo de comunicao via USART.
2) Decodifica o protocolo para mostrar a mensagem no painel, como foi
configurada.
3) Faze uma varredura das linhas do painel sincronizado com as colunas
para mostrar a mensagem.

4.5.2 Velocidade de operao (clock)

O clock do AVR pode ser configurado utilizando cristal ou ressonador


cermico externo, cristal de baixa freqncia externa, oscilador RC externo, sinal de
clock externo ou oscilador RC interno. Neste trabalho foi utilizado um clock baseado

45

em um cristal de 8 MHz. Na Figura 13 mostrado um esquema de ligao do cristal


externo ao AVR (ATMEL, 2011).

Figura 13 - Clock externo para o AVR


(ATMEL, 2011)

4.5.3 Comunicao serial RS232

Para que a placa receba e transmita as informaes necessrio que o


microcontrolador tenha uma interface USART que ser ligada ao mdulo ZigBee. Na
Figura 14 mostrado um esquema de ligao serial entre o microcontrolador e o
mdulo ZigBee.

46

Figura 14 - Ligao entre o microcontrolador e o mdulo X-Bee

A comunicao serial consiste na transmisso de dados seriais entre dois


dispositivos. Como a comunicao feita somente por dois fios e no
sincronizada, para que os dispositivos consigam se entender so definidas algumas
configuraes padres que o transmissor e o receptor devem obedecer.
A configurao serial se caracteriza com o seguinte formato de dados
enviados: 1 bit de inicio 8 bits dado bit de paridade 1 ou 2 bit de parada.
Bit de inicio Indica o incio da comunicao, enquanto o dispositivo no
est recebendo ou transmitindo os dados na linha de comunicao, esta permanece
em nvel lgico alto. Quando o dispositivo for transmitir, o nvel muda de alto para
baixo durante um intervalo de tempo dado pela taxa de comunicao (BaudRate). A
borda de decida do sinal identificada pelo dispositivo que ir receber a mensagem
indicando o processo de recebimento dos bits de dados.
Bits de Dados os dados podem ter entre 7 a 9 bits no caso do AVR e o
tempo de durao de cada bit dado pelo BaudRate. Estes bits transmitem a
informao a ser trocada entre os dispositivos. Esta quantidade de bits configurada
no microcontrolador AVR, neste projeto foi utilizado 8 bits de dados.

47

Bit de paridade este bit indica a deteco de erro nos bits de dados, a
paridade pode ser par ou mpar, indicando um nmero par ou mpar uns lgicos
contidos no dado. No muito eficiente na deteco de erro, pois o erro pode
acontecer no prprio bit de paridade ou em mais de um bit de dados.
Bit de parada tem sempre valor lgico alto, serve para indicar o fim da
transmisso. Pode ser configurado para ter um ou dois bits. Garante que a linha
voltar ao seu estado padro de transmisso (nvel alto) at a prxima transmisso
de dados.
Existem dois tipos de transmisso entre os dispositivos, a comunicao
assncrona e a sncrona. Na comunicao sncrona utilizam-se mais uma linha de
transmisso que o clock, gerado para a sincronizao dos bits de dados, havendo
a necessidade de se utilizar os bits de inicio e parada. Na comunicao assncrona
no se utiliza a linha de clock, a temporizao gerada para identificar os bits feita
pelos dois dispositivos, os quais devem estar configurados com a mesma velocidade
de transmisso.
No microcontrolador ATmega162, existe um mdulo chamado de USART
(Universal Synchronous and Asynchronous serial Received and Transmitter),
utilizado para fazer a comunicao serial com outros dispositivos (ATMEL, 2011).
Para sua utilizao os seguintes passos devem ser feitos:
1) Iniciar e configurar o mdulo USART.
2) Criar uma funo para enviar um byte.
3) Criar uma funo para receber um byte.
Para inicializar e configurar o mdulo so utilizados os registradores
correspondentes, UBRR, UCSRB e UCSRC.
UBRR (USART Baud Rate Register) o registrador responsvel pela
configurao da taxa de comunicao. Na Tabela 6 mostrado valores de UBRR
calculado para algumas freqncias de clock (ATMEL, 2011).

48

Tabela 6 - Baud Rate para algumas frequencias de clock (ATMEL, 2011).

UCSRB Neste registrador pode-se ativar os canais de recepo e


transmisso de dados da USART e tambm suas interrupes.
UCSRC Neste registrador definida a quantidade de bits de dados, de
paridade e de parada. Neste trabalho foi utilizado 8 bits de dados, sem bit de
paridade e um bit de parada. Abaixo apresentado um trecho do cdigo para a
configurao da USART (cdigo C).

void USART_Init (unsigned int ubrr)


{
UBRRH = (unsigned char) (ubrr>>8); //TAXA DE TRANSMISSO
UBRRL = (unsigned char) ubrr;
UCSRB = (1<<RXEN) | (1<<TXEN);

//HATILITA TRANSMISSO E RECEPO

UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0);

//8Bits, 1 stop

Aps a configurao da USART, o microcontrolador est apto a receber e


transmitir informaes seriais 9600 bps, com uma quantidade de 8 bits de dados,
sem o bit de paridade e um bit de parada.
Para a transmisso foi empregada a seguinte funo:

49

void USART_Transmitir (unsigned char c)


{
while ( !(UCSRA & (1<<UDRE)) ); //Verificar se pode transmitir
UDR = c;
//coloca o dado no registrador para enviar
}

Para receber um dado foi empregada a seguinte funo:


unsigned char USART_Receber (void)
{
while ( !(UCSRA & (1<<RXC)) );
return UDR;
}

//Esperar at que o dado seja recebido


//retorna o dado recebido

As funes de transmisso e recepo precisam somente ler e escrever


no registrador UDR, mas para isto este registrador deve estar vazio. Dessa forma
so verificados os bits UDRE (transmisso) e RXC (recepo) (ATMEL, 2011).

4.5.4 Dispositivos de Entrada e Sada

Para o desenvolvimento deste projeto foi utilizado um microcontrolador


com diversos pinos de IO (entradas e sadas) e perifricos. Isso se d porque o
microcontrolador deveria disponibilizar 67 pinos de IO, para acionar as 7 linas e as
60 colunas que formam a matriz, sem contar as outras funes necessrias, como a
comunicao serial.
Quando o microcontrolador tem limitaes na quantidade de pinos de
entradas e sadas para executar uma tarefa, utilizam-se tcnicas de multiplexao.
Essas tcnicas so utilizadas para que se possa transmitir uma quantidade elevada
de dados em uma pequena quantidade de vias ou barramento, diminuindo tambm o
numero das vias e a complexidade do circuito impresso. Apesar das tcnicas
resolverem a limitao do hardware, geram maior complexidade no software de
controle. (LIMA, 2010).
A tcnica utilizada para a expanso de IO foi o emprego de conversores
serias-paralelos. Esta tcnica utilizada para controlar as colunas das matrizes de
lede do painel que no projeto constitudo de 60 colunas, conseqentemente so
necessrios conter 60 pinos de sadas para o acionamento das colunas. O CI
empregado para a funo o TPIC6B595, que um registrador deslocador de 8

50

bits. Na Figura 15 apresentado o diagrama do CI em detalhe. possvel observar


que existe 16 registradores de deslocamento dispostos em 8 na entrada e 8 na
sada.

Figura 15 - Diagrama lgico do TPIC6B595


(TEXAS, 2005)

Os primeiros 8 registradores de deslocamento vo alinhar os dados


referente ao sinal de clock gerado no pino SRCK e o valor de sua sada ser
referente o valor encontrado no pino SER_IN. Os dados vo se alinhando, como se
fosse uma fila at que todos os registradores de deslocamento de entrada estejam
preenchidos. Neste momento, o dado de entrada que era serial est disposto em
paralelo na entrada dos prximos registradores de deslocamento que sero as

51

sadas. Com um pulso no pino RCK o sinal passa para a sada e fica travado nos
registradores de deslocamento da sada at que outro pulso ocorra (TEXAS, 2005).
Na Figura 16 mostrado um diagrama simplificado de como o sinal chega at as
matrizes de leds.

Linhas

Sinal
Serial

Colunas

Figura 16 - Diagrama simplificado das ligaes linha e coluna

Para questes de economia de energia e dimensionamento da fonte de


alimentao do painel de leds, utiliza-se da tcnica de varredura entre as linhas da
matriz. Se todas as linhas e todas as colunas fossem acionadas ao mesmo tempo a
matriz de leds teria 840 leds ligados consumindo uma corrente de 10 mA para cada
led. A fonte de alimentao do painel deveria ser construda para suportar uma
corrente de aproximadamente 8,2 A. Acionando somente uma linha por um perodo,
apenas 120 leds estaro ligados consumindo uma corrente total de 1,2 A.
No instante em que todos os sinais estiverem alinhados nos registradores
de deslocamento de sada do TPIC6B595, o microcontrolador ATMEGA162 dever
acionar a linha correspondente. O acionamento das linhas feito em uma freqncia

52

constante de 100 Hz para cada linha. Os caracteres apresentado na matriz de leds


aparecero estticos para os olhos humanos.
Abaixo listado um trecho do cdigo demonstrando os passos que o
microcontrolador dever fazer para alinhar a informao serial em paralelo como se
fosse uma fila.
/* COLOCA UM BIT 0 NA FILA DO MULTIPLEXADOR VERDE */
void envia_zero_A(void)
{
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERO AO CLOCK
/* SERINA = 0 */
PORTC &= ~_BV(SERINA);
//ZERA O VALOR DA ENTRADA
/* SRCKA = 1 */
PORTC |= _BV(SRCKA);
//SETA O CLOCK
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERA O CLOCK
}
/* COLOCA UM BIT 1 NA FILA DO MULTIPLEXADOR VERDE */
void envia_um_A(void)
{
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERA O CLOCK
/* SERINA = 1 */
PORTC |= _BV(SERINA);
//SERTA O VALOR DA ENTRADA
/* SRCKA = 1 */
PORTC |= _BV(SRCKA);
//SETA O CLOCK
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERA O CLOCK
}
/* COLOCA UM BIT 0 NA FILA DO MULTIPLEXADOR VERMELHO */
void envia_zero_B(void)
{
/* SRCKB = 0 */
PORTC &= ~_BV(SRCKB);
//ZERO AO CLOCK
/* SERINB = 0 */
PORTC &= ~_BV(SERINB);
//ZERA O VALOR DA ENTRADA
/* SRCKB = 1 */
PORTC |= _BV(SRCKB);
//SETA O CLOCK
/* SRCKA = B */
PORTC &= ~_BV(SRCKB);
//ZERA O CLOCK
}
/* COLOCA UM BIT 1 NA FILA DO MULTIPLEXADOR VERMELHO*/
void envia_um_B(void)
{
/* SRCKB = 0 */
PORTC &= ~_BV(SRCKB);
//ZERA O CLOCK
/* SERINB = 1 */
PORTC |= _BV(SERINB);
//SERTA O VALOR DA ENTRADA
/* SRCKB = 1 */
PORTC |= _BV(SRCKB);
//SETA O CLOCK
/* SRCKB = 0 */
PORTC &= ~_BV(SRCKB);
//ZERA O CLOCK
}
/* GERA UM CLOCK PARA APRESENTAR OS BITS EM PARALELO
/ NA SADA DO SHIFT REGISTER VERDE */

53

void rck_A(void)
{
/* RCKA = 0 */
PORTC &= ~_BV(RCKA);
/* RCKA = 1 */
PORTC |= _BV(RCKA);
/* RCKA = 0 */
PORTC &= ~_BV(RCKA);
}

//ZERA O CLOCK
//SETA O CLOCK
//ZERA O CLOCK

/* GERA UM CLOCK PARA APRESENTAR OS BITS EM PARALELO


PARALELO
/ NA SADA DO SHIFT REGISTER VERMELHO */
void rck_B(void)
{
/* RCKB = 0 */
PORTC &= ~_BV(RCKB);
//ZERA O CLOCK
/* RCKB = 1 */
PORTC |= _BV(RCKB);
//SETA O CLOCK
/* RCKB = 0 */
PORTC &= ~_BV(RCKB);
//ZERA O CLOCK
}

4.5.5 Criando os caracteres

Na Figura 17 mostrado um modelo de matriz de led


ledss com 7 linha e 5
colunas, onde somente alguns ponto
pontos
s desta matriz esto ativos formando o caracter
da letra A.

Figura 17 - Diagrama do display mostrando a letra A

Na

Tabela 7 mostrado como se monta a informao binria da matriz, para


aa letra
letra A.
A. A linha 1 corresponde ao bit mais significativo.

54

Tabela 7 - Valores em Bit da letra A

Linha1
Linha2
Linha3
Linha4
Linha5
Linha6
Linha7
Valor Hex

Bit4-Col. 5
0
1
1
1
1
1
1
3F

Bit3-Col. 4
1
0
0
1
0
0
0
48

Bit2-Col. 3
1
0
0
1
0
0
0
48

Bit1-Col. 2
1
0
0
1
0
0
0
48

Bit0-Col. 1
0
1
1
1
1
1
1
3F

Baseado no procedimento acima, todas as letras, nmeros e smbolos da


tabela ASCII foram codificadas para uso no painel. Assim foram criados vrios
vetores individuais para formar os caracteres do alfabeto, organizados na forma de
uma matriz, como apresentado:
u08 __attribute__ ((progmem)) fontes[][5] =
{
{ 0X00, 0X00, 0X00, 0X00, 0X00 },
{ 0X00, 0X00, 0X7D, 0X00, 0X00 },
{ 0X00, 0X70, 0X00, 0X70, 0X00 },
{ 0X14, 0X7F, 0X14, 0X7F, 0X14 },
{ 0X10, 0X2A, 0X6B, 0X2A, 0X04 },
{ 0X08, 0X68, 0X6B, 0X0B, 0X08 },
{ 0X36, 0X49, 0X55, 0X22, 0X05 },
{ 0X00, 0X00, 0X70, 0X00, 0X00 },
{ 0X1C, 0X22, 0X41, 0X41, 0X00 },
{ 0X00, 0X41, 0X41, 0X22, 0X1C },
{ 0X2A, 0X1C, 0X7F, 0X1C, 0X2A },
{ 0X08, 0X08, 0X3E, 0X08, 0X08 },
{ 0X00, 0X02, 0X06, 0X04, 0X00 },
{ 0X08, 0X08, 0X08, 0X08, 0X08 },
{ 0X00, 0X06, 0X06, 0X06, 0X00 },
{ 0X02, 0X04, 0X08, 0X10, 0X20 },
{ 0X3E, 0X45, 0X49, 0X51, 0X3E },
{ 0X11, 0X21, 0X7F, 0X01, 0X01 },
{ 0X21, 0X43, 0X45, 0X49, 0X31 },

//Space
//!
//"
//#
//$
//%
//&
//
//(
//)
//*
//+
//,
////.
///
//0
//1
//2

55

{ 0X22, 0X49, 0X49, 0X49, 0X36 },


{ 0X0C, 0X14, 0X24, 0X7F, 0X04 },
{ 0X7A, 0X49, 0X49, 0X49, 0X46 },
{ 0X3E, 0X49, 0X49, 0X49, 0X26 },
{ 0X60, 0X43, 0X44, 0X48, 0X70 },
{ 0X36, 0X49, 0X49, 0X49, 0X36 },
{ 0X32, 0X49, 0X49, 0X49, 0X3E },
{ 0X00, 0X00, 0X36, 0X00, 0X00 },
{ 0X00, 0X02, 0X36, 0X04, 0X00 },
{ 0X00, 0X08, 0X14, 0X22, 0X41 },
{ 0X14, 0X14, 0X14, 0X14, 0X14 },
{ 0X41, 0X22, 0X14, 0X08, 0X00 },
{ 0X20, 0X40, 0X45, 0X48, 0X30 },
{ 0X3E, 0X41, 0X49, 0X55, 0X38 },
{ 0X3F, 0X48, 0X48, 0X48, 0X3F },
{ 0X7F, 0X49, 0X49, 0X49, 0X36 },
{ 0X3E, 0X41, 0X41, 0X41, 0X22 },
{ 0X7F, 0X41, 0X41, 0X41, 0X3E },
{ 0X7F, 0X49, 0X49, 0X49, 0X41 },
{ 0X7F, 0X48, 0X48, 0X48, 0X40 },
{ 0X3E, 0X41, 0X49, 0X49, 0X2F },
{ 0X7F, 0X08, 0X08, 0X08, 0X7F },
{ 0X00, 0X41, 0X7F, 0X41, 0X00 },
{ 0X0E, 0X01, 0X01, 0X01, 0X7E },
{ 0X7F, 0X08, 0X14, 0X22, 0X41 },
{ 0X7F, 0X01, 0X01, 0X01, 0X01 },
{ 0X7F, 0X20, 0X18, 0X20, 0X7F },
{ 0X7F, 0X20, 0X10, 0X08, 0X7F },
{ 0X3E, 0X41, 0X41, 0X41, 0X3E },
{ 0X3F, 0X48, 0X48, 0X48, 0X30 },
{ 0X3E, 0X41, 0X45, 0X42, 0X3D },
{ 0X7F, 0X48, 0X4C, 0X4A, 0X31 },
{ 0X31, 0X49, 0X49, 0X49, 0X46 },
{ 0X40, 0X40, 0X7F, 0X40, 0X40 },
{ 0X7E, 0X01, 0X01, 0X01, 0X7E },
{ 0X7C, 0X02, 0X01, 0X02, 0X7C },
{ 0X7D, 0X02, 0X04, 0X02, 0X7D },
{ 0X41, 0X22, 0X1C, 0X22, 0X41 },
{ 0X40, 0X20, 0X1F, 0X20, 0X40 },

//3
//4
//5
//6
//7
//8
//9
//:
//;
//<
//=
//>
//?
//@
//A
//B
//C
//D
//E
//F
//G
//H
//I
//J
//K
//L
//M
//N
//O
//P
//Q
//R
//S
//T
//U
//V
//W
//X
//Y

56

{ 0X43, 0X45, 0X49, 0X51, 0X61 },


{ 0X3D, 0X42, 0X45, 0X41, 0X22 },

//Z
//

};

As linhas da matriz esto ordenadas para formar os caracteres da tabela


ASCII e as colunas trazem informaes sobre a formao dos caracteres.

4.5.6 Mostrando uma letra no painel

Aps o recebimento dos caracteres que formam a mensagem esses


caracteres so armazenados em uma matriz. Ento, uma rotinha mostrar os
caracteres no painel de forma que os leds acendam organizadamente. Isto feito
alinhando-se os bits nas colunas e ligando-se a linha correspondente, em um
processo de varredura constante. Este processo feito rapidamente, e o olho
humano, dado a persistncia da viso enxerga a mensagem esttica nos leds.
Abaixo apresentado um trecho do cdigo que executa a varredura.
for(i=0;i<60;i++)
{
//monta verde
if (_verde[59-i] & (bit[linha]
{
envia_um_A();
}
Else
{
envia_zero_A();
}

//faz um loop de 60 colunas


//mostra a matriz verde
& verde)) //Verifica se 1 e verde habilitado
//coloca um na fila da coluna
//se no
//coloca zero na fila da coluna

//monta vermelho
//mostra a matriz vermelha
if (_verm[59-i] & (bit[linha] & verm)) //Verifica
se

1
e
vermelho
habilitado
{
envia_um_B();
//coloca um na fina da coluna
}
Else
//se no
{
envia_zero_B();
//coloca zero na fina da coluna
}
}
rck_A();
//gera um clock para o prximo bit
rck_B();
//gera um clock para o prximo bit
PORTA = _BV(linha);
//liga a linha correspondente
if (linha<7)
//verifica se as 7 linhas foram mostradas
linha++;
//incrementa a linha mostra prxima linha
else
//se no
linha=0;
//zera para mostrar a primeira linha

57

O cdigo supracitado est dentro da interrupo de um dos temporizador


do ATMEGA162 (timer0), o qual executado periodicamente com velocidade
suficiente para que a mensagem no painel aparea esttica aos olhos humanos.

4.5.7 Criando os efeitos da mensagem no painel

Podem ser criados caracteres na cor verde, vermelhas ou ambas, e o


mximo nmero de caracteres que podem ser mostrados ao mesmo tempo so 12,
pois o painel composto por 12 matrizes de 5x7 leds.
Para se conseguir mostrar uma mensagem com mais de 12 caracteres
necessrio uma rotina para o deslocamento dos caracteres ao longo do painel. Alm
disso, pode-se gerar outros efeitos para a apresentao da mensagem. Abaixo
mostrado o trecho de cdigo responsvel pela rotao da mensagem.
if (comando[0] && !F_CONTA_TEMPO)
//SE EXISTE UMA MENSAGEM A SER MOSTRADO
{
FIM_COMANDO=0;
if (x<=MAX)
{
if (coluna<5)
{
if (tipo_cor=='1')
//verde
{
verde = 0xFFFF;
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
FIM_COMANDO=1;
}
else
m_verde[coluna+k]
= (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verm[(coluna+k)] = 0x00;
com_ctl = 0;
}
else
if (tipo_cor=='2')
//vermelho
{
verm = 0xFFFF;
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
FIM_COMANDO=1;
}
else
m_verm[(coluna+k)] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verde[coluna+k]
= 0x00;
com_ctl = 0;
}
else
if (tipo_cor=='3')
//laranja
{

58

verm = 0xFFFF;
verde = 0xFFFF;
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
FIM_COMANDO=1;
}
else
{
m_verde[coluna+k] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verm[(coluna+k)] = (pgm_read_byte(&fontes[comando[x]-0x20][coluna])) &
(0x01<<desloca_linha)-1;
}
com_ctl = 0;
}
else
if (tipo_cor=='4')
//colorido
{
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
m_verm[(coluna+k)] = 0x00;
FIM_COMANDO=1;
}
else
{
m_verde[coluna+k] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verm[(coluna+k)] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
}
com_ctl =1;
vel_efeito = 30;
cont_efeito = 0;
verde = 0x000F;
verm = 0xFFF0;
}
coluna++;
}
else
{
coluna=0;
k+=5;
x++;
}
}
else
{
x=desloca_coluna;
k=0;
if (tipo_movimento=='2')
{
desloca_coluna=0;
if (desloca_linha<7)
desloca_linha++;
else
{
desloca_linha=0;
F_CONTA_TEMPO=1;
}
}
if (tipo_movimento=='3')
{
desloca_coluna=0;
if (desloca_linha>0)
{
desloca_linha--;

59

}
else
{
desloca_linha=7;
F_CONTA_TEMPO=1;
}
}
if (tipo_movimento=='1')
{
desloca_linha=7;
if (desloca_coluna<MAX)
{
if ((desloca_coluna==1) && !F_CONTA_TEMPO)
{
F_CONTA_TEMPO=1;
desloca_coluna++;
}
else
desloca_coluna++;
}
else
{
desloca_coluna=0;
}
}
delay_ms(30);
}
}
else
{
if (F_CONTA_TEMPO)
{
if (conta_tempo_desloca<5000)
conta_tempo_desloca++;
else
{
conta_tempo_desloca=0;
F_CONTA_TEMPO=0;
}
}
}

60

5 R E S U LT A D O S

Os experimentos realizados para validar a flexibilidade da utilizao da


comunicao sem fio para o envio de mensagens atravs de um computador a um
painel de leds. Na Figura 18 possvel ver o painel de led em funcionamento
apresentando a mensagem POS IFSC enviada pelo computador atravs do
mdulo ZigBee conectado a USB. A Figura 19 mostra os componentes soldados no
painel de leds e o mdulo ZigBee incorporado a placa.

Figura 18 - Imagem da parte da frente do Painel de Leds funcionando.

Figura 19 Imagem da parte de traz mostrando os componentes do painel de leds.

61

Primeiramente verificou o alcance do sinal de radio freqncia para o


envio das mensagens. O experimento realizado utilizou dois tipos de ambientes,
fechado e aberto. Para a realizao em ambientes fechado foi criado situao de
trs testes demonstrados abaixo:
1) O primeiro teste foi realizado utilizando o transmissor da mensagem
que o computador e o receptor que o painel de leds no mesmo
ambiente separados por uma distncia de 30 metros.
2) O segundo teste foi realizado colocando o painel de leds em outro
ambiente tendo uma parede como obstculo mecnico entre o painel
de leds e o computador que estaro separados por uma distncia de
30 metros.
3) O terceiro teste foi realizado colocando o painel a uma distncia limite
de comunicao com o computador utilizando uma parede como
obstculo. Esta distncia ser a mxima possvel enquanto o painel
continuar recebendo as mensagens do computador.
Pode-se observar que nos dois primeiros testes a comunicao foi
realizada em 100% das mensagens enviadas para o painel de leds, demonstrando
que pequenos obstculos com uma parede no prejudicam a comunicao entre o
painel de leds e o computador. Para a realizao do terceiro teste foi deslocado o
computador entre outros ambientes fechados at atingir o limite mximo de
comunicao entre o painel de leds e o computador. Este limite foi atingido quando o
comutador se encontrava a uma distancia de 50 metros do painel de leds e tendo
como obstculo trs paredes de alvenaria. Neste momento teve perda de dados
entre o computador e o painel de leds, demonstrando que em ambientes fechados
com diversos obstculos o alcance da comunicao reduzido.

A segunda etapa foi realizada em ambiente aberto para verificar a


distncia mxima de envio de mensagens entre o computador e o painel de leds e a
distncia mxima que uma pessoa poder estar do painel de leds para poder ler a
mensagem apresentada. Nesta etapa o computador foi se afastando do painel de
leds enquanto os testes de envio de mensagens eram realizados a cada 10 metros.
O limite de comunicao entre o painel de leds e o computador atingiu aos 100

62

metros de distncia. Segundo o fabricante do mdulo ZibBee utilizado neste projeto,


o mdulo foi projetado para se comunicar com alcance de aproximadamente 100
metros em ambientes abertos como pode ser demonstrado neste teste.
Para o teste de visualizao da mensagem apresentada no painel de
leds, foram utilizados trs pontos distintos de observao, frontal, 45 graus a direita
e esquerda e 45 graus em baixo do painel de leds. Quando o observador est em
frente ao painel a distncia mxima de leitura da mensagem foi de 20 metros. J
para as outras posies esta distncia foi reduzida a 10 metros devido ao ngulo de
reflexo da luz dos leds que compe o painel ser de 30, favorecendo os
observadores que esto dispostos na frente do painel.

63

6 C O N C L U S O

Este trabalho apresenta o desenvolvimento do hardware, firmware e


software de um produto eletrnico com a capacidade de transmitir mensagens a
longas distncias utilizando radio freqncia e apresent-la em um painel formado
por matrizes de leds.
O

sistema

se

mostrou

funcional

no

apresentou

falhas

de

funcionamento. A utilizao de comunicao wireless facilita a portabilidade e


instalao do equipamento em diversas reas. O painel foi testado dentro de um
prdio, em vrias salas, com diversas distncias, respeitando os 100 metros
recomendado pelo fabricante do mdulo ZigBee. Todos os resultados foram
satisfatrios.

64

7 R E C O M EN D A ES P A R A T R A B A L H O S
FUTURO S

O painel pode ser desenvolvido com um microcontrolador de menor custo,


levando em considerao alguns requisitos como, a quantidade de memria de
programa suficiente para armazenar todo o firmware; a memria RAM, suficiente
para armazenar os vetores gerados; um mdulo de comunicao serial; e pinos de
IO suficientes para troca de informaes com a matriz de leds
Utilizao de comunicao via cabo, atravs da RS485 para longas
distncias. O produto se torna mais barato, mas a instalao tem limitaes em
relao ao meio fsico.
O registrador de deslocamento empregado (TPIC6B595) pode ser
substitudo pelo CD4094 ou 74595. Entretanto, drivers de corrente adequados
devem ser utilizados. Esta mudana pode reduzir o custo do painel.
O software de interface para a criao das mensagens pode ser
melhorado, incluindo diferentes tipos de fonte de texto e mesmo figuras.
O painel pode ser projetado para ser montado em conjunto com outros,
aumentando o nmero de leds (pixeis), permitindo a apresentao de imagens mais
complexas.

65

8 B IB L IO G R A F I A

ADAM ENGST, G. F. (2005). Redes Sem Fio (2 ed.). So Paulo: Makron Books.
ALLIANCE. (fevereiro de 2011). ZigBee Alliance. Acesso em fevereiro de 2011,
disponvel

em

ZigBee

Aliance:

http://www.zigbee.org/About/AboutTechnology/Standards.aspx
ASCII Table and Description . (janeiro de 2010). Acesso em junho de 2011,

disponvel em ASCII Table and Description : www.asciitable.com


ATMEL. (janeiro de 2011). Datasheet microcontrolador ATmega162. Acesso em
janeiro de 2011, disponvel em ATMEL: www.atmel.com
DIGI. (janeiro de 2011). Datasheet Mdulo ZigBee Xbee. Acesso em janeiro de
2011, disponvel em Digi: ftp1.digi.com/support/documentation/90000982_B.pdf
FLOYD, T. L. (2007). Sistemas Digitais Fundamentos e Aplicaes (9 ed.). Porto
Alegre: Bookman 9.
FREESCALE. (Janeiro de 2011). Protocol Stack and Tool ZigBee. Acesso em janeiro
de

2011,

disponvel

em

Freescale:

www.freescale.com/webapp/sps/homepage.jsp?code=802-15-4_HOME
LIMA, C. B. (2010). Tcnicas de Projetos Eletrnicos com os Microcontroladores
AVR (1 ed.). Edio do Autor.

MESSIAS, A. R. (fevereiro de 2008). Controle romoto e aquisio de dados via


XBee/ZigBee.

Acesso

em

fevereiro

de

2011,

disponvel

em

RogerCom:

www.rogercom.com
PEREIRA, F. (2005). Micocontroladores MSP430 - Teoria e Prtica (1 ed.). rica.
PEREIRA, F. (2003). Microcontroladores PIC - Programao em C (7 ed.). So
Paulo: rica.
PINHEIRO, J. M. (Julho de 2004). As Redes com ZigBee. Acesso em janeiro de
2011,

disponvel

em

Projeto

de

Redes:

www.projetoderedes.com.br/artigos/artigo_zigbee.php
SCHILDT, H. (1997). C Completo e Total (3 ed.). So Paulo: Makron Books.
SPALER, K. ([acesso em 2011, maro]). Estudo de Desempenho de uma Rede
ZigBee.

66

TEXAS, I. (maio de 2005). DataSheet TPIC6B595. Acesso em marco de 2011,


disponvel em Texas Instrument: http://focus.ti.com/lit/ds/symlink/tpic6b595.pdf

67

ANEXOS

68

A ne x o A C d i go do P r o g r a m a

#include
#include
#include
#include
#include
#include

<avr/io.h>
<avr/interrupt.h>
<avr/pgmspace.h>
<inttypes.h>
<stdlib.h>
<ctype.h>

typedef unsigned char u08;


#include "delay.h"
#include "uart.h"
#include "fontes.h"
#define XTAL_CPU
#define UART_BAUD_RATE
#define
#define
#define
#define
#define
#define
#define
#define

SERINA
SRCKA
RCKA
SERINB
SRCKB
CLRNA
CLRNB
RCKB

#define
#define
#define
#define
#define
#define
#define
#define

BIT_0
BIT_1
BIT_2
BIT_3
BIT_4
BIT_5
BIT_6
BIT_7

8000000
9600

/* 8Mhz */
/* 9600 baud */

PC0
PC1
PC2
PC3
PC4
PC6
PC5
PC7
0x01
0x02
0x04
0x08
0x10
0x20
0x40
0x80

// com_ctl bits
#define MOSTRA_NUMERO
#define MOSTRA_LD
#define MOSTRA_ACUM
#define MOSTRA_PAGAR
#define MOSTRA_SERV
#define MOSTRA_BINGO
#define CRC
#define NUM_INVALIDO

0
1
2
3
4
5
6
7

/* variaveis globais */
u08 bit[7] = { 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
u08 algs[8]; /**< matriz com os algarismos do valor */
u08 algs_f[8]; /**< matriz com os algarismos do valor final*/
u08 linha; /**< posicao da linha na varredura da matriz */
u08 pos; /**< posicao da coluna na montagem da matriz */
u08 cont_vel,cont_efeito,efeito; /**< velocidado da contagem e do efeito */
int cor,verde,verm; /**< cores */
u08 inicio,fim;
u08 i; /**< contador universal em lacos for */
u08 transicao;/**< posicao da transicao */
u08 tran_ctl; /**< controle do efeito de transicao */
u08 pos_alg; // posicao do algarismo a ser incrementado
u08 vel_cont,vel_cont1;
unsigned int vel_efeito,vel_efeito_ac,vel_efeito_tf;
unsigned char comando[60]; /*< buffer do comando recebido >*/
int com_crc; /**< CRC do comando recebido */
int calc_crc; /**< CRC calculado do comando recebido */
u08 com_ctl; /**< controle do comando recebido */
u08 contagem; /** < flag de contagem */
long valor;
int k;
int j;

69
int x;
u08 m_verde[60]; /**< matriz frame verde */
u08 m_verm[60]; /**< matriz frame verde */
long int conta_tempo_desloca=0;
int
F_CONTA_TEMPO=0;
char FIM_COMANDO=0;
int teste=0;
//char _verde=*m_verde;
unsigned char *_verde=m_verde;
unsigned char *_verm=m_verm;
int desloca_coluna=0;
int desloca_linha=0;
unsigned
unsigned
unsigned
unsigned

char
char
char
char

tipo_cor;
tipo_movimento;
MAX=0;
coluna=0;

/* Prototipos de funcoes */
void envia_zero_A(void);
void envia_um_A(void);
void envia_zero_B(void);
void envia_um_B(void);
void rck_A(void);
void rck_B(void);
void
void
void
void

clear_A_on(void);
clear_A_off(void);
clear_B_on(void);
clear_B_off(void);

void mostra_frame_verde(unsigned char *_verde);


void mostra_frame_verm(unsigned char *_verm);
void mostra_frame(unsigned char *buffer_verde, unsigned char *buffer_verm);
long power(long x, long y);
void monta_matriz_valor(unsigned char buffer[],char tipo_efeito);
void recebe_comando(void);
int calcrc(char *ptr, int count);
void marca_zero(void);
void compara_algs(void);
/* COLOCA UM BIT 0 NA FILA DO MULTIPLEXADOR VERDE */
void envia_zero_A(void)
{
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERO AO CLOCK
/* SERINA = 0 */
PORTC &= ~_BV(SERINA);
//ZERA O VALOR DA ENTRADA
/* SRCKA = 1 */
PORTC |= _BV(SRCKA);
//SETA O CLOCK
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERA O CLOCK
}
/* COLOCA UM BIT 1 NA FILA DO MULTIPLEXADOR VERDE */
void envia_um_A(void)
{
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERA O CLOCK
/* SERINA = 1 */
PORTC |= _BV(SERINA);
//SERTA O VALOR DA ENTRADA
/* SRCKA = 1 */
PORTC |= _BV(SRCKA);
//SETA O CLOCK
/* SRCKA = 0 */
PORTC &= ~_BV(SRCKA);
//ZERA O CLOCK
}
/* COLOCA UM BIT 0 NA FILA DO MULTIPLEXADOR VERMELHO */
void envia_zero_B(void)
{
/* SRCKB = 0 */

70
PORTC &= ~_BV(SRCKB);
/* SERINB = 0 */
PORTC &= ~_BV(SERINB);
/* SRCKB = 1 */
PORTC |= _BV(SRCKB);
/* SRCKA = B */
PORTC &= ~_BV(SRCKB);

//ZERO AO CLOCK
//ZERA O VALOR DA ENTRADA
//SETA O CLOCK
//ZERA O CLOCK

}
/* COLOCA UM BIT 1 NA FILA DO MULTIPLEXADOR VERMELHO*/
void envia_um_B(void)
{
/* SRCKB = 0 */
PORTC &= ~_BV(SRCKB);
//ZERA O CLOCK
/* SERINB = 1 */
PORTC |= _BV(SERINB);
//SERTA O VALOR DA ENTRADA
/* SRCKB = 1 */
PORTC |= _BV(SRCKB);
//SETA O CLOCK
/* SRCKB = 0 */
PORTC &= ~_BV(SRCKB);
//ZERA O CLOCK
}
/* GERA UM CLOCK PARA APRESENTAR OS BITS EM PARALELO
/ NA SADA DO SHIFT REGISTER VERDE */
void rck_A(void)
{
/* RCKA = 0 */
PORTC &= ~_BV(RCKA);
//ZERA O CLOCK
/* RCKA = 1 */
PORTC |= _BV(RCKA);
//SETA O CLOCK
/* RCKA = 0 */
PORTC &= ~_BV(RCKA);
//ZERA O CLOCK
}
/* GERA UM CLOCK PARA APRESENTAR OS BITS EM PARALELO
/ NA SADA DO SHIFT REGISTER VERMELHO */
void rck_B(void)
{
/* RCKB = 0 */
PORTC &= ~_BV(RCKB);
//ZERA O CLOCK
/* RCKB = 1 */
PORTC |= _BV(RCKB);
//SETA O CLOCK
/* RCKB = 0 */
PORTC &= ~_BV(RCKB);
//ZERA O CLOCK
}
void clear_A_off(void)
{
/* CLRNA = 1 */
PORTC |= _BV(CLRNA);
}
void clear_A_on(void)
{
/* CLRNA = 0 */
PORTC &= ~_BV(CLRNA);
}
void clear_B_off(void)
{
/* CLRNA = 1 */
PORTC |= _BV(CLRNB);
}
void clear_B_on(void)
{
/* CLRNB = 0 */
PORTC &= ~_BV(CLRNB);
}
void mostra_frame_verm(unsigned char *_verm)
{
for (linha=0;linha<7;linha++)
{
for(i=teste;i<60;i++)

71
{
if (_verm[59-i] & (bit[linha] & verm))
{
envia_um_B();
}
else
{
envia_zero_B();
}
}
rck_A();
rck_B();
PORTA = _BV(linha);
}
}

unsigned char inc_num(unsigned char numero, unsigned char limite)


{
if ((numero+1)>limite)
return 0;
else
return (numero+1);
}
void copia_buffer(unsigned char buffer_origem[], unsigned char buffer_dest[])
{
for(i=0;i<60;i++)
{
buffer_dest[i] = buffer_origem[i];
}
}
void recebe_comando(void)
{
unsigned int c;
unsigned char j;
j = 0;
c = uart_getc();
if ((unsigned char)c == '[')
// VERIFICA SE INICIO DE COMANDO
{
c = uart_getc();
while((unsigned char)c != ']')
// AGUARDA O FIM DO COMANDO
{
if ((unsigned char) c )
// VERIFICA SE UM DADO VALIDO
{
if (j==0)
tipo_cor = (unsigned char)c;//SE O PRIMEIRO BYTE DEFINE A COR
else
if (j==1)
tipo_movimento = (unsigned char)c; //SEGUNDO BYTE DEFINE O MOVIMENTO
else
comando[j-2] = (unsigned char)c;
//OS OUTROS BYTES DEFINEM A
MENSAGEM
j = inc_num(j,60);
//VERIFICA SE A MENSAGEM CHEGOU NO MXIMO
}
c = uart_getc();
//RECEBE O PROXIMO BYTE
}
conta_tempo_desloca=5000;
//REINICIALIZA O TEMPO PARA MOSTRAR NO DISPLAY
if ((j-2)>=12)
{
MAX=j-2;
}
else
{
MAX=12;
while((j-2)<=12)
{
comando[j-2]=' ';
j++;
}
}
}

//SE A MENSAGEM FOR MAIOR DO QUE 12


//PEGA O TAMANHO MXIMO DA MENSAGEM
//SE NAO
//ASSUME A MENSAGEM COM 12 BYTES
//PREENCHE O RESTANTE COM ESPAO

72
else
{
uart_putc((unsigned char)c);
}
}
int calcrc(char *ptr, int count)
{
int crc;
char i;
crc = 0;
while (--count >= 0)
{
crc = crc ^ (int) *ptr++ << 8;
i = 8;
do
{
if (crc & 0x8000)
crc = crc << 1 ^ 0x1021;
else
crc = crc << 1;
}
while(--i);
}
return (crc);
}
/* INTERRUPO DO TIMER 0 */
ISR (TIMER0_OVF_vect)
{
clear_A_off();
clear_B_off();
for(i=0;i<60;i++)
{
//MONTA A MATRIZ VERDE
if (_verde[59-i] & (bit[linha] & verde)) //SE O BIT 1 E VERDE
{
envia_um_A();
//ENVIA UM PARA O DISPLAY
}
else
//SE NAO
{
envia_zero_A();
//ENVIA ZERO PARA O DISPLAY
}
//MONTA A MATRIZ VERMELHA
if (_verm[59-i] & (bit[linha] & verm))
{
envia_um_B();
}
else
{
envia_zero_B();
}
}
rck_A();
rck_B();
PORTA = _BV(linha);
if (linha<7)
linha++;
else
linha=0;

//SE O BIT 1 E VERMELHO


//ENVIA UM PARA O DISPLAY
//SE NAO
//ENVIA ZERO PARA O DISPLAY

//MOSTRA OS BYTES NA SAIDA DO SHIFT REGISTER


//MOSTRA OS BYTES NA SAIDA DO SHIFT REGISTER
//LIGA A LINHA
//INCREMENTA A PRXIMA LINHA

if ((++cont_efeito == vel_efeito) && com_ctl)


//MOSTRA O EFEITO DE CORES NO DISPLAY
{
cont_efeito = 0;
//REINICIALIZA O TEMPO
verde = 0xFF0F >> cor;
//DESLOCA OS BYTES A SEREM MOSTRADOS VERDE
verm = 0x0FF0 >> cor;
//DESLOCA OS BYTES A SEREM MOSTRADOS VERMELHO
cor = inc_num(cor,8);
//INCREMENTA A LINHA
}
}
void delay_ms(int _delay_ms)
{

73
int i;
while(_delay_ms--)
{
for (i=0; i<1330; i++)
{
asm volatile("nop\n\t"::);
}
}
}
int main(void)
{
/* Inicia a configuracao do ATMEGA 162 */
CLKPR=0x80;
CLKPR=0x00;
TCCR0 = (1<<CS01) | (1<<CS00);
TIMSK = 1<<TOIE0;
/* Configura portas de saida */
/* configura PORT A como saida */
DDRA=0XFF;
/* Linhas da matrix de LEDS */
/* configura PORT C como saida */
DDRC=0XFF;
/* Sinais SERINA SRCKA RCK SERINB SRCKA RCK */
/* configura PORT D como saida */
DDRD=0XFF;
/* Desliga saidas porta C */
PORTC=0X00;
/*Desliga linhas da matriz */
PORTA=0X00;
verde = 0x8FC7;
verm = 0xF1F8;
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,XTAL_CPU) );
marca_zero();
//verde = 0xFFFF;
//verm = 0xFFFF;
verde = 0xFF0F;
//habilita qual linha ser ligada no verde
verm = 0x0FF0;
//habilita qual linha ser ligada no vermelho
if ( bit_is_set(com_ctl,MOSTRA_SERV) )
{
for(i=0;i<60;i++)
{
m_verde[i] = 0x00; //pgm_read_byte(&servico[i]);
m_verm[i] = 0x00; //pgm_read_byte(&servico[i]);
}
}
//INICIALIZA O COMANDO COM UMA MENSAGEM
tipo_cor='4';
//COR RANDOMICA
tipo_movimento='2';
//DESLOCAMENTO PARA CIMA
comando[0]=' ';
comando[1]=' ';
comando[2]='P';
comando[3]='O';
comando[4]='S';
comando[5]=' ';
comando[6]='I';
comando[7]='F';
comando[8]='S';
comando[9]='C';
comando[10]='\0';
MAX=12;
sei(); // desabilita interrupcoes
x=0;

74
coluna=0;
k=0;
for(;;)
{
if (comando[0] && !F_CONTA_TEMPO)
//SE EXISTE UMA MENSAGEM A SER MOSTRADO
{
FIM_COMANDO=0;
if (x<=MAX)
{
if (coluna<5)
{
if (tipo_cor=='1')
//verde
{
verde = 0xFFFF;
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
FIM_COMANDO=1;
}
else
m_verde[coluna+k]
= (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verm[(coluna+k)] = 0x00;
com_ctl = 0;
}
else
if (tipo_cor=='2')
//vermelho
{
verm = 0xFFFF;
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
FIM_COMANDO=1;
}
else
m_verm[(coluna+k)] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verde[coluna+k]
= 0x00;
com_ctl = 0;
}
else
if (tipo_cor=='3')
//laranja
{
verm = 0xFFFF;
verde = 0xFFFF;
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
FIM_COMANDO=1;
}
else
{
m_verde[coluna+k] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verm[(coluna+k)] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
}
com_ctl = 0;
}
else
if (tipo_cor=='4')
//colorido
{
if (comando[x]=='\0' || FIM_COMANDO)
{
m_verde[coluna+k]
= 0x00;
m_verm[(coluna+k)] = 0x00;
FIM_COMANDO=1;
}
else
{
m_verde[coluna+k] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
m_verm[(coluna+k)] = (pgm_read_byte(&fontes[comando[x]0x20][coluna])) & (0x01<<desloca_linha)-1;
}

75
com_ctl =1;
vel_efeito = 30;
cont_efeito = 0;
verde = 0x000F;
verm = 0xFFF0;
}
coluna++;
}
else
{
coluna=0;
k+=5;
x++;
}
}
else
{
x=desloca_coluna;
k=0;
if (tipo_movimento=='2')
{
desloca_coluna=0;
if (desloca_linha<7)
desloca_linha++;
else
{
desloca_linha=0;
F_CONTA_TEMPO=1;
}
}
if (tipo_movimento=='3')
{
desloca_coluna=0;
if (desloca_linha>0)
{
desloca_linha--;
}
else
{
desloca_linha=7;
F_CONTA_TEMPO=1;
}
}
if (tipo_movimento=='1')
{
desloca_linha=7;
if (desloca_coluna<MAX)
{
if ((desloca_coluna==1) && !F_CONTA_TEMPO)
{
F_CONTA_TEMPO=1;
desloca_coluna++;
}
else
desloca_coluna++;
}
else
{
desloca_coluna=0;
}
}
delay_ms(30);
}
}
else
{
if (F_CONTA_TEMPO)
{
if (conta_tempo_desloca<5000)
conta_tempo_desloca++;
else
{
conta_tempo_desloca=0;
F_CONTA_TEMPO=0;
}
}
}

76
recebe_comando();
} /* end for */
} /* end main */

77

A n e x o B E s q u e m t i c o d o P a in e l d e M a t r i z d e L e d

78

79

80

Anexo C Shift Register TPIC6B595

81

Anexo D Microcontrolador ATmega162

82

Anexo E DataSheet Mdulo XBee-Pro da Digi

83

84

A n e x o F D a t a s h e e t d a n a t r iz d e le d

Você também pode gostar