2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Prefácio
Recentemente, tenho desenvolvido alguns projetos de IoT baseados em ESP8266 e descobri que o processador central estava lutando para realizar todas as tarefas que eu precisava para gerenciar, então decidi distribuir algumas das atividades menos importantes para um microcontrolador diferente em dessa forma, liberando o ESP8266 para continuar seu trabalho de ser um dispositivo IoT.
Visto que eu queria publicar meu projeto para um público tão amplo quanto possível, optei por usar o IDE do Arduino como a plataforma de desenvolvimento de escolha, uma vez que tem uma comunidade amplamente suportada.
Restrições de Design
A fim de fornecer uma distribuição razoável de dispositivos de destino, permitindo a seleção de um microcontrolador apropriado para a aplicação em questão, decidi pelas seguintes peças Atmel; ATMega328P, ATTiny84 e ATTiny85. Para limitar a complexidade do programador necessário, limitei a escolha do relógio para interno para todos os dispositivos e 16 MHz externo para apenas o ATMega328P e ATTiny84.
O que se segue é uma coleção de notas sobre programação com o Arduino e uma descrição de como eu montei um programador simples baseado em Arduino Uno para esses dispositivos (fotos acima).
Quais peças eu preciso?
Para construir o programador, você precisará das seguintes partes
- 1 fora do Arduino Uno
- 2 soquetes DIP de Força de Inserção Zero de 28 pinos (ZIF) (para conter ATMega328P, ATTiny85, ATTiny84)
- 1 protetor de protótipo do Arduino (eu tenho o meu aqui; https://www.ebay.co.uk/itm/Arduino-UNO-Prototyping …)
- 2 LEDs 5 MM desligados
- 2 resistores de 1K desligados
- 1 resistor de 10K desligado
- 4 capacitores de cerâmica 22pF desligados
- 2 cristais de 16 MHz
- 3 capacitores cerâmicos de 0,1uF
- 1 capacitor eletrolítico desligado 47uF
- 1 capacitor eletrolítico de 10uF
- Fio de envoltório de arame de vários comprimentos.
Qual software eu preciso?
Arduino IDE 1.6.9
Quais habilidades eu preciso?
- Conhecimento do Arduino IDE
- Algum conhecimento de eletrônica e como soldar
- Muita destreza manual
- Muita paciência e boa visão
Assuntos abordados
- Introdução geral à programação de microcontroladores Atmel
- ISP ou Bootloader: é um pouco confuso
- Visão geral do circuito
- Configurando seu programador
- Usando o seu programador Arduino ISP
- Desenvolvendo código em seu sistema de destino
- Pegadinhas
- Conclusão
- Referências usadas
Isenção de responsabilidade
Como sempre, você usa essas instruções por sua própria conta e risco e elas não são suportadas
Etapa 1: Introdução geral à programação de microcontroladores Atmel
Existem dois métodos disponíveis para programar microcontroladores Atmel;
- Na Programação do Sistema (ISP),
- Auto-programação (via bootloader).
O método anterior (1) programa diretamente o microcontrolador por meio da interface SPI após primeiro colocar o dispositivo em reinicialização. A menos que seja instruído de outra forma, um programa-fonte executável compilado é gravado no dispositivo de forma incremental na memória de código de onde é executado na inicialização. Existem muitos dispositivos ISP capazes de programar dispositivos Atmel, alguns dos quais sendo (foto 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. A Figura 2 mostra como o dispositivo ISP se conecta ao ATMega328P (estranhamente marcado como ICSP) na placa Arduino Uno R3 (a figura 3 fornece o pino do ISP). Também é possível programar um microcontrolador Atmel através de sua interface SPI usando um Arduino Uno como ISP (figura 4), aqui o Uno está sendo usado para programar um ATMega328P.
O último método (2) usa um pequeno fragmento de código conhecido como 'bootloader' residente permanentemente na memória de código executável (geralmente bloqueado para evitar sobrescrever acidentalmente a imagem 5). Este código é executado logo após a inicialização ou reinicialização do dispositivo e permite que o microcontrolador se reprograme com o novo código recebido por meio de uma de suas interfaces de uma fonte externa a ele mesmo. O método bootloader é usado pelo Arduino IDE para reprogramar Arduinos mapeados como uma porta de comunicação USB no PC (ou MAC, Linux box etc., imagem 6) e no caso do Arduino Uno se comunica com o dispositivo Atmel por meio de seu interface serial nos pinos IC 2 e 3 do ATMega328P. Além disso, o Arduino Uno (com o microcontrolador ATMega328P removido) pode ser usado para programar um ATMega328P por meio do método bootloader, atuando efetivamente como um dispositivo adaptador USB para serial (foto 7).
O que é um adaptador USB para serial?
Um adaptador USB para serial é uma peça de hardware que se conecta à porta USB do seu PC e se parece com uma porta de comunicação serial (um legado de tempos anteriores, quando os computadores usavam um padrão de comunicação serial conhecido como EIA-232, V24 ou RS232), permitindo que você enviar e receber dados seriais nos mesmos níveis elétricos do microcontrolador. Quando você seleciona Ferramentas -> Porta -> COMx no Arduino IDE, você está conectando / conectando seu PC ao Arduino.
Um dispositivo como esse às vezes é chamado de FTDI (imagem 8, que é na verdade um nome de marca) ou CH340G etc. USB para serial no Arduino uno é obtido por meio de um ATMega16U2-MU (R) IC ZU4 como no esquema do Arduino abaixo.
Para maior clareza, a figura 9 identifica os dois dispositivos Atmel e seus respectivos conectores ISP no Arduino Uno R3.
Nota 1: Se você escolher seguir a rota do dispositivo FTDI, certifique-se de comprar de um vendedor confiável, pois há muitos dispositivos falsificados baratos no mercado que falharam após a aplicação de uma atualização do Windows.