Mostrar mensagens com a etiqueta Drivers. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Drivers. 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...







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.