Aqui começaremos a PARTE 2 deste artigo! Se preferir voltar a PARTE 1, eis o linque de ligação:
Se desejar contextualizar melhor com o básico Equipamento de Abastecimento de Veículo Elétrico, veja estas postagens anteriores:
O Arduino Uno (ou Duemilanove) Aplicado a uma EVSE (SAE-J1772 CA Nível 2) - Parte 1
Se desejar contextualizar melhor com o básico Equipamento de Abastecimento de Veículo Elétrico, veja estas postagens anteriores:
EVSE - Electric Vehicle Supply Equipment (Equipto de Abastec. de Veículo Elétr.) - Nível 1 e 2
Open-EVSE:
O termo
Open-EVSE (em inglês, Open-Electric Vehicle Supply Equipment), em
geral, refere-se a uma placa de extensão (shield) para plataforma
Arduino específica. Porém, pode também referir-se a um conjunto de
diferentes shields de Arduino em separado, como, por exemplo:
- Uma shield de Fonte de Alimentação Avançada (que além de prover a tensão CC de 12V para alimentação geral do controle, ainda faz a função de Monitoramento da(s) Presença(s) da(s) Tensão(ões) de Fase da Rede CA após o Relé Principal (Monitor de Relé Principal Atracado) e;
- Uma segunda shield que faz a função de interface para o restante das funções do controle, tais como:
☻Interrupção da Corrente de Carregamento por Falha de Terra (conhecido em inglês pelo acrônimo GFCI);
☻Processamento da função Piloto (incluindo aqui a Conversão CC/CC para obter saídas de tensão de alimentação CC simétricas, de +12V e de -12V, isoladas);
☻Acionamento da(s) “bobinas” do(s) Relé(s) Principal(is);
☻Interação entre a máquina e o operador humano, com o emprego de um LCD Multicolorido (RGB), que apresenta 2 linhas x 16 caracteres e com um teclado de 5 cinco teclas. A mudança da cor do fundo do LCD é usada para produzir sinalização luminosa de estado e alertas, pertinentes ao estado da operação da EVSE, quanto ao protocolo SAE J1772, dispensando o emprego de um LED RGB extra.
Apesar
deste ser um projeto bastante simples, ele é de grande importância
estratégica no contexto das políticas de Veículos Elétricos pois,
a Open-VSE ajuda, bastante, a promover a popularização dos
carregadores domésticos para VEs, para carregamento de veículos
compatíveis com o conector e protocolo tipo SAE-J1772 (ou seja,
praticamente TODOS os VEs atuais).
Não
obstante a relativamente grande oferta de suporte documental ao
projeto de Open-EVSEs, deve-se ficar atento e ter cuidados com alguns
erros e omissões que atualmente aparecem nas documentações
apresentadas, como por exemplo, diagramas de ligação de blocos que
se referem a Open-EVSE versão 2 (com fonte avançada, ou seja, com
detecção de relé principal atracado) que, no entanto, não mostra
os dois sinais digitais de monitoramento de atraque do relé
principal sendo enviado da Shield da Fonte Avançada para a placa
controladora Arduino.
Assim,
estaremos propondo aqui, um projeto (até onde eu sei) renovado e, ao
que me parece, inédito em publicação, até aqui , no qual
comporemos uma “nova shield” para a plataforma Arduino, dedicada
a aplicação de EVSE, para ser uma Shield Única, ou seja, uma
shield que englobe a função de fonte avançada, juntamente com
todas as demais funções de interface para o restante das funções
do controle e de interface humana (que descritas pouco acima), em uma
placa única, que é plugada plugada diretamente a placa controladora
Arduino.
Assim,
mesmo o diagrama de blocos da EVSE apresentado na nossa postagem
anterior, apesar de não estar errado, passa a se torna inconveniente
na sua forma e precisa ser refeito, conforme a nova versão mostrada
abaixo:
No
entanto, antes de nos aprofundarmos em detalhes sobre a Shield
Open-EVSE que está sendo proposta, vejamos, apenas, alguns
comentários, pertinentes a diferenciação entre o Arduino 2009 e o
Arduino UNO e outros detalhes sobre comunicação e programação
deles.
O Arduino
UNO é a última versão do Arduino que é Padrão atual da
plataforma Arduino. Este veio cerca de um ano depois do Duemilanove
(2009) e, devido a essa defasagem de tempo, apesar de ambas usarem
absolutamente o mesmo microcontrolador principal, o Atmega 328, o
Arduino UNO se diferencia do Arduino 2009, apenas por um pequeno
detalhe de hardware: na parte de comunicação ele usa um
microcontrolador em separado, o ATmega8U2, ao invés do FTDI,
presente no Arduino 2009. O FTDI de comunicação do Duemilanove não
é programável.
FTDI é
um acrônimo para Future Technology Devices International, que é uma
empresa escocesa criadora de dispositivos semicondutores,
especializada em tecnologia USB. Ela desenvolve, manufatura e da
suporte a dispositivos e seus programas e drivers relacionados a
conversão de RS-232 ou TTL para sinais USB, permitindo que hardwares
seriais antigos sejam compatíveis com computadores mais recentes.
Como desenvolvedora de circuitos integrados para aplicações
específicas, a principal fonte de serviço da companhia é o FTDI
Chip, um circuito integrado que é um dispositivo comum encontrado em
microcontroladores, tais como na plataforma Arduino 2009.
Já, o
microcontrolador RISC ATmega8U2 pode ser reprogramado a partir do
terminal de 6 furos logo acima do chip principal Atmega 328 da UNO
(destaque em vermelho na figura ao lado). Isso dá mais poder e
flexibilidade à projetos avançados, pois possibilita o Arduino UNO
trabalhar com qualquer dispositivo USB, como teclados e mouses, em
aplicações usando os USB HID API complexos. Isso tornou,
consequentemente, a operação de gravação de programas no UNO mais
rápida do que era, antes, no Duemilanove.. Isso é uma vantagem interessante pois, quando estamos fazendo sucessivos testes e modificações em no programa (esboço), esperar os LEDs verdinhos (TX-RX) do Arduino pararem de piscar, parece durar uma eternidade.
No caso
da última revisão da placa Uno, o microcontrolador dedicado da
comunicação USB passou a ser o Atmega16U2, ao invés do 8U2
encontrado no Uno original (ou o FTDI encontrado em gerações
anteriores). Isso permite taxas de transferência ainda mais rápidas
e mais memória. Não há drivers necessários para Linux ou Mac (inf
para o Windows é necessário e incluído no IDE Arduino), e a
capacidade de ter o Uno mostrar-se como um teclado, mouse, joystick,
etc
A placa Uno R3 Uno
também adiciona os pinos SDA e SCL próximos ao AREF (compare
foto anterior, que é uma placa Uno anterior ao R3, com a foto Uno R3 que
virá seguir). Além disso, há
dois pinos de novas colocadas perto do pino de RESET. Um deles é o
que permite que os IOREF escudos para se adaptar à voltagem
fornecida a partir da placa. O outro é um não conectado, e é
reservada para efeitos futuros. O R3 Uno trabalha com todos os
escudos existentes, mas pode se adaptar a novos escudos que usar
esses pinos adicionais.
Arduino é
uma plataforma open-source de computação física baseada em uma
simples placa I / O e um ambiente de desenvolvimento que implementa o
processamento / linguagem fiação. Arduino pode ser usado para
desenvolver independentes objetos interativos ou pode ser conectado
ao software em seu computador (por exemplo, Flash, Processing,
MaxMSP). O IDE de código aberto pode ser baixado gratuitamente
(atualmente para Mac OS X, Windows e Linux).
O Arduino
Uno R3 requer a pasta de drivers Arduino 1,0 para instalar
corretamente em alguns computadores. Testes confirmaram que a Uno R3
pode ser programada em versões mais antigas do IDE Arduino. No
entanto, a primeira vez usando o R3 em um novo computador, você
precisará ter Arduino 1.0 instalado na máquina.
Todavia,
nada disso implica em nenhuma outra diferença que mereça maior
preocupação. O Arduino Duemilanove não tem diferenças de software
com o Arduino UNO e, assim, é 100% compatível para qualquer
situação que o UNO possa enfrentar. Então, na prática, eles são
exatamente iguais, exceto pelo detalhe da comunicação via USB: o
Uno usa um chip de comunicação serial USB mais novo, que pode ser
programado para funcionar como USB HID (Human Interface Devices).
Universal
Serial Bus (USB) é uma arquitetura de comunicações que proporciona
um subsistema computadorizado a capacidade de interligar uma série
de dispositivos utilizando um cabo de 4 vias simples. O USB é, na
verdade, um laço de comunicação serial a dois fios que funciona em
ambos velocidades, 1,5 ou 12 Mbits/s (MB).
Protocolos
USB pode configurar dispositivos na inicialização ou quando eles
estão conectados em tempo de execução. Estes dispositivos são
divididos em classes de dispositivos diversos. Cada classe de
dispositivo define o comportamento comum e protocolos para
dispositivos que servem funções similares. Alguns exemplos
principais de classes de dispositivos USB são a seguintes:
- Exibição (ex.: Monitor);
- Comunicação (ex.: Modem);
- Áudio (ex.: Alto-falantes);
- Armazenamento de Massa (ex.: Pen drive);
- Interface Humana (ex.: Luva de dados).
Então,
com as placas Arduino mais novas, não apenas a UNO e a atual Uno R3,
como também a recém-lançada Arduino Leonardo, graças ao ATmega8U2
(Atmega16U2, no caso da Uno R3 e Atmega 32U4 no caso do Leonardo),
podemos usar uma ATmega8 para ler sinais de controle e fornecer
conectividade USB, com a pilha V-USB, enumerando cada dispositivo
como um dispositivo HID.
Isso
provê algumas características muito interessantes, principalmente a
capacidade da placa controladora Arduino poder agir, por exemplo,
como um teclado ou mouse USB. Este recurso não é exclusivo do
Leonardo pois, o Arduino Uno também pode servir como um teclado USB
HID, a partir de apenas uma atualização de firmware.
No
entanto, eu não vislumbro ocasião para emular um teclado ou um
Joystick USB e, como a diferença entre UNO e Duemilanove, na
praticamente é apenas isso, então para mim “é tudo a mesma
coisa”. Talvez uma boa razão para adquirir o UNO seja,
simplesmente, o fato de que ele é a atual referência para
plataforma Arduinos padão. Mas atente para o fato de que, sendo o
seu chip de comunicação serial USB programável, isso pode
significar, hoje e, ainda por um certo tempo, um preço ligeiramente
maior para a UNO frente a 2009. Todavia, o mercado é algo
imprevisível: minha últimas aquisição (5 peças) foi do UNO, a R$
54,90 cada, porém, cada peça forçosamente acompanhada do cabo USB.
Placa atual Uno R3 |
Depois
que a placa Arduino estiver instalada e funcionando dentro de uma
EVSE que se tornar operante, muito provavelmente, o seu porte USB,
nunca mais será usado. Algumas pessoas pura e simplesmente tem
preconceito da 2009, por seu nome estar associado a uma época que já
ficou no passado, outros, pelo simples fato de que o cristal de 16MHz
mudou de lugar de uma placa para outra, acreditam erroneamente, que a
Duemilanove é mais precisa em aplicações de tempo crítico pois,
pensam que a Uno, diferente do Duemilanove, tem um ressonador
capacitivo instável: isso tudo bobagem!
O
Bootloader:
Porém,
outro ponto importante é a redução no tamanho do Bootloader, que
no caso do Uno ocupa apenas 0,5 KB, contra 2 KB do Duemilanove, o que
implica em mais espaço disponível na memória para a programação
do usuário.
O Arduino
é “Open” (Hardware e software) e pode ser fabricado em qualquer
lugar. Os criadores do Arduino são italianos e fabricam o modelo na
Itália assim o Arduino Uno Italiano muitas vezes é chamado de
original. Mas não ha diferença estrutural entre os que são
fabricados em outro local. A diferença é fabrica mesmo.
Você
pode, também, trocar o chip microcontrolador Atmega da placa por
outro, tanto no Arduino Duemilanove, quanto no Uno, ambos aceitam o
Atmega8, Atmega168 ou Atemga328. Entretanto é preciso não se
esquecer que é necessário fazer, antes de tudo, o carregamento do
bootloader do Arduino para chip novo, para que tudo funcione
perfeitamente.
O
bootloader nada mais é do que um pequeno pedaço de software que vem
pré-gravado para os chips que vêm nas placas Arduino. Todavia, ele
é muito importante, permitindo, por exemplo, que se faça o
carregamento de esboços de programas para a placa Arduino, sem a
necessidade do auxílio de hardware externo de gravação.
Reiniciar
uma placa Arduino refere-se, justamente, ao comando que causa
executar o programa do bootloader (se houver um bootloader
previamente carregado). O bootloader rodando, produz pulsos no pino
da saída digital 13 (pode-se conectar um LED a ela para ter certeza
de que o bootloader esteja instalado). O bootloader então aguarda
alguns segundos para que comandos ou dados possam chegar a partir do
computador.
Normalmente,
estes dados enviados são os códigos de um esboço, que o bootloader
então escreverá para a memória flash no chip ATmega8. Alguns
segundos depois, o bootloader lança, automaticamente, esse programa
recém-carregado. No entanto, se os dados não chegam a partir do
computador, o bootloader lançará qualquer último programa do
usuário que tenha sido previamente enviados para o chip. Se o chip
ainda é "virgem" e o bootloader é o único programa na
memória, ele inicia novamente, de modo recorrente.
A
utilização de um carregador de inicialização (bootloader) permite
evitar a necessidade da utilização de hardware de programadores de
externo adicional. No entanto, gravar o bootloader num chip novo
requer um programador externo.
Se você
quiser usar o toda a área de programa da memória (flash) do chip ou
se você deseja evitar o tempo de atraso devido ao processamento do
bootloader, então você precisa gravar seus esboços (programa do
usuário) usando sempre um programador externo.
Para
gravar o bootloader, você precisa ter disponível um AVR-ISP
(programador in-system) ou construir um Programador por Porta
Paralela ou DAPA (Direct AVR Parallel Access). Certifique-se de
conectá-lo no caminho certo. A placa deve ser alimentada por uma
fonte de alimentação externa ou via porta USB.
Do mesmo
modo, para fazer o carregamento do firmware para uma Open-EVSE poderá
requerer um ISP, se não houver o bootloader previamente carregado no
microcontrolador. Há muitos programadores compatíveis AVR
disponíveis. Os ISPs são projetados para atualizações de campo de
produtos existentes, usando a arquitetura Atmel AVR e com base em
hardware e software STK500 .
O Mature
AVR ISP, da própria Atmel, é uma opção. O Kit USBtinyISP de
Adafruit é uma outra boa escolha, é barato e aberto. Algumas
ferramentas, como o Avrdude, o Arduino IDE e o AVR Studio, suportam
todos os dispositivos AVR ISP. A “ajuda online ” do AVR Studio,
por exemplo, contém as informações mais atuais e uma lista
completa de dispositivos suportados.
Já o
programador paralelo requer apenas 3 resistores e os conectores. A
programação serial (SPI) do AVR envolve apenas pulsar adequadamente
três sinais lógicos (RESET, SCK e MOSI) e ler em momentos adequadas
um quarto sinal (MISO). Um trabalho perfeito para a porta paralela de
um PC, controlada por um software adequado. O programador paralelo
consiste simplesmente em conectar alguns pinos da porta paralela aos
pinos do microcontrolador, com resistores em série no caso dos
sinais MISO, MOSI e SCK:
Neste
caso, a alimentação do microcontrolador precisará ser feita com
uma fonte externa.
Atente
para não confundir, como muitos costumam fazer, os acrônimos de ISP
(In-System Programming), originário na cultura AVR, que é o mesmo
que ICSP (In-Circuit Serial Programming) na cultura PIC, com SPI
(Serial Peripheral Interface).
ISP e
ICSP, referem aos dispositivos de programação, enquanto que, SPI
refere-se ao protocolo serial. A Interface Periférica Serial (SPI)
é composto por três fios: um para o sinal Serial Clock (SCK), ou
seja, clock serial, outro para o sinal Mestre In - Slave Out (MISO),
ou seja, dados que vão do escravo para o mestre, e, Master Out -
Slave In (MOSI), ou seja, dados que vão do mestre para o escravo. Ao
programar o AVR, o programador In-System (ISP) sempre opera como o
Mestre, e o sistema alvo sempre operar como Escravo.
Um
programador In-System (Master) fornece os pulsos de relógio para a
comunicação na linha SCK. Cada pulso na Linha SCK transfere um bit
do Programador (mestre) para o destino (escravo) na linha MOSI. Ao
mesmo tempo, cada pulso na Linha SCK transfere um pouco do alvo
(Slave) ao programador (Master) na linha MISO.
Obviamente,
para assegurar a comunicação correta sobre as três linhas de SPI,
é necessário ligar o programador no para a terra no ponto (GND).
Para
entrar e permanecer no Modo de Programação Serial, a linha de reset
do microcontrolador AVR tem que ser mantida ativo (baixo). Essa mesma
linha (/RES), também é comumente utilizada para seleção de
escravo, linha de seleção, selecionando um escravo dentre vários,
sendo trazida nível baixo para ser ativo.
Além
disso, para realizar um Erase Chip, o Reset tem que ser pulsado até
terminar o ciclo Erase Chip. Para facilitar a tarefa de programação,
é preferível deixar o programador assumir o controle da linha de
reset do microcontrolador alvo para automatizar esse processo usando
uma quarta linha de controle quarta (Reset).
Para
permitir a programação de microcontroladores alvo operando sob
qualquer tensão dentro da faixa permitida (2,7 - 6,0 V), o
programador pode extrair energia do sistema alvo (VCC). Isto elimina
a necessidade de uma fonte de alimentação separada para o
programador. Em alternativa, o sistema alvo pode ser alimentado a
partir do programador, no momento da programação, eliminando a
necessidade de ligar o sistema alvo através do seu conector de
alimentação regular durante a programação.
Instalado
o ISP, em seguida, basta lançar ou o comando "Bootloader Burn"
(para AVR-ISP) ou "Burn Bootloader Parallel", a partir do
menu Ferramentas do ambiente (IDE) Arduino. Gravar o bootloader pode
levar 15 segundos ou mais.
Pode
ocorrer alguma dificuldade em se fazer funcionar adequadamente o
carregador paralelo em um PC com Windows XP, uma vez que o Windows XP
faz polling da porta paralela (Windows periódica e imprevisivelmente
escreve para a porta paralela, fazendo pesquisa para novos
dispositivos, o que acarreta a interrupção do processo de gravação
de bootloader. A chave do Registro pode desativar parcialmente esse
comportamento. Você precisará deste patch de registro:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001
As versões mais novas do bootloader
comunica-se com o computador a 19200 baud; versões mais antigas usam
9600 baud. A fim de conseguir carregar programas para a placa, esta
taxa deve coincidir com o parâmetro serial.download_rate em seu
arquivo preferences.txt (que assume por default 19200).
Um bootloader pré-compilado (arquivo . hex)
vem com o ambiente Arduino, que comunica a 19200 baud (mas veja a
nota para placas mais antigas acima). Ambos os comandos "Burn
Bootloader" no ambiente Arduino usam uma ferramenta open-source,
Uisp. Há quatro etapas (cada uma chamada separada para Uisp):
- desbloquear a seção de bootloader do chip;
- definir os fusíveis no chip;
- fazer o upload do código do bootloader para o chip e;
- bloquear a seção de bootloader seção do chip.
Estes são controlados por um conjunto de
preferências no arquivo de preferências Arduino:
- bootloader.programmer (valor padrão: STK500) é o que deefine o protocolo usado pelo bootloader;
- bootloader.unlock_bits (valor padrão: 0xFF) é o valor a ser escrito para o byte bloqueio ATmega8 para desbloquear a seção bootloader;
- bootloader.high_fuses (valor padrão para um ATmega8 em uma placa Arduino: 0xca) é o valor a ser escrito para o byte mais alto dos fusíveis do ATmega8;
- bootloader.low_fuses (valor padrão para um ATmega8 em uma placa Arduino: 0xDF) é o valor a ser escrito para o byte mais baixo dos fusíveis dos ATmega8;
- bootloader.path (valor padrão: bootloader) é o nome do caminho (relativo ao diretório do aplicativo Arduino) contendo o arquivo bootloader pré-compilado;
- bootloader.file (valor padrão: ATmegaBOOT.hex) é o nome do arquivo que contém o código do bootloader pré-compilado (em bootloader.path);
- bootloader.lock_bits (valor padrão: 0xCF) é o valor a ser escrito para o byte bloqueio ATmega8 para bloquear a seção bootloader (para que ele não seja acidentalmente substituído (sobrescrito) quando você carregar um esboço.
Saber
destes detalhes é muito bom, porém,
Programação:
A
interface do hospedeiro é simples, podendo ser escrita em várias
linguagens. A mais popular é a Processing, mas outras que podem
comunicar-se com a conexão serial são: Max/MSP, Pure Data,
SuperCollider, ActionScript e Java. Em 2010 foi realizado um
documentário sobre a plataforma chamado “Arduino: The
Documentary”. Confira em Português: http://vimeo.com/31389230
O Arduino
Duemilanove pode ser programado com o software Arduino. O ATmega328
no Arduino Duemilanove vem pré-gravado com um bootloader que permite
enviar novos programas sem o uso de um programador de hardware
externo. Ele se comunica utilizando o protocolo original STK500.
O
protocolo STK500 publicado juntamente com a versão 4.11 do AVRStudio
é totalmente incompatível com as versões inicial e anteriores,
àquela do protocolo. A partir dali, o protocolo STK500 passou a ser,
além de baseado em protocolos anteriores feitos para ferramentas AVR
e outros, e totalmente compatível com eles, não havendo
sobreposição ou redefinição de comando algum.
Todos os
comandos (os dois comandos e respostas) são caracteres ASCII padrão
entre 0x00 – 0x7F. Os dados podem ser qualquer entidade com valor
entre 0x00 – 0xFF.
O STK500
não precisa de mais estruturas de dados de dependentes de
dispositivos no hardware programador. Toda a lógica dependente do
dispositivo, passou a estar no software do programador em execução
no PC. A partir dali, o AVRStudio (para Windows) e avrdude (para
sistemas operacionais múltiplos, incluindo Linux) passou a suportar
esta versão 2 do protocolo STK500.
A
interface de hardware físico ao PC é USB. Dessa forma, podemos
construir um programador rápido e moderno, que pode ser usado no
Linux, BSD, Windows e MacOS X.
A
definição de todos os comandos, respostas, parâmetros e outros
valores definidos podem ser encontrados no ficheiro "command.h".
Os códigos de dispositivo pode ser encontrado no arquivo
"devices.h". Esses arquivos estão localizados na seção
de software no site da Atmel,
Também
poder-se-á programar o ATmega328 através do ICSP (In-Circuit Serial
Programming) header;
Reset
automático (Software):
Algumas
versões anteriores do Arduino requerem um reset físico
(pressionando o botão de reset na placa) antes de carregar um
esboço. O Arduino Duemilanove é projetado de modo a permitir que
isto seja feito através do software que esteja correndo no
computador a que está ligado. Uma das linhas de controle de hardware
(DTR) do FT232RL está ligada ao reset do ATmega328 por via de um
capacitor de 100 nF.
Quando é
feito o reset a esta linha (ativo baixo), o sinal cai por tempo
suficiente para efetuar o reset ao chip. O software Arduino usa esta
característica para permitir carregar o programa simplesmente
pressionando o botão “upload” no ambiente Arduino. Isto
significa que o “bootloader” pode ter um “timeout” mais
curto, já que a ativação do DTR (sinal baixo) pode ser bem
coordenada com o início do “upload”.
Esta
configuração tem outras implicações. Quando o Duemilanove está
ligado a um computador com o Mac OS X ou Linux, ele faz o reset cada
vez que a ligação é feita por software (via USB). No próximo meio
segundo aproximadamente, o bootloader estará correndo no
Duemilanove. Considerando-se que é programado para ignorar dados
espúrios (i.e. qualquer coisa a não ser um “upload” de um novo
código), ele interceptará os primeiros bytes dos dados que são
enviados para a placa depois que a ligação é aberta.
Se um
esboço que se encontra sendo executado na placa recebe uma
configuração ou outros dados ao inicializar, dever-se-á assegurar
que o software esteja em comunicação e espere um segundo depois de
aberta a ligação antes de enviar estes dados.
USB:
Conectores
Universal Serial Bus (USB) são destinadas a conexão de dispositivos
periféricos externos com um computador tais como o mouse, o teclado,
um disco rígido portátil, câmara digital, telefone VoIP (Skype) ou
da impressora.
Teoricamente,
é possível se conectar a um controlador host USB de cerca de 127
dispositivos. A velocidade máxima de transferência é 12 Mbit / s
para o padrão USB 1.1 e 480 Mbit / s para USB 2.0 de alta
velocidade. Fisicamente, os conectores de padrões USB 1.1 e 2.0 de
alta velocidade são idênticos. Distinções são cobertos em
velocidade de transferência e um conjunto de funções de
controlador de host USB de um computador, e dispositivos USB.
USB
fornece uma fonte de energia para dispositivos, portanto, eles podem
trabalhar a partir da interface sem uma fonte adicional (a interface
USB provê alimentação necessária, não mais do que 500 mA em 5V).
Existem três tipos básicos de conectores USB: USB A, USB B e mini
USB.
Proteção
contra sobrecorrente USB:
O Arduino
Duemilanove tem um fusível que protege a porta USB do seu computador
contra sobrecarga. Apesar da maioria dos computadores possuírem
proteção interna própria, o fusível proporciona uma proteção
extra. Se mais de 500 mA forem demandados a partir da porta USB, o
fusível irá automaticamente interromper a ligação até que a
sobrecarga seja eliminada.
Características
físicas:
O
comprimento e largura máximos do Duemilanove são 2,7” (68,50 mm)
e 2,1” (53,34 mm) respectivamente, com o conector USB e o jaque de
alimentação indo um pouco além destas dimensões. Três furos de
fixação permitem a montagem da placa numa superfície ou caixa.
Note que a distância entre os pinos de entrada e saídas digitais nº
7 e nº 8 é de 160 mil (milésimos de polegada), não é sequer
múltiplo do espaçamento de 100 mil dos outros pinos.
O
Primeiro Projeto com o Arduino: Colocação de um LED para piscar!
Existem
dois blocos distintos de instruções entre chavetas (box 2).
- Iniciar variáveis;
- O modo como os pinos deverão funcionar: entrada (INPUT) ou saída (OUTPUT);
- Bibliotecas;
- Cabeçalhos
Mas,
atenção! Tudo o que estiver no setup() será executado apenas uma
vez imediatamente após o esboço ter sido carregado para o microcontrolador
(ou ser após o microcontrolador ser alimentado).
Caso o
Botão de RESET, que se encontra na placa do Arduino, seja pressionado,
ou houver uma falha na alimentação, o código será reiniciado e
nessa condição especial o setup() será executado novamente.
A função
loop() tem um pressuposto fundamental que é repetir infinitamente o
que está escrito. Bem... mas qual a finalidade disso?
Ao
repetir a mesma função, o microcontrolador nunca para de funcionar.
Imagine como seria se ao digitar uma letra no editor de texto parasse
de funcionar, e fosse preciso abri-lo nova-mente para escrever as
outras letras da palavra? Ou, se após um carro passar num semáforo
de trânsito, as luzes não brilhassem mais?
Basicamente,
o loop() será o seu escravo e o setup() dirá como o escravo se
comportará.
Usa-se:
// (duas barras invertidas) para fazer comentários na linha de
código. O objetivo é deixar o mais claro possível para que
terceiros possam entender o programa.
Tudo que
é deixado como comentário será descartado no momento da gravação
no microcontrolador.
Na
próxima postagem, trataremos menos de Arduíno e mais de questões
diretamente ligadas ao projeto da EVSE.