Você está na página 1de 29

Conectando um Pen-drive a um Microcontrolador (Projeto Estao Pen-drive).

INTRODUO O projeto aqui descrito foi baseado no VNC1L-1A da FTDI/Vinculum, um Chip Host USB com vrios recursos agregados. No possvel em um nico artigo, explorar todos os recursos desse componente, mas iremos explorar atravs de um projeto bastante interessante e funcional, o recurso de comunicao com um Pen-drive (Flash Disk). O VNC1L funciona de vrias formas, mediante a gravao em sua memria de programa, de um firmware (arquivo .ROM) adequado ao propsito desejado. Atualmente a FTDI disponibiliza em seu site os seguintes firmwares para gravar no VNC1L: VDAP (Vinculum Disk And Peripheral interface) - Firmware Interface entre um Microcontrolador, Flash Disk ou um perifrico USB ou FTDI; VDPS (Vinculum Disk And Peripheral interface) - Firmware usado para interfacear um micocontrolador a uma porta Host USB no PC. VDIF (Vinculum Disk Interface FTDI) - Firmware Interface entre um Flash Disk e perifricos FTDI. VCDC (Communication class device) Firmware para trabalhar com dispositivos USB de classe de comunicao (Modem etc.); VMSC (Music player) - Firmware com recurso para manipular arquivos de msica MP3; VF2F (Disk to disk copier) - Firmware com funes para copiar dados de um Flash Disk para outro. Pode ser conectada uma diversidade de dispositivos de classes USB nas portas USB do VNC1L. Cada verso de cdigo de firmware permite uma combinao diferente de dispositivos. Alm de vrios pinos de propsitos gerais, o VNC1L disponibiliza 2 portas USB tipo "A" (Host). Para enriquecer nosso projeto, iremos agregar ao mesmo, um sensor de Temperatura/Umidade da Sensirion o SHT75, sensor de altssima preciso, um CI relgio/calendrio da Philips o DS1307 (I2C), um Display LCD de texto 2x16 com backlight e um microcontrolador PIC 18F452. Alm de gravar os dados no Pen-prive, o PIC18452 transmite os mesmos em intervalos de 1 segundo atravs da UART (RS232), onde possvel com o uso de um conversor tipo CI MAX232, enviar os dados para um PC. Tambm possvel agregar um mdulo de rdio freqncia (RF) tipo ZigBee, entre outros, e transmitir os mesmos sem fio.

Figura 1

- Viso parcial do sistema estao Pen-drive

Figura 2 - Viso geral do sistema estao Pen-drive

Na figura acima possvel ver os componentes que fazem para de todo o sistema. O PC ser de suma importncia no desenvolvimento do projeto, para gravar o microcontrolador e atualizar a data e hora do relgio. Depois da concluso do projeto, o uso do PC ser opcional, e sua maior utilidade seria armazenar os dados recebidos via Serial RS232. Os dados como Temperatura, Umidade, Ponto de Orvalho, Data e hora, espao no Pen-drive e intervalo de gravao no Pen-drive podem ser vistos no display LCD, atravs do pressionamento de um nico boto (BUT1 - boto muda tela). H mais dois botes (BUT Inc) e (BUT Dec), respectivamente Incremento e decremento, usados para aumentar ou diminuir o intervalo de gravao dos dados no Pen-drive. O intervalo de tempo mnimo para gravar os dados de 1 segundo, e o mximo so de 256 segundos (em torno de 4 minutos).

Figura 3 - Exemplo de uma caixa para comportar os sistemas

Na figura acima temos uma viso de como poder ser o design do projeto, esta ilustrao somente um exemplo, fica a gosto de cada um a definio final da aparncia do sistema.
Figura 4 - Painel solar Figura 5 - Gerador elico

Se no local onde o sistema for instalado no houver energia Eltrica, importante antes projetar uma fonte de energia alternativa como a Solar ou mesmo Elica. A energia gerada por essas fontes deve ser armazenada em baterias, para ento fornecer energia ao sistema durante o dia e a noite.
Figura 6 - Regulador de tenso

Vejamos agora o CI VNC1L e suas caractersticas Nas ilustraes abaixo vemos o CI VNC1L e a numerao/descrio de cada pino:
Pinos do Vinculum VNC1L Figura 8

Figura 7

Principais caractersticas do VNC1L-1A - 2 controladoras de DMA para acelerao do hardware; - Microcontrolador interno de 8/32 bits; - Multiplicador de clock integrado de 12MHz para 48MHz; - Circuito power-on-reset integrado com pino de entrada RESET#; - Protocolo de controle USB interno no chip; - 64KBytes de memria de programa Flash ROM embutida; - 4KBytes internos de memria de Dados SRAM; - 2 portas tipo "A" USB 2.0 independentes Low speed / Full speed, USB Host; - Interface PS/2 para teclado e mouse; - Biblioteca de firmware fornecida pela FTDI para fcil atualizao em campo; - Programa para atualizar o firmware fornecido pela FTDI, via UART serial ou atravs de um Pen-drive; - Interface UART para entrada/Sada de Dados; - Programao do firmware; - Pino de controle PROG# para programao do firmware; - Interface para o Monitor de comandos, via SPI, UART Serial ou FIFO; - Entrada de alimentao segura de 5v e operando a 3,3v; - At 28 GPIO pinos de I/O de dados e monitor de comandos; - Suporta dispositivos de configurao USB Bus powered, self-powered e high-power bus powered; - Completamente compatvel com especificao de USB 2.0; - CI disponvel em tamanho compacto LQFP de 48 pinos, livre de chumbo (Pb-free); - USB Host e slave compatvel com alta velocidade (12 Mbps), e baixa velocidade (1.5 Mbps)

Verso do firmware VDAP usado no VNC1L para o nosso projeto: Nome do Arquivo: VDAPFUL_V3_56.ROM Verso: MAIN 03.56VDAPB RPRG 1.00R
Figura 9 - Hardware gerenciado pelo firmware VDAP

A Figura 9 acima mostra um esquema de hardware que pode ser gerenciado pelo firmware VDAP. Esse firmware, alm de gerenciar um Pen-drive poder tambm gerenciar um perifrico USB escravo, como por exemplo, um circuito baseado num chip FT232, FT232, FT245, FT2232, ou mesmo um perifrico tipo uma impressora USB, Modem, etc. Para o nosso projeto iremos explorar somente a Porta 2 do VNC1L, onde ser conectado um Pen-drive, ou seja, uma memria de armazenamento de massa (BOMS Flash Disk). A interface de comunicao (bus de dados) entre o VNC1L e um microcontrolador pode ser: Serial UART, Paralela FIFO ou SPI, para o nosso projeto, a interface Serial UART foi a escolhida, pois no precisamos de altas velocidades para gravar os dados no disco. A velocidade mxima da interface Serial UART do VNC1L de 3Mbps. J nas interfaces Paralela FIFO ou SPI, a velocidade muito superior. O Monitor do VNC1L uma interface de linha de comando que permite dar e receber instrues ao VNC1L, atravs de uma das trs interfaces citadas acima. Desenvolvimento dos circuitos H duas opes para obtermos o circuito responsvel pelo controle do Pen-drive. A primeira mais demorada, pois sugere a confeco do circuito a partir do zero (layout, corroso da placa de circuito impresso, aquisio dos componentes, soldagens em SMD, testes, etc). A segunda muito mais prtica, pois us-se um mdulo pronto para ser agregado ao projeto. O mdulo usado no nosso projeto foi o VDIP1 da FTDI/Vinculum. Nesse artigo disponibilizo as duas opes, que so mostradas nas figuras abaixo.

Figura 10 - Opo 1: (confeco do circuito), hardware responsvel pela leitura e gravao no Pen-drive.

O circuito acima um Host USB responsvel pela leitura, gravao e outras particularidades do Pen-drive. Veja que a Porta 2 (USB2DM / USB2DP) do VNC1L a Porta padro para a troca de informao com o Pen-drive, usando o firmware VDAP. A Porta 2 tambm pode ser usada para troca de informaes com dispositivos padro FTDI. A chave K1 quando ligada ao GND reinicializa o VNC1L e pode ser ligada ao microcontrolador para um controle de reset automtico. Para gravarmos uma verso de firmware novo na memria de programa do VNC1L, mantemos a chave K2 ligada ao GND at a concluso da gravao. possvel tambm, atualizar a verso do firmware no VNC1L de forma automtica, a partir de um arquivo especial fornecido pela FTDI e transferido para o Pen-drive. O VNC1L l este arquivo, e de forma automtica grava em sua memria. Segundo a FTDI esta no uma opo segura para atualizar o firmware, sendo prefervel a gravao por transferncia de arquivo via PC. A interface entre o VNC1L e o microcontrolador deve ser selecionada atravs dos pinos ACBUS5 e ACBUS6, ligando-os a resistores pull-up (5v) ou pull-down (0v). Segue logo abaixo uma tabela para escolher qual a interface ser usada para a comunicao com o microcontrolador.

Tabela 1 - Seleo da interface para o Monitor de comandos

ACBUS6 (Pino ACBUS5 (Pino 47) 46)


Pull-Up Pull-Up Pull-Down Pull-Down Pull-Up Pull-Down Pull-Up Pull-Down

Interface selecionada
UART Serial SPI FIFO Paralela UART Serial

Conforme a tabela acima, a interface UART Serial selecionada, tanto colocando os pinos ACBUS6 e ACBUS5, ambos em Pull-Up ou em Pull-Down. J a interface SPI selecionada colocando o pino ACBUS6 em Pull-Up e o pino ACBUS5 em Pull-Down. Observe no circuito da Figura 10 que o Bus de dados da interface para o Monitor de comandos so formados pelos pinos (ADBUS0, ADBUS1, ADBUS2 e ADBUS3).
Figura 11 - Opo 2: (Mdulo VDIP1), hardware responsvel pela leitura e gravao de dados no Pen-drive.

Figura 12 - Configurao do mdulo VDIP1 no modo Serial (interface com um microcontrolador)

A configurao do mdulo VDIP1 acima, idntica a configurao do circuito da Figura 10. Para selecionar a interface a ser usada para o Monitor de comandos faz-se necessrio manipular os "Jumps" do mdulo. Veja na figura acima, dentro do crculo verde, as linhas vermelhas ligando os contatos, e assim, selecionando a interface UART Serial. Veja tambm que na interface so usadas as linhas RTS/CTS, para controlar o fluxo de dados. A Figura 13 abaixo mostra os pinos 1 e 2, tanto do Jump J3 como do jump J4 ligados, para selecionar a interface UART Serial no mdulo VDIP1.

Figura 13 - Selecionando a interface Serial no mdulo VDIP1

Atualizando o firmware do VNC1L Antes de darmos continuidade ao desenvolvimento do nosso projeto, teremos que atualizar a verso do firmware do VNC1L no mdulo VDIP1, isso necessrio para usarmos os recursos mais atuais do firmware VDAP. A FTDI/Vinculum mantm uma equipe de Engenherios trabalhando constantemente na deteco e correo de possveis "Bugs", e tambm na adio de novos comandos e recursos. Temos duas opes de interface de hardware para fazer a comunicao entre VNC1L e o PC para podermos gravar o arquivo contendo o firmware na memria de programa do VNC1L. Uma dessas interfaces pode ser usada posteriormente aps a atualizao do firmware, para testarmos os comandos do VNC1L atravs do programa HyperTerminal do windows. Fora as duas opes citadas acima, tem uma outra que atualiza o firmware a partir de um arquivo especial copiado para o Pen-drive. Esse arquivo tem a extenso (.ftd) e pode ser baixado do site da Vinculum em: (www.vinculum.com). No tempo em que eu estava escrevendo este artigo, o nome/verso do arquivo de firmware VDAP, disponvel para atualizao via Pen-drive era o ftrfb_main_03_56VDAPB.ftd. J para atualizao via PC (usando uma das duas interfaces de hardware), o nome de arquivo de firmware era o VDAPFUL_V3_56.rom. Veja nas prximas figuras abaixo os esquemas dos circuitos:
Figura 14 - Circuito usando um CI MAX232 para se comunicar com o PC via RS232

No esquema acima usamos o CI MAX232 para criar uma interface UART serial, e assim estabelecer comunicao entre o VNC1L e o PC. A interface acima pode ser usada tanto para gravar o VNC1L (chave K2 ligada ao GND), com

tambm para testar os comandos e a funcionalidade do VNC1L, atravs de um programa como o HiperTerminal do Windows ou mesmo outro similar.
Figura 15 - Circuito usando a placa USB232-RCOM1 (Rogercom) para se comunicar com o PC via USB

No esquema acima usamos uma placa USB232-RCOM1 da ROGERCOM, para criar uma interface USB, e assim, estabelecer comunicao entre o VNC1L e o PC. Essa interface tambm pode ser usada tanto para gravar o VNC1L (chave K2 ligada ao GND), com tambm para testar os comandos e a funcionalidade do VNC1L, atravs de um programa como o HiperTerminal do Windows ou mesmo o RcomSerial. Para grava a memria de programa do VNC1L, a FTDI/Vinculum disponibiliza em seu site dois programas: um para a comunicao RS232 (Vprog_com.exe) e outro para comunicao USB (Vprog.exe). Nota: A interface que usa o Max232 pode estabelecer velocidade de comunicao de no mximo 115.200bps entre o VNC1L e o PC, enquanto que a interface usando a placa USB232-RCOM1 chega a uma velocidade de at 921.600bps.

Atualizando o firmware do VNC1L (continuao) Agora que temos duas opes de interfaces para gravar o firmware no VNC1L, a escolha fica a seu critrio. Siga os passos abaixo para baixar os arquivos e gravar o VNC1L com a verso mais atual do firmware VDAP. PASSOS: 1) No circuito da interface escolhida (Figura 14 ou 15 / Pg 2), ligue o pino PROG# ou PG# no VDIP, ao GND da alimentao, para preparar o VNC1L para uma gravao de firmware;

2) Faa download do firmware VDAP mais atualizado no site da FTDI / Vinculum em: www.vinculum.com na seo Download / Firmware, ou baixe a verso 3.56 a partir do nosso site, clicando em: VDAPFUL_V3_56.ZIP; 3) Faa download tambm do programa para gravar o firmware, disponvel na seo Download / "Applications and Utilities", em: www.vinculum.com, ou baixe a partir do nosso site, clicando em: vprog_com.zip ou vprog.zip; 4) Se a interface que escolheu foi a da Figura 14 / Pg 2, rode o programa vprog_com.exe, caso tenha sido a interface da Figura 15, use o programa vprog.exe.
Figura 16 - Localizando o arquivo .ROM

Selecione a porta COMx associada a interface conectada ao PC e depois clique no boto "ROM File..." para localizar o arquivo de firmware VDAPFUL_V3_56.ROM; clique no boto "Program" para iniciar a gravao do VNC1L. Veja a figura abaixo:
Figura 17 - Progresso na gravao

Se houver sucesso na gravao, a tela abaixo ser exibida:


Figura 18 - Gravao concluda

Para finalizar, clique no boto OK, e no circuito da interface, desligue o pino PROG#, ou PG# no VDIP, onde anteriormente foi ligado ao GND. Depois s reinicializar todo o circuito para que o VNC1L assuma o seu novo programa.

COMANDOS PARA SE COMUNICAR COM O PEN-DRIVE ATRAVS DO MONITOR DE COMANDOS DO VNC1L Como mencionado no incio desse artigo, nosso projeto explora do CI VNC1L (com o firmware VDAP), somente os recursos que dizem respeito manipulao de dados no Pen-drive, como tambm alguns comandos necessrios para a configurao do Monitor de Comandos (controle da interface entre o VNC1L e o microcontrolador). Os comandos de controle so no formato DOS, tipo DIR, MK etc. H dois modos de comandos: os estendidos e os curtos. No modo estendido os nomes dos comandos so escritos na integra, no sendo tambm diferente as mensagens retornadas pelo VNC1L. Esse modo ideal para testes com o PC usando o HyperTerminal do Windows ou outro software Serial. J no modo curto, os comandos so enviados em formato hexadecimal, e as mensagens retornadas pelo VNC1L so strings de dois a trs caracteres. Esse modo ideal para se trabalhar com microcontroladores, j que as instrues so reduzidas. Ao ligar o VNC1L o Baud rate padro da interface UART Serial do Monitor de Comandos 9600bps, podendo ser configurada pelo usurio para uma velocidade de at 3.000.000bps. Usando a placa USB232-RCOM1 para uma interface de testes entre o VNC1L e o PC, a velocidade mxima de comunicao que se pode obter de 921.600bps. J usando um conversor Serial baseado no MAX232, a velocidade mxima de 115.200bps. O SP213EHCA pode chegar a uma velocidade de at 460.000bps. Interfaces UART Serial com microcontroladores com cristal de 20Mhz pode chegar a 115.200bps, se o objetivo for trafegar em maior velocidade, a soluo seria configura a interface do VNC1L para SPI. O comando usado para mudar o Baud rate do Monitor de comandos com interface UART Serial o SBD. Veja Baud rate vlidos na Tabela 6. Segue nas tabelas abaixo, todos os comandos para manipular Pen-drive disponibilizados pela FTDI/Vinculum na verso 03.56 do firmware VDAP.

Tabela 2 - Exibio do Prompt em formato estendido e curto Conjunto de comandos Conjunto de comandos estendidos curtos (mensagem retornada) (mensagem retornada) ><cr> D:\><cr> Em hexadecimal (3E 0D). Tabela 3 - Mensagens exibidas quando h ou no um disco inserido no Host Conjunto de comandos Conjunto de comandos curtos Disco presente ? estendidos (mensagem retornada) (mensagem retornada) ><cr> D:\><cr> SIM Em hexadecimal (3E 0D). ND<cr> No Disk<cr> NO Em hexadecimal (4E 44 0D). Tabela 4 - Mensagens exibidas quando um dispositivo e plugado ou desplugado do Host VNC1L Conjunto de comandos Conjunto de comandos Evento ocorrido estendidos curtos (mensagem retornada) (mensagem retornada) DD2<cr> Um dispositivo USB escravo foi Device Detected P2<cr> inserido na porta 2 Em hexa. (44 44 32 0D). Um dispositivo USB escravo foi removido na porta 2 Device Removed P2<cr> DR2<cr> Em hexa. (44 52 32 0D).

Tabela 5 - Conjunto de comando para controlar o Monitor de comandos Conjunto de Conjunto de comandos comandos curtos Descrio estendidos (em hexadecimal)

SCS<cr> ECS<cr> IPA<cr> IPH<cr> SBD divisor<cr> FWV<cr>

10 0D 11 0D 90 0D 91 0D 14 20 divisor 0D 13 0D 45 0D 65 0D

E<cr> e <cr>
Tabela 6

Troca para o conjunto de comandos curtos. Troca para o conjunto de comandos estendidos. Configura o monitor de comandos para trabalhar com valores em ASCII. Configura o monitor de comandos para trabalhar com valores binrios (Hexadecimal). Troca a taxa de baud rate do monitor de comandos. Exibe a verso do firmware VNC1L. Ecoa o caracter 'E' para efeito de sincronismo. Ou seja, retorna E<cr>. Ecoa o caracter 'e' para efeito de sincronismo. Ou seja, retorna e<cr>.

- Conjunto de comandos para manipulao de arquivos, diretrios e exibio de informaes sobe o


disco Conjunto de comandos Conjunto de comandos curtos estendidos (em hexadecimal) DIR<cr> 01 0D Descrio

Mostra os nomes dos arquivos no diretrio (pasta) atual. Mostra o tamanho do arquivo especificado DIR Nome_arq<cr> 01 20 Nome_arq 0D em Nome_arq em 4 bytes. CD Nome_pasta<cr> 02 20 Nome_pasta 0D Muda o diretrio (pasta) atual. Retorna um nvel acima do diretrio (pasta) 02 20 2E 2E 0D CD ..<cr> atual. RD Nome_arq<cr> 04 20 Nome_arq 0D L todo o contedo de um arquivo. DLD Nome_pasta<cr> 05 20 Nome_pasta 0D Apaga um diretrio (pasta). MKD Nome_pasta<cr> 06 20 Nome_pasta 0D Cria um diretrio (pasta). MKD Nome_pasta 06 20 Nome_pasta Cria um diretrio (pasta) e especifica a data DataHora <cr> DataHora 0D e a hora da criao. DLF Nome_arq<cr> 07 20 Nome_arq 0D Apaga um arquivo. Escreve uma quantidade de bytes especificado no 1 parmetro Tama_Dword WRF 08 20 Tama_Dword 0D (4 bytes), no arquivo atualmente aberto pelo Tama_Dword<cr>Dados Dados comando OPW. Os dados a serem gravados so colocados no 2 parmetro Dados. OPW Nome_arq<cr> 09 20 Nome_arq 0D Abre um arquivo para escrita. OPW Nome_arq 09 20 Nome_arq 20 Abre um arquivo para escrita e, especifica a DataHora<cr> DataHora 0D data e a hora da gravao. CLF Nome_arq<cr> 0A 20 Nome_arq 0D Fecha o arquivo atualmente aberto. L um nmero de bytes especificado no 1 RDF Tama_Dword <cr> 0B 20 Tama_Dword 0D parmetro Tama_Dword (4 bytes) do arquivo atualmente aberto. Nomeia um arquivo. O 1 parmetro o REN Atual_arq 0C 20 Atual_arq 20 nome atual que se deseja mudar. O 2 Novo_arq<cr> Novo_arq 0D parmetro o novo nome do arquivo. OPR Nome_arq<cr> 0E 20 Nome_arq 0D Abre um arquivo para leitura. OPR Nome_arq 0E 20 Nome_arq 20 Abra um arquivo para leitura, especificando Data<cr> Data 0D uma data de acesso do arquivo. Move o ponteiro de arquivo posio SEK Offset_Dword<cr> 28 20 Offset_Dword 0D especificada no parmetro Offset_Dword (4 bytes). Retorna o espao livre disponvel em discos FS<cr> 12 0D menor ou igual a 4GB (em 4 bytes). Retorna o espao livre disponvel em quaisquer discos (em 6 bytes). Este FSE<cr> 93 0D comando l discos grandes (at centenas de TERA Bytes). Exibe informao sobre o disco se for IDD<cr> 0F 0D menor que 4GB. Exibe informao sobre quaisquer IDDE<cr> 94 0D tamanhos de discos.

DSN<cr> DVL<cr> DIRT Nome_arq <cr>

2D 0D 2E 0D

Exibe o nmero serial do disco. Exibe o nome do disco. Exibe informaes sobre o arquivo 2F 20 Nome_arq 0D especificado, como: data e hora de criao, modificao e acesso. Tabela 7 - Mensagens de erro Conjunto de comandos curtos (mensagem retornada) BC<cr> Em hexadecimal: (42 43 0D) CF<cr> Em hexadecimal: (43 46 0D) DF<cr> Em hexadecimal: (44 46 0D) Descrio Comando no reconhecido. Nome de arquivo ou diretrio no encontrado. No h espao no disco.

Conjunto de comandos estendidos (mensagem retornada) Bad Command<cr> Command Failed<cr> Disk Full<cr>

Tentou-se abrir um diretrio para leitura ou escrita. FI<cr> Invalid<cr> Tentou-se mudar o diretrio Em hexadecimal: (46 49 0D) atualmente selecionado para um arquivo. RO<cr> Tentou-se "escrever" num arquivo Read Only<cr> Em hexadecimal: (52 4F 0D) com atributo "somente leitura". Um arquivo est atualmente aberto FO<cr> para escrita e deve ser fechado antes File Open<cr> Em hexadecimal: (46 4F 0D) que esse comando possa ser executado. NE<cr> Tentou-se apagar um diretrio que Dir Not Empty<cr> Em hexadecimal: (4E 45 0D) no est vazio. NU<cr> Arquivo para atualizar o firmware no No Upgrade<cr> Em hexadecimal: (4B 55 0D) encontrado no disco. Tabela 8 - Mensagens exibidas quando h ou no um disco inserido no Host Conjunto de comandos estendidos FWU Nome_arq.FTD<cr> Conjunto de comandos curtos Descrio

Fora a atualizao do firmware no VNC1L a partir de um arquivo do tipo .FTD 95 20 Nome_arq.FTD disponvel no disco (Pen-drive). No tentar 0D com arquivos do tipo. ROM que so usados pelo programa VPROG e VPROG_COM.

Tabela 9 - Comandos para "dormir" e "acordar" o Pen-drive (economia de energia) Conjunto de Conjunto de comandos Descrio comandos curtos estendidos (Suspend disk) - Faz o pen-driver Em hexadecimal: (15 "dormir", mantendo-o em stand-by SUD<cr> 0D) quando no estiver em uso, para economia de energia. (Wake disk) - "Acorda" o pen-drive, faz Em hexadecimal: (16 WKD <cr> ele voltar ao modo on-line, ativo e pronto 0D) para uso.

Tabela 10 - Baud Rate para configurar a velocidade do Monitor de Comando Baud Rate 1 byte 2 Byte 3 Byte 300 0x10 0x27 0x00 600 0x88 0x13 0x00 1200 0xC4 0x09 0x00 2400 0xE2 0x04 0x00 4800 0x71 0x02 0x00 9600 0x38 0x41 0x00 19200 0x9C 0x80 0x00 38400 0x4E 0xC0 0x00 57600 115200 230400 460800 921600 1000000 1500000 2000000 3000000 0x34 0x1A 0x0D 0x06 0x03 0x03 0x02 0x01 0x00 0xC0 0x00 0x00 0x40 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

Testando os comandos do VNC1L com firmware VDAP, atravs do HyperTerminal do Windows possvel testar a maioria dos comandos do VNC1L com o firmware VDAP, simplesmente atravs da aplicao HyperTerminal do Windows, ou mesmo a partir de um outro programa similar. Irei descrever passo-a-passo os procedimentos necessrios para configurar o HyperTerminal, para podermos enviar e receber comandos atravs do Monitor de comandos do VNC1L. Como exemplo, iremos usar o circuito da Figura 14 / Pg. 2 (MAX232), ou seja comunicao Serial com o PC. PASSOS: 1) Escolhida a interface da Figura 14 / Pg. 2 desse artigo; habilite a programao do VNC1L (Mdulo VDIP1), simplesmente ligando o pino PG# ou a chave K2 ao GND; 2) Conecte o cabo Serial entre o circuito e o PC; 3) Alimente o circuito com uma tenso de 5v (Veja regulador de tenso); 4) No Windows, abra o HyperTerminal; crie uma conexo e configure-a conforme as telas abaixo. Escolha uma Porta COMx onde o cabo foi conectado. No nosso caso instalamos o circuito na COM1;

Figura 19 - Nome da conexo: VNC1L

Figura 20 - Escolhendo a porta COMx

Figura 21 - Configurando a Porta

Figura 22 - Emulao do terminal

Figura 23 - Configurao ASCII

5) Aps as configuraes, estabelea conexo com o circuito VNC1L. A mensagem abaixo exibida quando o VNC1L inicializado com um Pen-drive na Porta 2 .
Figura 24 - VCN1L inicializado

Segue abaixo mais mensagens que so exibidas quando o VNC1L reiniciado, o disco inserido ou removido do receptculo USB: Mensagem exibida quando o VNC1L inicializado sem Pen-drive: Ver 03.56VDAPB On-Line: Mensagem exibida quando um disco inserido na Porta 2: Device Detected P2 No Upgrade D:\> Mensagem exibida quando um disco removido da Porta 2: Device Removed P2 No Disk

6) Listando os nomes de arquivos e diretrios no Pen-drive. Digite o comando DIR seguido da tecla <Enter>. Aps a digitao do comando DIR, os nomes de arquivos e diretrios so exibidos. "DIR" ao lado direito do nome indica um diretrio. A formatao suportada a 8.3 (nomes com at 8 caracteres e extenso com at 3).
Figura 25 - Execuo do comando DIR

7) Mostrando informaes sobre o Pen-drive inserido no sistema. Digite o comando IDD ou IDDE e pressione a tecla <Enter>; Na janela do HyperTerminal abaixo so exibidos dados referente s caractersticas do fabricante do Pen-drive, como: VID e PID, tipo de FAT, capacidade do disco, espao livre no disco, etc.

Figura 26 - Execuo do comando IDDE

Atualizando o firmware atravs do Pen-drive (comando FWU) Baixe o arquivo original ftrfb_main_03_56VDAPB.ftd do site da vinculum em (www.vinculum.com). Copie o arquivo para o Pen-drive. Exemplo de uso: No HyperTerminal do windows (conectado com o VNC1L) digite: Fwu ftrfb_~1.ftd<enter> D:\> Found It Change MAIN Reflasher Active ................................................................................ Rebooting Ver 03.56VDAPB On-Line: Device Detected P2 No Upgrade Pronto, se o VNC1L foi atualizado corretamente com o arquivo de firmware, a mensagem "Rebooting" exibida, informando que o circuito foi reinicializado.

Trocando o Baud Rate do Monitor de Comandos do VNC1L Se desejar mudar a velocidade de comunicao do Monitor de Comandos (padro 9600bps) para uma maior, use o comando SBD. Por exemplo, vamos mudar a velocidade atual do VNC1L para 115.200bps (velocidade mxima que o MAX232 suporta). Digite os comandos abaixo na janela do HyperTerminal: IPA<enter> SBD 0x1A0000<enter> Depois clique no boto Desconectar no HyperTerminal; clique no boto Propriedades->Configurar..., e mude a velocidade para 115.200bps. Clique no boto Chamar (conectar). Essa configurao se mantm enquanto o VNC1L no for reinicializado. Obs.: O parmetro passado para o comando SBD foi o nmero hexadecimal 0x1A0000. Observando bem a Tabela 10 / Pg. 3 deste artigo, vemos que os trs bytes para o Baud rate 115.200bps so: 1 byte = 1A; 2 byte = 00 e 3 byte = 00, ou seja, o nmero hexadecimal 1A0000. O comando IPA (Tabela 5 / Pg. 3) foi executado antes, para que o Monitor de Comandos aceite entrada e sada de dados no formato ASCII. Circuito completo para o projeto Estao Pen-drive Aqui esto disponveis todos os esquemas para projetar a Estao Ependrive, como os circuitos do microcontrolador, regulador de tenso, relgio/calendrio DS1307, mdulo VDIP1, display LCD e sensor de temperatura/umidade SHT75. Todos os mdulos devem ser acoplados ao micocontrolador atravs de uma interface que pode ser: I2c, UART Serial, SPI ou Paralela. Esses mdulos so alimentados com tenso de 5v. O microcontrolador PIC18F452 foi escolhido para o desenvolvimento deste projeto, por ter uma memria de programa suficiente para comportar o arquivo .HEX, resultante da compilao de todas as bibliotecas de arquivos Fonte, pois cada componente tem sua prpria biblioteca de funes para faze-lo funcionar. Alm da memria de programa mais que suficiente para a programao do nosso firmware, o PIC18F452 dispe de 33 pinos de I/O, desses, somente 22 foram usados. Portanto, h 11 pinos e, mais de 40% da memria de programa livre para implementao de novos recursos, como a adio de novos sensores tipo: anemmetro, pluviomtrico, baromtrico, UV, direo do vento, luminosidade, entre outros. Segue abaixo os esquemas de todos os circuitos:

Figura 27 - Circuito principal do microcontrolador

Todos os mdulos de circuitos devem ser conectados ao circuito principal do microcontrolador, mostrado na Figura 27 acima. O mdulo LCD usa 7 pinos do microcontrolador para se comunicar, sendo os pinos 38, 39 e 40 para controle, e os pinos 27, 28, 29 e 30 para dados. O relgio/calendrio DS1307 usa os pinos 9 e 10 para se comunicar via protocolo I2C. O sensor de temperatura/umidade SHT75 usa dois pinos: 19 e 20 para se comunicar via protocolo SPI proprietrio. J o Mdulo VDIP1 usa cinco pinos, o 25 e o 26, respectivamente TX e RX da UART Serial, os pinos 15 e o 16 para uso do controle de fluxo via hardware e o pino 17, usado para reinicializar o Mdulo VDIP1. O pino 18 usado para o boto de decremento (BOT Dec). O pino 23 para o boto de incremento (BOT Inc). J o pino 24 reservado para o boto de mudana de tela (BUT1). Os pinos 21 e 22 so usados para o TX e RX de uma interface Serial. Na implementao atual somente o pino 21-TX usado para enviar os dados colhidos dos sensores, para um PC. Se a Estao Ependrive for instalada num lugar remoto, onde no vivel fazer uma rede via cabos, adicione Estao um mdulo de RF (ZigBee, etc). A configurao de comunicao dessa interface : velocidade: 9600bps, paridade:N, bits de dados 8 e Stop bits 1.

Figura 28 - Circuito do regulador de tenso

Na Figura 28 acima vemos o circuito regulador de tenso, ele baseado no LM1117 IMP5.0/NOPB, com sada de 5v e corrente mxima de at 800mA, seu encapsulamento do tipo SOT-223. A tenso de entrada pode ser de uma fonte de alimentao de 12v, como de Baterias, Painel Solar, Elica, etc.
Figura 29 - Mdulo VDIP1 (Circuito para interface com o Pen-drive)

Na Figura 29 acima temos o Mdulo VDIP1 da FTDI/Vinculum. O receptculo (conector USB) est ligado Porta 2 do VNC1L. Nesse mesmo mdulo possvel usar a Porta 1 (pinos U1P e U1M), para conectar um perifrico USB, tipo FT232, FT245, impressora, modem, entre outros, mas neste artigo no explorarei este assunto. Observe na figura acima os Jumps, as linhas vermelhas esto ligadas entre os pinos 1 e 2, tanto do Jump J3 como do J4, definindo que o mdulo ir se comunicar atravs de uma interface UART Serial atravs dos pinos (AD3, AD2, AD0 e AD1), respectivamente chamados de CTS#, RTS#, TXD e RXD. O pino RS# quando em nvel baixo (0) ou GND, reinicializa o Mdulo. Caso no tenha o Mdulo VDIP1, confeccione o circuito da Figura 10 / Pg 2, que funcionar da mesma forma.

Obs.: Lembre-se de atualizar o firmware VDAP no VNC1L, com a verso mais atual disponvel no site da Vinculum (www.vinculum.com).
Figura 30 - Circuito do relgio e calendrio (DS1307)

Na Figura 30 acima vemos o circuito do relgio/calendrio, baseado no CI DS1307 que gera as horas, minutos, segundos, dia, ms, ano e dia-da-semana. O CI trabalha com interface I2C que deve ser conectado aos pinos 9 e 10 do microcontrolador da Figura 27. O sinal de clock do CI gerado por um cristal de quatz de 32.768 KHz. Para manter a data e a hora sempre atualizadas, mesmo que a alimentao do circuito cesse, uma bateria de Lithium de 3v deve ser ligada aos pinos 3 e 4 do DS1307. O uso desse relgio no projeto muito importante, pois ele gera a data e a hora corrente, que so usadas na criao e atualizao do arquivo DADOS.TXT, como tambm a data e a hora em que os sensores foram lidos. Alm dessas funes importantssimas, o relgio usado para controlar o intervalo de tempo em que os dados so gravados no Pen-drive.

Figura 31 - Circuito do display LCD

Na Figura 31 acima est ilustrado o esquema eltrico do Mdulo LCD 16x2, compatvel com processador HD44780. Segue uma breve descrio da funo de cada pino. O pino 1 (VSS) ligado ao negativo da fonte de alimentao (0v), e o pino 2 (VDD) ao positivo (+5v). O pino 3 (VO) usado para ajustar o contraste dos caracteres; ligado a um Trim-pot de 10k ohm. O pino 4 (RS) utilizado para avisar ao mdulo LCD se o que ser enviado posteriormente uma Instruo (comando de controle), ou um Dado (caracter a ser impresso no display). J o pino 5 (R/W) usado para Escrever ou L um dado no LCD. O pino 6 (E) usado para habilitar ou desabilitar o LCD. Deveremos ativ-lo com (E = 1) apenas quando o display for acessado. Os pinos 7..14 (D0...D7) so usados para interfacear o LCD. No nosso caso, iremos usar o LCD no modo 4 bits (pinos 11, 12, 13 e 14 como bus de dados). Os pinos 15 e 16 (LED+ e LED-) s estaro disponveis se o mdulo LCD adquirido tiver backlight (luz de fundo). Para controlar a luminosidade, acrescenta-se um Trim-pot de 100 ohm entre esses pinos. O objetivo do backlight facilitar a leitura das informaes pelo usurio mesmo no escuro. Obs.: Seria interessante implementar um interruptor na alimentao do LCD, para economizar energia quando o mesmo no estivesse em uso.

Figura 32 - Circuito Sensor de Temperatura e umidade (SHT75)

Na Figura 32 acima temos o sensor dois-em-um, o SHT75. Este um sensor de temperatura e umidade relativa, de alta preciso fabricado pela Sensirion; tem resoluo de sada de 14 bits de dados para a temperatura e umidade relativa. Usa um protocolo SPI proprietrio, sendo que o mesmo protocolo pode ser usado para os outros modelos SHT1x e SHT7x. - Faixas de leitura da temperatura: -40 123 C. - Faixas de leitura da umidade relativa: 0 100%.

Funcionamento do sistema O sistema grava no Pen-drive os seguintes dados num arquivo chamado DADOS.TXT: > Dia/ms/ano, hora/minuto/segundo, Temperatura, Umidade e ponto de orvalho. No seguinte formato: D02/08/07H15:03:09T019.5U063.4P012.4# Onde: D > Aps este caracter segue-se a Data, com tamanho de 8 caracteres. H > Aps este caracter segue-se a Hora, com tamanho de 8 caracteres. T > Aps este caracter segue-se a Temperatura, com tamanho de 5 caracteres. U > Aps este caracter segue-se a Umidade, com tamanho de 5 caracteres. P > Aps este caracter segue-se o Ponto de orvalho, com tamanho de 5 caracteres. # > Este caracter indica final de registro ou linha. Cada registro tem um total de 37 caracteres. Tambm so gravados os caracteres CR e LF para separar as linhas e organizar visualmente o arquivo Dados.txt. Exemplo do contedo do arquivo Dados.txt aps algus minutos de gravao:

D02/08/07H15:44:43T019.9U060.3P012.0# D02/08/07H15:45:42T019.9U060.9P012.1# D02/08/07H15:46:42T019.9U060.1P012.0# D02/08/07H15:47:42T019.9U060.0P012.0# D02/08/07H15:48:42T019.9U060.1P012.0# Obs.: No exemplo acima o sistema foi configurado para gravar os dados a cada 1 minuto. possvel configurar o mesmo para gravar os dados em intervalos de 1 segundo a no mximo 4 minutos. Em nossos testes usamos um Pen-drive da Sony, de 1GB de dados. Capturando os dados pela Serial (RS232), configurada como: 9600, N, 8, 1 Os formatos dos dados esto organizados da seguinte forma: D00/00/000<LF> H00:00:00<LF> T000.0<LF> U000.0<LF> P000.0<LF> Lx...<LF> Observe que todas as strings so finalizadas pelo caracter LF, (10) decimal, ou (0A) em hexadecimal. Onde: D > Aps este caracter segue-se a Data, com tamanho de 8 caracteres. O prximo caractere representa o dia da semana (1-Domingo...7-sbado). H > Aps este caracter segue-se a Hora, com tamanho de 8 caracteres. T > Aps este caracter segue-se a Temperatura, com tamanho de 5 caracteres. U > Aps este caracter segue-se a Umidade, com tamanho de 5 caracteres. P > Aps este caracter segue-se o Ponto de orvalho, com tamanho de 5 caracteres. L > Aps este caracter segue-se o espao Livre no Pen-drive, com tamanho varivel. O valor est em Bytes. Exemplo de uma captura via RS232: D23/07/072<LF> H16:06:45<LF> T021.3<LF> U072.5<LF> P016.2<LF> L1045368832<LF> Na primeira linha ou registro (D), logo aps os 2 dgitos do ano (07), vem o dia-da-semana, no nosso exemplo acima o nmero 2 (segunda-feira). J na ultima linha ou registro logo aps o (L), vem um nmero longo que indica o espao livre no Pen-drive. O valor deve ser lido em bytes. No exemplo acima, o espao livre de: 1.045.368.832 Bytes.
Figura 33

- Tela do programa Ependrive.exe (verso Windows) para leitura dos dados via Serial

O programa Ependrive.exe est disponvel para download no final desta pgina. Mensagens exibidas no display LCD da Estao PenDrive
Figura 34 - Mensagem ao ligar o sistema

A mensagem acima ser exibida no display LCD quando o sistema for ligado ou reinicializado. J as mensagens nas telas abaixo so exibidas na ordem seqencial quando o boto do sistema BUT1 for pressionado e solto.
Figura 35 - Tela 1: Data e hora Figura 36 - Tela 2: Temperatura/Umidade

Figura 37 - Tela 3: Ponto de orvalho

Figura 38 - Tela 4: Espao livre no Pendrive

Figura 39 - Tela 5: Seleo do Intervalo de gravao de 1 a 256 segundos

Para mudar de tela pressiona-se o boto BUT1 por aproximadamente 1 segundo soltando-o em seguida. J para aumentar ou diminuir o intervalo de gravao, pressiona-se o boto BUT1 at ser exibida a Tela 5. Para aumentar o intervalo pressiona-se o boto BUT Inc., e para diminuir pressiona-se o boto BUT Dec. Qualquer mudana no intervalo de gravao armazenado numa posio de memria EEPROM do PIC18F452. Na prxima vez que o sistema for reinicializado por

quaisquer motivos, o valor do intervalo de gravao ser aquele que foi selecionado pela ltima vez.
Figura 40 - Animao inserindo/removendo o Pen-drive no Mdulo VDIP1

Figura 41 - Mensagem: no h disco ou o mesmo foi removido

A tela acima ser exibida quando o Pen-drive for removido do receptculo (conector USB). Ela tambm pode ser exibida quando o sistema for inicializado sem um Pen-drive. J a tela abaixo ser exibida quando o Pen-drive for inserido.
Figura 42 - Mensagem: o disco foi inserido

O tempo em que a mensagem acima permanecer na tela depender do tamanho do disco, isso poder levar alguns segundos, tempo necessrio para o sistema do VNC1L l a FAT, o espao livre e ocupado em disco, etc. Atualizando o Relgio do sistema (estao PenDrive) atravs do PC A data e a hora do sistema (Estao Ependrive) so atualizadas atravs do PC. Mesmo que o sistema seja desligado, uma bateria de Lithium manter a memria do relgio do sistema sempre em atividade. A durabilidade da bateria em torno de 10 anos. PASSOS: 1) Conecte um cabo Serial (ou USB se estiver usando a placa USB232-RCOM1) entre a Estao PenDrive e o PC; 2) Como a Estao PenDrive desligada, mantenha o boto BUT1 pressionado; 3) Ligue a Estao PenDrive, a mensagem abaixo ser exibida no display LCD:
Figura 43 - Mensagem: aguardando data/hora

4) No PC, rode o programa AtualizaDataHora.EXE (disponvel para download no final desta pgina);
Figura 44 - Programa para atualizar data/hora

5) Selecione a porta COMx correta, clique no boto Desconectado para estabelecer conexo a Estao PenDrive; 6) Clique no boto Atualizar Data/Hora. Se houver sucesso na atualizao da Data e hora, a mensagem da tela abaixo ser exibida no display LCD.
Figura 45 - Mensagem: relgio atualizado

7) No sitema Estao PenDrive solte o boto BUT1, e no PC feche o programa AtualizaDataHora.EXE. Pronto, o relgio da estao PenDrive foi atualizado com sucesso e a conexo pode ser desfeita do PC. FIM. Dowload dos programas: Download do programa HEX para gravar o PIC18F452; Download do programa Ependrive.exe (PC); Download do programa AtualizaDataHora.exe (PC).

Todos os Cdigos Fonte escritos em C/C++ esto disponveis em nosso Curso USB/Serial. Informaes: www.rogercom.com

Bibliografia
www.ftdichip.com www.vinculum.com www.sensirion.com www.microchip.com www.ccsinfo.com http://www.maxstream.net www.rogercom.com/Indice.htm