domingo, 26 de fevereiro de 2017

Robôs low cost#2 - controlo da velocidade

É possível controlar a velocidade do pequeno carrinho que montámos através do driver L298N que controla os motores. Para isso, há que recorrer aos pinos Ativa MA e Ativa MB ligando-os a uma saída PWM do arduino.

A Alexandra e o Jorge tinham já trabalhado com saídas PWM em S4A, pelo que o conceito não era novo para os alunos. Uma semana antes, enviei-lhes por email um post do blog Vida de Silício que descreve de forma clara o controlo de velocidade através do L298N e que deviam estudar em casa.

Ao fazer os primeiros testes com o carrinho, sem controlo de velocidade, foram mantidos os jumpers nos pinos Ativa MA e Ativa MB:

http://blog.vidadesilicio.com.br/arduino/ponte-h-l298n-controle-velocidade-motor/
Com os jumpers conectados, os pinos Ativa MA e Ativa MB estarão a 5V e o carrinho estará, de acordo com a programação, ou parado, ou em andamento com velocidade máxima. Ao ligar esses pinos a uma saída PWM do arduino, o intervalo de tempo em que a saída estará a 5V dependerá do valor indicado na programação através do comando analogWrite().
A sintaxe desse comando é analogWrite(pin, value), sendo pin o número da saída digital PWM do arduino (os indicados com um ~, saídas digitais 3, 5, 6, 9, 10 e 11, para um arduino UNO) e value um valor entre 255 (sempre a 5V) e 0 (sempre a 0V) - valores intermédios correspondem a ondas quadradas cujo tempo em que permanecem a 5V está entre 0% e 100% do período da onda:
https://www.arduino.cc/en/Tutorial/PWM

Embora o arduino não tenha saídas analógicas, as saídas PWM permitem realizar essa função, uma vez que o valor médio da tensão de uma onda quadrada depende do valor do duty cycle.
Na sessão anterior, as experiências foram feitas com a alimentação do arduino feita ainda por cabo, ligando-o ao computador. Para libertar o carrinho do computador, os motores continuaram ligados a uma pilha de 9V e foi reciclada uma bateria de um brinquedo velho para alimentar o arduino:

Durante a sessão do clube, o Jorge e a Alexandra modificaram as ligações realizadas anteriormente e assim: 
 - IN1, IN2, IN3 e IN4 ligadas respetivamente às saídas digitais 2, 4, 6, 7
 - ENA e ENB ligadas respetivamente às saídas PWM: 3, 5

O aspeto atual do carrinho é este:



Um possível programa de teste para controlo da velocidade dos motores...


...e um vídeo de demonstração do carrinho em movimento.



Termino referindo que este post foi concebido já depois da Alexandra e do Jorge terem feito a sua exploração do controlo de velocidade através do driver dos motores. A estratégia foi enviar uma semana antes o link sobre o controlo da velocidade dos motores e deixar os alunos a trabalhar de forma autónoma durante 90 minutos. O meu trabalho foi mesmo só fazer o pequeno vídeo no final da sessão. Muito bem, meninos!

sábado, 18 de fevereiro de 2017

Mais importante que ganhar, é ousar tentar!

O nosso clube surgiu há três anos, quando "tomámos de assalto"a aula de informática do 8º ano vocacional (obrigada à professora Filipa Araújo!) usando como material arduinos emprestado pela ANPRI (um obrigada à ANPRI, também!).

Desde então, com recurso a financiamento do Ministério da Educação, a doação de equipamentos por parte de entidades externas à escola, à participação em concursos, temos conseguido um espólio próprio já razoável que nos tem permitido trabalhar com um número considerável de alunos.

No ano passado, conseguimos manter com regularidade, desde janeiro, dois espaços de aprendizagem na nossa escola: O Espaço LEGO (programação de robôs EV3, dedicado a alunos do 7º ano de escolaridade) e o Espaço Programação e Eletrónica (programação de arduinos com S4A, dedicado a alunos do 10º ano de escolaridade).

Este ano, temos dois espaços diferentes, de 90 minutos cada, a que demos o nome Oficina de Programação e Projectos com Arduino (para alunos de 10º ano) e  Projetos de Electrónica e Programação (para aluno do 11º e 12º ano).

O primeiro espaço pretendia ser semelhante ao criado o ano passado para exploração de programação de arduinos com S4A...mas estas coisas raramente correm como o planeado! O grupo é este ano maior, mais heterogéneo, e alguns alunos já se juntaram ao clube com alguns objetivos definidos. O ano iniciou com aulas de programação de arduino em S4A, que foram interrompidas por vários alunos quando surgiu a oportunidade de concorrer ao desafio Astro Pi  - passando esses alunos a utilizar o espaço do clube para desenvolver trabalho em Python e usando os raspebrry pi disponíveis. Já falei deste projeto em post anterior.


Entretanto, os alunos que não se quiseram envolver no desafio Astro Pi, continuaram a explorar a programação de arduinos. Depois de concluídas as sessões que eu tinha previsto para desenvolvimento de trabalho em S4A, tomei conhecimento de um desafio organizado pelo Instituto Politécnico de Setúbal, o ONControl, para o qual esses alunos se mostraram motivados a concorrer. Achei uma boa altura para passar da linguagem gráfica para C e é neste âmbito que está a ser montado e programado o robô low cost, trabalho que pretendo documentar ao longo deste ano letivo.


Já no espaço Projetos de Electrónica e Programação, para além da prática de soldadura de circuitos impressos adquirida através da montagem de um Bot'n Roll A, e respetiva programação, apostámos na participação no concurso Can Sat Portugal 2017.


O projeto CanSat tem sido um desafio enorme e pretendo escrever um pouco sobre o caminho percorrido durante este ano. Para já, a referir que a nossa equipa, a D. João Can, foi selecionada para participar na final nacional na ilha de Santa Maria, nos Açores!

E que tem o título deste post a ver com a enumeração dos desafios fora da escola a que nos propusemos? Bem, o título é na verdade uma espécie de máxima pessoal que repito muitas vezes para mim própria quando me meto nestas andanças.

Quando propomos aos nossos alunos um desafio promovido por uma entidade exterior à escola estamos a dar-lhes horizontes, estamos a aumentar as suas expectativas, estamos a desenvolver nas equipas que concorrem competências que não conseguimos desenvolver devidamente nas aulas convencionais (como a capacidade de realizar um trabalho sem guião, de resolver problemas, gestão de trabalho em equipa, organização de um desafio complexo...), e também a consolidar temas científicos através da reflexão e cruzamento de dados.

Ainda assim, e apesar de todas vantagens, estamos, alunos e professores, a sair da nossa zona de conforto, estamos a expor a nossas fraquezas, estamos a ganhar muito trabalho extra por vezes sem muito retorno evidente...e por isso repito para mim própria a importância do "ousar tentar". Não imponho a mim própria (nem às equipas que acompanho) a necessidade de ganhar. Temos de ser humildes o suficiente para perceber o quanto temos de aprender e de reconhecer que é muito provável que haja quem saiba mais que nós - e por isso, dar o nosso melhor não implica ser o melhor. Mas dar o nosso melhor, "ousar tentar", é já imenso. Dar o nosso melhor implica querer saber, procurar soluções, pedir ajuda, apoiar a equipa - aprender para a vida, portanto. E é já tanto, que merece bem o esforço e a possibilidade de falhar.

O nosso melhor é tudo o que nos pode (e deve) ser pedido. E, nesse espírito, os desafios a que concorremos a nível regional, nacional ou até europeu são de uma enorme riqueza. Votos de bom trabalho para todas as equipas envolvidas no clube deste ano!





quinta-feira, 16 de fevereiro de 2017

Robôs low cost#1 - uma experiência

Há já algum tempo atrás, comprei um pequeno carrinho por menos de 20€ no Aliexpress e tinha desde então curiosidade em experimentá-lo, mas outras tarefas mais prementes se impunham e o tempo foi passando...até que este ano, em ambiente de clube, o Jorge e a Alexandra, depois de explorar a programação de arduinos em linguagem gráfica, decidiram assumir eles a missão de por o carrinho a funcionar.

O equipamento de maior relevo que podemos encontrar neste kit é: o chassis; 2 rodas; 2 motores DC; caixa de bateria para 4 pilhas; interruptor bipolar simples; 1 sensor shield V5.0 para arduino; 1 arduino UNO R3; 1 servo motor SG90; 1 suporte FPV; 1 driver L298N; 1 sensor de ultra sons HC_SR04. Todo o kit está ilustrado nas imagens seguintes:

O kit completo
 Em termos de literatura de apoio, o kit inclui as instruções de montagem do chassis...e é tudo!

Por isso, a parte fácil é mesmo chegar até aqui:

Chassis do carrinho já montado


Daqui em diante...nada encaixa com nada!!!

A primeira missão foi estudar o driver, montá-lo, ligá-lo ao arduino e programar o arduino de forma a colocar o carrinho a descrever um movimento pré-estabelecido.

O driver L298N, que faz o circuito de potência para controlar os motores, vem inserido numa placa para arduino muito fácil de compreender. É possível encontrar bons tutoriais sobre o funcionamento desta placa. Em termos de pinagem, a imagem seguinte é clara:

http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-l298n.html

Os conetores Motor A e Motor B devem ser ligados a cada um dos motores do carrinho.
Os pinos AtivaMA e Ativa MB são os pinos responsáveis pelo controlo PWM dos motores A e B, isto é, que permitirão a variação da sua velocidade. Trataremos dessa questão em post posterior. Por defeito, nestes pinos estão dois jumpers que manterão estes pinos a 5V, mantendo a velocidade constante.
O driver disponibiliza um regulador de tensão integrado. Caso estejamos a alimentar o driver no pino 6-35V, e se mantivermos o jumper no pino Ativa 5V, o regulador de tensão disponibiliza uma tensão regulada de 5V no pino 5V. Esta informação é importante porque, neste caso, o pino 5V deve ser usado como um saída (para alimentar outro dispositivo, por exemplo), mas nunca deve ser ligado à saída 5V do arduino, o que o poderia danificar. Se estivermos a controlar motores de 4-5,5V, há que retirar o jumper e ligar um alimentação de 5V ao pino 5V.
O barramento IN1, IN2, IN3 e IN4 é responsável pela rotação de cada um dos motores (IN1 e IN2 - motor A; IN3 e IN4 - motorB).

A forma como o motor A é controlado, que é idêntica à forma de controlo do motor B, é a seguinte:

http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-l298n.html
Portanto...estamos prontos para a primeira experiência...antes de mais, houve que arrumar o material no chassis. Começámos por usar para o driver dos motores uma bateria reciclada de um carrinho de brincar velho e uma pilha de 9V para o arduino, mas a bateria revelou ter uma duração muito pequena, pelo que, nesta fase, alimentámos o driver com a pilha de 9V e mantivemos o arduino ligado por cabo ao computador. As entradas IN1, IN2, IN3 e IN4 foram ligadas, respetivamente, às saídas digitais 4, 5, 6 e 7 do arduino. As placas e a pilha de 9V foram fixadas com fita adesiva de dupla face. Eis o aspeto final:

Deixamos o programa que fizemos para testar o que aprendemos sobre o driver dos motores...

...um pequeno vídeo com o carrinho em funcionamento...


...e ainda um pequeno registo fotográfico do trabalho realizado pelo grupo:



Nota final: como se pode observar no vídeo, a velocidade do carrinho é sempre constante. O controlo da velocidade através do driver dos motores será explorado em post posterior.

domingo, 15 de janeiro de 2017

Astro Pi - o desafio de programar para o espaço!

Este ano, o clube de robótica da escola lançou-se num novo desafio: o Astro Pi.

O Astro Pi Challenger é um concurso europeu que tem por objetivo envolver aluno entre os 12 e os 16 anos na programação de um Astro Pi. É promovido pela Agência Espacial Europeia (ESA) e dinamizado em Portugal pela Ciência Viva, através do programa Esero.

A ideia é programar em Python um raspberry pi que tem associado um Sense HAT, uma shield com uma matriz de LED 8x8, um joystick de 5 pontos e ainda os seguintes sensores: giroscópio, acelerómetro, magnetómetro, temperatura, pressão e humidade.

Para compreender melhor o projeto, o ideal é mesmo ver um pequeno vídeo preparado pela ESA:



Porque nos parece que a programação de raspberry pi em Python foge um pouco do tema deste blog, o Arduino na Escola, criámos outro: o Labutes Pi, que descreve o caminho que vamos trilhando no desafio Astro Pi. Caso queiram espreitar, são muito bem vindos!


quarta-feira, 14 de dezembro de 2016

O LED RGB e as saídas PWM do arduino - estudo orientado

À medida que o número de alunos do clube aumenta, a necessidade de ter material preparado para que possam trabalhar de forma autónoma aumenta também, dado que vou tendo grupos a trabalhar em projetos distintos e em níveis de aprendizagem diferentes.

Baseando-me na aula que tinha preparado para introduzir os LED RGB e as saídas PWM do arduino, criei um estudo orientado para que a exploração do RGB e das saídas PWM pudesse ser feita de forma autónoma. Claro que a supervisão é importante e que por vezes os alunos precisam de determinados esclarecimentos, mas com este método de trabalho deixo de ser necessária para explicar e desenvolver o trabalho passo-a-passo, o que me liberta para apoiar outros grupos com tarefas disitintas.

O estudo que deixo, foi aplicado numa aula de 90 minutos, que se revelou suficiente em termos de tempo. As soluções (que estão na última página do documento) não foram reveladas aos alunos, tendo todos os exercícios sido cumpridos com sucesso.

Deixo o estudo orientado que preparei...




...e um pequeno vídeo com o desafio proposto a funcionar:


sexta-feira, 25 de novembro de 2016

Reforçando aprendizagens na programação de arduino com S4A (entradas e saídas digitais)

Com um novo ano letivo a começar, temos novo grupo de alunos a aprender a programar arduinos. Começámos, como em anos anteriores, com a programação de arduinos usando o S4A. 

Como sempre, o ritmo de aprendizagem não é igual para todos os alunos, não só porque há alunos que se adaptam com mais facilidade ao tipo de trabalho, mas também porque há alunos que são de facto mais exigentes com a sua aprendizagem e que preferem não avançar enquanto não sentem os seus conhecimentos consolidados.

Por isso, de forma a ter vários grupos de trabalho em níveis diferentes, tenho necessidade de criar fichas com exercícios que os alunos possam desenvolver de forma mais ou menos autónoma.

Deixo aqui uma primeira ficha de trabalho com exercícios que envolvem entradas e saídas digitais...



...e um pequeno vídeo com os três exercícios propostos em funcionamento:


quinta-feira, 14 de julho de 2016

Laboratório de física para todos - vamos fazer um digitímetro!

Um digitímetro consta de uma célula fotoelétrica ligada a um marcador de tempo. É usado geralmente para medir o tempo de passagem de um objeto para, a partir desse tempo e das dimensões do objeto, os alunos fazerem o cálculo da velocidade com que o objeto passou num determinado ponto. Sendo um aparelho recomendado em várias experiências de Física do ensino secundário é, pelas escolas que fui passando, um aparelho considerado caro, por vezes demasiado complicado para as tarefas habituais, e que existe em pouca quantidade, pelo que geralmente é feita uma única montagem para todo um grupo de alunos em vez de várias montagens, o que permitiria o trabalho em grupos mais pequenos.

O aspeto de um digitímetro que costumamos encontrar nas nossas escolas (e que ilustra um protocolo experimental proposto pela editora Areal) é o seguinte:



Não querendo parecer esquisita, nunca percebi porque é que o digitímetro é nos nossos laboratórios um aparelho tão pesado, com tantos fios, pouco portátil, demasiado caro para estender o seu uso a níveis de ensino mais precoces...e por isso, achei que conseguia fazer um com um arduino e um PIR.

Material usado: arduino, breadboard, fios de ligação, plug-in para uma pilha de 9V, LCD 1602, sensor PIR.

Para ficar com uma ideia de qual o custo unitário deste digitímetro, fiz uma busca rápida pelo aliexpress e consegui um kit básico de arduino com a placa UNO, a breadboard, fios de ligação e plug-in para a pilha por 5,08€;  um LCD (já com os pinos soldados) por 1,77€ ; um sensor PIR por 0,31€. Podem dar jeito alguns fios com extremidades macho-fêmea (para poder afastar o sensor PIR da breadboard) - conseguem-se 40 cabos de 20 cm por 0,83€. Conseguimos pois, mandando vir o material pelo aliexpress, todo o projeto por 7,99€. E ainda sobrarão muitos cabos para projetos futuros...

Quanto ao esquema, há que ligar devidamente o LCD, o que foi estudado em post anterior, e o PIR. Nesta montagem, optámos pela solução de ligar o pino 3 do LCD (que define o contraste) à saída PWM do arduino (D6) em vez de o ligarmos a uma resistência variável. A saída do PIR foi ligada à entrada digital 13 do arduino (D13). O esquema que proponho é o seguinte:


E a programação? O programa de um digitímetro não tem nada de complicado. Para o compreender, há que rever o funcionamento do PIR e do LCD. Basicamente, a ideia é esperar que o PIR, ligado à entrada 13 do arduino, altere o seu estado de HIGH para LOW (o que revela a presença de um obstáculo dentro da zona sensível do PIR) e medir o tempo até que o sinal volte novamente a HIGH. Esse tempo corresponderá ao da passagem do obstáculo em frente do PIR. O ângulo de deteção é de 35º, razoavelmente pequeno; ainda assim, deve tentar-se que a distância entre o objeto e o PIR seja a menor possível para minimizar o erro na medida devido a esse ângulo. Relativamente aos programas anteriores a única função nova é millis(), cuja descrição pode ser encontrada no site do arduino.

Deixo aqui o programa integral:


Finalmente, partilho um vídeo com o digitímetro em funcionamento: