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;
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.
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 > Board e Serial 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.
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.
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.
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.
É 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