Você está na página 1de 42

UNIVERSIDADE FEDERAL DO PARAN DEPARTAMENTO DE ENGENHARIA ELTRICA CURSO DE ENGENHARIA ELTRICA

BRUNO RICARDO DIAS FELIPE LUIS JAREK

SISTEMA EMBARCADO PARA PROCESSAMENTO DE IMAGENS

CURITIBA 2011

BRUNO RICARDO DIAS FELIPE LUIS JAREK

SISTEMA EMBARCADO PARA PROCESSAMENTO DE IMAGENS

Trabalho de Concluso de Curso de Engenharia Eltrica, Departamento de Engenharia Paran. Orientadora: Profa. Dra Giselle Lopes Ferrari Eltrica, Setor de Tecnologia, Universidade Federal do

CURITIBA - 2011
2

BRUNO RICARDO DIAS FELIPE LUIS JAREK

SISTEMA EMBARCADO PARA PROCESSAMENTO DE IMAGENS

TRABALHO APRESENTADO AO CURSO DE ENGENHARIA ELTRICA, DA UNIVERSIDADE FEDERAL DO PARAN, COMO REQUISITO OBTENO DO TTULO DE GRADUAO.

COMISSO EXAMINADORA PROF. DRA. GISELLE LOPES FERRARI UFPR PROF. M.SC. ADEMAR LUIZ PASTRO UFPR PROF. DR. ALESSANDRO ZIMMER UFPR

CURITIBA, FEVEREIRO DE 2011.

AGRADECIMENTOS Agradecemos a Deus que nos deu a vida e as oportunidades que no decorrer de nossas histrias nos trouxeram at aqui. A nossas famlias que torcem pela nossa felicidade e nosso sucesso e nos acompanham nessa caminhada suportando junto s dificuldades que nos so impostas. Aos nossos professores que ao dedicarem sua vida a educao esto diretamente dedicando suas vidas para que o mundo melhore. Aos nossos amigos que compreenderam nossas faltas que os estudos exigiram de ns. A professora Giselle que teve pacincia e disposio em nos orientar neste projeto mesmo sabendo das nossas limitaes. A todos nosso sincero muito obrigado! Que Deus os abenoe!

Bruno Ricardo Dias e Felipe Luis Jarek


4

RESUMO Sistemas embarcados e comunicao USB so dois tpicos estudados em larga escala no contexto da eletrnica. Este projeto tenta unir estes dois ao processamento de imagens, ou seja, conceber um dispositivo que seja capaz de se comunicar via protocolo USB com um PC. Neste projeto teremos um microcontrolador responsvel pela parte de processamento, e no PC uma interface que nos possibilite visualizar os resultados. um projeto piloto, por isso ainda h muito o que melhorar e corrigir, mas um primeiro passo que pode motivar outros a darem continuidade. Neste caso a tentativa foi de processar imagens, porem um trabalho que possui grande versatilidade em se tratando de processamento embarcado, pois desde que o microcontrolador suporte as demandas do processamento, qualquer outro tipo de dado pode ser processado.

Palavras chave: USB, microcontrolador, processamento.

ABSTRACT

Embedded systems and USB communications are two topics widely studied in the context of electronics. This project attempts to join these two characteristics and image-processing, and create a device that is able to communicate via USB protocol with a PC. In this project we will have a microcontroller responsible for the processing part, and a PC interface that enables us to visualize the results. It is a pilot project, so there is still much to improve and correct, but it is a first step that could motivate others to give continuity. In this case the attempt was to render images, but is a job that has great versatility when it comes to on-board processing, as long as the microcontroller support the demands of processing, any other type of data can be processed.

Keywords: USB, microcontroller, processing.

SUMRIO

INTRODUO ........................................................................................... 11
1.1 1.2 JUSTIFICATIVA ............................................................................................................. 11 OBJETIVO ..................................................................................................................... 12

CONCEITOS ............................................................................................. 13
2.1 2.2 2.3 USB .............................................................................................................................. 13 MICROCONTROLADOR ................................................................................................ 17 PROCESSAMENTO DIGITAL DE IMAGENS .................................................................... 19

DESENVOLVIMENTO DO DISPOSITIVO ................................................. 21


3.1 HARDWARE ................................................................................................................. 21 PIC18F4550.......................................................................................................... 21 CONFECO DA PLACA ....................................................................................... 22

3.1.1 3.1.2 3.2 3.3

FIRMWARE .................................................................................................................. 26 INTERFACE GRFICA .................................................................................................... 31

4 5 6

RESULTADOS .......................................................................................... 33 CONCLUSES .......................................................................................... 34 APRIMORAMENTOS ................................................................................ 35


6.1 6.2 PIC DA FAMLIA 32F..................................................................................................... 35 MEMRIA FLASH EXTERNA ......................................................................................... 35

7 8 9

BIBLIOGRAFIA .......................................................................................... 36 ANEXO I Firmware (main.c) ................................................................... 39 ANEXO II - Gravador de PIC ICD2 Clone .................................................. 42

LISTA DE ILUSTRAES

Ilustrao 1: Modelos de conectores USB ....................................................... 16 Ilustrao 2: Diagrama de pinos: 1=Vcc / 2=D- / 3=D+ / 4=GND ..................... 16 Ilustrao 3: Diagrama de blocos de um circuito com microprocessador......... 17 Ilustrao 4: Diag. de blocos com itens que o microcontrolador disponibiliza. . 18 Ilustrao 5: Imagem em tons de cinza e seu respectivo histograma .............. 20 Ilustrao 6: Pinagem do PIC18F4550............................................................. 22 Ilustrao 7: Esquemtico do dispositivo. ....................................................... 23 Ilustrao 8: Netlist e visualizao 3D de componentes .................................. 23 Ilustrao 9: Arranjo dos componentes e trilhas............................................... 24 Ilustrao 10: Arranjo da placa em 3D ............................................................. 24 Ilustrao 11: Foto da placa depois de confeccionada..................................... 25 Ilustrao 12: Fluxograma de tarefas do microcontrolador .............................. 27 Ilustrao 13: Dispositivo USB reconhecido ..................................................... 28 Ilustrao 14: Fluxograma de aes da interface grfica ................................. 31 Ilustrao 15: Interface Grfica ........................................................................ 32 Ilustrao 16: Gravador de PIC ICD2 Clone .................................................... 42

LISTA DE TABELAS

Tabela 1: Lista de componentes ...................................................................... 25 Tabela 2: Trecho de cdigo: Lao principal. ..................................................... 29 Tabela 3: Trecho de cdigo: Funes de transferncia de dados .................... 30

LISTA DE SIGLAS

AD - Analgico/Digital CDC - Comunication Device Class CI - Circuito Integrado CPU - Central Processing Unit DA - Digital/Analgico DIN - Modelo de conector EEPROM - Electrically-Erasable Programmable Read-Only Memory HID - Human Interface Device I/O - Input/Output LED - Light Emitting Diode MIPS - Milhes de Instrues por Segungo PC - Personal Computer PDA - Personal Digital Assistant PDI - Processamento Digital de Imagem PID - Product Identification PnP - Plug and Play PS2 - Modelo de conector RAM - Random Access Memory ROM - Read Only Memory SD - Storage Device USB - Universal Serial Bus USB OTG - Universal Serial Bus On-The-Go VID - Vendor Identification

10

1 INTRODUO

Sistemas embarcados cada vez mais tomam espao em uma infinidade de contextos e incontveis aplicaes. So sistemas inteligentes portteis, ou ento que so parte de um outro equipamento maior, no havendo mais a necessidade de se ter um PC para constituir a parte de processamento de um sistema. Por isso cada vez mais se desenvolvem microprocessadores e microcontroladores que so os principais agentes destes tipos de sistema. Como estes componentes trabalham com sinais digitais, da tambm a grande convergncia que existe hoje de se trabalhar com estes, pois todo processamento requer a digitalizao de sinais caso os mesmos no o sejam. Uma caracterstica quase que geral destes sistemas, que de alguma forma h a possibilidades de se comunicarem com um PC, seja para transferncia de dados, configuraes, ou ento para que possa se obter alguma visualizao por uma interface grfica que s um computador pode oferecer. 1.1 JUSTIFICATIVA Os principais motivos que nos levaram a trabalhar sobre este projeto foram: Trabalhar tanto em hardware como em software, o que nos faria adquirir conhecimento e experincia prtica nesse mbito; Ampliar os conhecimentos em sistemas embarcados, em especial no trabalho com microcontroladores que por sua versatilidade e variedade permite vrias reas de estudo e aplicao; Desenvolver a capacidade de programao, no nosso caso com a linguagem C; Pesquisar sobre tratamento digital de imagens com estudos direcionados aplicao;

11

Aprimorar e aplicar conhecimento sobre comunicao via USB (Universal Serial Bus), protocolo para o qual a maioria dos equipamentos tem convergido.

1.2

OBJETIVO Unindo as justificativas citadas anteriormente em um nico trabalho,

tivemos por objetivo desenvolver um equipamento que nos levasse a trabalhar nestas questes. Sendo assim, colocando em tpicos, podemos considerar nossos objetivos como sendo: Desenvolver uma placa microprocessada com interface de comunicao USB; Estabelecer a comunicao entre um microcontrolador e um PC via protocolo USB; Implementar uma ferramenta de processamento de imagens: um programa para obter o histograma de uma imagem, elaborado em linguagem C; Tornar um microcontrolador capaz de processar imagens.

12

2 CONCEITOS
Neste captulo explanaremos a respeito de alguns conceitos que nos foram necessrios adquirir conhecimento ao longo deste projeto. 2.1 USB As principais caractersticas que hoje levam a maioria dos equipamentos a possurem integrados um mdulo de comunicao USB so a facilidade na utilizao, a confiabilidade na transmisso de dados, a boa velocidade de comunicao, a versatilidade que esta interface possui, o padro PnP (plug and play), ou seja, a capacidade de se conectar a outro equipamento sem que o mesmo precise ser desligado. Tudo isso faz com que o USB possa ser utilizado por qualquer pessoa na instalao de perifricos. Porm toda essa facilidade existente para o usurio destes equipamentos no acontece para o desenvolvedor como poderemos ver a partir das caractersticas tcnicas que seguem descritas. Um sistema de comunicao USB composto por 3 mdulos: interconexo, dispositivo, e host. O primeiro o modo como os dispositivos USB se conectam ao host, levando em considerao alguns aspectos como a topologia do barramento, a relao entre as camadas (capacidade de cada tarefa ser executada dentro da pilha USB), o modo de fluxo de dados dentro do sistema sobre o protocolo USB, e a rede fsica que utiliza topologia estrela onde cada HUB o centro de uma estrela e host e hub se conectam ponto a ponto. H somente um host no barramento USB (chamado Host Controller). Este pode ser feito atravs de hardware, firmware ou software. Existem dispositivos USB do tipo Hub e do tipo Funes. Hubs servem para disponibilizar pontos extras de acesso a rede USB. As funes disponibilizam novas capacidades ao sistema, como exemplo controle de games, caixas de som, etc.

13

Um dispositivo USB pode ser alimentado por duas formas: Self-powered, quando um dispositivo tem fonte prpria; Bus-powered, quando a alimentao ocorre pelo barramento. As configuraes de velocidade que o USB possui so: High-Speed 480 Mbps Full-Speed 12 Mbps Low-Speed 1,5 Mbps A comunicao USB pode ser feita por meio de trs mtodos. So eles: CDC (Comunication Device Class) consiste em um driver que emula uma porta serial, assim se estabelece uma comunicao entre o PC e o microcontrolador como se a porta USB fosse uma porta serial padro. Esta a forma mais simples de comunicao por USB, porm com uma velocidade baixa, em torno de 115kbps. HID (Human Interface Device) faz com que um dispositivo USB, neste caso um microcontrolador, possa ser reconhecido automaticamente por qualquer sistema operacional (Windows, Linux, etc.), sem a necessidade de um driver prprio para o caso. A velocidade de comunicao neste caso limitada a 64kB/s. Bulk a forma de comunicao de maior velocidade, porm este o mtodo mais complexo, pois trata-se de um driver customizado. Neste mtodo h o envio de dados em massa por meio de uma transferncia sequencial. A velocidade neste caso limitada pela prpria interface USB 2.0, que de 480Mbps. Impressoras e Scanners trabalham desta forma. USB possui vantagens e limitaes como pode se ver a seguir. Vantagens: Fcil conexo e configurao do dispositivo;
14

Rpida interface; Baixa taxa de erros; Versatilidade; Baixo custo; Pode servir como fonte de alimentao; Suporta grande parte dos sistemas operacionais

Limitaes: Cabo no deve ter mais de 5 metros de comprimento; Broadcasting: A porta USB no pode enviar dados simultaneamente para dispositivos diferentes. O host s manda mensagens para cada dispositivo individualmente; Dispositivos USB so bem mais complexos para desenvolvedor se comparados a dispositivos de comunicao serial.

A interconexo de um sistema USB realizada atravs de portas padronizadas, que so exibidas na figura a seguir.

15

Ilustrao 1: Modelos de conectores USB. Como pode ser observado na figura acima, h quatro modelos de conectores USB. Neste trabalho para conexo do dispositivo, foi usado o conector tipo B, enquanto que para a conexo com o host (PC) o conector deve ser do tipo A, que o conector padro para computadores. Na figura abaixo podemos visualizar mais claramente a disposio dos pinos dos conectores.

Ilustrao 2: Diagrama de pinos: 1=Vcc / 2=D- / 3=D+ / 4=GND.

16

2.2

MICROCONTROLADOR Para entender um microcontrolador podemos fazer uma analogia com um

computador, pois ele possui uma CPU (unidade central de processamento), memria RAM (memria de acesso aleatrio), entradas e sadas (em um PC temos teclado, mouse, monitor, etc.). O diferencial de um microcontrolador em relao a um computador que o microcontrolador um dispositivo que possui um propsito especfico, ou seja, processa um nico programa, que fica armazenado na memria ROM (memria apenas para leitura), ou memria de programa. Alm disso, um microcontrolador pode se comunicar com outros equipamentos por meio de comunicao serial e atualmente tambm por USB. A diferena entre um microcontrolador e um microprocessador

caracteriza-se pelos perifricos que o microntrolador traz agregado, como por exemplo, conversores A/D, temporizadores, contadores, memrias ROM e RAM, etc. Um microprocessador, apesar da sua grande capacidade de processamento, no possui dispositivos imprescindveis para o funcionamento de um sistema. Para fazer um circuito de controle de um elevador, por exemplo, precisaramos de um microprocessador, memria ROM e RAM, uma porta paralela para dar sada aos acionamentos, de outra para receber sinais dos sensores, de uma porta serial para fazer as configuraes e rodar os resultados, de um conversor AD para ler o sensor de carga, de um temporizador para o tempo que a porta deve ficar aberta, etc. Com essa lista, temos um circuito com o diagrama de blocos abaixo.

Ilustrao 3: Diagrama de blocos de um circuito com microprocessador.


17

Nesse circuito, teramos uma placa de tamanho razovel e com vrios CIs. O circuito seria caro e sem robustez devido ao grande nmero de componentes. Seria um processamento muito sofisticado para o problema proposto. Surgiram, ento, os Microcontroladores, que possuem em apenas um circuito integrado grande parte dos perifricos do exemplo acima. Num microcontrolador, as mmorias RAM e ROM, conversor AD, temporizadores, controladores serial e paralelo e a CPU esto todos integrados em um chip. Por ser apenas uma pea, microcontroladores tem muito maior robustez, baixo custo, consomem menos energia, tm a fase de projeto reduzida e manuteno facilitada. So muitas vantagens em relao a um microprocessador para o caso. Como no haver processamento sofisticado, a CPU no precisa ter uma grande capacidade de processamento, mas deve oferecer um grupo de instrues simples, que nos permita ter programas pequenos de rpida execuo. Alm disso o microcontrolador oferece uma forma simples de interface com outros perifricos que possam ser acrescentados ao circuito. Com tudo que foi dito, temos outro diagrama de blocos, onde se apresenta a tpica arquitetura de um microcontrolador. Lembrando que de acordo com a finalidade do microcontrolador, possvel integrar mais recursos.

Ilustrao 4: Diagrama de blocos com itens que o microcontrolador disponibiliza num s encapsulamento.
18

Alm dos estudos pertinentes a hardware e comunicao entre dispositivos, foi necessrio pesquisar sobre processamento digital de imagens para alcanar um dos objetivos do projeto, que era conceber uma ferramenta que realizasse o histograma de uma imagem. Por tal motivo, o prximo tpico traz conceitos bsicos pesquisados pela equipe. 2.3 PROCESSAMENTO DIGITAL DE IMAGENS Por Processamento Digital de Imagens (PDI) entende-se a manipulao de uma imagem por computador de modo que a entrada e a sada do processo sejam imagens. A informao de interesse caracterizada em funo das propriedades dos objetos ou padres que compem a imagem. Portanto, extrair informao de imagens envolve o reconhecimento de objetos ou padres. O sistema visual humano possui uma notvel capacidade de reconhecer padres. Contudo, ele dificilmente capaz de processar o enorme volume de informao presente numa imagem. Vrios tipos de degradaes e distores, inerentes aos processos de aquisio, transmisso e visualizao de imagens, contribuem para limitar ainda mais essa capacidade do olho humano. O objetivo principal do processamento de imagens o de remover essas barreiras, inerentes ao sistema visual humano, facilitando a extrao de informaes a partir de imagens. As formas possveis de manipulao de imagens so teoricamente infinitas. Entretanto, de um modo geral, podem ser categorizadas em um ou mais procedimentos computacionais: Retificao e Restaurao de Imagens: operaes realizadas para minimizar as distores e degradaes dos dados de uma imagem, com a finalidade de criar uma representao mais fiel da cena. Realce de Imagens: procedimentos aplicados aos dados de uma imagem com o objetivo de melhorar efetivamente a visualizao da cena, para subseqente interpretao visual. que incluem quatro tipos abrangentes de operaes

19

Classificao de Imagens: estas operaes tm a finalidade de substituir a anlise visual dos dados por tcnicas quantitativas de anlise automtica, visando identificao das regies presentes na cena. Combinao de Dados (data merging): procedimentos utilizados para combinar os dados de uma imagem, referente uma certa rea geogrfica, com outros conjuntos de dados referenciados geograficamente, para a mesma rea. Um recurso bastante utilizado para auxiliar o processamento de imagens o histograma, que consiste numa representao estatstica do nmero de ocorrncia de pixels em determinados nveis (tonalidades) que se encontram na imagem. Ele muito utilizado para facilitar a visualizao de dados, para termos uma base para a identificao de rudos, para tratamentos e selees de faixas de luminosidade ou ainda para selecionarmos partes da imagem para substituio de cores. A figura a seguir mostra uma imagem e seu respectivo histograma.

Ilustrao 5: Imagem em tons de cinza e seu respectivo histograma Na ilustrao 5 temos uma imagem em 256 nveis de cinza. O histograma apresentado mostra a funo densidade de probabilidade de tons de cinza distribudos numa escala de 0 a 255, onde a tonalidade correspondente ao zero a cor preta, e ao 255, a branca. Isto nos permite identificar, por exemplo, os nveis de cinza predominantes na imagem. Tal informao til, pois pode gerar parmetros para avaliaes de qualidade, como nitidez, luminosidade e profundidade.
20

3 DESENVOLVIMENTO DO DISPOSITIVO
3.1 HARDWARE A fase desenvolvimento do hardware deste projeto foi dividida em duas partes. Primeiramente foi feita uma pesquisa a respeito de qual seria o microcontrolador que satisfaria as demandas do projeto. So vrios os fabricantes, como Atmel, Os Microchip, critrios em Texas de Instruments, adotados etc., com o o caractersticas obteno no diversas. mercado. escolha foram

conhecimento que tnhamos em relao ao componente, o custo e a sua Levando conta essas consideraes microcontrolador escolhido foi o PIC18F4550. A segunda fase, aps a aquisio do microcontrolador, foi a confeco da placa. A seguir ser descrito mais detalhadamente cada fase do projeto do hardware. 3.1.1 PIC18F4550 O PIC18F550 foi selecionado por ser o que melhor atendia as necessidades demandadas pelo projeto, alem da fcil aquisio e do baixo custo. Dentre suas principais caractersticas, o seu diferencial o fato de apresentar um mdulo de comunicao especfico para USB em sua estrutura, ou seja, no h necessidade de se criar um programa complexo para se estabelecer a comunicao, basta algumas configuraes para que consigamos isso. A interface USB permite velocidades de comunicao de at 480 Mbps para a configurao de high speed, mas por limitaes tcnicas esta velocidade no possvel para o PIC, portanto os modos de configurao que ele aceita so low speed e full speed que correspondem a velocidades de at 1,5 Mbps e 12 Mbps respectivamente. Alm das caractersticas referentes comunicao USB citadas

anteriormente, o PIC18F4550 tambm possui: Arquitetura Harvard (barramento de memria de dados distinto do barramento de memria de programa); Clock de at 48MHz; 13 canais de AD de 10 bits;
21

35 Linhas de I/O; 32kB de memria de programa; 2kB de memria de dados; 256 Bytes de memria no voltil EEPROM. Outra facilidade de se utilizar microcontroladores PIC a de que o seu fabricante, a Microchip, disponibiliza inteiramente grtis o MPLAB, que um ambiente de programao prprio. A figura a seguir mostra a pinagem do PIC18F4550.

Ilustrao 6: Pinagem do PIC18F4550 Conforme a figura anterior pode-se observar que os pinos 23 e 24 so os utilizados na comunicao USB (D+ e D-). 3.1.2 CONFECO DA PLACA O software utilizado para projetar a placa foi o KiCad, software livre. O procedimento de criao por meio deste programa se deu atravs dos passos a seguir: Primeiramente construdo um esquemtico, onde selecionamos os componentes, que esto representados de maneira didtica, e montamos o nosso circuito como podemos ver na gravura que segue.

22

Ilustrao 7: Esquemtico do dispositivo. Num segundo passo gerada uma netlist, ou seja, um descritivo que lista todos os componentes que faro parte do circuito e suas respectivas conexes, conforme a ilustrao a seguir.

Ilustrao 8: Netlist e visualizao 3D do componente. Finalmente, a partir da netlist, o KiCad gera automaticamente a placa dupla face com os componentes arranjados sobre ela e suas respectivas trilhas. s vezes possvel rearranjar os componentes sobre a placa
23

manualmente, para ento obter uma placa face simples, para facilitar sua confeco. Aps essa sequncia de procedimentos chegamos a um arranjo conforme as prximas figuras.

Ilustrao 9: Arranjo de componentes e trilhas

Ilustrao 10: Arranjo da placa em 3D

24

Ilustrao 11: Foto da placa depois de confeccionada. A lista de componentes utilizados na placa est a seguir: Componente PIC18F4550 Cristal 4MHz Conector USB tipo B Conector tipo KR2 Transformador 127/12V (500mA) Boto pequeno NA Resistor 1/4W 1k Resistor 1/4W 10k Placa circuito impresso 5x10cm Pinos conectores 5x1 LED 5mm Verde LED 5mm Vemelho Diodo 1N4007 Capacitor eletroltico 100uF Quantidade 1 1 1 1 1 2 2 2 1 1 1 1 2 1

25

Capacitor eletroltico 2200uF Capacitor cermico 100nF Capacitor eletroltico 10uF Capacitor eletroltico 0,47uF Capacitor cermico 22pF Tabela 1 Lista de componentes

1 4 1 1 2

importante salientar que como a placa foi confeccionada no incio do projeto e no estava definido se utilizaramos ou no uma fonte prpria para o dispositivo, optamos por projetar a placa com uma fonte prpria por segurana. A fonte acabou sendo inutilizada, pois optamos porta configurar a placa para que recebesse a alimentao diretamente pelo barramento USB.

3.2

FIRMWARE O programa desenvolvido para o dispositivo utilizou linguagem C, e foi

compilado pelo MPLAB C18 C Compiler, que integrado ao MPLAB (verso 8.50), ambiente de programao de microcontroladores da famlia PIC, disponibilizado no site da Microchip. A funo do microcontrolador receber os dados que o computador envia por USB, realizar o processamento programado, e devolver ao PC os resultados do processamento, para exibio em tela. O processamento consiste em receber os valores de todos os pixels de uma imagem selecionada no computador (valor que varia de 0 a 255), agrup-los em grupos de quatro nveis (totalizando 64 intervalos de valores), e devolver ao computador a quantidade de pixels contida em cada um desses intervalos. Para tal, criado um vetor com 64 posies (0 a 63) na memria do PIC, e cada ocorrncia de um pixel de determinado intervalo, a respectiva varivel no vetor incrementada. A seguir um fluxograma para melhor esclarecer o funcionamento do programa:

26

Conexo ao PC

Sincronizar USB

Piscar LED

No

Valor Recebido?

Sim xT

xX ou xT?

Envia vetor[x]

xX x4

Incrementa vetor[x]

Ilustrao 12 Fluxograma de tarefas do microcontrolador

Como mostra o fluxograma, a primeira tarefa a ser executada conectar a placa ao computador atravs de um cabo USB. Assim que conectado, o dispositivo recebe a alimentao (+5V e GND) do barramento e inicia seu funcionamento. Com o auxlio dos arquivos usbdrv.h e usbdrv.c, que tambm so disponibilizados pela Microchip em seu site, no exemplos de cdigos, o microcontrolador reconhecido pelo computador como um dispositivo USB, conforme a figura abaixo:
27

Ilustrao 13 Dispositivo USB reconhecido

Com o dispositivo funcionando corretamente, suas funes so agora coordenadas pela interface grfica, que ser descrita no prximo tpico. O programa principal (main.c Anexo I) cria um vetor de 64 posies aps iniciar alguns bits de configurao, conforme mostrado na tabela a seguir:

28

void main(void) { TRISBbits.TRISB0 = 0 ; // Define PORTB como sada #define LED LATBbits.LATB0 // Define pino B0 como LED

for(x=0;x<64;x++) { p[x]=0; } InitializeUSBDriver(); while(1) { USBTasks(); ProcessIO(); } }

// Criao do vetor tamanho [64]

// Funo do usbdrv.h

// Tarefas USB // Funes de envio e recebimento

Tabela 2 Trecho de cdigo: Lao principal

As funes de sincronismo do USB so executadas dentro da funo USBTasks(), no lao infinito de execuo do programa (while(1)), enquanto que as funes de troca de dados entre o microcontrolador e o PC so executadas dentro da funo ProcessIO(). O quadro a seguir mostrar as funes executadas para a troca de dados com o computador.

29

void ProcessIO(void) { BlinkUSBStatus(); // Piscar o LED if((usb_device_state < CONFIGURED_STATE)||(UCONbits.SUSPND==1)) return; User_Process(); } void User_Process(void) { if(getsUSBUSART(input_buffer,3)) { if(input_buffer[1]=='X') // Se o bite vem acompanhado de X, { // trata-se do valor de um pixel. valor = input_buffer[0]; input_buffer[0]=0; // Zera buffer. input_buffer[1]=0; y=(valor/4); // 256/4=64 (64 intervalos de nveis) p[y]++; // Incrementa respectiva posio } // do vetor. if(input_buffer[1]=='T') // Se o bite vem acompanhado de T, { // trata-se do valor de um intervalo. a = p[input_buffer[2]]; ultoa(a,resultado); // Transforma unsigned long int putsUSBUSART(resultado); // em uma string. input_buffer[0]=0; // Envia o valor da varivel input_buffer[1]=0; // correspondente ao intervalo input_buffer[2]=0; // e zera o buffer. } } } // Funes do usurio

Tabela 3 Trecho de cdigo: Funes de transferncia de dados

As funes de usurio mostradas na Tabela 3 trabalham na leitura e na escrita de valores (bytes) diretamente do USBUSART, que trabalha como um buffer de comunicao serial, porm atravs de uma porta USB. Os dados que sero enviados pela interface (PC) vm acompanhados de um caractere X ou T. Quando o byte for acompanhado por X, trata-se de um pixel de uma imagem que est sendo enviada. Nesse caso, o microcontrolador vai ler esse valor (que est na faixa de 0 a 255, por ser 8 bits), dividi-lo por quatro, para enquadr-lo no respectivo intervalo de valores pr30

determinado, e ento incrementar a varivel (do vetor) da posio correspondente ao intervalo obtido. Por exemplo, se o byte da posio 0 do buffer for 20, e o byte da posio 1 for X, o PIC ir incrementar a varivel da posio 5 do vetor (no caso, posio [4], pois a contagem inicia-se em zero). Quando o segundo byte recebido for T, significa que a interface est enviando o valor de um dos intervalos (0 a 63), para saber o valor de sua contagem. Ento, o PIC escrever na USART o valor armazenado naquela posio do vetor. No prximo tpico ser explicado o funcionamento da interface grfica desenvolvida para trabalhar em conjunto com o dispositivo.

3.3

INTERFACE GRFICA A interface grfica do projeto foi criada a partir do software LabVIEW

2010, utilizando uma licena trial vlida por trinta dias, disponvel para download no site da National Instruments. Sua forma de programao grfica a partir da montagem de fluxogramas que representam funes, hierarquias, e a seqncia em que os comandos so executados. No decorrer da programao, automaticamente a interface de controle vai sendo criada em outra tela, o que permite com que os resultados do que est sendo feito possam ser vistos de maneira imediata. A seguir temos um fluxograma que descreve numa viso macro, as aes realizadas pela interface grfica criada:

Seleciona Imagem Plota o grfico do histograma Recebe dados do histograma Ilustrao 14 Fluxograma de aes da Interface Grfica Envia Imagem Pixel a Pixel

31

Alm destas funes a interface tambm apresenta a resoluo da imagem e a possibilidade de se consultar ponto a ponto a curva do histograma, permitindo saber quantos pixels h em cada faixa de cores.

Ilustrao 15 Interface Grfica Algumas caractersticas tcnicas dessa interface so: Trabalha apenas com imagens de 8 bits (256 cores) e com extenso Bitmap; Deve-se selecionar a porta COM respectiva porta em que o dispositivo USB ocupa; O grfico do histograma que a interface apresenta mostra uma escala de 64 cores (0 a 63) e no 256 que o que se espera de imagens de 8 bits. Isto se d pelo fato de que o PIC18F4550 no possui memria suficiente para realizar um processamento considerando uma escala de 256 cores.

32

4 RESULTADOS
Tendo como primcia os objetivos firmados para este trabalho, obtiveramse os seguintes resultados: Hardware desenvolvido com o objetivo de comunic-lo com um PC via USB funcionando de acordo com as necessidades demandadas pelo projeto; Interface grfica desenvolvida no PC para trabalho em conjunto com o perifrico; Comunicao de desempenho eficaz entre PC e dispositivo em termos de software e hardware. Realizao do processamento de imagens com o objetivo de fornecer o histograma da mesma por parte de um microcontrolador e exibio dos resultados em um PC.

33

5 CONCLUSES
Os sistemas embarcados so uma rea muito verstil que pode abranger, se no todas, quase todas as reas de aplicao da engenharia eltrica. Quando se planeja projetar um sistema embarcado, deve se ter um cuidado minuncioso na definio dos elementos de processamento e seus perifricos. Primeiramente deve se fazer um levantamento das necessidades da aplicao que precisam ser satisfeitas. Isto posto, na escolha dos componentes de circuito, alm de levar em conta o dimensionamento e as vantagens que um componente pode oferecer, necessrio conhecer suas limitaes. O conhecimento a respeito do protocolo USB de grande valia em se tratando de sistemas embarcados, e de qualquer outro dispositivo que se deseje realizar a comunicao com um PC, ou ento com outro dispositivo. Este um protocolo que traz grande facilidade na aplicao e por isso ganha mercado com muita velocidade e credibilidade. Porm, para quem atua no desenvolvimento de dispositivos, no se trada de algo simples, muito pelo contrrio, demanda tempo de estudo, pesquisas e tentativas. Isto acontece justamente para que o usurio deste tipo de interface no encontre dificuldades na sua utilizao, pois toda interface tem uma srie de limitaes fsicas de hardware, e para que essas limitaes sejam diminuidas ao mximo facilitando a vida do usurio, as correes e ajustes devem ser feitos em software e firmware.

34

6 APRIMORAMENTOS
Como trata-se de um projeto piloto, constatamos que ainda h muito o que ser feito para que se chegue a um equipamento robusto. Neste captulo seguem alguns tpicos de melhoramentos e desenvolvimentos que precisam ser feitos. 6.1 PIC DA FAMLIA 32F Como o os PICs da famlia 18 possuem somente 32kB de memria de programa e isso acaba sendo pouca memria quando se trata de processamento de imagens, uma sada para eliminar este empecilho trocar para PICs da famlia 32. Estes possuem muitos diferenciais em relao famlia 18 a comear pela memria de programa que de 512kB. Como as imagens que gostaramos de tratar neste projeto so de 23kB. Alem disso outras caractersticas so: A maior velocidade de execuo 80 MIPS Uma instruo por ciclo de clock de execuo Permite a execuo a partir da RAM Full Speed Host / bivalente e capacidades USB OTG rastreamento em tempo real As adversidades encontradas em relao a esse PIC so a dificuldade de aquisio do componente e o custo mais elevado. 6.2 MEMRIA FLASH EXTERNA Caso seja mantido no projeto o PIC18F4550, ser necessrio inserir no circuito uma memria flash, podendo ser um pen drive, um carto SD, etc. Isso eliminaria o problema de falta de memria que encontramos.

35

7 BIBLIOGRAFIA

[1] ZEMBOVICI, Kleiton Chochi; FRANCO, Marcelo Gonalves. Dispositivo para aquisio de sinais e controle digital via USB. Trabalho de concluso de curso (Graduao em Engenharia Eltrica) UFPR, Curitiba. 2009 [2] Topologia do USB. Disponvel em: http://www.gta.ufrj.br/grad/07_1/wusb/TopologiadoUSB.html. Acesso em: 26 de setembro de 2010. [3] Arquitetura USB. Disponvel em: http://www.pads.ufrj.br/~rapoport/usb/usb4.html. Acesso em: 17 de setembro de 2010. [4] Interfaces e Perifricos USB. Disponvel em: http://www.laercio.com.br/artigos/hardware/hard-051/hard-051c.htm. Acesso em: 8 de outubro de 2010. [5] Diferena entre Microprocessador e Microcontrolador. Disponvel em: http://www.ee.pucrs.br/~dbarros/d2005_1/Microproc/Grupo_1/diferencas.htm. Acesso em: 22 de novembro de 2010. [6] BRAIN, Marshall, Como funcionam as portas USB. Disponvel em: http://informatica.hsw.uol.com.br/portas-usb1.htm. Acesso em: 8 de outubro de 2010. [7] The HID Page. Disponvel em: http://lvr.com/hidpage.htm#MyExampleCode.
Acesso em: 8 de outubro de 2010.

[8] LAFEBRE, Giovanni, Conectando un PIC al PC utilizando USB. Disponvel em: http://rapidshare.com/files/7938169/EasyHID.rar.html. Acesso em: 15 de outubro de 2010.

36

[9] SILVA, Erick F. C., DESENVOLVIMENTO DE UMA METODOLOGIA PARA CAPTURA DE IMAGENS USANDO MICROCONTROLADORES. Disponvel em: http://dsc.upe.br/~tcc/20052/ErickFranklin.pdf. Acesso em: 20 de outubro de 2010. [10] CLAYTON, Mat, Basic USB Using Microchip Stack and C#.Net Hardware. Disponvel em: http://www.piccoder.co.uk/content/view/42/26/1/4/. Acesso em: 20 de novembro de 2010. [11] 11 Seminrio tcnico MICROCHIP, USB: Inplementao de hardware e software. Disponvel em: http://www.scribd.com/doc/485998/apostila-cursoproramacao-de-dispositivos. Acesso em: 1 de novembro de 2010. [12] SOUZA, Vitor Amadeu, Comunicao USB com o PIC, retirado das pginas: http://www.ebah.com.br/comunicacao-usb-com-o-pic18f4550-parte-1pdf-a16008.html e http://www.ebah.com.br/comunicacao-usb-com-opic18f4550-parte-2-pdf-a16008.html [13] BAUERMANN, Gabriela, Histogramas de Imagem. Disponvel em: http://www.imagesurvey.com.br/2010/11/histogramas-de-imagem/. Acesso em 30 de novembro de 2010. [14] Processamento de imagens. Disponvel em: http://www.labgis.uerj.br/gis_atualizada/pdi/01_pdi.htm. Acesso em: 2 de dezembro de 2010. [15] Jonis Project, PIC+USB. Disponvel em: http://www.jonis.com.br/novo/index.php?option=com_content&view=article&id= 53:pic-usb-bootloaderfacil&catid=38:eletronica. Acesso em: 24 de setembro de 2010. [16] MICROCHIP. Microchip Advanced Parts Selection. Disponvel em: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId= 1924. Acesso em: 11 de novembro de 2010.

37

[17] Programas de PIC com USB. Disponvel em: http://www.electronicfr.com/index.php/Microcontrollers-and-USB/-Part-3-Howtobuild-a-USB-thermometer-and-barometer-with-PIC-18F4550-or-18F2550.html. Acesso em: 23 de setembro de 2010. [18] USB Boot-Loader on a PIC 18F2550. Disponvel em: http://techsanctuary.com/node/64. Acesso em 23 de setembro de 2010. [19] USB Specifications. Disponvel em: http://www.usb.org/developers/usb20/developers/whitepapers/usb_20g.pdf. Acesso em: 21 de setembro de 2010. [20] USB Explicao. Disponvel em: http://www.rogercom.com/PortaUSB/MotorPasso.htm. Acesso em: 24 de setembro de 2010. [21] ASSOCIAO BRASILEIRA DE NORMAS TCNICAS. NBR 14724: informao e documentao: trabalhos acadmicos: apresentao. Rio de Janeiro, 2002.

38

8 ANEXO I Firmware (main.c)


#include <p18f4550.h> #include <string.h> #include <delays.h> #include "system\typedefs.h" #include "system\usb\usb.h" #include "system\usb\usbdrv\usbdrv.h " #include "mod_lcd.c" #pragma udata char input_buffer[5]; char output_buffer[5]; unsigned char buffer[20]; unsigned char resultado[7]; unsigned int p[64]; unsigned char valor; unsigned char x,y; int contador=0; unsigned int a,b; void USBTasks(void); void BlinkUSBStatus(void); void User_Process(void); void ProcessIO(void); #pragma code void main(void) { TRISBbits.TRISB0 = 0 ; #define LED LATBbits.LATB0 y=0; for(x=0;x<64;x++) { p[x]=0; } InitializeUSBDriver(); // See usbdrv.h
39

while(1) { USBTasks(); ProcessIO(); }

// USB Tasks

void USBTasks(void) { USBCheckBusStatus(); if(UCFGbits.UTEYE!=1) USBDriverService(); CDCTxService();

void ProcessIO(void) { BlinkUSBStatus(); if((usb_device_state < CONFIGURED_STATE)||(UCONbits.SUSPND==1)) return; } User_Process();

void User_Process(void) { if(getsUSBUSART(input_buffer,3)) { if(input_buffer[1]=='X') { valor = input_buffer[0]; input_buffer[0]=0; input_buffer[1]=0; y=(valor/4); p[y]++; } if(input_buffer[1]=='T') { a = p[input_buffer[2]]; ultoa(a,resultado); putsUSBUSART(resultado); input_buffer[0]=0; input_buffer[1]=0; input_buffer[2]=0; } } }

40

void BlinkUSBStatus(void) { static word led_count=0; if(led_count == 0) { led_count = 10000U; } led_count--; if(UCONbits.SUSPND == 1) { if(led_count==0) LED=!LED; } else { switch(usb_device_state) { case DETACHED_STATE: LED=0; case ATTACHED_STATE: LED=1; case POWERED_STATE: LED=0; case DEFAULT_STATE: LED=0; case ADDRESS_STATE: { if(led_count == 0) LED=!LED; } case CONFIGURED_STATE: { if(led_count == 0) LED=!LED; } } }

41

9 ANEXO II - Gravador de PIC ICD2 Clone


CARACTERTICAS TCNICAS: Programador e depurador de microcontroladores PIC, Comunicao via cabo USB; Programao em Linguagem C ou Assembly; Integrado ao MPLAB; Suporta microcontroladores das famlias PIC10, PIC12, PIC16, PIC18, PIC24 e PIC30F. APLICAES: O ICD2 da Netcom conecta com o PC usando USB e atua como uma interface inteligente entre os dois permitindo ao projetista acompanhar a execuo do programa desenvolvido em tempo real atravs de variveis de acompanhamento e breakpoints no firmware que est rodando na aplicao. Alm disso tudo, com o ICD2 tambm possvel gravar microcontroladores PIC com memria FLASH e dsPICs. Permite a insero de breakpoints, execuo passo- a-passo, visualizao de variveis, etc. Ou seja, atua como uma interface inteligente, permitindo ao projetista acompanhar a execuo do programa desenvolvido em tempo real.

Ilustrao 15: Gravador de PIC ICD2 Clone

42