Uma espécie de diário de uma professora que começou por explorar as potencialidades do Scratch na programação de arduinos...e que depois foi experimentando novos caminhos com os seus alunos!
Esta é a última aula formal que pretendo dar aos alunos envolvidos neste projeto. A partir daqui, parece-me que já conhecem as potencialidades essenciais do arduino e que poderão começar a delinear os seus próprios projetos.
A ideia desta aula é explorar as entradas analógicas - temos 6 disponíveis (A0 a A5) - essenciais na utilização de muitos sensores, como de luminosidade, proximidade ou temperatura.
A noção de digital / analógico nem sempre é óbvia para os alunos da faixa etária com que estou a trabalhar. Na verdade, usando de novo o corpo humano como analogia, quase todos os nossos sensores e atuadores são analógicos, mas podemos encontrar exemplos como olhos fechados / abertos para dar a ideia de digital e a intensidade vocal como analógico.
Há depois que lhes apresentar vários componentes que podem ligar a entradas analógicas. Optei pela resistência variável, pela fotorresistência e pelo sensor de temperatura por serem os componentes que tenho disponíveis para trabalhar com uma turma.
Na primeira montagem, a ideia é simplesmente apreender os valores limite que as entradas analógicas aceitam - 0V correspondem a um valor igual a 0; 5V ao valor 1023.
Voltei a usar 3 LED, ligados às saídas digitais 13, 12 e 11, como atuadores para testar o tipo de entradas estudadas na presente aula.
Deixo de seguida a presentação que explorarei nesta sessão...
...o circuito esquemático do último exercício proposto...
...e um pequeno vídeo com o exercício do "termómetro" em funcionamento.
Há certos momentos em que me sinto um bocado limitada. Corre por algumas esferas pensantes a ideia que um professor é uma espécie de enciclopédia, alguém que deve estar sempre preparado para em qualquer momento abrir a boca e debitar uma aula fantástica sobre um qualquer assunto da sua disciplina (e até fora dela).
Pois que a minha experiência pessoal está longe disso. Quando comecei a dar aulas, diziam-me os professores mais experientes que "por cada hora em sala de aula, devem existir duas de trabalho a prepará-la". Parece que hoje o paradigma se alterou e o trabalho individual do professor tem merecido cada vez mais descrédito.
Serve esta introdução para confessar (estamos na Páscoa!) que trabalho de facto muito em casa. Não é um lamento - é simplesmente uma constatação. E, tendo filhos, estes acabam por coabitar muitas horas com o trabalho da mãe.
Foi por isso sem surpresa que ouvi a minha filha de 12 anos dizer que nas férias da Páscoa queria fazer o seu próprio projeto em arduino.
O projeto foi delineado por ela. Fez o boneco de um gato recorrendo a materiais cá de casa (ela gosta bastante deste tipo de trabalhos manuais) e decidiu o que queria que ele fizesse: que os olhos piscassem e que miasse quando lhe tocassem no nariz. Sugeri que acrescentasse um braço a dizer adeus, o que acatou.
A ideia inicial para o nariz do gato, foi um botão de pressão. Dada a fragilidade da estrutura, no entanto, optei por uma fotoresistência, o que foi uma escolha acertada. Ainda não tive oportunidade neste blog de explorar as entradas analógicas, mas fá-lo-ei em breve.
O circuito eletrónico e as ligações, fui eu que as fiz. Optei por não fazer soldaduras. Em vez disso, usei crocodilos e conetores para ligar os componentes e os fios.
Quanto à programação, e uma vez que a minha filha sabe os rudimentos de scratch, embora nunca tivesse trabalhado em ambiente S4A, adaptou-se com facilidade. A programação do servo motor foi feita deliberadamente sem variáveis para tornar a programação mais acessível.
O resultado parece-se um bocado com aqueles gatos que estão à porta dos chineses, para dar sorte, mas não deixa de nos roubar um sorriso!
Esta também não foi uma aula testada com alunos, mas uma exploração do controlo de motores dc através de Scratch.
O motor dc (ou motor de corrente contínua) é muito vulgar em equipamentos como impressoras, carrinhos de brinquedo a pilhas e outros brinquedos baratos, pelo que é extremamente fácil ter acesso a um.
O controlo deste motores é muito simples: ligam-se os cabos do motor a uma fonte de alimentação contínua (uma pilha, por exemplo) apropriada, de acordo com as caraterísticas do motor usado, e o motor começa a girar. Trocando a polarização da fonte, o motor girará em sentido contrário.
O controlo deste tipo de motor com arduino não é, no entanto, tão simples como seria de supor porque, por um lado, este motor exige mais corrente que aquela que o arduino consegue debitar e, por outro, os motores geram correntes de indução que podem danificar o circuito caso este não esteja devidamente preparado.
Para que a corrente elétrica seja suficiente, a ligação do motor deve ser feita recorrendo a uma fonte de alimentação externa (eu usei uma pilha vulgar de 9V).
E onde entra o controlo do motor? Através de um pequeno componente chamado FET (Field Effect Transistor), da família dos transístores e cuja função é permitir a passagem de corrente entre dois pinos quando um terceiro é ativado. O funcionamento de um transístor pode ser comparado ao de uma torneira de monocomando que, ao ser aberta, deixa passar a água sempre num único sentido.
O controlo do FET foi feito usando uma das saídas analógicas disponíveis no S4A, o pino 9.
Na verdade, o arduino não tem saídas analógicas na verdadeira acepção da palavra. A saída é sempre 0V ou 5V. As saídas ditas analógicas são de facto saídas PWM, que enviam sinais pulsados de acordo com o valor analógico indicado (entre 0 e 255). A variação da frequência dos impulsos vai resultar em valores eficazes de tensão variáveis. No caso concreto, o motor só será alimentado pela pilha de 9V de acordo com os impulsos gerados no pino de controlo do FET.
Confusos? Experimentando tudo vai parecer mais simples. O díodo colocado aos extremos do motor impede a circulação em sentido contrário de correntes geradas pelo motor (o díodo, que é um componente polarizado, só deixa passar a corrente num sentido).
Para fazer a inversão do motor, usei o L293, um circuito integrado preparado já para controlar motores dc e que nos descomplica bastante a vida (a outra hipótese era conceber um circuito algo complicado com vários díodos).
Ainda tentei fazer um pequeno elevador com o circuito que contruí, mas este tipo de motores, ao contrário dos servo motores, não tem a capacidade de manter a posição quando desliga, pelo que se tornou inviável para essa situação.
Deixo então a minha proposta de trabalho para controlo de motores dc recorrendo ao Scratch...
...o circuito esquemático do último exercício proposto...
...e um pequeno vídeo com o circuito de comando do motor dc em funcionamento (o gacho está um pouco ridículo, reconheço, mas o objetivo foi tornar possível a perceção da inversão de sentido):
Pois que usámos a última sessão do período para desmontar equipamento estragado que havia pela escola. Com a colaboração da coordenadora da biblioteca da escola e do coordenador dos equipamentos informáticos, conseguimos 2 impressoras e 1 scanner que há muito estavam avariados e a ocupar espaço.
A diretora de turma, que dá aulas na oficina, disponibilizou-nos o espaço e algumas ferramentas (que não eram suficientes - alguns alunos trouxeram ferramentas de casa, emprestadas) - e daqui se concluiu que trabalhar numa escola colaborativa não tem preço...
Depois...foi mão à obra! Os alunos aderiram da melhor maneira à atividade, afinal não é todos os dias que podemos desmanchar equipamentos eletrónicos. Mostraram-se muito interessados e empenhados. Curioso o facto de, à medida que iam recuperando material, começarem desde logo a encontrar-lhe um fim para um possível projeto ("Posso ficar com este eixo, professora? Acho que dava mesmo para um elevador...").
Recuperámos várias estruturas metálicas, componentes eletrónicos (dessoldados a placas de circuito impresso), motores, muitos cabos elétricos...
...e ganhámos entusiasmo e outra perspetiva relativamente à reciclagem de equipamentos eletrónicos.
De entre as peças recuperadas, tenho particular esperança na quantidade de motores que conseguimos - vários motores de corrente contínua e dois motores de passo (que eu ainda vou ter de estudar como controlar através de Scratch...).
Como nota final, esta é uma atividade muito suja. No final da hora, estamos todos cheios de óleo, bancadas e chão para esquecer. Haverá também muito lixo que tem de ser colocado no contentor correto. A turma com que estou a trabalhar tem, entre as áreas vocacionais, jardinagem. Para esta atividade foi uma mais valia porque estão habituados a pegar em sacos de lixo e levar para o contentor fora da escola. Também contei com a colaboração dos alunos para lavar as bancadas e o chão, que teve de ser varrido e bem passado com esfregona. Sem essa colaboração e boa vontade, uma atividade desta natureza seria impraticável. Obrigada pelo envolvimento de todos!
O condensador é um componente eletrónico que tem a capacidade de armazenar cargas elétricas, conseguindo assim manter uma tensão estável aos seus terminais.
A capacidade de "armazenar" cargas depende das caraterísticas construtivas do condensador e é medida em farad (F).
O aspeto destes componentes é muito diversificado.
Apesar de também haver um código de cores para os condensadores, tal como para as resistências, o mais vulgar é encontrarmos o valor da sua capacidade indicada no componente. Outra grandeza que deve ser observada é a tensão (V) indicada no condensador que indica a tensão máxima a que pode estar sujeito.
Há dois grandes tipos de condensadores vulgarmente usados em eletrónica: aqueles que não exigem polarização e que, por isso, é indiferente a forma de os ligar (os mais vulgares são os de cerâmica e poliéster); e os que exigem polarização (de entre os quais os eletrolíticos são os mais comuns).
Condensadores de poliéster e de cerâmica: não temos de nos preocupar com a forma com que os ligamos. O seu aspeto é o seguinte:
Condensadores eletrolíticos: há que ter bastante cuidado em ligar o cátodo à alimentação negativa (ou GND) e o ânodo à alimentação positiva, caso contrário podem explodir lançando ácido. Eis o seu aspeto:
Em termos de simbologia elétrica, estes dois tipos de condensadores distinguem-se da seguinte forma:
O facto do condensador permitir a estabilização da tensão aos seus terminais, torna-o útil em muitos projetos. No projeto do post anterior, da cancela que abre e fecha, evita o pico de tensão que surge no início do movimento do servo motor, uma vez que no momento do "arranque" o servo motor exige mais corrente que durante o movimento.
Esta não é uma aula propriamente dita. Logo à partida porque não tenho servos suficientes para usar numa turma de 20 alunos. Como pretendo, no entanto, começar a trabalhar em projeto, é natural que o controlo de servos surja inevitavelmente. Por essa razão, justifica-se a exploração deste componente.
O servo motor é um tipo de motor que não roda em círculo, mas que se move para determinadas posições e aí permanece até nova ordem, mesmo que esteja a sujeito a uma força com direção contrária. A capacidade do servo motor manter a sua posição em função da força externa aplicada, é medida através do torque.
Há servo motores que têm um grau de liberdade de 360º, outros têm de 180º e há ainda os que giram apenas com um ângulo máximo de 90º. Os de 180º são os mais vulgares e será com um desses que farei as minhas experiências (na verdade, o meu motor chega perto dos 180º sem fazer exatamente este ângulo).
Os fios de conexão dos servo motores são três e a sua identificação depende dos fabricantes. O mais vulgar é ter um fio vermelho que se liga à alimentação +5V, um preto que se liga ao GND (0V) e um terceiro amarelo ou branco que ligará ao pino de controlo.
E como se controla um servo motor? Através de um sinal no formato PWM (Pulse Width Modulation). Este sinal é formado por uma série de impulsos 0 V ou 5 V com um determinado padrão temporal. Uma alteração do sinal na largura deste sinal, será responsável por alterar a posição do eixo.
Em Scratch temos a vida facilitada porque o controlo do motor pode ser feita através das saídas 4, 7 e 8 que estão preparadas para controlar este tipo de dispositivos.
Para isso, temos disponíveis os seguintes comandos:
O primeiro comando é claro; o segundo faz girar o motor para a posição especificada pelo ângulo (e não o faz girar de acordo com o ângulo indicado, são coisas diferentes); o terceiro suponho que só faça sentido se estivermos a trabalhar com servo motores que girem segundo 360º - no meu caso, que trabalhei com um motor de 180º, este comando não alterava em nada o seu funcionamento.
A apresentação que se segue foi mais um exercício pessoal. O último exercício proposto seria demasiado complexo para apresentar aos alunos com que trabalho. Partilho também que por vezes, de forma aleatória e sem que eu perceba qual a origem, o programa pára nos 90º ou o LED mantém-se a piscar de forma irregular depois da função terminada. Nestas situações, tenho de reiniciar o programa (clicando na bandeirinha) para que tudo volte ao normal.
Deixo então a minha proposta de trabalho para controlo de servo motores recorrendo ao Scratch...
...o circuito esquemático do último exercício proposto...
...e um pequeno vídeo com o "circuito de controlo de um cancela" em funcionamento:
Os alunos com quem estou a desenvolver o presente projeto não sabem nada de eletrónica. Foi preciso apresentar-lhes o LED e referi, quando o ligaram, que seria necessário associar uma resistência ao circuito, caso contrário o LED seria "queimado" por excesso de corrente elétrica.
Na primeira sessão, usei a analogia com um sistema hídrico - a diferença de potencial pode ser comparada com uma diferença de altura de uma cascata, a corrente de água representa a corrente elétrica; para a resistência elétrica a analogia pode ser um estrangulamento no canal por onde a água passa, controlando o caudal.
Como os alunos só têm disponíveis as resistências que vão usar numa determinada sessão, para já basta dizer "esta resistência é para os LED, aquela para o interruptor", mas à medida que os trabalhos forem evoluindo, é natural que comecem a perguntar como identificar cada uma delas.
A unidade da resistência elétrica é o ohm (Ω). Nas resistências de potência (que estão preparadas para correntes elétricas de maior intensidade) temos muitas vezes o trabalho simplificado e esse valor aparece impresso no componente:
Mas em eletrónica, o vulgar é as resistências estarem identificadas através de riscas codificadas por cores. A razão para isto é que nos anos 20 era muito complicado imprimir valores em componentes tão pequenos - o código foi definido e acabou por ficar:
Na verdade, o código de cores é bastante fácil de usar e, com a prática, é praticamente imediata a conversão para o valor óhmico (pelo menos para as cores mais recorrentes). Importante é começar por identificar a risca da tolerância da resistência, o que é imediato caso esta seja prateada ou dourada (caso contrário, devemos procurar a risca mais afastada das restantes). Essa risca deve ser colocada à direita. O valor óhmico da resistência será dado, da esquerda para a direita, pelas cores das restantes riscas.
Caso se trate de um resistência de 4 riscas, as duas primeiras representarão os dois primeiros algarismos do valor da resistência, a terceira o fator multiplicativo e a terceira a tolerância especificada pelo fabricante que garante um intervalo de valores entre os quais o valor da resistência se situa. Caso a resistência seja de precisão e tenha 5 riscas, os primeiros algarismos do valor da resistência passam a ser definidos por três riscas e só depois virão as riscas do fator multiplicativo e da tolerância. Haverá ainda resistências que apresentam uma risca para o coeficiente da temperatura, mas pessoalmente, na minha prática, nunca de deparei com nenhuma.
Há aplicações disponíveis para converter o código de cores no valor da resistência e respetiva tolerância. Um deles está disponível no site Eletrónica.