substituindo arduino por mcupetee.cpdee.ufmg.br/ref/doc/relatorios/relatorio...programa de...
TRANSCRIPT
Programa de Educação Tutorial da Engenharia ElétricaUniversidade Federal de Minas Gerais
PETEE Relatório
Substituindo Arduino por MCURelatório de Atividade
Arthur Henrique Dias Nunes, Maria Luiza de Andrade Alves
Petiano: Arthur Nunes
Resumo
As placas Arduino são úteis para prototipagem de projetos e são amplamente utilizadas nogrupo. No entanto, quando passada a fase de prototipagem e projeto estiver em sua fase final não érecomendado manter o uso dessas placas. Isso se deve pelo tamanho delas, pela maior possibilidadede mal contato, pelo preço e principalmente pelo fato de gastar uma placa por projeto - é quaseuma inutilização da mesma.
Como engenheiros e bons projetistas, devemos ser capazes de substituir a placa por um circuitoeletrônico menor, mais compacto, mais barato e com menor gasto energético. Substituir o Arduinopor uma placa de circuito impresso com um MCU é o primeiro passo para isso.
Sendo assim, neste relatório descrevemos o circuito mínimo necessário para usar um mi-crocontrolador e partes que podem ser adicionadas, como um circuito de gravação de código oude gravação de bootloader, suficiente até para criar a própria placa com um MCU. Além disso,também descobrimos como se programar um Arduino usando outro, conhecimento que pode serútil caso alguma placa não possa ser conectada com o computador.
I. Introdução
Esse projeto é fruto de uma necessidade de um outro: compreender como usar um MCUno lugar de um Arduino para simplificar, reduzir e economizar o circuito. Nesse caso, oMCU é o Microcontrolador Atmega328p. Ele é o mesmo de um Arduino Uno, com a mesmaquantidade e tipos de pinos. Esse MCU pode ser encontrado na versão PU ou na AU. Na PUo componente é tipo DIP e é encontrado acoplado na placa Uno de modelos mais comuns,como 28 pinos. Já o AU possui 32 pinos e é tipo SMD e, por isso, consideravelmente menor- cabe na ponta do seu dedo. Este último é encontrado em placas Uno de modelos maisnovos.
Neste relatório é usado como referência o Atmega328p, como descrito acima. Dessaforma, as montagens, pinagens, prototipagens e o produto final são específicos dessemicrocontrolador. Para a utilização de outros, como o Atmega2560 (o mesmo de umArduino Mega) podem ser necessárias adaptações.
Para o PETEE este projeto representa a capacidade de substituir todos os Arduinos usadosem outros projetos que estão na fase final. Assim, as placas podem ser usadas nas Oficinas e
http://www.petee.cpdee.ufmg.br/ 1
Programa de Educação Tutorial da Engenharia Elétrica
II TEORIA
para o desenvolvimento de novos projetos sem precisar desmontar os já finalizados, como jáaconteceu. Este projeto representa também um upgrade nos desenvolvimento do PETEE, éum ótimo conteúdo e será uma ótima prática para o grupo finalizar seus trabalhos da formaaqui proposta.
Para o grupo, é viável também substituir os projetos por uma placa Arduino Nano ouMini, que possuem ótimos preços e tamanhos mínimos. Ainda assim, construir sua própriaplaca com um microcontrolador possui duas vantagens: é possível compreender melhor ofuncionamento do software e hardware das placas e o consumo de energia é mínimo.
Curiosidades: DIP ou DIL são acrônimos para dual in-line package, dispositivos eletrônicoscompostos por um retângulo e duas linhas de pinos. Eles são geralmente montados emuma placa de circuito impresso (PCI) por through-hole technology, através de furos comoo nome sugere. Já SMD é um acrônimo para surface-mount device, dispositivos que sãosoldados em PCIs por surface-mount technology (SMT). Estes não necessitam de furos, sãoconsideravelmente menores e necessitam de mais cuidado no processo solda.
II. Teoria
Microcontroladores
Os MCUs (MicroController Units) podem ser resumidos a blocos que contém CPU (CentralProcessing Unit), memória e periféricos. Eles são muito usados em aplicações embarcadas,como é o caso de vários projetos do PETEE. Eles também facilitam o desenvolvimento desistemas com poucos componentes, possuem baixo custo e são de fácil gravação e regravaçãode programas, (Ricardo de Oliveira Duarte, ).
Geralmente, para o seu funcionamento, são necessários apenas um oscilador e uma fontede alimentação externos. No caso do Atmega328p não é diferente. No entanto, o osciladorexterno pode ser substituído por um oscilador interno, o que será explicado mais adiante epode-se adicionar um botão push para fazer reiniciar a programação que estiver gravada.
A pinagem do Atmega328p está na Fig. 1.
Figura 1: Pinagem Atmega328p. À esquerda, na versão AU e à direita na versão PU.
2 Universidade Federal de Minas Gerais
III PRÁTICA
Substituindo Arduino por MCU
Bootloader
Bootloader, carregador de inicialização em tradução livre, é um software intermediárioentre o hardware e a BIOS de um computador ou smartphone que auxilia o carregamentodo sistema operacional. No caso do MCUs, o bootloader é necessário para que ele seja pro-gramável e execute os códigos desenvolvidos pelos projetistas. Alguns microcontroladores,como os que vêm nas placas Arduino, já vêm com o bootloader ao comprá-lo. Em outros,é necessário fazer o processo de gravação, chamado de burn the bootloader. O processo ésimples e rápido. Ele também permite algumas configurações avançadas, como escolher afrequência do oscilador externo que será utilizado ou selecionar o oscilador interno.
É possível realizar o bootloader com uma placa Arduino e com a sua própria IDE. Nocaso da placa UNO devem ser usados os pinos digitais 10, 11, 12 e 13 . O pino 10 será ligadoao RESET do microcontrolador, o 11 ao MOSI, 12 ao MISO e o 13 ao SCK.
A placa deve ser conectada ao computador e na Arduino IDE deve-se selecionar Tools-> Board -> Arduino Duemilanove or Diecimila . Em seguida em Files -> Exemples ->ArduinoISP. Irá aparecer um código na tela e em deve-se realizar o procedimento degravação na placa. Ainda nesta etapa não são necessárias as conexões entre o Atmega ea placa Arduino. Voltando a IDE, agora com as conexões entre o MCU e a placa feitas,deve-se selecionar a aba Tools -> Programmer -> Arduino as ISP. Verifique se a opção foirealmente selecionada e em seguida selecione a aba Tools -> Burn BootLoader. Para saberque o processo foi concluído irá aparecer a mensagem Done burning bootloader.
III. Prática
Funcionamento
Para o circuito de funcionamento do microcontrolador são necessários os seguintescomponentes:
• 1 x Cristal Oscilador de 16MHz;
• 2 x Capacitores de 22pF;
• 1 x Capacitor de 100nF (opcional, mas recomendado);
• 1 x Resistor de 10kΩ;
• 1 x Botão tipo push (opcional);
• 1 x Fonte de alimentação de 5VDC.
Um terminal do oscilador deve estar ligado ao pino XTAL1 e o outro ao XTAL2. Cadaum desses terminais também deve estar ligado a um capacitor de 22pF e os capacitoresligados ao GND.
Em seguida, o pino de reset deve ser ligado ao resistor, que por sua vez deve ser ligadoao VCC. Isso porque o pino de reset é ativado em nível lógico baixo, desta forma evita queele seja acionado. Sendo assim, esse resistor desempenha a função de pull-up. Pode-se
PETEE 3
Programa de Educação Tutorial da Engenharia Elétrica
III PRÁTICA
adicionar um botão para dar o reset quando pressionado. Para isso o botão deve ter umterminal ligado ao pino e outro ligado ao GND.
Finalmente, a fonte de alimentação deve ser adicionada entre o VCC e o GND. Érecomendado que adicionar um capacitor de desacoplamento para eliminar ruídos vindosda fonte, isto é, um filtro passa-baixa. Uma montagem comum é um capacitor de 100nFentre VCC e GND.
O esquemático desta etapa está na Fig. 2. A montagem na protoboard pode ser vista naFig. 7.
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
ATMEGA328P-AUU2
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
16MHzX2
22pC5
22pC6
GND
GND
GND
VCC
10kR2
K2-3.6×6.1_SMDKEY2
12
GND
VCC
VCC GND100nC7
5VB1
1 2VCC GND
Figura 2: Esquemático do circuito de funcionamento.
Bootloader
A montagem desta etapa está na Fig. 3. Ela deve ser acrescida da montagem anteriorpara funcionar. Nesse caso, a fonte externa não será necessária se o bootloader alimentar osistema. (WR Kits, b).
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
ATMEGA328P-AUU3
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
HDR-F-2.54_2x3H2
1 23 45 6
GND
VCC
MISO
MO
SI
SCK
RESET
GND
VCC
Figura 3: Esquemático do circuito de bootloader.
4 Universidade Federal de Minas Gerais
III PRÁTICA
Substituindo Arduino por MCU
Gravação
Nesta etapa, será necessário adicionar:
• 1 x Capacitor 100nF;
• 1 x Módulo conversor USB-Serial FTDI, Fig. 9. Este pode ser substituído por umaplaca Arduino Uno sem o microcontrolador.
A montagem desta etapa está na Fig. 4. Ela deve ser acrescida da montagem anteriorpara funcionar. Nesse caso, a fonte externa não será necessária se o gravador alimentar osistema. (WR Kits, a), (educ8s.tv, ).
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
GND
VCC
100nC9
DTR
TXRX
VCCCTS
GNDHDR-F-2.54_1x6
CODE1
123456
ATMEGA328P-AUU5
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
DTR
TXRX
RESET
RESET
Figura 4: Esquemático do circuito de gravação.
DIY Placa Arduino
Com as descrições feitas até aqui, é possível criar a sua própria DIY placa "Arduino".Um esquemático desta etapa está na Fig. 5. Depois disso, foram adicionados conectorespara que seja possível usar quaisquer pinos desejados.
PETEE 5
Programa de Educação Tutorial da Engenharia Elétrica
III PRÁTICA
A A
B B
C C
D D
1
1
2
2
3
3
4
4
5
5
TITLE:Sheet_1 REV: 1.0
Date: 2020-05-17
Sheet: 1/1Drawn By: ArthurHDN
Company: Your Company
GND
VCC
100nC9
DTR
TXRX
VCCCTS
GNDHDR-F-2.54_1x6
CODE1
123456
ATMEGA328P-AUU5
(PCINT19/OC2B/INT1)PD31(PCINT20/XCK/T0)PD42GND3VCC4GND5VCC6(PCINT6/XTAL1/TOSC1)PB67(PCINT7/XTAL2/TOSC2)PB78(PCINT21/OC0B/T1)PD59(PCINT22/OC0A/AIN0)PD610(PCINT23/AIN1)PD711(PCINT0/CLKO/ICP1)PB012(PCINT1/OC1A)PB113(PCINT2/SS#/OC1B)PB214(PCINT3/OC2A/MOSI)PB315(PCINT4/MISO)PB416 PB5(SCK/PCINT5) 17AVCC 18ADC6 19AREF 20GND 21ADC7 22PC0(ADC0/PCINT8) 23PC1(ADC1/PCINT9) 24PC2(ADC2/PCINT10) 25PC3(ADC3/PCINT11) 26PC4(ADC4/SDA/PCINT12) 27PC5(ADC5/SCL/PCINT13) 28PC6(RESET#/PCINT14) 29PD0(RXD/PCINT16) 30PD1(TXD/PCINT17) 31PD2(INT0/PCINT18) 32
100nC10
GNDVCC
RESET
SCKMOSIMISO
VCC
GND
HDR-F-2.54_2x3H3
1 23 45 6
GND GND
22pC11
22pC12
16MHzX3
VCCGND
K2-3.6×6.1_SMDKEY3
12
10kR3
DTR
TXRX
GNDVCC
GND
VCC
RESET
MOSIMISO
SCKRESET
D3D4
D5D6
D8D7
D10D9
A6
A0A1A2A3
A7
A4A5
D2
100nC5
GND
AREF
AREF
HDR-M-2.54_1x10J312345678910
HDR-M-2.54_1x10J4
12345678910
HDR-M-2.54_1x3J5
3
12
HDR-M-2.54_1x3
J63 12A
6
D3D4
D5
D6
D7
D8
D9
D10
MO
SIM
ISO
SCK
VCC GNDD2
A0A1A2
A4A3
A5RESET
TXRX
A7
Figura 5: Esquemático do circuito da PCI.
Figura 6: Visualização do modelo em 3D.
6 Universidade Federal de Minas Gerais
IV EXPERIMENTOS E RESULTADOS
Substituindo Arduino por MCU
IV. Experimentos e Resultados
Experimento 1
O primeiro experimento consistiu em um circuito mínimo para a utilização do MCUAtmega328p. Ele foi montado em uma protoboard, e por isso foi usada a versão PU do MCU.Nele foi montada a instrução Hello World do Arduino: piscar um LED. A montagem foipequena e com o seu sucesso já é possível concluir que pode-se substituir alguns Arduinosde projetos que estão em fases finais do PETEE por apenas o MCU e alguns componentessimples descritos na Seção III. A montagem deste protótipo pode ser vista na Fig. 7.A programação do MCU nesse caso foi feita diretamente pela placa Uno, encaixando oAtmega328p-PU na placa.
Figura 7: Atmega328p-PU na protoboard.
Vale a pena reproduzi-lo em uma PCI, quando possível, nos projetos do grupo: será maisbarato, não ocuparemos uma placa Arduino desnecessariamente e o consumo de energia eo tamanho do circuito ficarão menores.
Experimento 2
Este também consistiu na programação de um MCU que estava montado em uma placa,como no anterior. No entanto, a novidade neste experimento é que a programação docontrolador não foi feita diretamente pela placa Uno. Neste caso, a placa foi usada comoum conversor FTDI, (Instructables, a).
Isso possibilitou que o MCU permanecesse na protoboard, ou em um circuito impressoque pode ser o caso das aplicações nos projetos do PETEE. As ligações foram simples:
• 5V da placa no VCC da protoboard;
• GND da placa no GND da protoboard;
• RESET da placa no RESET do MCU;
• TX da placa no TX do MCU;
• RX da plaxa no RX do MCU.
O resultado está ilustrado na Fig. 8.
PETEE 7
Programa de Educação Tutorial da Engenharia Elétrica
IV EXPERIMENTOS E RESULTADOS
Figura 8: Usando uma placa Uno como um conversor FTDI.
Esse método precede o método mais geral de programação de um microcontrolador emuma placa: usar um conversor FTDI, (educ8s.tv, ). Esse conversor é um módulo USB-Serialpróprio para essa aplicação. Esse módulo está representado na Fig. 9.
Figura 9: Módulo FTDI.
Experimento 3
Para o terceiro experimento foi usado uma placa Arduino Nano. A novidade dele éa programação da placa: ela não foi feita diretamente usando um cabo de dados porquenão havia disponibilidade de um cabo com entrada micro USB no momento. Para isso, foiusada uma placa Uno para realizar a interface. Existem algumas formas de realizar esseprocedimento:
8 Universidade Federal de Minas Gerais
IV EXPERIMENTOS E RESULTADOS
Substituindo Arduino por MCU
• Usando a placa Uno como um ICSP, (Arduino Addiction, );
• Usando a placa Uno como um FDTI, o mesmo usado no Experimento 2, (Instructables,a);
• Usando a placa Uno como um ICSP mas sem fazer modificações nas configurações daIDE. Essa foi a maneira utilizada na Fig 10, (Instructables, b).
Figura 10: Programação de um Arduino Nano
Experimento 4
Finalmente, o último experimento foi feito utilizando um módulo FTDI para a progra-mação de um MCU, Fig. 11, (educ8s.tv, ).
Figura 11: Programação de um MCU usando FTDI
PETEE 9
Programa de Educação Tutorial da Engenharia Elétrica
REFERÊNCIAS
V. Discussão
O conhecimento descrito neste relatório é aplicável nos projetos do PETEE. Futurosprojetos podem ser iniciados, dando continuidade a esse trabalho, como: (i) aplicaçãodesse conhecimento em protótipos do PETEE; (ii) estudo de outros microcontroladores; (iii)estudo de outras maneiras de se substituir placas Arduino em projetos finais; (iv) circuitosadicionais que podem ser inseridos em conjunto com os descritos aqui, como proteção dealimentação, conversor USB-Serial, dentre outros.
Recomendamos a substituição nos projetos do PETEE e o uso deste conhecimento nacriação de novos. Assim, os protótipos finais ficarão mais baratos, mais robustos, com menorgasto energético e mais sofisticados.
Referências
Arduino Addiction. Program Arduino Nano via Uno with ICSP. arduinoaddiction.blogs-pot.com/2016/02/program-arduino-nano-via-uno-with-icsp.html. Acessado em 01 Junho2020. 9
educ8s.tv. Arduino Uno (ATMEGA328P) on a breadboard Tutorial DIY project.youtu.be/npc3uzEVvc0. Acessado em 07 Maio 2020. 5, 8, 9
Instructables. Arduino Examples 2 Use an Arduino As a FTDI Programmer. instructa-bles.com/id/Arduino-Examples-2-Use-an-Arduino-as-a-FTDI-Progr/. Acessado em 01Junho 2020. 7, 9
Instructables. Programming Arduino Nano Using UNO. instructables.com/id/Programming-Arduino-Nano-Using-UNO/. Acessado em 01 Junho 2020. 9
Ricardo de Oliveira Duarte. Arquitetura e Organização de Computadores. 2
WR Kits. Faça uma PCI Arduino Standalone. youtu.be/RvBLmwF8JIE. Acessado em 05 Maio2020. 5
WR Kits. Gravando o Bootloader no Atmega328p. youtu.be/5u8OGlTwsAI. Acessado em 05Maio 2020. 4
10 Universidade Federal de Minas Gerais