Depois da escolha e liga¸c˜ao de todos os componentes elabora-se o desenho da placa e colocam-se os componentes nos locais certos. Alguns componentes devem ser
Figura 4.24 – Esquema de Montagem Encoders EAGLE
colocados em locais espec´ıficos, enquanto outros depende de preferˆencias pessoais. Na figura4.25temos o desenho e disposi¸c˜oes finais da placa e componentes. A figura est´a dividida em sec¸c˜oes e cada sec¸c˜ao pode ter uma ou mais ´areas. Vamos agora analizar cada sec¸c˜ao:
• Sec¸c˜ao no 1 - Nesta sec¸c˜ao temos posicionados os sensores IR. Estes devem
ser colocados sempre na frente do robˆo para poderem detetar corretamente as paredes do labirinto.
• Sec¸c˜ao no 2 - Aqui temos a posi¸c˜ao do microcontrolador. A sua posi¸c˜ao ´e
uma preferˆencia pessoal, no entanto ´e de boa pr´atica tentar coloc´a-lo o mais perto poss´ıvel do centro da placa, uma vez que tem liga¸c˜oes para todos os componentes do circuito.
• Sec¸c˜ao no 3 - Aqui temos a coloca¸c˜ao dos drivers dos motores. Mais uma vez a
coloca¸c˜ao destes componentes ´e uma preferˆencia pessoal, no entanto ´e de boa pr´atica coloc´a-los perto dos motores.
• Sec¸c˜ao no 4 - Esta sec¸c˜ao da placa ´e ocupada pelos motores. Estes devem estar 39
colocados no ponto m´edio do comprimento da placa, de modo a existir uma boa distribui¸c˜ao do peso.
• Sec¸c˜ao no 5 - Em 5 temos o espa¸co ocupado pelo girosc´opio/aceler´ometro. A
sua correta coloca¸c˜ao ´e fundamental para obter boas leituras deste dispositivo. Deve ser colocado exatamente no ponto m´edio entre os motores, ou seja, no centro de massa do robˆo e no ponto m´edio do comprimento da placa.
• Sec¸c˜ao no 6 - Nesta sec¸c˜ao temos a fonte de alimenta¸c˜ao. Est´a situada na parte
inferior da placa pois ´e o local dos conectores como bateria e USB. ´E tamb´em o local mais comum de coloca¸c˜ao do conjunto de componentes que fazem a fonte de alimenta¸c˜ao de todo o robˆo. Esta, em particular fornece tens˜oes de 8.4 V, 4.5 V e 3.3 V.
• Sec¸c˜ao no 7 - Aqui temos colocados na parte detr´as do robˆo os bot˜oes de
RESET, de MENU e o conector µUSB. ´E o melhor local para colocar estes componentes, uma vez que ´e de f´acil acesso para o utilizador.
• Sec¸c˜ao no 8 - Pinos de liga¸c˜ao dos encoders. Situados no local mais pr´oximo
das rodas dos motores que ´e onde os encoders encaixam.
• Sec¸c˜ao no 9 - Os componentes que dizem respeito a esta sec¸c˜ao s˜ao os neopixel
RGB. Servem como luzes de intera¸c˜ao com o utilizador. A sua disposi¸c˜ao na placa ´e de pura preferˆencia pessoal.
Figura 4.25 – Desenho e disposi¸c˜ao de componentes final da placa PCB
5
Resultados
Ap´os finalizado o desenho da placa, esta foi enviada para o centro de frabrico SeedStudio, China. O resultado ´e a placa representada na figura seguinte 5.1(a). Uma vez que os componentes s˜ao bastante pequenos, a solda fez-se com recurso a um microsc´opio (figura 5.1(b)).
(a) Placa PCB (b) Solda dos componentes
Figura 5.1 – In´ıcio da montagem
Na seguinte figura (5.2(b)), podemos ver o resultado final do kit Flash com os motores devidamente montados e as componentes soldadas.
(a) PCB com componentes
(b) Kit completo
Figura 5.2 – Placa com componentes soldadas e robˆo completo
Ap´os finalizar o desenho da placa e montar os motores, ´e necess´ario desenvolver m´odulos de controlo para facilitar a programa¸c˜ao dos utilizadores. Neste cap´ıtulo vamos analisar os algoritmos que comp˜oem cada m´odulo de controlo. Para ser poss´ıvel desenvolver um algoritmo de resolu¸c˜ao do labirinto ´e necess´ario ter m´odulos de controlo. O que fazem estes m´odulos? Eles lidam com a parte da programa¸c˜ao de mais baixo n´ıvel, como analisar os valores de tens˜ao dos sensores, analisar os sinais dos encoders e controlar a distribui¸c˜ao de potˆencia aos motores. Assim o utilizador apenas executa as fun¸c˜oes que pretende de cada m´odulo, como por exemplo, a fun¸c˜ao que faz automaticamente a leitura dos sensores e disponibiliza os seus valores.
Para que seja poss´ıvel ao utilizador criar um algoritmo de resolu¸c˜ao do labirinto s˜ao necess´arios 3 m´odulos: o m´odulo de controlo dos sensores IR, m´odulo de controlo dos encoders e aceler´ometro e m´odulo de controlo dos motores.
Mas antes de criar estes m´odulos temos que instalar o bootloader no microcontrolador. O que ´e o bootloader? ´E um firmware que ´e instalado no microcontrolador quando ele est´a “vazio” e permite-lhe receber e executar os c´odigos pretendidos, tais como c´odigos em Python, MakeCode e Arduino.
5.1
Carregamento do Bootloader
Para facilitar o carregamento do bootloader inclu´ımos, no desenho da PCB, um package (pinos de conec¸c˜ao) de pinos SWD (figura5.3(a)) que permite ligar o cabo apresentado na figura 5.3(b).
(a) PCB SWD Pins Package (b) Tag Connect - TC2030-MPC-NL
Figura 5.3 – Connec¸c˜ao SWD
O upload do firmware de bootloader foi poss´ıvel com recurso ao programador da Atmel, o Atmel-ICE (figura 5.4)
Figura 5.4 – Programador Atmel-ICE
Vamos ver agora como fazer o upload do firmware. As etapas a seguir s˜ao:
- Fazer o download do software Atmel Studio; 45
- Fazer o download do ficheiro de bootloader para o processador M4 emAdafruit
(2018)https://github.com/adafruit/circuitpython/releases/;
- Conectar os pinos SWD do Atmel-ICE ao cabo Tag-Connect;
- Alimentar a placa e conectar o cabo Tag-Connnect
- Conectar o Atmel-ICE ao PC;
- No software Atmel Studio selecionar Tools e de seguida Device Programming;
- Selecionar o dispisitivo ATSAMD51J19A;
- Selecionar o campo Memories
- Procurar o ficheiro de bootloader no campo flash e premir o bot˜ao Program;
E assim temos o bootloader carregado para o microcontrolador que fica pronto para o desenvolvimento dos m´odulos pretendidos