segunda-feira, 30 de maio de 2016

Introdução à linguagem C - servomotor

A terceira sessão de introdução à programação de arduinos em C focou-se no controlo de um servomotor.

Como fiz na sessão anterior, preparei um documento com um resumo das sessões anteriores que distribui pelos alunos para consulta.

A ideia foi começar por compreender a forma de controlar um servomotor com arduino, recorrendo à livraria Servo.h, e depois ir acrescentando componentes até ter uma simulação de controlo de abertura de uma cancela.

A resposta dos alunos presentes foi, mais uma vez, muito positiva e terminámos as tarefas propostas 15 minutos antes do previsto.

Esta será a última sessão com estes alunos este ano letivo. Em jeito de balanço, refiro que, do meu ponto de vista, a introdução à programação de arduinos em linguagem gráfica antes de passar para a linguagem C foi muito gratificante - os alunos envolvidos demonstraram uma facilidade nesta transição que até a mim (que sou pessoa muito otimista) me surpreendeu...

Quanto ao método de trabalho adotado este ano, em regime de clube a que os alunos compareciam voluntariamente, senti que o horário do clube talvez não tenha sido o ideal. Com o intuito de conseguir abrir o clube a todas as turmas de 10º ano de ciências, os 90 minutos do clube foram marcados na tarde livre dos alunos, o que, para alunos de 10º ano, pode ser pesado dado o que lhes é exigido em termos de estudo. Uma alternativa mais viável seria marcar o clube numa hora de almoço (os alunos conseguem comer em muito menos tempo que o intervalo de almoço prevê) ou a seguir a uma última aula, embora essa opção torne difícil conciliar o horário das quatro turmas em conjunto...

Uma última reflexão: as atividades do clube decorreram na biblioteca da escola o que, sendo bastante agradável - a nossa biblioteca é mesmo muito simpática - não permitiu que os alunos pudessem desenvolver trabalho nos seus tempos livres. Um espaço disponível para que alunos, devidamente autorizados, pudessem trabalhar de forma autónoma era mesmo muito bom...hoje uma aluna dizia-me que era uma pena não podermos continuar os trabalhos nas férias - e, de facto, talvez não estejamos a proveitar da melhor forma a disponibilidade da maioria dos alunos nesse período...

Deixo a apresentação que explorei nesta sessão...



...e um pequeno vídeo com a "cancela" construída pela Fabiana a funcionar:

terça-feira, 24 de maio de 2016

Introdução à linguagem C - entradas analógicas

Na segunda sessão de introdução à programação de arduinos em linguagem C, concentrámo-nos na exploração das entradas analógicas.

Comecei por distribuir aos alunos um resumo da sessão anterior, com as funções dadas, os símbolos usados, os tipos de variáveis e os comandos relativos à porta série (os últimos slides da apresentação da sessão #1). Distribui também a datasheet do TMP 36, o sensor de temperatura a usar nesta sessão.

Voltei a iniciar a sessão com o BlocklyDuino, que me parece ser uma forma mais simples para esquematizar o programa a partir do qual se desenvolverão os trabalhos. O programa em C gerado pelo BlocklyDuino é sempre alvo de análise, pelo que a intenção é interiorizar a estrutura de um programa em C.

A entrada analógica começou por ser explorada através de uma resistência variável que foi substituída depois por um sensor de temperatura. No final da sessão, os alunos obtiveram um termómetro cujos valores podiam ser lidos na janela da porta série.

Pontos importantes a realçar:
  • A análise da datasheet. Os alunos tiveram que interpretar a pinagem do TMP 36 a partir dos esquemas da datasheet e montá-lo a partir desses dados;
  • Os cálculos envolvidos. Sem que fossem cálculos complicados, foram importantes para refletir sobre a importância da definição do tipo de variáveis;
  • A interdisciplinaridade. O facto de compreenderem a necessidade de obter a equação de uma reta a partir dos gráficos disponibilizados na datasheet. E de adaptarem os dados fornecidos às suas necessidades (o gráfico fornecido teve de ser "redesenhado" de forma a que o eixo dos xx' passasse para yy' e vice-versa);
  • Muito importante: a repetição de instruções dadas na sessão anterior. Como os próprios alunos referiram "não é difícil, é preciso é lembrarmo-nos das funções disponíveis".
Nesta sessão, não foi feita, por falta de tempo (as nossas sessões estão programadas para 90 min) a tarefa "Agora Tenta #4". Todas as restantes tarefas foram cumpridas.

Deixo a apresentação que explorei nesta sessão:


terça-feira, 17 de maio de 2016

Introdução à linguagem C - entradas e saídas digitais

Como já tinha referido em post anterior, foi espontaneamente que os alunos que frequentam o Espaço Programação e Eletrónica (10º ano) sentiram a necessidade de ir além da programação gráfica de arduinos.

Por isso, depois de concluído o projeto da Casa Inteligente, voltámos ao registo de aula mais convencional, com cada um deles num computador, com o arduino , e a seguir as tarefas por mim propostas.

Nesta sessão, explorámos a estrutura de um programa típico em C, os símbolos usados, as funções pinMode, digitalWrite, digitalRead, delay e if. Introduzimos ainda alguns tipos de variáveis e fizemos a comunicação com o computador através de porta série. 

Confesso que quando preparei a aula, a achei muito extensa e presumi que não seria possível terminá-la em 90 minutos. Mas não só a terminei, como a terminei 10 minutos antes, como os alunos continuavam frescos e sem sinais de cansaço.

A facilidade com que os alunos responderam a esta introdução foi motivo de reflexão da minha parte. Devo referir:
  • A montagem de circuitos estava interiorizada das sessões anteriores. Não foi factor com que tivesse de me preocupar;
  • A arquitetura do arduino era familiar a todos. Noção de digital / analógico / PWM, entrada / saída foi algo que pude referir sem perder tempo em explicações;
  • Embora a programação em C exija o conhecimento das funções associadas e dos símbolos usados, o background de uma linguagem gráfica deu aos alunos capacidade de perceber de antemão quais as instruções necessárias para que um programa reagisse de determinada maneira (quando introduziram o interruptor, por exemplo, assumiram logo a necessidade de uma variável).

Em conclusão, foi muito positiva para mim a experiência de iniciar a exploração do arduino em linguagem gráfica com os alunos para depois lhes apresentar a linguagem C. É um método que exige mais tempo, é certo, mas o processo de programação é feito de forma mais natural e acessível para a maioria dos nossos jovens.

Deixo a apresentação que explorei nesta sessão:
  


segunda-feira, 16 de maio de 2016

Scratch Day 2016

O Scratch Day é um conjunto de eventos a nível mundial com o intuito de promover a linguagem de programação Scratch. O objetivo é o encontro entre utilizadores Scratch de todas as idades para a partilha de projetos, de conhecimentos e de práticas de aprendizagem.

Este ano, o Scratch Day celebrou-se dia 14 de maio e em Setúbal foi organizado, como em anos anteriores, pelo EduScratch na Escola Superior de Educação de Setúbal. E, como em anos anteriores, foi um dia de partilha e de convívio entre escolas e entre gerações!

De sublinhar que, embora as escolas tenham um papel dominante neste tipo de eventos, porque é nas escolas que se desenvolvem a maioria dos projetos, este é um evento aberto a toda a comunidade. Em Setúbal foram 240 as inscrições, entre professores, alunos, pais e interessados no tema. Uma plateia muito heterogénea e muito rica em termos de experiências e expectativas.

Foi com prazer que representei o Arduino na Escola no Scratch Day com uma apresentação onde partilhei as nossas experiências com arduino e Scratch. E foi um prazer ainda maior conviver com tanta gente com tanto para dar e tanta vontade de fazer mais percorrendo novos caminhos...

Um nota final para o número de meninas presentes no evento. A dar-lhe crédito, o futuro da tecnologia no feminino parece bastante risonho...

Deixo a riqueza do encontro em imagens:
Palestras, concursos de programação, robótica e controlo de drones - foram algumas das atividades em todos puderam participar

O Arduino na Escola representado no Scratch Day - no auditório, com uma partilha do que fazemos com arduino e Scratch, e depois do almoço, com um grupo de meninos muito interessados na simulação de movimento oblíquo


terça-feira, 10 de maio de 2016

Projeto Casa Inteligente #2

Este projeto arrastou-se mais no tempo do que eu gostaria. Não porque o número de sessões em que os alunos nele trabalharam tenha sido excessivo, mas foram descontinuadas pelas férias das Páscoa, por um feriado e por uma visita de estudo, por isso parecia nunca mais acabar...mas acabou!

Como sempre, neste tipo de trabalhos, surgem problemas com que não contávamos. Neste caso em particular, os estores foram uma dor de cabeça . Depois de papel, de papel vegetal, de tecido, optámos por  um tecido tipo o usado em proteções de roupa descartáveis (como as que os pintores usam) a que prendemos chumbos de pesca. Não está ainda perfeito, mas já funciona.

No facebook do projeto temos vindo a partilhar o caminho percorrido ao longo das sessões que este projeto durou. Aqui, faço um apanhado de algumas fotos (porque ver um projeto ganhar forma é para mim o mais gratificante do caminho) e deixo um vídeo com o projeto em funcionamento.

Termino com um louvor aos alunos envolvidos: à Ana Cortes, ao Diogo Mira, ao Diogo Rodrigues, à Fabiana Nascimento e ao Miguel Magrinho. Este projeto é de todos vós.

Sessão 1
Sessão 2

Sessão 3
Sessão 4
Sessão 5

E, para finalizar, um vídeo com o projeto em funcionamento:


quinta-feira, 5 de maio de 2016

Projeto Casa Inteligente#1

No Espaço Programação e Eletrónica, os alunos envolvidos estão já familiarizados com os componentes eletrónicos mais comuns, esquemas elétricos e entradas e saídas do arduino. A programação por blocos começa, para estes alunos, a ser insuficiente e a motivação para iniciar a aprendizagem em C está a nascer espontaneamente.

Antes de passar para o C, no entanto, achei que o grupo devia fazer um último trabalho de projeto programado em linguagem gráfica. As razões para esta minha decisão prendem-se, por um lado, por eu continuar a afirmar a importância da "fabricação" de um produto - quando os circuitos não saem da breadboard, perde-se a oportunidade de pensar "e agora?...como tornar isto real?", perde-se a oportunidade de usar ferramentas, perde-se a oportunidade de ter de cumprir uma tarefa para a qual não há guião; por outro lado, o trabalho de projeto apela ao trabalho de grupo, ao convívio, à cooperação - e como os alunos deste espaço são de turmas diferentes, achei que era mais importante apostar neste tipo de trabalho antes de voltar ao método de trabalho que envolve grupos de dois alunos por computador.

Assim, antes das férias da Páscoa, pedi ideias e foram as meninas do clube que sugeriram construir uma casa inteligente.

Como o objetivo era usar o maior número possível de componentes explorados em sessões anteriores,ficou decidido que:
  • Uma fotoresistência devia controlar dois LED (acendendo-os caso escurecesse,apagando-os caso fosse dia) e um motor de passo (para descer e subir estores em caso de noite ou de dia, respetivamente);
  • Uma campaínha devia tocar quando premida e fazer abrir uma porta (que fechará passados alguns segundos) através de um servo motor.
De acordo com os gostos pessoais de cada um, o grupo dividiu-se entre a conceção do circuito e programa e a realização da maqueta da casa. A integração do circuito na maqueta teve de contar com o trabalho de todos como um grupo único.

O facto de um dos motores ser de passo, tornou necessário o software Snap4Arduino em vez do S4A. Mais uma vez, o Snap4Arduino revelou-se mais instável que o S4A e mais exigente em termos de computador a usar. Se fosse agora, teria proposto aos alunos a programação em mBlock.

Os alunos não revelaram problemas em integrar os conhecimentos adquiridos em sessões anteriores, tendo realizado o circuito e programação por etapas, sessão a sessão (primeiro o controlo dos LED, depois do motor de passo e finalmente do servo motor). Deixarei algumas fotos da evolução do projeto em post posterior.

Deixo o circuito construído e o programa em Snap4Arduino realizado...



...o circuito esquemático...



E um pequeno vídeo com o circuito em funcionamento (explicado pelo Diogo, um dos alunos que o criou):