quinta-feira, 23 de abril de 2015

O sensor de ultrassons SR04 e programação em S4A

O SR04 é dos sensores de ultrassons mais comuns para pequenos projetos. Permite a medida de distâncias entre 2 cm e 4 m com um ângulo de sensibilidade de 15º. A análise da respetiva datasheet, deixou-me bastante confiante e achei eu que planear um pequeno trabalho com este sensor, arduíno e S4A ia ser canja. Toda a gente sabe que a ignorância é muito atrevida...

Este sensor tem 4 pinos, dois para a alimentação (Vcc e GND), um para o trigger (o "disparo" de um sinal) e o restante para receber o som refletido (o eco).


O modo de funcionamento é simples: o envio de um impulso de 10 us (10^-6 s) para o pino do Trigger, resulta na emissão por parte do SR04 de um ciclo de 8 impulsos de ultrassons na gama dos 40 kHz. Nesse momento, o SR04 ativa o pino Echo para 5V que só voltará a 0V no momento em que receber o eco do sinal enviado. Eis o esquema temporal:



Sabendo que o som tem uma velocidade média de 340 m/s, é possível medir a distância que o som percorreu entre ter sido emitido e rececionado de novo. A distância ao obstáculo será metade desse valor.

Continhas, então: d(obstáculo) = d(percorrida pelo som)/2
                             d(obstáculo) = v(som)*tempo(echo)/2

Como vamos medir o tempo do impulso em us e a distância ao obstáculo em cm, há que converter a velocidade do som em cm/us: 340 m/s = 0,034 cm/us.

Assim, d(obstáculo) = 0,017*tempo(echo) ,  tempo(echo) medido em us; d(obstáculo) medido em cm.

Assim..o que poderia correr mal? Liguei o Trigger ao pin13, o Echo à entrada 2 e...nada!!! Por mais impulsos de 10 us que enviasse, não detetava nada na entrada 2. Uma pesquisa mais atenta relativamente à comunicação entre o arduino e o S4A revelou-me que o S4A interage com o arduino atualizando os estados dos atuadores e dos sensores a cada...75 ms! Valor impossível de conciliar com sinais de 10 us!

A solução passou por alterar o firmware que o arduino disponibiliza. Para isso tive a ajuda de um familiar próximo. A ideia foi alterar o mínimo possível o firmware original. Reservámos para o funcionamento do sensor os pinos D13 e A05. O pino D13 passou a funcionar como entrada e saída, o A05 devolve o valor da distância em cm.
Foi gerado um ciclo, que se repete de meio em meio segundo, em que o pino D13, inicialmente uma saída, envia um impulso de 10us. Passa então a ser definido como entrada e lê a duração do impulso do pino Echo. Este tempo é multiplicado pelo valor de 0,017, como explicado acima, e enviado para o pino A05.

O firmware realizado está disponível no seguinte endereço: http://densare.pt/files/zip/S4AFirmware16_SR04.zip

NOTA IMPORTANTE: O firmware disponibilizado só funciona corretamente com o sensor SR04 ligado à entrada 13. Sem o sensor devidamente ligado, o firmware fica à espera de um dado indefinidamente e em ambiente S4A a placa surge como não reconhecida.

Deixo então a minha proposta de trabalho para envolver o SR04 em circuitos programados através de Scratch...


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




...e um pequeno vídeo com o circuito do sensor de proximidade em funcionamento:




Como nota final, não posso deixar de referir que levei o circuito do sensor montado para uma aula de Física e Química de 8º ano, onde os alunos estão  a dar o som. Foi interessante porque deu para exemplificar o facto de os ultrassons não serem audíveis, o fenómeno do eco, o funcionamento do sonar. Os alunos identificaram o circuito nas luzes de sinalização de lugar ocupado / livre do parque de estacionamento do centro comercial cá da terra. E pediram um workshop de arduino para o verão. E eu estou com vontade de lhes fazer a vontade...



quarta-feira, 22 de abril de 2015

Às compras

Já por aqui tinha referido que os kits de iniciação ao arduíno são de facto do melhor...para iniciar! À medida que os projetos surgem, torna-se evidente a necessidade de comprar outros componentes eletrónicos menos vulgares.
Por causa de um projeto que tenho em mente, tive de adquirir um sensor de ultrassons. Optei pelo HC-SR04 por ser bastante comum e haver já muitos projetos descritos na net que o envolvem. Quando comecei a pesquisar por preços, encontrei-o por mais de 12€ numa conhecida loja online portuguesa...e por menos de 1€ no Aliexpress! Dito isto, partilho aqui a experiência com a compra de componentes eletrónicos através desta plataforma eletrónica de compras.
Quando pesquisamos por um determinado componente no Aliexpress, é difícil não sermos atingidos por uma súbita febre consumista, dados os preços do material eletrónico aí praticados. Verdade que em muitos casos é exigido um número mínimo de componentes a comprar, mas nem sempre tal acontece e os valores são de tal maneira baixos relativamente ao que se pratica em sites nacionais que bem vale a pena mandar vir em quantidade.
Por uma questão de simplicidade, fiz todas as minhas compras numa única loja: http://pt.aliexpress.com/store/1171090

Comprei então:

  • 1 lote de 5 relés 5V-230V por 6,64€:

  • 1 lote de 5 conetores para ligar pilhas de 9V ao arduíno por 1,71€:
  • 1 lote de 5 servo motores SG90 por 7,41€:

  • 1 controlador para motores de passo por 1,76€:


  • 2 sensores de ultra sons HC-SR04 a 0,82€ cada:
  • 1 lote de 10 díodos laser vermelhos, 5V, por 3,66€:


Expedido com a minha compra, foi-me enviado, como oferta, um leitor de cartões micro SD para arduíno, cujo valor ronda os 4€:



O pagamento é feito por cartão de crédito à Aliexpress que estabelece um prazo de entrega máximo que depende de cada loja - o vulgar são 60 dias. Caso esse prazo seja ultrapassado, a Aliexpress devolve o dinheiro ao cliente.
Mesmo vindo da China a maior parte das compras não são sujeitas a custos de porte. O prazo de entrega ronda, no entanto, os 30 dias.
Os componentes eletrónicos não estão sujeitos a imposto alfandegário, mas caso a compra ultrapasse os 22€ (eu só soube disso depois - a  minha compra foi de 22,81€) poderá estar sujeita a pagamento de IVA na alfândega. Curiosamente, a encomenda foi expedida numa caixinha que vinha marcada como $6.
Depois de recebermos os produtos, confirmamos a receção no Aliexpress e podemos avaliar cada um dos itens e o serviço prestado pela loja com que lidámos.

Em resumo, em termos de preço, é indiscutível a vantagem de comprar em lojas chinesas online. Os baixos preços têm como contrapartida a ausência de apoio técnico e os tempos de entrega alargados (é possível reduzir estes prazos, mas isso tem um preço elevado). Por isso, se é para pensar num projeto para as férias de verão...há que começar a pensar no que comprar agora!


quinta-feira, 16 de abril de 2015

Aula 4 - Entradas analógicas

Esta é a última aula formal que pretendo dar aos alunos envolvidos neste projeto. A partir daqui, parece-me que já conhecem as potencialidades essenciais do arduino e que poderão começar a delinear os seus próprios projetos.
A ideia desta aula é explorar as entradas analógicas - temos 6 disponíveis (A0 a A5) - essenciais na utilização de muitos sensores, como de luminosidade, proximidade ou temperatura.
A noção de digital / analógico nem sempre é óbvia para os alunos da faixa etária com que estou a trabalhar. Na verdade, usando de novo o corpo humano como analogia, quase todos os nossos sensores e atuadores são analógicos, mas podemos encontrar exemplos como olhos fechados / abertos para dar a ideia de digital e a intensidade vocal como analógico.
Há depois que lhes apresentar vários componentes que podem ligar a entradas analógicas. Optei pela resistência variável, pela fotorresistência e pelo sensor de temperatura por serem os componentes  que tenho disponíveis para trabalhar com uma turma.
Na primeira montagem, a ideia é simplesmente apreender os valores limite que as entradas analógicas aceitam - 0V correspondem a um valor igual a 0; 5V ao valor 1023.
Voltei a usar 3 LED, ligados às saídas digitais 13, 12 e 11, como atuadores para testar o tipo de entradas estudadas na presente aula.

Deixo de seguida a presentação que explorarei nesta sessão...





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




...e um pequeno vídeo com o exercício do "termómetro" em funcionamento.


sexta-feira, 3 de abril de 2015

Arduino...em casa!

Há certos momentos em que me sinto um bocado limitada. Corre por algumas esferas pensantes a ideia que um professor é uma espécie de enciclopédia, alguém que deve estar sempre preparado para em qualquer momento abrir a boca e debitar uma aula fantástica sobre um qualquer assunto da sua disciplina (e até fora dela). 

Pois que a minha experiência pessoal está longe disso. Quando comecei a dar aulas, diziam-me os professores mais experientes que "por cada hora em sala de aula, devem existir duas de trabalho a prepará-la". Parece que hoje o paradigma se alterou e o trabalho individual do professor tem merecido cada vez mais descrédito.

Serve esta introdução para confessar (estamos na Páscoa!) que trabalho de facto muito em casa. Não é um lamento - é simplesmente uma constatação. E, tendo filhos, estes acabam por coabitar muitas horas com o trabalho da mãe.

Foi por isso sem surpresa que ouvi a minha filha de 12 anos dizer que nas férias da Páscoa queria fazer o seu próprio projeto em arduino.

O projeto foi delineado por ela. Fez o boneco de um gato recorrendo a materiais cá de casa (ela gosta bastante deste tipo de trabalhos manuais) e decidiu o que queria que ele fizesse: que os olhos piscassem e que miasse quando lhe tocassem no nariz. Sugeri que acrescentasse um braço a dizer adeus, o que acatou.

A ideia inicial para o nariz do gato, foi um botão de pressão. Dada a fragilidade da estrutura, no entanto, optei por uma fotoresistência, o que foi uma escolha acertada. Ainda não tive oportunidade neste blog de explorar as entradas analógicas, mas fá-lo-ei em breve.

O circuito eletrónico e as ligações, fui eu que as fiz. Optei por não fazer soldaduras. Em vez disso, usei crocodilos e conetores para ligar os componentes e os fios.

Quanto à programação, e uma vez que a minha filha sabe os rudimentos de scratch, embora nunca tivesse trabalhado em ambiente S4A, adaptou-se com facilidade. A programação do servo motor foi feita deliberadamente sem variáveis para tornar a programação mais acessível.

O resultado parece-se um bocado com aqueles gatos que estão à porta dos chineses, para dar sorte, mas não deixa de nos roubar um sorriso!

Deixo um resumo do projeto desenvolvido...
 

...o esquema do circuito...


...e um pequeno vídeo com o projeto a funcionar.