quinta-feira, 31 de março de 2016

Foi você que pediu um projeto interdisciplinar de Física, Eletrónica e Programação?

Foi há 4 anos que tomei contacto com o Scratch pela mão da professora Teresa Martinho e do inestimável Fernando Frederico (o grande especialista em Scratch a quem toda a gente, alunos inclusivé, tratava simplesmente por Fred). Nessa altura, era professora de duas turmas de Física de 12º ano na Escola Secundária de Bocage, em Setúbal, e envolvi-me num projeto de iniciação à programação em Scratch. O objetivo era incentivar os alunos a criar, em Scratch, simulações das aulas práticas realizadas na disciplina durante o ano. 

Como em todos os trabalhos desta natureza, há sempre alunos que, pela inclinação natural, pela persistência ou pela disponibilidade, se destacam nos trabalhos que realizam. Neste caso, não esqueço a máquina de Atwood que o Jorge criou (aliás, o Jorge criou várias simulações que podem ser acedidas a partir do link da máquina de Atwood - basta clicar em "mais projetos deste autor") nem o divertido jogo imaginado e implementado pela Ana que envolvia um dinossauro a lançar uma bola, recorrendo às equações do movimento oblíquo, bola essa que tentava encestar apesar dos obstáculos que surgiam a complicar-lhe a vida.

A pensar no projeto da Ana, achei que podia aproveitar a pausa letiva da Páscoa para implementar um projeto que envolvesse Física e programação de arduinos. Usei o mesmo dinossauro e a mesma bola. E apliquei, como a Ana, as equações do movimento  oblíquo. Em vez de fazer um jogo, optei por fazer uma simulação convencional de movimento oblíquo. O principal upgrade foi lançar mão do arduino e construir um consola, como as dos jogos, a partir da qual se controlam as variáveis de entrada e se dão as ordens de lançar a bola ou de fazer reset à simulação. A alteração da velocidade e do ângulo de lançamento é feita através de resistências variáveis. A alteração da aceleração gravítica é feita através de um botão de pressão que permite a adoção de 3 valores diferentes para esta grandeza (o valor da aceleração gravítica na Terra, na Lua, e em Júpiter). A ordem de lançamento da bola é feita através de outro botão de pressão, assim como o reset, que, depois de um lançamento, repõe as posições iniciais permitindo novo lançamento.

Um RGB (usei um de ânodo comum, por ser o  que tinha mais à mão) permite identificar que a simulação espera pela ordem de lançamento, ficando verde, ou que uma simulação está ainda a decorrer, ficando vermelho.

Eis a consola construída:


O programa em si é um exercício de Scratch mais complicado que os exercícios de S4A que costumo propôr. Por isso, em vez de fazer uma cópia dos blocos, como de costume, opto por desta vez disponibilizar o programa completo, para que possa ser analisado, alterado e melhorado.

Em termos de Física, as equações fulcrais são as do movimento oblíquo:

Assumindo a posição inicial na origem (x0=0; y0=0), sendo o valor inicial da velocidade e o ângulo inicial (de lançamento) dados a partir da leitura das entradas analógicas, temos todos os dados para, através de um incremento no tempo, obter todos os valores de x e y para o movimento completo. Há apenas de terminar a contagem do tempo quando a posição y voltar a ser 0. O valor da altura máxima (H, na figura) será o valor máximo assumido pela posição y e a amplitude (A, na figura) será o valor da posição x no final do movimento.

O problema põe-se  quando queremos posicionar as figuras (sprites) no ecrã do S4A. Os valores obtidos nas equações vêm em metro e essa não é, evidentemente a escala do ecrã. Na verdade, o S4A usa as mesmas definições de posição que o Scratch:




Foi altura de fazer considerações de ordem prática:
  • Limitei a velocidade inicial entre 0 e 20 m/s (1023 na entrada analógica correspondente passaram a significar 20 m/s);
  • Limitei o ângulo de lançamento entre 0º e 90º (1023 na entrada analógica correspondente passaram a significar 90º);
  • Considerei o eixo horizontal  igual a 20 metros (2x240 = 480 passaram a significar 20 m);
  • Usei a mesma escala para o eixo vertical (2x180 = 360 passaram a significar 15 m);
  • Como a posição inicial da bola é (-118; -155), tive de levar em conta essas posições no seu movimento.

E pronto. Acho que o enquadramento geral do projeto está feito. Deixo a minha proposta de trabalho com o circuito da consola, os blocos fundamentais da programação em S4A e printscreens de alguns resultados...


...o circuito esquemático do projeto da consola...


...e um pequeno vídeo com a consola e a demonstração da simulação em funcionamento (com a colaboração da Rita, 13 anos):



NOTA FINAL: Quando fiz o filme anterior, ao premir o botão de reset, o valor da amplitude não voltava a zero´. Apesar de tal não ter implicação nos cálculos posteriores, é de facto mais elegantes que depois do reset o valor da amplitude seja levado a zero. Essa situação está já corrigida no programa que deixo para download.


quarta-feira, 23 de março de 2016

Relés, arduino e S4A

O uso de relés é uma enorme mais-valia em projetos que envolvam o controlo de componentes alimentados a tensões diferentes das disponibilizadas no arduino. 

Na verdade, para controlar LED através de arduino, basta ligá-los devidamente a uma saída da placa, mas...e se se quiser controlar uma lâmpada alimentada a 230V AC ou uma fita de LED alimentada a 12V? É nestes casos que o relé ganha relevância.

Há dois tipos de relés: os eletromecânicos e os de estado sólido. 

Os relés de estado sólido não têm partes mecânica em movimento, o seu funcionamento é completamente eletrónico. São relés com uma longa vida útil, alta velocidade de resposta, silenciosos, com opções de comutação de tensão AC ou DC.

Os eletromecânicos são os que usaremos neste trabalho e por isso são merecedores de uma explicação mais aprofundada sobre o seu funcionamento.

Um relé eletromecânico apresenta como componente principal uma bobina interna. Os terminais desta bobina estão ligados ao circuito de controlo. Quando este circuito fornece corrente à bobina, esta gera um campo magnético que atrairá, por ação da força magnética, os contactos móveis, acionando assim o circuito a ser controlado, circuito este que é eletricamente independente do circuito de controlo e que, por isso, pode ter uma alimentação com caraterísticas também diferentes.


Para tornar mais clara a explicação anterior, tomemos por exemplo o circuito seguinte:



Quando o interruptor S1 é acionado, a bobina (que se encontra dentro do invólucro do relé) gera, por ação da corrente elétrica que a percorre (gerada pela fonte de tensão V1), um campo magnético cuja força gerada sobre o contacto fará com que, no exemplo dado, a lâmpada passe a estar ligada (alimentada pela fonte de tensão V2). Neste exemplo concreto, o contacto ilustrado é um normalmente aberto (normally open - NO), uma vez que abre o circuito quando em repouso, e o fecha quando é atuado; existem também contactos normalmente fechados (normally closed - NC), que quando em repouso fazem contacto e o interrompem quando atuados. É vulgar um relé apresentar no mesmo invólucro estes dois tipos de contactos.

O relé que usaremos será um SRD-05VDC já incorporado num módulo preparado para arduino, o Keys_SRly. Já tinha comprado um lote de 5 por 6,33€ há algum tempo e foi altura de o experimentar.

Recorrendo à datasheet do módulo usado, é possível identificar os pinos de alimentação do relé (+ e -), que deverão ser ligados à alimentação do arduino, o pino que deve receber o sinal de controlo, assim como os contactos normalmente aberto (NO) e normalmente fechado (NC) disponibilizados:


E pronto, agora é testar o relé. E porquê agora? Porque o meu cadeeirinho de mesinha de cabeceira se estragou. Os fios do cabo junto à tomada partiram e eram tão finos, tão fraquinhos, que eu achei que mais valia usar o candeeiro como cobaia que investir na sua recuperação.

Propus-me, assim, a controlar a lâmpada do candeeiro (230V AC) através do arduino. A intenção foi mesmo só essa e por isso o circuito e o programa são simples, simples. Recorrendo a uma fotorresistência ligada a uma entrada analógica do arduino, faz-se ligar a lâmpada quando a luz ambiente diminuir; o aumento da luz ambiente deve fazer a lâmpada do candeeiro desligar. Apesar de circuitos a 230 V não serem exatamente a minha praia (inspira, expira antes de ligar à corrente...), tudo correu normalmente e sem incidentes.

Deixo a minha proposta de trabalho para testar o relé num circuito com arduino programado em S4A...


...o circuito esquemático do exercício proposto...



...e um pequeno vídeo com o circuito em funcionamento:


terça-feira, 22 de março de 2016

É UNO mas não é Arduino...e agora?

Para já, todos os arduinos do clube são genuinos, em parte devido ao facto de, lidando com financiamento do Ministério da Educação, termos de ter as faturas todas em ordem.

O material que adquiro para mim própria, no entanto, vem maioritariamente da China através do Aliexpress - as faturas são geralmente uma trapalhada, mas a diferença de preço compensa. Já há algum tempo que olhava para o valor dos kits que incluíam placas UNO que não Arduino, com preços tentadoramente baixos. Até que me presenteei com um desses kits, sem que estivesse propriamente a precisar de mais uma placa.

Optei por um kit de 5,30€ que achei que correspondia, por um valor bastante baixo, ao que um aluno precisa para começar a dar os primeiros passos na eletrónica e programação. Caso se pretenda comprar mesmo só a placa UNO (placa-clone das UNO Arduino), sem cabo de ligação ao PC, é possível encontrar preços abaixo dos 3€. O cabo USB A-B, que liga a placa ao PC, encontra-se por menos de 1€.

Pois o kit que comprei é o seguinte:


De todas as transações no Aliexpress, esta foi a que correu pior, com o produto a demorar praticamente 60 dias a chegar. Ainda abri uma disputa no site, solicitando a devolução do dinheiro, uma vez que o "período de proteção do comprador" se estava a esgotar, mas pude cancelá-la quando o kit me apareceu na caixa do correio mesmo a cumprir os 60 dias para entrega.

Foi assim que me caiu na secretária uma placa UNO que não é Arduino:


O aspeto da placa é impecável, o processador é mesmo Atmega e os primeiros testes não demonstram nenhuma fragilidade relativamente às placas genuínas.

O único cuidado a ter é instalar no PC o driver (CH340 / CH341 USB chipset drivers) que permite a comunicação desta placa-clone com o software do Arduino (e consequentemente com o software do S4A), uma vez que as placas-clone não usam o mesmo driver das Arduino originais. O driver está preparado para o Windows XP, Windows 7 e Windows 8. No meu computador tenho o Windows 10 e a instalação decorreu sem incidentes.

Uma vez instalado o driver, a placa funciona tal como as outras. Pode-se intercalar a programação desta placa com placas genuinas sem que nos apercebamos da diferença entre elas, pelo que o balanço final é bastante positivo. 

segunda-feira, 14 de março de 2016

Motores de passo, arduino e Snap4Arduino - estudo orientado

Depois de testar a reação (positiva) dos alunos ao estudo de motores dc através de um documento orientador, criei um documento semelhante para o estudo de motores de passo, baseado na exploração prévia a este tipo de motores que eu própria já tinha realizado.

Como já tinha referido em post anterior, sendo o S4A demasiado lento para operar com motores de passo, usei como linguagem de programação o Snap4Arduino e reforcei a opinião que quem trabalha com S4A, passa para o Snap4Arduino sem qualquer tipo de dificuldade.

Em 90 minutos, os dois alunos a estudar este motor cumpriram todas as atividades previstas no estudo orientado sem dificuldade. O 2º exercício foi ligeiramente adaptado: com o intuito de integrar este motor num pequeno projeto, o objetivo passou a ser controlar a subida ou a descida de estores não através de dois interruptores de pressão, mas de acordo com a luz ambiente (se estiver de dia, os estores devem estar subidos; caso anoiteça, devem descer).

Deixo o documento com o estudo orientado aplicado aos alunos...



...a solução em Snap4Arduino para o exercício 2 realizado (os interruptores foram substituídos por uma fotorresistência cujo valor medido para a luminosidade ambiente determinará se os estores sobem ou descem - fotorresistência ligada à entrada analógica 0)...



...e ainda um pequeno vídeo com o Diogo a apresentar o trabalho desenvolvido com o colega, o David. Parabéns aos dois!


segunda-feira, 7 de março de 2016

Motores dc, arduino e S4A - estudo orientado

Como já tinha referido em post anterior, começam a formar-se grupos de diferentes níveis no Espaço Programação e Eletrónica. As razões são várias, desde a apetência natural para programar e montar circuitos, até à assiduidade ou às preferências quanto ao tipo de trabalho (há quem goste mesmo de programar, há quem prefira aplicar pequenos circuitos e programas a aplicações concretas, como em pequenos projetos).

Assim, tenho de momento três níveis diferentes neste espaço semanal e deixei de poder "dar aulas" para o grupo todo, o que me obrigou a afinar estratégias.

Para o grupo que demonstra mais facilidade em termos de montagem de circuitos e de programação, criei um documento de estudo orientado para exploração do funcionamento de motores dc em circuitos com arduino com o objetivo de, autonomamente, os alunos atingirem as metas por mim propostas.

Não publiquei este documento antes de o testar com os alunos, para avaliar a sua resposta aos exercícios delineados. 

Começo por referir que os alunos que realizaram os exercícios tinham já assistido a 5 sessões de 90 minutos, no âmbito do Espaço Programação e Eletónica, e demonstram facilidade em interpretar esquemas e montar circuitos. Nunca tinham, no entanto, analisado datasheets nem usado (ou estudado) díodos, transístores nem circuitos integrados. Apesar disso, não revelaram dificuldades em cumprir os exercícios propostos (o que fizeram em 90min+45min), tendo precisado da minha ajuda apenas na ligação do L293, por não terem compreendido o curto-circuito entre os pinos 4 e 5.

Esta estratégia de montar e aplicar componentes eletrónicos em circuitos antes de os estudar em ambiente teórico é nova para mim, sendo que considero que resulta para algum tipo de alunos. Pode ser, no entanto, uma forma muito prática de tentar compensar as lacunas com que os nossos alunos saem do ensino secundário regular (em Portugal, o ensino regular é pobre em Eletricidade e praticamente nulo em Eletrónica). Neste contexto, a aposta em material de estudo orientado pode ser uma mais-valia, permitindo que num mesmo espaço os alunos evoluam ao seu ritmo e de acordo com as suas apetências.