Gravando o Bootloader

Eu estava tendo problemas com o upload do meu Arduino, onde o erro era “avrdude: stk500_getsync(): not in sync: resp=0x00”. Procurando pela internet, achei diversos sites que me orientavam a verificar as configurações da porta serial, ou ainda se o modelo do Arduino escolhido como target correspondia ao meu hardware. Foi muito frustrante porque nada funcionava e o bendito stk500 continuava a acontecer. Deixei esse arduino de lado e começei a trabalhar com outros que eu tinha disponível.

Após um tempo, trabalhando num projeto onde eu iria integrar o arduino na placa do meu projeto principal, eu tive a ideia de aproveitar o AtMega328 da placa que não funcionava. Para a minha surpresa, quando eu fui fazer o upload do firmware para a microcontroladora, o mesmo stk500 estava de volta. Foi então que eu me toquei que o problema não estava no hardware da placa, mas no IC da microcontroladora.

Depois de algumas tentativas, achei o problema: o bootloader da microcontroladora estava defeituoso. Fiz uma nova gravação do bootloader, e o problema com stk500 desapareceu de vez. Recoloquei o IC na placa, e voilà, problema resolvido.

Então, abaixo vai uma descrição sucinta de como regravar o bootloader de uma microcontroladora, caso necessário. Vale atentar para o hardware que eu tinha disponível, um Arduino Uno que utiliza a microcontroladora AtMega328p. Se você usa uma outra placa, deve então prestar atenção para fazer as adaptações correspondentes ao seu hadrware na sua configuração.

O que você precisará:

  • uma placa Arduino em funcionamento;
  • o IC no qual você deseja gravar o bootloader;
  • 1 cristal 16Mhz;
  • 2 capacitores 22pF;
  • 1 resistor 10K Ohms;
  • 1 breadboard;
  • diversos jumpers.

 

O que você fará:

a) Faça upload do sketch ‘ArduinoISP’ (que se encontra no menu ‘File-> Examples -> 11.ArduinoISP’);

b) Faça as conexões entre a sua placa Arduino e a microcontroladora na breadboard, conforme o schematic (no schematic, os labels D10, etc, se referem às portas digitais do Arduino que está atuando como gravador);

c) Selecione ‘Arduino/Genuino Uno’ no menu ‘Tools -> Board’;

d) Selecione ‘Arduino as ISP’no menu ‘Tools -> Board’;

e) Execute o comando ‘Tools -> Burn Bootloader’.

 

Pronto! Sua microcontroladora está com o bootloader gravado,  pronta para ser instalada na sua placa e utilizada em seus projetos!

Arduino as ISP

 

 

 

 

Anúncios

Arduino – Escrevendo seu primeiro programa

Agora você deve estar pronto para escrever seu primeiro programa para o Arduino. O primeiro programa que você escreverá, como de costume, será o “Hello World“. Ele enviará o texto para o Serial Monitor. Vamos olhar o programa:

void setup(){
//ativa a comunicação serial, e estabelece a velocidade de comunicação (9600 baud); 
    Serial.begin(9600); 
}
void loop(){
    //envia "Hello World" para a porta serial. 
    Serial.println("Hello World"); 
    // atribui um pequeno delay para repetir a operação (100 milissegundos)
    delay(100); 
}

O que este programa está fazendo? Permita-me explicar. Primeiro nós digitamos um método chamado setup(). Esta é uma estrutura obrigatória no seu programa, mesmo que você não coloque nada entre suas chaves.

Neste programa, nós temos algum conteúdo entre as chaves.

Você perceberá a função Serial.begin(); esta função configura a comunicação serial e a inicializa; dentro dos parênteses nós colocamos o valor da velocidade da transmissão de dados desejada; este valor pode ser qualquer um entre 300 e 115200 e pode variar de programa a programa, dependendo do tipo de dado que você está enviando, e o quão rápido que você quer enviá-lo.

Depois da estrutura do setup(), nós digitamos uma outra estrutura obrigatória, chamada de loop(), que é onde a maior parte do tempo o seu microcontrolador gastará o tempo. A estrutura loop() irá executar as instruções entre as chaves repetidamente.

Neste programa você verá que o programa utiliza a função Serial.println(); esta função é usada para escrever informação na porta serial, além de uma quebra de linha.

O próximo trecho de código no método loop() simplesmente coloca um pequeno delay no programa, de modo que “Hello World” não é mostrado um milhão de vezes por hora.

void loop(){
    //escreve Hello World na porta serial 
    Serial.println("Hello World"); 
    delay(100); 
}

Agora, digite os dois métodos na IDE do Arduino, se ainda não o tiver feito. Após completar o programa, verifique se o Arduino está conectado ao seu computador.

1) Agora, se tudo estiver em ordem, pressione o botão Verify;

2) Nenhum erro deve aparecer, e se assim for, pressione o botão Upload. O seu programa começará a ser transferido para a sua placa;

3) Agora pressione o botão Serial Monitor e você deve ver a frase “Hello World” sendo mostrada repetidamente no monitor serial;

OK, é só isso nesta lição. Espero que você tenha apreciado esta primeira lição de uma série de lições. Se você tiver alguma pergunta, sinta-se à vontade de enviar um comentário no post.

Arduino – Configurando a IDE

Agora que temos a IDE e o software do driver instalados, podemos falar sobre a IDE do Arduino com mais detalhes. A IDE do Arduino é onde você irá escrever, debugar, e transferir deus programas para a placa do Arduino.

A primeira coisa que você verá será uma área em branco; nesta área você digitará seus programas. Agora olhe na parte direita superior da área branca, e você verá alguns botões, que são (da esquerda para direita): Verify, Upload, New, Open e Save. Você usará dois deles neste exercício: 

  • O botão Verify, que garante que seu programa não possui erros de sintaxe; no entanto, ele não checa erros de lógica (falaremos sobre erros de lógica em um artigo adiante); 
  • O próximo botão que você usará será o botão Update; este botão envia o programa para a sua placa do Arduino; ele também verifica se o programa tem erros de sintaxe. 

Existe um outro botão que é muito importante, especialmente para esta lição, que é o Serial Monitor, e está localizado no canto superior direito da IDE (não clique nele ainda, porque não configuramos o modelo da placa e a porta serial). O Serial Monitor permitirá que você envie e receba informações da sua placa do Arduino. Usos comuns para o Serial Monitor são: debug, enviar informações de variáveis para a placa do Arduino, etc… 

Agora vamos explicar como selecionar sua placa e sua porta serial: 

1) Abra a IDE do Arduino (se já não estiver aberta); 

2) Vá em Tools -> Board e selecione a placa equivalente ao seu modelo de Arduino; 

3) Volte para Tools -> Serial Port, e selecione a porta COM à qual seu Arduino esteja conectado. 

 

 

 

Cripto e Certificação Digital

Como eu não estou mais tão economista ou tão artístico assim, vou deixar de lado os temas anteriores e me concentrar na minha área de atuação no momento: a segurança de dados.

Aqui vou abordar os assuntos mais obscuros, que geralmente são relegados ao segundo plano por outras páginas: ou pela sua complexidade, ou pelo fato de que são simples elementos de infra-estrutura, indignas de nota pelos colegas escritores.

Nas próximas semanas, postarei posts que julgo interessantes para aqueles que trabalham nas trincheiras da segurança da informação.

Até lá.

JC