estaÇÃo pendrive

34
Conectando um Pen-drive a um Microcontrolador (Projeto Estação Pen- drive). INTRODUÇÃO O projeto aqui descrito foi baseado no VNC1L-1A da FTDI/Vinculum, um Chip Host USB com vários recursos agregados. Não é possível em um único artigo, explorar todos os recursos desse componente, mas iremos explorar através de um projeto bastante interessante e funcional, o recurso de comunicação com um Pen-drive (Flash Disk). O VNC1L funciona de várias formas, mediante a gravação em sua memória de programa, de um firmware (arquivo .ROM) adequado ao propósito 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 periférico 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 periféricos FTDI. VCDC (Communication class device) Firmware para trabalhar com dispositivos USB de classe de comunicação (Modem etc.); VMSC (Music player) - Firmware com recurso para manipular arquivos de música MP3; VF2F (Disk to disk copier) - Firmware com funções 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 versão de código de firmware permite uma combinação diferente de dispositivos. Além de vários pinos de propósitos 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 altíssima precisão, um CI relógio/calendário da Philips o DS1307 (I2C), um Display LCD de texto 2x16 com backlight e um microcontrolador PIC 18F452. Além de gravar os dados no Pen-prive, o PIC18452 transmite os mesmos em intervalos de 1 segundo através da UART (RS232), onde é possível com o

Upload: barbosa2k8

Post on 24-Apr-2015

189 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: ESTAÇÃO Pendrive

Conectando um Pen-drive a um Microcontrolador (Projeto Estação Pen-drive).

INTRODUÇÃO

O projeto aqui descrito foi baseado no VNC1L-1A da FTDI/Vinculum, um Chip Host USB com vários recursos agregados.Não é possível em um único artigo, explorar todos os recursos desse componente, mas iremos explorar através de um projeto bastante interessante e funcional, o recurso de comunicação com um Pen-drive (Flash Disk).O VNC1L funciona de várias formas, mediante a gravação em sua memória de programa, de um firmware (arquivo .ROM) adequado ao propósito 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 periférico 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 periféricos FTDI.VCDC (Communication class device) Firmware para trabalhar com dispositivos USB de classe de comunicação (Modem etc.);VMSC (Music player) - Firmware com recurso para manipular arquivos de música MP3;VF2F (Disk to disk copier) - Firmware com funções 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 versão de código de firmware permite uma combinação diferente de dispositivos. Além de vários pinos de propósitos 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 altíssima precisão, um CI relógio/calendário da Philips o DS1307 (I2C), um Display LCD de texto 2x16 com backlight e um microcontrolador PIC 18F452. Além de gravar os dados no Pen-prive, o PIC18452 transmite os mesmos em intervalos de 1 segundo através da UART (RS232), onde é possível com o uso de um conversor tipo CI MAX232, enviar os dados para um PC. Também é possível agregar um módulo de rádio freqüência (RF) tipo ZigBee™, entre outros, e transmitir os mesmos sem fio.

Page 2: ESTAÇÃO Pendrive

Figura 1 - Visão parcial do sistema estação Pen-drive

Figura 2 - Visão geral do sistema estação Pen-drive

Na figura acima é possível ver os componentes que fazem para de todo o sistema. O PC será de suma importância no desenvolvimento do projeto, para gravar o microcontrolador e atualizar a data e hora do relógio. Depois da conclusão 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, espaço no Pen-drive e intervalo de gravação no Pen-drive podem ser vistos no display LCD, através do pressionamento de um único botão (BUT1 - botão muda tela). Há mais dois botões (BUT Inc) e (BUT Dec), respectivamente Incremento e decremento, usados para aumentar ou diminuir o intervalo de gravação dos dados no Pen-drive. O intervalo de tempo mínimo para gravar os dados é de 1 segundo, e o máximo são de 256 segundos (em torno de 4 minutos).

Page 3: ESTAÇÃO Pendrive

Figura 3 - Exemplo de uma caixa para comportar os sistemas

Na figura acima temos uma visão de como poderá ser o design do projeto, esta ilustração é somente um exemplo, fica a gosto de cada um a definição final da aparência do sistema.

Figura 4 - Painel solarFigura 5 - Gerador

eólico

Se no local onde o sistema for instalado não houver energia Elétrica, é importante antes projetar uma fonte de energia alternativa como a Solar ou mesmo Eólica. A energia gerada por essas fontes deve ser armazenada em baterias, para então fornecer energia ao sistema durante o dia e a noite.

Figura 6 - Regulador de tensão

Page 4: ESTAÇÃO Pendrive

Vejamos agora o CI VNC1L e suas características

Nas ilustrações abaixo vemos o CI VNC1L e a numeração/descrição de cada pino:

Pinos do Vinculum VNC1L

Figura 7

Figura 8

Principais características do VNC1L-1A

- 2 controladoras de DMA para aceleração 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 memória de programa Flash ROM embutida;- 4KBytes internos de memória 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 fácil atualização em campo;- Programa para atualizar o firmware fornecido pela FTDI, via UART serial ou através de um Pen-drive;- Interface UART para entrada/Saída de Dados;- Programação do firmware;- Pino de controle PROG# para programação do firmware;- Interface para o Monitor de comandos, via SPI, UART Serial ou FIFO;- Entrada de alimentação segura de 5v e operando a 3,3v;- Até 28 GPIO pinos de I/O de dados e monitor de comandos;- Suporta dispositivos de configuração USB Bus powered, self-powered e high-power bus powered;- Completamente compatível com especificação de USB 2.0;- CI disponível em tamanho compacto LQFP de 48 pinos, livre de chumbo (Pb-free);- USB Host e slave compatível com alta velocidade (12 Mbps), e baixa velocidade (1.5 Mbps)

Page 5: ESTAÇÃO Pendrive

Versão do firmware VDAP usado no VNC1L para o nosso projeto:Nome do Arquivo: VDAPFUL_V3_56.ROMVersão: MAIN 03.56VDAPBRPRG 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, além de gerenciar um Pen-drive poderá também gerenciar um periférico USB escravo, como por exemplo, um circuito baseado num chip FT232, FT232, FT245, FT2232, ou mesmo um periférico 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 memória de armazenamento de massa (BOMS Flash Disk).A interface de comunicação (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 não precisamos de altas velocidades para gravar os dados no disco. A velocidade máxima 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 instruções ao VNC1L, através de uma das três interfaces citadas acima.

Desenvolvimento dos circuitos

Há duas opções para obtermos o circuito responsável pelo controle do Pen-drive. A primeira é mais demorada, pois sugere a confecção do circuito a partir do zero (layout, corrosão da placa de circuito impresso, aquisição dos componentes, soldagens em SMD, testes, etc). A segunda é muito mais prática, pois usá-se um módulo pronto para ser agregado ao projeto. O módulo usado no nosso projeto foi o VDIP1 da FTDI/Vinculum. Nesse artigo disponibilizo as duas opções, que são mostradas nas figuras abaixo.

Page 6: ESTAÇÃO Pendrive

Figura 10 - Opção 1: (confecção do circuito), hardware responsável pela leitura e gravação no Pen-drive.

O circuito acima é um Host USB responsável pela leitura, gravação e outras particularidades do Pen-drive. Veja que a Porta 2 (USB2DM / USB2DP) do VNC1L é a Porta padrão para a troca de informação com o Pen-drive, usando o firmware VDAP. A Porta 2 também pode ser usada para troca de informações com dispositivos padrão FTDI.A chave K1 quando ligada ao GND reinicializa o VNC1L e pode ser ligada ao microcontrolador para um controle de reset automático.Para gravarmos uma versão de firmware novo na memória de programa do VNC1L, mantemos a chave K2 ligada ao GND até a conclusão da gravação. É possível também, atualizar a versão do firmware no VNC1L de forma automática, a partir de um arquivo especial fornecido pela FTDI e transferido para o Pen-drive. O VNC1L lê este arquivo, e de forma automática grava em sua memória. Segundo a FTDI esta não é uma opção segura para atualizar o firmware, sendo preferível a gravação por transferência de arquivo via PC.A interface entre o VNC1L e o microcontrolador deve ser selecionada através 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 comunicação com o microcontrolador.

Page 7: ESTAÇÃO Pendrive

Tabela 1 - Seleção da interface para o Monitor de comandos ACBUS6 (Pino

47)ACBUS5 (Pino

46)Interface

selecionada Pull-Up Pull-Up UART SerialPull-Up Pull-Down SPI

Pull-Down Pull-Up FIFO ParalelaPull-Down Pull-Down 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 são formados pelos pinos (ADBUS0, ADBUS1, ADBUS2 e ADBUS3).

Figura 11 - Opção 2: (Módulo VDIP1), hardware responsável pela leitura e gravação de dados no Pen-drive.

Figura 12 - Configuração do módulo VDIP1 no modo Serial (interface com um microcontrolador)

A configuração do módulo VDIP1 acima, é idêntica a configuração do circuito da Figura 10. Para selecionar a interface a ser usada para o Monitor de comandos faz-se necessário manipular os "Jumps" do módulo. Veja na figura acima, dentro do círculo verde, as linhas vermelhas ligando os contatos, e assim, selecionando a interface UART Serial. Veja também que na interface são 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 módulo VDIP1.

Page 8: ESTAÇÃO Pendrive

Figura 13 - Selecionando a interface Serial no módulo VDIP1

Atualizando o firmware do VNC1L

Antes de darmos continuidade ao desenvolvimento do nosso projeto, teremos que atualizar a versão do firmware do VNC1L no módulo VDIP1, isso é necessário para usarmos os recursos mais atuais do firmware VDAP. A FTDI/Vinculum mantém uma equipe de Engenherios trabalhando constantemente na detecção e correção de possíveis "Bugs", e também na adição de novos comandos e recursos. Temos duas opções de interface de hardware para fazer a comunicação entre VNC1L e o PC para podermos gravar o arquivo contendo o firmware na memória de programa do VNC1L. Uma dessas interfaces pode ser usada posteriormente após a atualização do firmware, para testarmos os comandos do VNC1L através do programa HyperTerminal do windows.Fora as duas opções citadas acima, tem uma outra que atualiza o firmware a partir de um arquivo especial copiado para o Pen-drive. Esse arquivo tem a extensão (.ftd) e pode ser baixado do site da Vinculum em: (www.vinculum.com). No tempo em que eu estava escrevendo este artigo, o nome/versão do arquivo de firmware VDAP, disponível para atualização via Pen-drive era o ftrfb_main_03_56VDAPB.ftd. Já para atualização via PC (usando uma das duas interfaces de hardware), o nome de arquivo de firmware era o VDAPFUL_V3_56.rom.

Veja nas próximas 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 comunicação entre o VNC1L e o PC.A interface acima pode ser usada tanto para gravar o VNC1L (chave K2 ligada ao GND), com

Page 9: ESTAÇÃO Pendrive

também para testar os comandos e a funcionalidade do VNC1L, através 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 comunicação entre o VNC1L e o PC.Essa interface também pode ser usada tanto para gravar o VNC1L (chave K2 ligada ao GND), com também para testar os comandos e a funcionalidade do VNC1L, através de um programa como o HiperTerminal do Windows ou mesmo o RcomSerial.Para grava a memória de programa do VNC1L, a FTDI/Vinculum disponibiliza em seu site dois programas: um para a comunicação RS232 (Vprog_com.exe) e outro para comunicação USB (Vprog.exe).

Nota: A interface que usa o Max232 pode estabelecer velocidade de comunicação de no máximo 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 (continuação)

Agora que temos duas opções de interfaces para gravar o firmware no VNC1L, a escolha fica a seu critério. Siga os passos abaixo para baixar os arquivos e gravar o VNC1L com a versão mais atual do firmware VDAP.

PASSOS:

1) No circuito da interface escolhida (Figura 14 ou 15 / Pág 2), ligue o pino PROG# ou PG# no VDIP, ao GND da alimentação, para preparar o VNC1L para uma gravação de firmware;

Page 10: ESTAÇÃO Pendrive

2) Faça download do firmware VDAP mais atualizado no site da FTDI / Vinculum em: www.vinculum.com na seção Download / Firmware, ou baixe a versão 3.56 a partir do nosso site, clicando em: VDAPFUL_V3_56.ZIP;

3) Faça download também do programa para gravar o firmware, disponível na seção 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 / Pág 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 botão "ROM File..." para localizar o arquivo de firmware VDAPFUL_V3_56.ROM; clique no botão "Program" para iniciar a gravação do VNC1L. Veja a figura abaixo:

Figura 17 - Progresso na gravação

Se houver sucesso na gravação, a tela abaixo será exibida:

Figura 18 - Gravação concluída

Para finalizar, clique no botão 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.

Page 11: ESTAÇÃO Pendrive

COMANDOS PARA SE COMUNICAR COM O PEN-DRIVE ATRAVÉS DO MONITOR DE COMANDOS DO VNC1L

Como mencionado no início desse artigo, nosso projeto explora do CI VNC1L (com o firmware VDAP), somente os recursos que dizem respeito à manipulação de dados no Pen-drive, como também alguns comandos necessários para a configuração do Monitor de Comandos (controle da interface entre o VNC1L e o microcontrolador).Os comandos de controle são no formato DOS, tipo DIR, MK etc. Há dois modos de comandos: os estendidos e os curtos. No modo estendido os nomes dos comandos são escritos na integra, não sendo também 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 são enviados em formato hexadecimal, e as mensagens retornadas pelo VNC1L são strings de dois a três caracteres. Esse modo é ideal para se trabalhar com microcontroladores, já que as instruções são reduzidas.Ao ligar o VNC1L o Baud rate padrão da interface UART Serial do Monitor de Comandos é 9600bps, podendo ser configurada pelo usuário 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 máxima de comunicação que se pode obter é de 921.600bps. Já usando um conversor Serial baseado no MAX232, a velocidade máxima é 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 solução 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 válidos na Tabela 6.Segue nas tabelas abaixo, todos os comandos para manipular Pen-drive disponibilizados pela FTDI/Vinculum na versão 03.56 do firmware VDAP.

Tabela 2 - Exibição do Prompt em formato estendido e curto Conjunto de comandos

estendidos(mensagem retornada)

Conjunto de comandos curtos

(mensagem retornada)

D:\><cr>><cr> Em hexadecimal (3E 0D).

Tabela 3 - Mensagens exibidas quando há ou não um disco inserido no Host

Disco presente ?Conjunto de comandos

estendidos(mensagem retornada)

Conjunto de comandos curtos(mensagem retornada)

SIM D:\><cr>><cr> Em hexadecimal (3E 0D).

NÃO No Disk<cr>ND<cr> Em hexadecimal (4E 44 0D).

Tabela 4 - Mensagens exibidas quando um dispositivo e plugado ou desplugado do Host VNC1L

Evento ocorrido Conjunto de comandos

estendidos(mensagem retornada)

Conjunto de comandos curtos

(mensagem retornada)Um dispositivo USB escravo foi inserido na porta 2

Device Detected P2<cr>DD2<cr> 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 comandosConjunto de comandosestendidos

Conjunto de comandos curtos

(em hexadecimal)Descrição

Page 12: ESTAÇÃO Pendrive

SCS<cr> 10 0D Troca para o conjunto de comandos curtos.ECS<cr> 11 0D Troca para o conjunto de comandos estendidos.

IPA<cr> 90 0DConfigura o monitor de comandos para trabalhar com valores em ASCII.

IPH<cr> 91 0DConfigura o monitor de comandos para trabalhar com valores binários (Hexadecimal).

SBD divisor<cr> 14 20 divisor 0D Troca a taxa de baud rate do monitor de comandos.FWV<cr> 13 0D Exibe a versão do firmware VNC1L.

E<cr> 45 0DEcoa o caracter 'E' para efeito de sincronismo. Ou seja, retorna E<cr>.

e <cr> 65 0DEcoa o caracter 'e' para efeito de sincronismo. Ou seja, retorna e<cr>.

Tabela 6 - Conjunto de comandos para manipulação de arquivos, diretórios e exibição de informações sobe o disco

Conjunto de comandosestendidos

Conjunto de comandos curtos

(em hexadecimal)Descrição

DIR<cr> 01 0DMostra os nomes dos arquivos no diretório (pasta) atual.

DIR Nome_arq<cr> 01 20 Nome_arq 0D Mostra o tamanho do arquivo especificado em Nome_arq em 4 bytes.

CD Nome_pasta<cr> 02 20 Nome_pasta 0D Muda o diretório (pasta) atual.

CD ..<cr> 02 20 2E 2E 0D Retorna um nível acima do diretório (pasta) atual.

RD Nome_arq<cr> 04 20 Nome_arq 0D Lê todo o conteúdo de um arquivo.DLD Nome_pasta<cr> 05 20 Nome_pasta 0D Apaga um diretório (pasta).MKD Nome_pasta<cr> 06 20 Nome_pasta 0D Cria um diretório (pasta).MKD Nome_pasta DataHora <cr>

06 20 Nome_pasta DataHora 0D

Cria um diretório (pasta) e especifica a data e a hora da criação.

DLF Nome_arq<cr> 07 20 Nome_arq 0D Apaga um arquivo.

WRF Tama_Dword<cr>Dados

08 20 Tama_Dword 0D Dados

Escreve uma quantidade de bytes especificado no 1º parâmetro Tama_Dword (4 bytes), no arquivo atualmente aberto pelo comando OPW. Os dados a serem gravados são colocados no 2º parâmetro Dados.

OPW Nome_arq<cr> 09 20 Nome_arq 0D Abre um arquivo para escrita. OPW Nome_arq DataHora<cr>

09 20 Nome_arq 20 DataHora 0D

Abre um arquivo para escrita e, especifica a data e a hora da gravação.

CLF Nome_arq<cr> 0A 20 Nome_arq 0D Fecha o arquivo atualmente aberto.

RDF Tama_Dword <cr> 0B 20 Tama_Dword 0D Lê um número de bytes especificado no 1º parâmetro Tama_Dword (4 bytes) do arquivo atualmente aberto.

REN Atual_arq Novo_arq<cr>

0C 20 Atual_arq 20 Novo_arq 0D

Nomeia um arquivo. O 1º parâmetro é o nome atual que se deseja mudar. O 2º parâmetro é o novo nome do arquivo.

OPR Nome_arq<cr> 0E 20 Nome_arq 0D Abre um arquivo para leitura. OPR Nome_arq Data<cr>

0E 20 Nome_arq 20 Data 0D

Abra um arquivo para leitura, especificando uma data de acesso do arquivo.

SEK Offset_Dword<cr> 28 20 Offset_Dword 0D Move o ponteiro de arquivo à posição especificada no parâmetro Offset_Dword (4 bytes).

FS<cr> 12 0D Retorna o espaço livre disponível em discos menor ou igual a 4GB (em 4 bytes).

FSE<cr> 93 0D

Retorna o espaço livre disponível em quaisquer discos (em 6 bytes). Este comando lê discos grandes (até centenas de TERA Bytes).

IDD<cr> 0F 0D Exibe informação sobre o disco se for menor que 4GB.

IDDE<cr> 94 0D Exibe informação sobre quaisquer tamanhos de discos.

Page 13: ESTAÇÃO Pendrive

DSN<cr> 2D 0D Exibe o número serial do disco. DVL<cr> 2E 0D Exibe o nome do disco.

DIRT Nome_arq <cr> 2F 20 Nome_arq 0D Exibe informações sobre o arquivo especificado, como: data e hora de criação, modificação e acesso.

Tabela 7 - Mensagens de erroConjunto de comandos

estendidos(mensagem retornada)

Conjunto de comandos curtos(mensagem retornada)

Descrição

Bad Command<cr> BC<cr>Em hexadecimal: (42 43 0D)

Comando não reconhecido.

Command Failed<cr> CF<cr> Em hexadecimal: (43 46 0D)

Nome de arquivo ou diretório não encontrado.

Disk Full<cr> DF<cr>Em hexadecimal: (44 46 0D)

Não há espaço no disco.

Invalid<cr> FI<cr> Em hexadecimal: (46 49 0D)

Tentou-se abrir um diretório para leitura ou escrita.Tentou-se mudar o diretório atualmente selecionado para um arquivo.

Read Only<cr> RO<cr> Em hexadecimal: (52 4F 0D)

Tentou-se "escrever" num arquivo com atributo "somente leitura".

File Open<cr> FO<cr> Em hexadecimal: (46 4F 0D)

Um arquivo está atualmente aberto para escrita e deve ser fechado antes que esse comando possa ser executado.

Dir Not Empty<cr> NE<cr> Em hexadecimal: (4E 45 0D)

Tentou-se apagar um diretório que não está vazio.

No Upgrade<cr> NU<cr> Em hexadecimal: (4B 55 0D)

Arquivo para atualizar o firmware não encontrado no disco.

Tabela 8 - Mensagens exibidas quando há ou não um disco inserido no Host

Conjunto de comandos estendidos

Conjunto de comandos curtos

Descrição

FWU Nome_arq.FTD<cr>

95 20 Nome_arq.FTD 0D

Força a atualização do firmware no VNC1L a partir de um arquivo do tipo .FTD disponível no disco (Pen-drive). Não tentar com arquivos do tipo. ROM que são usados pelo programa VPROG e VPROG_COM.

Tabela 9 - Comandos para "dormir" e "acordar" o Pen-drive (economia de energia)Conjunto de comandos estendidos

Conjunto de comandos curtos

Descrição

SUD<cr>Em hexadecimal: (15 0D)

(Suspend disk) - Faz o pen-driver "dormir", mantendo-o em stand-by quando não estiver em uso, para economia de energia.

WKD <cr>Em hexadecimal: (16 0D)

(Wake disk) - "Acorda" o pen-drive, faz ele voltar ao modo on-line, ativo e pronto para uso.

Page 14: ESTAÇÃO Pendrive

Tabela 10 - Baud Rate para configurar a velocidade do Monitor de ComandoBaud Rate 1º byte 2º Byte 3º Byte

300 0x10 0x27 0x00600 0x88 0x13 0x00

1200 0xC4 0x09 0x002400 0xE2 0x04 0x004800 0x71 0x02 0x009600 0x38 0x41 0x0019200 0x9C 0x80 0x0038400 0x4E 0xC0 0x00

57600 0x34 0xC0 0x00

115200 0x1A 0x00 0x00

230400 0x0D 0x00 0x00

460800 0x06 0x40 0x00

921600 0x03 0x80 0x00

1000000 0x03 0x00 0x00

1500000 0x02 0x00 0x00

2000000 0x01 0x00 0x00

3000000 0x00 0x00 0x00

Testando os comandos do VNC1L com firmware VDAP, através do HyperTerminal do Windows

É possível testar a maioria dos comandos do VNC1L com o firmware VDAP, simplesmente através da aplicação HyperTerminal do Windows, ou mesmo a partir de um outro programa similar. Irei descrever passo-a-passo os procedimentos necessários para configurar o HyperTerminal, para podermos enviar e receber comandos através do Monitor de comandos do VNC1L.

Como exemplo, iremos usar o circuito da Figura 14 / Pág. 2 (MAX232), ou seja comunicação Serial com o PC.

PASSOS:

1) Escolhida a interface da Figura 14 / Pág. 2 desse artigo; habilite a programação do VNC1L (Módulo 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 tensão de 5v (Veja regulador de tensão);

4) No Windows, abra o HyperTerminal; crie uma conexão 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 conexão: VNC1L Figura 20 - Escolhendo a porta COMx

Page 15: ESTAÇÃO Pendrive

Figura 21 - Configurando a Porta Figura 22 - Emulação do terminal

Page 16: ESTAÇÃO Pendrive

Figura 23 - Configuração ASCII

5) Após as configurações, estabeleça conexão 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 são exibidas quando o VNC1L é reiniciado, o disco é inserido ou removido do receptáculo 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 P2No UpgradeD:\>

Mensagem exibida quando um disco é removido da Porta 2: Device Removed P2No Disk

Page 17: ESTAÇÃO Pendrive

6) Listando os nomes de arquivos e diretórios no Pen-drive. Digite o comando DIR seguido da tecla <Enter>.Após a digitação do comando DIR, os nomes de arquivos e diretórios são exibidos. "DIR" ao lado direito do nome indica um diretório. A formatação suportada é a 8.3 (nomes com até 8 caracteres e extensão com até 3).

Figura 25 - Execução do comando DIR

7) Mostrando informações sobre o Pen-drive inserido no sistema. Digite o comando IDD ou IDDE e pressione a tecla <Enter>;Na janela do HyperTerminal abaixo são exibidos dados referente às características do fabricante do Pen-drive, como: VID e PID, tipo de FAT, capacidade do disco, espaço livre no disco, etc.

Page 18: ESTAÇÃO Pendrive

Figura 26 - Execução do comando IDDE

Atualizando o firmware através 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 ItChange MAINReflasher Active................................................................................Rebooting

Ver 03.56VDAPB On-Line:Device Detected P2No Upgrade

Pronto, se o VNC1L foi atualizado corretamente com o arquivo de firmware, a mensagem "Rebooting" é exibida, informando que o circuito foi reinicializado.

Page 19: ESTAÇÃO Pendrive

Trocando o Baud Rate do Monitor de Comandos do VNC1L

Se desejar mudar a velocidade de comunicação do Monitor de Comandos (padrão 9600bps) para uma maior, use o comando SBD. Por exemplo, vamos mudar a velocidade atual do VNC1L para 115.200bps (velocidade máxima que o MAX232 suporta). Digite os comandos abaixo na janela do HyperTerminal:

IPA<enter>SBD 0x1A0000<enter>

Depois clique no botão Desconectar no HyperTerminal; clique no botão Propriedades-->Configurar..., e mude a velocidade para 115.200bps. Clique no botão Chamar (conectar). Essa configuração se mantém enquanto o VNC1L não for reinicializado.

Obs.: O parâmetro passado para o comando SBD foi o número hexadecimal 0x1A0000. Observando bem a Tabela 10 / Pág. 3 deste artigo, vemos que os três bytes para o Baud rate 115.200bps são: 1° byte = 1A; 2° byte = 00 e 3° byte = 00, ou seja, o número hexadecimal 1A0000.O comando IPA (Tabela 5 / Pág. 3) foi executado antes, para que o Monitor de Comandos aceite entrada e saída de dados no formato ASCII.

Circuito completo para o projeto Estação Pen-drive

Aqui estão disponíveis todos os esquemas para projetar a Estação Ependrive, como os circuitos do microcontrolador, regulador de tensão, relógio/calendário DS1307, módulo VDIP1, display LCD e sensor de temperatura/umidade SHT75. Todos os módulos devem ser acoplados ao micocontrolador através de uma interface que pode ser: I2c, UART Serial, SPI ou Paralela. Esses módulos são alimentados com tensão de 5v. O microcontrolador PIC18F452 foi escolhido para o desenvolvimento deste projeto, por ter uma memória de programa suficiente para comportar o arquivo .HEX, resultante da compilação de todas as bibliotecas de arquivos Fonte, pois cada componente tem sua própria biblioteca de funções para faze-lo funcionar. Além da memória de programa mais que suficiente para a programação do nosso firmware, o PIC18F452 dispõe de 33 pinos de I/O, desses, somente 22 foram usados. Portanto, há 11 pinos e, mais de 40% da memória de programa livre para implementação de novos recursos, como a adição de novos sensores tipo: anemômetro, pluviométrico, barométrico, UV, direção do vento, luminosidade, entre outros.

Segue abaixo os esquemas de todos os circuitos:

Page 20: ESTAÇÃO Pendrive

Figura 27 - Circuito principal do microcontrolador

Todos os módulos de circuitos devem ser conectados ao circuito principal do microcontrolador, mostrado na Figura 27 acima. O módulo 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 relógio/calendário 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 proprietário. Já o Módulo 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 Módulo VDIP1.O pino 18 é usado para o botão de decremento (BOT Dec). O pino 23 para o botão de incremento (BOT Inc). Já o pino 24 é reservado para o botão de mudança de tela (BUT1). Os pinos 21 e 22 são usados para o TX e RX de uma interface Serial. Na implementação atual somente o pino 21-TX é usado para enviar os dados colhidos dos sensores, para um PC. Se a Estação Ependrive for instalada num lugar remoto, onde não é viável fazer uma rede via cabos, adicione à Estação um módulo de RF (ZigBee, etc). A configuração de comunicação dessa interface é: velocidade: 9600bps, paridade:N, bits de dados 8 e Stop bits 1.

Page 21: ESTAÇÃO Pendrive

Figura 28 - Circuito do regulador de tensão

Na Figura 28 acima vemos o circuito regulador de tensão, ele é baseado no LM1117 IMP-5.0/NOPB, com saída de 5v e corrente máxima de até 800mA, seu encapsulamento é do tipo SOT-223. A tensão de entrada pode ser de uma fonte de alimentação de 12v, como de Baterias, Painel Solar, Eólica, etc.

Figura 29 - Módulo VDIP1 (Circuito para interface com o Pen-drive)

Na Figura 29 acima temos o Módulo VDIP1 da FTDI/Vinculum. O receptáculo (conector USB) está ligado à Porta 2 do VNC1L. Nesse mesmo módulo é possível usar a Porta 1 (pinos U1P e U1M), para conectar um periférico USB, tipo FT232, FT245, impressora, modem, entre outros, mas neste artigo não explorarei este assunto.Observe na figura acima os Jumps, as linhas vermelhas estão ligadas entre os pinos 1 e 2, tanto do Jump J3 como do J4, definindo que o módulo irá se comunicar através de uma interface UART Serial através dos pinos (AD3, AD2, AD0 e AD1), respectivamente chamados de CTS#, RTS#, TXD e RXD. O pino RS# quando em nível baixo (0) ou GND, reinicializa o Módulo.Caso não tenha o Módulo VDIP1, confeccione o circuito da Figura 10 / Pág 2, que funcionará da mesma forma.

Page 22: ESTAÇÃO Pendrive

Obs.: Lembre-se de atualizar o firmware VDAP no VNC1L, com a versão mais atual disponível no site da Vinculum (www.vinculum.com).

Figura 30 - Circuito do relógio e calendário (DS1307)

Na Figura 30 acima vemos o circuito do relógio/calendário, baseado no CI DS1307 que gera as horas, minutos, segundos, dia, mês, 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 alimentação do circuito cesse, uma bateria de Lithium de 3v deve ser ligada aos pinos 3 e 4 do DS1307.O uso desse relógio no projeto é muito importante, pois ele gera a data e a hora corrente, que são usadas na criação e atualização do arquivo DADOS.TXT, como também a data e a hora em que os sensores foram lidos. Além dessas funções importantíssimas, o relógio é usado para controlar o intervalo de tempo em que os dados são gravados no Pen-drive.

Page 23: ESTAÇÃO Pendrive

Figura 31 - Circuito do display LCD

Na Figura 31 acima está ilustrado o esquema elétrico do Módulo LCD 16x2, compatível com processador HD44780. Segue uma breve descrição da função de cada pino. O pino 1 (VSS) é ligado ao negativo da fonte de alimentação (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 módulo LCD se o que será enviado posteriormente é uma Instrução (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) são 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ó estarão disponíveis se o módulo 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 informações pelo usuário mesmo no escuro.

Obs.: Seria interessante implementar um interruptor na alimentação do LCD, para economizar energia quando o mesmo não estivesse em uso.

Page 24: ESTAÇÃO Pendrive

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 precisão fabricado pela Sensirion; tem resolução de saída de 14 bits de dados para a temperatura e umidade relativa. Usa um protocolo SPI proprietário, 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/mês/ano, hora/minuto/segundo, Temperatura, Umidade e ponto de orvalho.

No seguinte formato:

D02/08/07H15:03:09T019.5U063.4P012.4#

Onde:

D —> Após este caracter segue-se a Data, com tamanho de 8 caracteres.H —> Após este caracter segue-se a Hora, com tamanho de 8 caracteres. T —> Após este caracter segue-se a Temperatura, com tamanho de 5 caracteres. U —> Após este caracter segue-se a Umidade, com tamanho de 5 caracteres. P —> Após 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. Também são gravados os caracteres CR e LF para separar as linhas e organizar visualmente o arquivo Dados.txt.

Exemplo do conteúdo do arquivo Dados.txt após algus minutos de gravação:

Page 25: ESTAÇÃO Pendrive

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. É possível configurar o mesmo para gravar os dados em intervalos de 1 segundo a no máximo 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 estão 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 são finalizadas pelo caracter LF, (10) decimal, ou (0A) em hexadecimal.

Onde:

D —> Após este caracter segue-se a Data, com tamanho de 8 caracteres. O próximo caractere representa o dia da semana(1-Domingo...7-sábado).H —> Após este caracter segue-se a Hora, com tamanho de 8 caracteres.T —> Após este caracter segue-se a Temperatura, com tamanho de 5 caracteres.U —> Após este caracter segue-se a Umidade, com tamanho de 5 caracteres.P —> Após este caracter segue-se o Ponto de orvalho, com tamanho de 5 caracteres.L —> Após este caracter segue-se o espaço Livre no Pen-drive, com tamanho variável. 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 após os 2 dígitos do ano (07), vem o dia-da-semana, no nosso exemplo acima o número 2 (segunda-feira). Já na ultima linha ou registro logo após o (L), vem um número longo que indica o espaço livre no Pen-drive. O valor deve ser lido em bytes. No exemplo acima, o espaço livre é de: 1.045.368.832 Bytes.

Figura 33 - Tela do programa Ependrive.exe (versão Windows) para leitura dos dados via Serial

Page 26: ESTAÇÃO Pendrive

O programa Ependrive.exe está disponível para download no final desta página.

Mensagens exibidas no display LCD da Estação 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 são exibidas na ordem seqüencial quando o botão do sistema BUT1 for pressionado e solto.

Figura 35 - Tela 1: Data e horaFigura 36 - Tela 2:

Temperatura/Umidade

Figura 37 - Tela 3: Ponto de orvalhoFigura 38 - Tela 4: Espaço livre no

Pen-drive

Figura 39 - Tela 5: Seleção do Intervalo de gravação de 1 a 256 segundos

Para mudar de tela pressiona-se o botão BUT1 por aproximadamente 1 segundo soltando-o em seguida. Já para aumentar ou diminuir o intervalo de gravação, pressiona-se o botão BUT1 até ser exibida a Tela 5. Para aumentar o intervalo pressiona-se o botão BUT Inc., e para diminuir pressiona-se o botão BUT Dec. Qualquer mudança no intervalo de gravação é armazenado numa

Page 27: ESTAÇÃO Pendrive

posição de memória EEPROM do PIC18F452. Na próxima vez que o sistema for reinicializado por quaisquer motivos, o valor do intervalo de gravação será aquele que foi selecionado pela última vez.

Figura 40 - Animação inserindo/removendo o Pen-drive no Módulo VDIP1

Figura 41 - Mensagem: não há disco ou o mesmo foi removido

A tela acima será exibida quando o Pen-drive for removido do receptáculo (conector USB). Ela também 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 necessário para o sistema do VNC1L lê a FAT, o espaço livre e ocupado em disco, etc.

Atualizando o Relógio do sistema (estação PenDrive) através do PC

A data e a hora do sistema (Estação Ependrive) são atualizadas através do PC. Mesmo que o sistema seja desligado, uma bateria de Lithium manterá a memória do relógio 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 Estação PenDrive e o PC;

2) Como a Estação PenDrive desligada, mantenha o botão BUT1 pressionado;

3) Ligue a Estação PenDrive, a mensagem abaixo será exibida no display LCD:

Figura 43 - Mensagem: aguardando data/hora

Page 28: ESTAÇÃO Pendrive

4) No PC, rode o programa AtualizaDataHora.EXE (disponível para download no final desta página);

Figura 44 - Programa para atualizar data/hora

5) Selecione a porta COMx correta, clique no botão Desconectado para estabelecer conexão a Estação PenDrive;

6) Clique no botão Atualizar Data/Hora. Se houver sucesso na atualização da Data e hora, a mensagem da tela abaixo será exibida no display LCD.

Figura 45 - Mensagem: relógio atualizado

7) No sitema Estação PenDrive solte o botão BUT1, e no PC feche o programa AtualizaDataHora.EXE. Pronto, o relógio da estação PenDrive foi atualizado com sucesso e a conexão 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 Códigos Fonte escritos em C/C++ estão disponíveis em nosso Curso USB/Serial.Informações: www.rogercom.com

Page 29: ESTAÇÃO Pendrive

Bibliografia

www.ftdichip.comwww.vinculum.comwww.sensirion.comwww.microchip.comwww.ccsinfo.comhttp://www.maxstream.netwww.rogercom.com/Indice.htm