segunda-feira, 22 de fevereiro de 2016

Utilitários

No momento de fazer "saltar" os circuitos da breadboard para um pequeno projeto, há sempre a questão de "e agora os fios?"...bem, é evidente que há realidades e realidades, mas, pelo menos nesta fase, gosto de ver os alunos a por "a mão na massa" e acho preferível um resultado menos perfeito mas que os alunos consigam de facto fazer por eles próprios.

Sendo assim, na altura de passar os circuitos para um pequeno projeto opto por abrir mão de soldaduras por vários motivos: porque só tenho um ferro de soldar; porque não é fácil fazer soldaduras de qualidade, que não se partam; porque não tenho isolante retrátil e cobrir as soldaduras com fita adesiva isolante resulta moroso e o resultado final também não é muito bonito; porque, muito importante, a soldadura acaba por inviabilizar muitas vezes o reaproveitamento do componente...são de facto muitos "porques"...

Assim, como alternativa, uso uns conetores simpáticos que compro na loja de eletrónica cá da terra, a 1,20€ um conjunto de 12 (ao da foto, já falta 1):


Não sei se estarei a procurar bem no Aliexpress, mas o que encontro idêntico por lá são uma molinhas a 1,66€ o lote de 10, que nunca experimentei.

Enfim, os conetores de que falo têm-me resolvido as questões de projeto que surgem, mas vi a coisa complicada no projeto do Dia dos Namorados...eram 16 LED - 32 extremidades a ligar num espaço exíguo e tendo de levar em conta polaridades...Eu, que nos trabalhos manuais sou mesmo muito incompetente, fiquei assim um bocadinho sem fôlego...mas valeu-me o jeitinho das meninas do clube que, com muita paciência e concentração, não só fizeram as ligações todas como cometeram a proeza de conseguir que todos os LED ligassem à primeira tentativa (o que para mim foi uma surpresa e tanto!).

Deixo algumas fotos com "os bastidores" do projeto, não só para  documentar o trabalho mas, especialmente, para gabar a paciência da Beatriz, da Ana e da Fabiana, que não esmoreceram com a morosidade e com a concentração que o trabalho exigia. Parabéns a todas!





Espaço Programação e Eletrónica - RGB e saídas PWM

Tendo comprado 10 RGB por menos de 1€, achei que podia aproveitar para apresentar este componente aos alunos do Espaço Programação e Eletrónica.

Para preparar a aula, usei o material que já tinha preparado para RGB e, para introduzir a saída PWM, o que já tinha explorado no post sobre motores dc.

Em termos do que já tinha feito, a grande diferença foi mesmo o facto destes novos RGB serem de ânodo comum, enquanto que aqueles que eu tinha usado o ano passado eram de cátodo comum. Apesar de, depois de explicado o esquema do RGB ânodo comum, os circuitos com este tipo de RGB serem perfeitamente acessíveis, a verdade é que em termos de programação é preciso cuidado, pois agora os LED do RGB ligam quando a saída digital do arduino a que estão ligados está OFF (para criar a ddp de 5V; quando a saída digital está ON, a 5V, como o ânodo está ligado a essa tensão, a ddp aos terminais do LED é nula e por isso está desligado). Dito de outra forma, podendo escolher, é preferível trabalhar com os alunos com RGB de cátodo comum.

Entretanto, introduzi também as "saídas analógicas", tendo o cuidado de lhes explicar que se tratam de facto de saídas PWM, em que o sinal é modulado - a tensão eficaz é que varia, não o valor da tensão contínua.

O último exercício proposto nesta sessão incluía entradas e saídas digitais, entradas analógicas e saídas PWM - e eu senti que para alguns alunos foi um passo demasiado grande; um dos grupos, no entanto, cumpriu todas as tarefas no tempo previsto. Refiro, com satisfação, que já todos os alunos estão a interpretar esquemas eletrónicos e já não uso os slides com a vista de breadboard. Quanto à programação, reconheço que começo a ter vários níveis, o que me levará, daqui em diante, a preparar as sessões não em apresentação eletrónica, igual para todo o grupo, mas em tarefas personalizadas de acordo com o nível de aprendizagem dos alunos.

Deixo a apresentação eletrónica que apliquei nesta sessão. Até breve!



segunda-feira, 15 de fevereiro de 2016

Projeto Dia dos Namorados

E hoje foi dia de implementar o projeto do Dia dos Namorados.

O circuito estava pronto, havia um programa funcional (caso hoje não se conseguisse fazer nenhum - o que não aconteceu!), preparei um caixa, cartão, junções para fios, cola, tecido de feltro...e propus hoje aos alunos que concluíssem o projeto e que construíssem um programa próprio para ele.

Foi um hora e meia de trabalho árduo, muita colagem, muito fio, tanto fio...mas temos o projeto a funcionar!

Na minha opinião, este é um trabalho fundamental, porque passar da breadboard para o mundo real agrega tantas competências e saberes, exige tanta paciência e capacidade de resistir à frustração que é uma pena que o ensino atual não preveja tempo para este tipo de atividades no período letivo.

Como o Dia dos Namorados já passou, institucionalizámos a Semana dos Namorados. Afinal a celebração do amor e da amizade merece bem um semana inteirinha!

Seguem algumas fotos do projeto terminado...
O nosso coração concluído (vista de frente e vista de cima)

...e um pequeno vídeo com o projeto em funcionamento...


sexta-feira, 12 de fevereiro de 2016

Controlo de motores de passo com Snap4Arduino

Ao tempo que eu queria experimentar motores de passo (motores passo a passo ou step motor)! Numa das minhas deambulações pelo aliexpress, dei com este lote de dois motores de passo e respetivo controlador a 3,07€ (agora está por metade do preço) e não resisti. Vieram cá para casa dois motores 28BYJ - 48 (tensão de alimentação: 5V) e duas placas com o driver ULN2003 preparadas para ligar ao Arduino.



O motor de passo é controlado através de um sinal digital e pode ser uma boa escolha sempre que se pretender movimentos precisos. O ponto forte de um motor de passo não é a sua força(torque) nem a sua capacidade de desenvolver grandes velocidades, mas a possibilidade de controlar movimentos de forma precisa.

Encontrei um tabela comparativa entre os motores dc, motores de passo e servo motores num artigo muito interessante de Filipe Brites e Vinicius Santos:


Há vários tipos de motores de passo: os bipolares (4 fios), os unipolares (5 fios), os unipolares / bipolares (série) (6 fios) e os unipolares / bipolares (série/paralelo) (7 fios). Como aquele com que trabalhei foi um unipolar, será sobre esse que incidirá este estudo.

Um motor unipolar tem dois enrolamentos por fase. Os extremos das bobinas correspondem aos quatro fios de controlo; o 5º fio é ligado geralmente à terra (com o controlador que usei, não tive de me preocupar com essa ligação).

O controlo do motor é feito através de combinações digitais de 4 bits. O motor pode operar em passo completo ou em meio passo. A exploração de cada uma das formas de operação encontra-se feita na apresentação que se segue.

Quanto à programação, existem já uma série de livrarias e programas em C para trabalhar com o Arduino, muitas delas disponíveis no próprio software do Arduino (no menu File --> Example). Mas como o intuito deste blog é explorar linguagens gráficas...a minha primeira opção foi experimentar o S4A. Tal como previ, a velocidade de comunicação entre o S4A e o Arduino, não permitia o movimento do motor. Foi então que me deparei com o Snap4Arduino e fui à aventura...com uma atualização dos estados dos atuadores e dos sensores feita a cada 15 ms (contra os 75 ms do S4A), foi possível explorar o controlo do motor de passo com uma linguagem gráfica (comprometendo, claro, a velocidade do motor, que é muito baixa usando este tipo de plataformas).

A adaptação ao Snap4Arduino foi perfeitamente pacífica. O único contratempo foi não conseguir ligar um dos interruptores à entrada 1, não percebi porque motivo - o Snap4Arduino desconectava repetidamente a placa. Acabei por ligar os interruptores às entradas 2 e 3 e não tive nenhum problema.

Deixo então a minha proposta de trabalho para controlo de motores de passo recorrendo ao Snap4Arduino...


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




...e um pequeno vídeo com o "circuito de controlo de estores" em funcionamento:


quinta-feira, 11 de fevereiro de 2016

Snap4Arduino



Estando a testar um novo componente eletrónico que adquiri recentemente voltei, à semelhança do que já me tinha acontecido com o SR04, a defrontar-me com a lentidão imposta pelo S4A na comunicação com o arduino, cuja atualização dos estados dos atuadores e dos sensores é feita a cada 75 ms.

No próprio site do S4A, encontrei uma plataforma de programação de arduino por blocos alternativa, o Snap4Arduino, que está a ser desenvolvida pela mesma equipa do S4A. Os pontos fortes e fracos do Snap4Arduino são, de acordo com a equipa que o desenvolve:

Pontos fortes:
  • Corre em praticamente todas as placas Arduino (incluindo a Mega e a Nano);
  • Os pinos do arduino podem ser configurados como entradas ou saídas (ao contrário do que acontece no S4A, onde estamos limitados à definição de entradas e saídas imposta pelo firmware);
  • Resposta 7 vezes mais rápida que o S4A;
  • Interage com várias placas ao mesmo tempo;
  • Permite a criação de novos blocos;
  • Usa firmware standard Firmata;
  • Faz a tradução de pequenos programas para C (ainda em versão experimental - eu tentei e não consegui...).

Pontos fracos:

  • Não é compatível com o S4A.

A instalação do Snap4Arduino é feita a partir do respetivo site: http://s4a.cat/snap/

Para que a comunicação entre o Snap4Arduino e a placa de Arduino seja possível, é necessário fazer o upload para a placa arduino do Firmata, pequeno programa que tem a vantagem de estar já incluído nos exemplos do software do próprio Arduino. Assim, há simplesmente que:

  1. Abrir o software do arduino (caso necessário, fazer o download a partir de: https://www.arduino.cc/en/Main/Software);
  2. Selecionar o menu "File -- > Examples -- > Firmata -- > StandardFirmata";
  3. Efetuar o upload do programa para a placa de arduino.
O Snap4Arduino está pronto para comunicar com a placa.

O ambiente do Snap4Arduino é muito parecido com o do S4A e estou convencida que quem trabalha com um, começará a trabalhar com facilidade com outro:


A linguagem de programação é muito idêntica. Um exemplo de um LED ligado à saída 13 a piscar 10 vezes:


Como importante diferença, o facto de podermos escolher as entradas e as saídas:


Com alguma expectativa no uso deste software para controlar componentes mais rápidos. Assim que tiver tempo de o explorar, darei notícias...


terça-feira, 9 de fevereiro de 2016

Construção de um termómetro

Há já algum tempo que tinha a ideia de construir um termómetro cujos valores medidos fossem indicados através de um servo motor.

Porque era o que cá tinha em casa, usei como sensor de temperatura um TMP36. Através da análise da respetiva datasheet, é possível obter a respetiva pinagem (o meu sensor é do tipo TO-92) e as curvas caraterísticas:


Da análise das figuras 5 e 6, apercebemo-nos que o TMP36 é linear entre os 0ºC e os 100ºC (aproximadamente). Eu decidi escolher como valores limites do meu termómetro os 0ºC e os 50ºC.

Liguei então o TMP36 à entrada analógica A0, o servo motor à saída D8 e os LED verde e vermelho às saídas D12 e D11, respetivamente. Sem que consiga explicar porquê, a minha experiência diz-me que, com servo motores ligados, a saída D13 deixa de funcionar devidamente e por isso evito usá-la em projetos com servo motores.

A primeira versão do projeto mostrou-se muito instável, com o sensor a saltar repentinamente para valores incoerentes. Tentei estabilizar o seu funcionamento, ligando dois condensadores na alimentação tanto do sensor como do motor, mas não obtive bons resultados. A estabilização deu-se quando tornei a alimentação do servo motor independente do arduino, ligando-a a uma entrada USB do computador. Estou certa que foi essa a solução que estabilizou o funcionamento do circuito; ainda assim, optei por deixar os condensadores.

Em termos de programação, comecei por transformar o valor da entrada analógica (0-1023) em valores de tensão (0 - 5V):


Depois, houve que, a partir do gráfico da figura 6 da datasheet do TMP36, transformar esse valor em temperatura (em ºC):


Sendo o valor 105,3 o declive da reta b) da figura 6:


A partir do valor da temperatura obtido, tive de definir o ângulo com que o servo motor devia rodar. Como entre os limites que escolhi existe um intervalo de 50ºC, achei que um ângulo de 100 graus seria adequado, com cada ºC a fazer o motor rodar 2 graus. Centrei a atuação do motor entre os 40 graus e os 140 graus. Assim, o ângulo definido pelo motor para cada valor da temperatura é dado por (em graus):


Para que o motor não andasse aos solavancos, o valor da temperatura indicado na equação anterior foi arredondada às unidades.

Caso o valor da temperatura desça abaixo dos 0ºC ou suba acima dos 50ºC, fiz ligar o LED vermelho e "congelei" a posição do motor nos 40 graus e 140 graus, respetivamente.

Deixo a minha proposta de trabalho para o circuito de eletrónica e o programa em Scratch...



...o circuito esquemático...



...e um pequeno vídeo com o termómetro em funcionamento:

sexta-feira, 5 de fevereiro de 2016

Preparando o Dia dos Namorados

A proximidade do Dia dos Namorados levou-me a pensar que podia aproveitar a efeméride para fazer um pequeno projeto no Espaço Eletrónica e Programação, envolvendo os alunos na sua montagem, e dando visibilidade ao trabalho que vamos fazendo junto da comunidade educativa.

Tinha de ser um projeto simples e que os alunos compreendessem em pouco tempo.

Surgiu-me a ideia de fazer um pequeno coração com LED que fossem piscando de forma diferente sempre que alguém acionasse um sensor ou um interruptor. Por experiências anteriores, em pequenos projetos de estrutura pouco robusta, a substituição de um interruptor de pressão por uma fotorresistência pareceu-me a melhor opção.

E portanto a ideia é esta:

Como, em S4A, as saídas digitais do arduíno estão limitadas a quatro, usei, à semelhança do que já tinha feito no Projeto Jardim iluminado de forma automática, o LM324, que integra 4 amplificadores operacionais. Ligando a saída de cada amplificador a 4 LED, consegui controlar 16 LED (em grupos de 4). Também neste projeto a alimentação dos LED teve de ser autónoma do arduíno, usando para isso outra porta USB do computador.

Imaginei 3 formas diferentes de fazer ligar os LED e, em vez de criar uma sequência definida, fiz o programa escolher aleatoriamente um delas cada vez que a fotorresistência é acionada.

Deixo a minha proposta de trabalho para o circuito de eletrónica e o programa em Scratch...


...o circuito esquemático...




E um pequeno vídeo com o circuito em funcionamento (cancelei para este vídeo o fator de aleatoriedade, de forma a passar sequencialmente por todas as formas de fazer os LED piscar):


quinta-feira, 4 de fevereiro de 2016

Espaço LEGO

Apesar de fugir ao âmbito da programação de arduinos, não posso deixar de partilhar o início dos trabalhos do Espaço LEGO da Escola Secundária D. João II.

Com o prémio obtido no projeto Rato da Biblioteca, a escola obteve dois conjuntos LEGO EV3 com os quais começámos agora a trabalhar com alunos do 7º ano, todas as 4ªF à tarde na biblioteca da escola.


Uma informação sobre o início deste espaço, com o respetivo horário, foi lida em todas as turmas do 7º ano e deixámos cartazes na biblioteca, mas o que trouxe os alunos foi mesmo trazer os kits da LEGO para a biblioteca da escola e começar a montá-los e a programá-los. Os alunos que por ali estavam, ou nos computadores ou em pequenos grupos, aproximaram-se e criou-se um grupo espontâneo que, achando graça aos trabalhos, prometeu voltar na semana seguinte.

A programação dos robôs foi feita através do programa da LEGO Mindstorm, em tablets, e também através de aplicações, mais limitadas, nos telemóveis dos alunos. 

Criei um pequeno manual com alguns dos blocos fundamentais do software da LEGO que partilharei na página de facebook, por achar que é material que foge ao âmbito deste blog .

Devo dizer que conto com a ajuda inestimável de três alunos do curso vocacional que, tendo apetência para esta área, ajudam os colegas na montagem e programação dos robôs.

E a brincar, a brincar, já falámos de programação, sensores e motores. E foi só a primeira sessão!

terça-feira, 2 de fevereiro de 2016

Espaço Programação e Eletrónica - Servo Motores

Quando a ideia é encaminhar os trabalhos de forma a que os alunos estejam aptos a desenvolver os seus próprios projetos, a exploração dos servo motores é essencial, já que é um componente relativamente barato que pode ser usado de forma simples e com várias aplicações (cancelas, braços de robôs, apontadores...).

O controlo de servo motores é muito fácil a partir do S4A. O interessante é a elaboração de programas em que os servo motores sejam um componente de um circuito maior, com um fim específico.

Nesta sessão, há a registar:
  • Os alunos estão já a fazer as suas ligações em breadboard partindo do circuito esquemático - são alunos que nunca tinham trabalhado com circuitos eletrónicos e estão a fazê-lo depois de apenas três sessões. Estou muito motivada com esta evolução!
  • O facto de eu me ter envolvido muito menos nos seus trabalhos. A montagem de circuitos precisou já de muito pouco apoio e o desenvolvimento em S4A do exercício sugerido, de um grau de dificuldade maior que nas sessões anteriores, foi feito de forma muito autónoma, na base da experimentação e da tentativa - erro.

A base de trabalho foi uma exploração de programação de servo motores em S4A que realizei o ano passado e que adaptei.

Deixo a seguir a apresentação eletrónica que apliquei nesta sessão. Até breve!