Vous êtes sur la page 1sur 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 uses the made of 7 rows of the and 60 columns, where vision to created in a form the each LED the is a point in the matrix. The system turns on the LEDs of the LED through the online scan and persistence are words on the alphanumeric and data, the display. Messages software installed on a computer

transmitted wireless to

panel LEDs. When

panel receives

process and display the message correctly. Key words: Wireless, ZigBee e Matrix Led.

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
1.1 1.2 1.2.1 1.2.2 1.3

INTRODUO ................................................................................. 12
Tema e Problema da Pesquisa ....................................................................... 12 Objetivos.......................................................................................................... 13 Objetivo Geral ............................................................................................... 13 Objetivos Especficos .................................................................................... 13 Justificativa ...................................................................................................... 14

2
2.1 2.2

MICROCONTROLADORES ............................................................ 15
Arquitetura ....................................................................................................... 16 Memrias ......................................................................................................... 17 Memria de Programa ................................................................................... 17 Memria de Dado e RAM .............................................................................. 18 Memrias de Armazenamento ...................................................................... 18 Linguagem de programao (Firmware) ......................................................... 18 Microcontrolador ATMEGA162........................................................................ 19 Caractersticas do ATmega162 ..................................................................... 19 Perifricos do ATmega162 ............................................................................ 20

2.2.1 2.2.2 2.2.3 2.3 2.4 2.4.1 2.4.2

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

3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.2 3.3 3.3.1 3.3.2 3.3.3 3.4 3.4.1 3.4.2 3.4.3

Tipos de redes sem fio .................................................................................... 23 IEEE 802.15.1 WPAN Bluetooth ................................................................... 23 IEEE 802.15.2 WPAN Coexistence ............................................................... 24 IEEE 802.15.3 WPAN Alta Velocidade ......................................................... 24 IEEE 802.15.4 WPAN Baixa Velocidade....................................................... 24 ZigBee Aliance ................................................................................................ 25 Tipos de Dispositivos....................................................................................... 26 Coordenador ZigBee ..................................................................................... 26 Roteador ZigBee ........................................................................................... 26 Dispositivo Final ............................................................................................ 26 Topologia das redes ZigBee............................................................................ 27 Topologia Estrela .......................................................................................... 28 Topologia rvore ........................................................................................... 28 Topologia Malha ............................................................................................ 29

4
4.1

DESENVOLVIMENTO ..................................................................... 30
Protocolo de Comunicao Serial ................................................................... 31 Modelo do Protocolo ..................................................................................... 31 Tabela ASCII ............................................................................................... 32 Byte de escrita ou leitura do painel ............................................................. 33 Inicio e fim do protocolo .............................................................................. 33 Quantidade de Bytes transmitidos .............................................................. 33 Tipo de apresentao da mensagem .......................................................... 33 Cor de apresentao da mensagem ........................................................... 34 Mensagem................................................................................................... 34 Exemplo de escrita de mensagem .............................................................. 35 Exemplo de leitura da mensagem ............................................................... 35

4.1.1 4.1.1.1 4.1.1.2 4.1.1.3 4.1.1.4 4.1.1.5 4.1.1.6 4.1.1.7 4.1.1.8 4.1.1.9 4.2 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5

Software computador ...................................................................................... 36 Mdulo XBee ................................................................................................... 37 Comandos do Mdulo XBee ......................................................................... 39 ATDL ............................................................................................................. 39 ATMY ............................................................................................................ 40 ATWR ............................................................................................................ 40 ATCN ............................................................................................................. 40

4.3.6 4.3.7 4.3.8 4.3.9 4.4 4.5 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7

ATNI .............................................................................................................. 40 ATVR ............................................................................................................. 40 ATBD ............................................................................................................. 41 Programa de configurao ............................................................................ 41 Painel de Leds ................................................................................................. 43 Hardware ......................................................................................................... 44 Microcontrolador ............................................................................................ 44 Velocidade de operao (clock) .................................................................... 44 Comunicao serial RS232 ........................................................................... 45 Dispositivos de Entrada e Sada ................................................................... 49 Criando os caracteres ................................................................................... 53 Mostrando uma letra no painel ...................................................................... 56 Criando os efeitos da mensagem no painel .................................................. 57

5 6 7 8

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 de Programa

Memria EEPROM

Memria RAM

CPU

Barramento

Temporizador Contador

Interface de Entrada e Sada

Interface Serial

A/D

Comparador

PWM

Figura 1 - Estrutura de um microcontrolador. (LIMA, 2010)

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 Programa

Endereos Instrues

CPU

Memria de Dados

Endereos Instrues

Figura 3 - Arquitetura Harvard. (LIMA, 2010)

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 Computador

RS232 (USB)

Mdulo XBee Coordenador

wireless

Mdulo XBee Disp. Final

Painel de leds Mostra a mensagem visual

Multiplexao de IO

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 Bytes

1 1

2 1

3 8

4 1

5 2

6 T

7 E

8 S

9 T

10 11 12 13 14 15 16 17 18 19 E D E E N V I O

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

1 2

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

N Bytes Bytes

1 2

2 1

3 8

4 1

5 2

6 T

7 E

8 S

9 T

10 11 12 13 14 15 16 17 18 19 E D E E N V I O

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 1 2 3 4 5 6 7 8 9 10 11

Funo VCC DOUT DIN DO8 RESET PWM0/RSSI PWM1 NC DTR GND AD4

Descrio Entrada positiva de alimentao Sada de dados serial Entrada de dados serial Sada de dados digital Reset do mdulo ZigBee Sada PWM ou sinal de potncia Sada de PWM Reservado Pino de controle Pino de referencia da alimentao Entrada analgica

39

12 13 14 15 16 17 18 19 20

CTS ON Vref AD5 RTS AD3 AD2 AD1 AD0

Pino de controle Estado do mdulo Entrada de referencia para entrada AD Entrada analgica Pino de controle Entrada analgica Entrada analgica Entrada analgica 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 dispositivo final Serial RX Serial TX ATMega162 Drive Corrente Sinal Serial Serial Paralelo Sinal Paralelo

Sinal para acionar as linhas

Microcontrolador

Drive das linhas

Serial 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 //8Bits, 1 stop UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0);

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 leds s 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 a a 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 e 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 #define #define #define #define #define #define #define #define SERINA SRCKA RCKA SERINB SRCKB CLRNA CLRNB RCKB BIT_0 BIT_1 BIT_2 BIT_3 BIT_4 BIT_5 BIT_6 BIT_7 PC0 PC1 PC2 PC3 PC4 PC6 PC5 PC7 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 0 1 2 3 4 5 6 7 8000000 9600 /* 8Mhz */ /* 9600 baud */

// 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

/* 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); } /* 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++) //ZERO AO CLOCK //ZERA O VALOR DA ENTRADA //SETA O CLOCK //ZERA O CLOCK

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

Vous aimerez peut-être aussi