Utilizando Arduino MEGA (ATmega2560) como AVR ISP para gravar sketch em Arduino UNO (ATmega328)

E aí galera, para abrir com chave de ouro minha contribuição para a internet trago para vocês algo bem interessante.

Estava eu aqui com problemas no carregamento via USB de um novo sketch em um Arduino UNO que possuo. Já pesquisei muito mas até agora não encontrei a causa do problema com o USB, mas tenho minhas suspeitas.

Tendo isso em vista, pesquisei bastante e encontrei a solução mais viável para mim no momento. Já que possuo um Arduino MEGA, eu o utilizei como AVR ISP (In-System Programmer) para gravar novos sketches no meu Arduino UNO e mostrarei a vocês hoje como fazer também.

Materiais Utilizados:

  • Arduino UNO (ATmega328);
  • Arduino MEGA (ATmega2560);
  • Male Jumpers;
Arduino UNO, MEGA e jumpers.

Arduino UNO, MEGA e male jumpers.

Espera, o que é AVR?

Basicamente, um AVR é um microcontrolador programável que pode ser integrado em quase todo projeto que precisa de um cérebro.

Tecnicamente é um microcontrolador RISC de chip único com uma arquitetura Harvard modificada de 8-bit (µC), desenvolvido pela Atmel em 1996. Foi um dos primeiros da família de microcontroladores a utilizar uma memória Flash com o intuito de armazenar a programação.

Microcontrolador da família AVR (ATmega328P-PU)

Abaixo alguns microcontroladores AVR utilizados por placas Arduino:

  • ATmega168: Duemilanove, Nano, Pro, Pro Mini;
  • ATmega328: UNO, Duemilanove, Ethernet, Mini, Nano, Pro, Fio;
  • ATmega32u4: Leonardo, Yún, Tre, Micro, Robot, Esplora;
  • ATmega2560: Mega 2560, Mega ADK.

Agora sim, como configurar o Arduino como ISP?

A primeira coisa a ser feita é configurar o Arduino como ISP, isso pode ser feito da mesma forma com outras versões do Arduino, eu fiz com o meu MEGA.

Vamos as instruções:

  • Conectar Arduino via USB;
  • Executar o Arduino IDE;
  • No menu, ir em File > Examples > ArduinoISP
  • Se preciso, selecionar no menu os items Tools > BoardSerial Port  que correspondem a placa que você está utilizando como programador (não a placa que será programada);
  • Fazer upload do sketch ArduinoISP na placa programadora;
  • Após o término do upload, configure Tools > Programmer para Arduino as ISP.

E o circuito, como fazer?

É coisa bastante simples, no segundo passo só precisamos fazer algumas conexões utilizando jumpers. Neste passo, as conexões diferem para diferentes tipos de arduino, apenas mostrarei como fazer as conexões do Arduino MEGA para o UNO, depois farei outros posts com outras versões.

Conexões entre MEGA e UNO.

Conexões entre MEGA e UNO.

Agora é só utilizar os pinos 50, 51, 52 e 53 do Arduino MEGA e conectar aos do UNO, as conexões devem ser feitas conforme as instruções abaixo:

  • Slave reset – conectar pino 53 do MEGA ao pino “reset” do UNO;
  • MOSI – conectar o pino 51 do MEGA ao pino 11 do UNO;
  • MISO – conectar o pino 50 do MEGA ao pino 12 do UNO;
  • SCK – conectar o pino 52 do MEGA ao pino 13 do UNO;
  • Não se esqueça de conectar o ground do MEGA ao ground do UNO assim como o 5v do MEGA ao 5v do UNO.
Diagrama de conexões entre MEGA e UNO. Siga conforme informado e não se esqueça do 5v e do GND.

Diagrama de conexões entre MEGA e UNO. Siga conforme informado e não se esqueça do 5v e do GND.

Por fim, como carregar o novo sketch? 

Agora com o Arduino MEGA funcionando como ISP e com as conexões feitas só precisamos enviar o novo sketch para o Arduino UNO. Como exemplo, vou utilizar o exemplo Blink, este que pode ser encontrado em File > Examples > Basics > Blink, no menu do Arduino IDE. O exemplo pisca um LED conectado ao pino 13.

Sketch de exemplo, Blink.

Sketch de exemplo, Blink.

Vamos as instruções:

  • Selecionar no menu o item Tools > Board que corresponde a placa que será programada, no nosso caso, selecionar Arduino Uno;
  • Selecionar File > Upload Using Programmer, no menu;
  • Esperar término do upload;

Se tudo correu certo, o LED do pino 13 deverá permanecer piscando.

LED conectado ao pino 13 e GND, piscando.

LED conectado ao pino 13 e GND, piscando.

É isso ai pessoal, testem com seus sketches também e qualquer dúvida deixem seus comentários.

Referências:

http://arduino.cc/en/Tutorial/ArduinoISP
http://labdegaragem.com/profiles/blogs/tutorial-gravando-bootloader-do-arduino-uno-atmega328p-pu-com-o-a
https://www.youtube.com/watch?v=mq5PhM_Fz9Y

Deixe um comentário