Mostrar mensagens com a etiqueta ONControl. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta ONControl. Mostrar todas as mensagens

sexta-feira, 14 de julho de 2017

Robôs low cost#6 - finalizando o projeto

Depois de o Jorge e a Alexandra terem:
...chegou a hora de integrar todos os componentes no projeto.

A arquitetura final está esquematizada na figura seguinte:


As ligações de cada um dos componentes estão descritas nos posts anteriores e indicadas na seguinte tabela:

Tendo todos os componentes a funcionar, a intenção era apenas juntar os códigos realizados nas etapas anteriores do trabalho. Os alunos depararam-se então com a questão das temporizações - o intervalo de tempo usado para recolher os valores da humidade e temperatura (1 segundo) tornava a verificação da existência de obstáculos demasiado lenta.

A pesquisa levou-os ao conceito de Thread, a capacidade de realizar múltiplas tarefas em paralelo. Na verdade, o arduino não tem esta capacidade. Existem, no entanto, livrarias que permitem "agendar" tarefas para determinados intervalos de tempo. Neste caso, foi usada a livraria Thread.h.

Quanto à programação, houve que conciliar os programas realizados anteriormente com a utilização da livraria Thread.h, o que implicou a inclusão desta livraria e a criação de objetos associados - um objeto moveThread associado ao movimento do robô (incluindo a sua locomoção e a capacidade de se desviar de obstáculos) e um segundo objeto, sensorThread, associado à medida da humidade e temperatura e envio desses dados através de bluetooth para o computador: 


Na função setup() foram incluídas as chamadas das funções moveCar e sensorRead em intervalos de tempo 0s (i.e., a correr ininterruptamente) e 1s, respetivamente (o movimento do robô, sendo contínuo, não necessitaria de ser incluído numa thread - tal foi feito apenas para tornar o programa mais percetível.):

 A função loop() passa a ser apenas a execução de cada uma das duas funções a realizar:

É na função moveCar() que é incluído o código que controla o movimento do robô:


A função sensorRead() inclui o código relacionado com a medida de valores e envio para a porta série:

Os testes realizados revelaram que o movimento do robô apresenta uma ligeira perturbação de segundo a segundo, quase impercetível, fruto da execução da função sensorRead().

A pergunta que se impõe - o robô foi mesmo low cost? Pessoalmente, a minha experiência é que depende do local de compra dos componentes. Como a minha intenção é criar trabalhos que possam ser replicados em ambientes sem muitos recursos, a contenção de custos é uma preocupação. Sempre que posso, recorro ao Aliexpress para adquirir componentes. Consigo valores muito inferiores relativamente às lojas locais a que tenho acesso. Estou a falar de diferenças de mais de 5 vezes o valor do componente no Aliexpress, por exemplo. Com o Aliexpress perde-se, evidentemente, a oportunidade de pedir apoio técnico, sugestões, e, muito importante, faturas em ordem - e há situações em que essas mais valias são de facto fundamentais. Para além disso, recorrendo ao Aliexpress há que contar com 3 a 4 semanas para entrega dos produtos - nunca me aconteceu não ter recebido os componentes em bom estado.

Portanto, mandando vir os componentes pelo Aliexpress, este pequeno robô fica-nos em:
Total = 24,03€. Este valor, que não inclui as pilhas para alimentação do arduino e motores, parece-me razoável para um número significativo de contextos. É certamente muito mais baixo que a maioria das soluções encontradas no mercado para robôs didáticos e tem a enorme vantagem de, sendo um projeto modular, poder crescer com os alunos, com a inclusão de novos componentes e a novas ideias.

E ficou giro? Eu acho que sim, mas sou suspeita...







quarta-feira, 5 de julho de 2017

Robôs low cost#5 - comunicando com o PC por bluetooth

De acordo com o projeto idealizado pela Alexandra e pelo Jorge, o envio dos dados para uma estação fixa era especificação fundamental, já que previa o protótipo de um robô que podia não ser recuperável.

Tendo disponível um módulo bluetooth HC-06, a solução passou por experimentar este modo de comunicação, com a consciência que, apresentando um alcance de 10 metros, esta não seria a solução mais adequada numa situação real de um robô exploratório, onde se imporia uma comunicação via rádio, por exemplo.

A solução bluetooth justificou-se neste trabalho por interesse académico e por razões práticas (por disponibilidade do equipamento).

Eis a imagem de um módulo bluetooth HC-06 e respetiva pinagem:



Caso o módulo disponível seja de 5V, a ligação deste componente ao arduino é bastante simples, bastando seguir as ligações propostas na tabela seguinte:

HC - 06
Arduino
Pino VCC
5V
Pino GND
GND
Pino TX
RX
Pino RX
TX
  
O módulo bluetooth com que os alunos trabalharam, no entanto, trabalha a 3,3V, pelo que houve que usar um divisor de tensão no pino RX para não danificar o componente:



Com um PC equipado com bluetooth, depois do equipamento emparelhado, a comunicação é automática. Para visualisar os dados foi utilizado o programa Tera Term, software gratuito disponibilizado pela empresa LogMeTT, bastando, ao fazer correr esse software, selecionar a abertura de uma porta série via bluetooth:



Depois...é só fazer correr um programa que esteja a escrever dados numa porta série, como o apresentado no post anterior - ao fazê-lo, os valores da temperatura e da humidade aparecerão no ecrã do computador:




Como nota importante, destacamos que, ao fazer o upload de qualquer programa para o arduino, é necessário retirar previamente o módulo bluetooth do circuito.

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!