Usando Material ATTO e Comunicação Bidirecional: Talking Tom Arduino Scratch

Neste projeto montaremos uma versão Arduino/Scratch do boneco Talking Tom. Similarmente ao Projeto do Robô de Canos de PVC, neste projeto também vamos usar sensores e comunicação bidirecional Scratch<->Arduino, fazendo o programa em Scratch não só comandar o boneco, mas também fazendo com que entradas sensoriais do boneco façam o programa Scratch executar ações.

O Talking Tom CnE terá os seguintes comportamentos básicos:

  • Piscar seus olhos verdes felinos;
  • Balançar a cabeça;
  • Abanar o braço;
  • Reagir a dedos aproximados de seu nariz com miados e piscar de olhos;

além de muitas outras combinações de movimentos e sons que os alunos poderão inventar a partir desse repertório básico e das possibilidades do Scratch.

Talking-Tom-vestido.png

Para nosso projeto utilizamos um kit de construção de plástico com parafusos e porcas fáceis de manusear. É excelente para crianças porque podem montar o que quiserem, é fácil integrar as peças do Arduino como sensores e atuadores e os parafusos grandes e de plástico permitem a crianças, mesmo menores, montar qualquer coisa usando apenas as mãos. Nosso kit é fabricado no Brasil e chama ATTO Educacional.

Vamos também explorar algumas propriedades interessantes oferecidas pela programação Arduino utilizando Scratch:

  • Som: Podemos produzir todo tipo de sons em resposta a estímulos captados por sensores no Arduino utilizando as capacidades de produção de sons do Scratch para isso, sem necessidade de adquirir e programar complicados e caros módulos MP3 para Arduino;
  • Programação Paralela: Arduino, quando programado diretamente possui uma séria limitação, que é a incapacidade executar programas com vários processos ou threads. Se você necessita fazer uma coisa A por algum tempo enquanto faz outra coisa B, como por exemplo, ficar abanando o braço por 2 segundos enquanto move a cabeça em alguma direção e olha algo, não há forma simples de programar isto diretamente no Arduino, a não ser utilizando a complicada programação de interrupções de hardware. Scratch é uma linguagem multi-thread, significando que ela oferece um grau limitado de paralelismo: Cada conjunto de blocos embaixo de um “bloco-chapéu” pode ser executado de forma independente e concomitante com outros blocos. Nós já vimos isso de forma implícita anteriormente em nosso Manual-Gibi “Programando um Jogo com Scratch” onde os peixinhos ficavam nadando por aí enquanto você movia o tubarão para pegá-los. Com o código que vamos construir neste projeto, usar paralelismo dentro de um mesmo ator vai ficar super-fácil de demonstrar: as funções piscar, mexer o braço e virar a cabeça que vamos montar, podem ser todas elas executadas em paralelo, fazendo o gato abanar, mexer acabeça e piscar, tudo ao mesmo tempo, bastando se chamá-las apertando em rápida seqüência as teclas “b”, “c” e “o”;
  • Abstração: Este é um projeto que posui várias funcionalidades independentes umas das outras, como piscar, mexer o braço e virar a cabeça, e que podem ser usadas como blocos para comportamentros mais complexos. Vamos, inicialmente programar estas funcionalidades no código principal do programa Scratch. Em seguida, vamos mostrar que elas repetem código, são relativamente longas e que, para se reutilizar a função piscar, por exemplo, se tem de copiar todo o conteúdo para dentro de outro conjunto de blocos (em nosso caso o conjunto “bandeira verde”). Por que não então fazer um bloco piscar? Com isso em mente vamos aproveitar a necessidade para ensinar abstração funcional, mostrando como se criam funções na forma de novos blocos e como se usa essas funções dentro do código.

Execução paralela de processos e abstração funcional são dois conceitos importantes em Computação e que, entendemos, podem ser aprendidos de forma natural e intuitiva com este projeto.

Talking-tom-atto.png

Figura: “Esqueleto” do nosso Talking Tom. Clique na imagem para ampliar.

Separe as Peças para montar seu Talking Tom

Peças para a Automação:
- Arduino (em nosso caso umsamos um UNO R3)
- Protoboard de 128 furos para as conexões (em nosso caso usamos um ProtoShield)
- 2 servos quaisquer (TowerPro SG90 é o suficiente)
- 2 LEDs verdes
- Sensor de proximidade infravermelho
- Fios para prototipagem
- Cabo USB (o Arduino funciona conectado por fio)
- 12 abraçadeiras de nylon 15cm para fixação de componentes

Utilizamos dois servomotores diferentes, um micro-servo na “axila” para mover o braço pois é fácil de encaixar na peça em “U” do Material ATTO (basta usar um pedaço de EVA para evitar que escorregue e um parafuso para aplicar pressão) e um servo tamanho padrão para mover o pescoço. O pescoço é fácil de mover e não há necessidade de um servomotor tão grande ali. Em nosso caso possuíamos um servo com as engrenagens defeituosas e que não podia mais ser usado para aplicações onde força ou precisão é necessária, então o reaproveitamos e usamos ali.

Nos projetos utilizando Meccano/Modelix temos apresentado a montagem passo a passo com imagens do CAD/simulador VirtualMec. Para material de construção com peças grandes de plástico não há software de projeto que nos permita mostrar os passos de construção, por isso vamos mostrar apenas fotos do boneco construído, deixando por conta da criatividade do aluno criar a sua estrutura.

Detalhe-talking-tom.png

Detalhe-talking-tom-cbeca.pngFigura: Detalhes da montagem da estrutura interna. Clique na imagem para ampliar.
Para fixar as peças de montagem no servomotor, sempre utilizamos o seguinte procedimento:

  • posicionamos a peça de montagem a ser movida pelo servomotor com o furo que será o eixo de movimento sobre o eixo do servomotor;
  • parafusamos um dos adaptadores de fixação de peças que acompanham o servomotor sobre o eixo, de maneira que esteja na parte oposta ao servomotor da peça a ser movida e impeça esta de escapar;
  • colocamos um espaçador macio como EVA entre as abas do fixador e a peça, de forma a fixá-la suavemente, de maneira que haja pressão leve mas não demasiada, para que não se crie demasiado atrito com o chassis do servomotor;
  • fixamos cada lado da peça fixadora com a peça de montagem a ser movida utilizando abraçadeiras de nylon;
  • fixamos uma terceira abraçadeira de nylon entre as outras duas abraçadeiras de nylon, de maneira a que não se separem durante a movimentação.

Pronto! A figura abaixo ilustra bem o resultado:

Attobeest4.jpg

Monte a Automação

O projeto completo pode ser visto na imagem abaixo.

Talking-tom-fritzing.png

Monte o Código Scratch sem criar novos Blocos

Talking-tom-straight-logo.png

Figura: Talking Tom sem abstração.

Código: https://github.com/ComputacaoNaEscola/s2a_fm/blob/master/talking-tom.sb2

Modifique o Código Scratch usando Abstração através de novos Blocos

Talking-tom-abstracao-logo.png

Figura: Talking Tom aplicando abstração funcional através da criação de novos blocos.

Código: https://github.com/ComputacaoNaEscola/s2a_fm/blob/master/talking-tom-abstracao.sb2

Robô Andarilho Caseiro Simples

Mr. moo is the 3 rd walking robot that i built.
Mr. Moo made out of :
2 tabasco bottles lids, an old toys gearbox, 1 AAA battery pack, 3 mm screw & nuts, an old toys switch
pairs of wires, a folded can, 3 mm coat hanger wire, 2 LEDs and terminal blocks.
Mr. moo is junk bot

 

Fazendo Bonecos Animados: Um Robô que Protege o seu Tesouro


Há uma versão atualizada e com muito mais detalhes desse tutorial em:  http://www.computacaonaescola.ufsc.br/?page_id=525


Vamos fazer um robô-guardião que cuida ciumentamente de um conjunto de moedas em seu peito? Sempre que alguém aproxima a mão, o robô fecha os braços, capturando a mão do incauto…

Tuboneco.png

Para isso vamos ter de fazer o robô “sentir” que alguém aproxima a mão. O ideal para isso é um sensor ultrassônico que vai usar sonar, como os morcegos, para analisar o seu ambiente. Para o robô “capturar” o incauto, você pode usar dois servomotores bem simples que vão movimentar os braços do robô.

Tipo de Material Descrição
Microcontrolador Arduino Nano ou Uno
Base de Prototipagem Protoboard 128 ou 400 furos
Servomotor 2 x SG-90 (superbarato!)
Sensor Ultrassônico HC-SR04
Material de Construção Canos e conexões de PVC de 25 mm (talvez o material de construção para robótica em escolas mais simples, barato e flexível que existe), eucatex ou papelão, EVA para as “mãos”

Ferramentas de Construção Chave de fenda e furadeira se for parafusar os braços (pode-se fixá-los no servomotor com fita crepe ou isolante também), tesoura para cortar papelão e EVA, serrote de arco se for usar eucatex

 Como eu monto o Boneco de Canos?

PVC-Duino

 

O boneco é superfácil de montar. Poder ser construído com canos de PVC que você encontra em qualquer loja de material de construção. As figuras acima detalham a estrtura (os canos são mostrados em posição para serem encaixados). Tudo o que você necessita é:

  • 1m de cano de PVC de 25 mm (você vai cortá-lo em pedaços como está na figura acima)
  • 6 joelhos de 25 mm
  • 7 “T”s de 25 mm

Se você quiser olhar o projeto com mais detalhes ou modificá-lo, temos abaixo 3 versões em SketchUp:

Para afixar os servomotores, como mostra a figura abaixo,  você vai ter de retirar uma faixa de 1 cm de largura e 3 cm de comprimento da parte superior de cada braço.

pvc-duino4

A melhor maneira de abrir esse espaço para os servos é:

  • Serrando duas entradas de 3 cm de comprimento, a 1 cm de distância uma da outra;
  • Quebrando a lingüeta que se formou com um alicate.

Como eu monto a Automação do Boneco?

O esquema de fiação do PVCDuíno para funcionar como Robô Guardião fica assim como mostra a figura abaixo. Instruções detalhadas de como montar os componentes no Protoboard e conectá-los você encontra no nosso tutorial Monte e Programe um Boneco utilizando Arduino e um Protoboard convencional.

Scratch-Nano-Robo-Tesouro bb.png

Robo-tesouro.png

Integrando a Webcam com Arduino: O Minion Mata-Moscas Automático

A nossa capacidade de reagir ao que se está enxergando através de movimentos se chama de coordenação visuomotora. É também conhecida como coordenação olho/mão e é a capacidade para controlar o movimento da mão, guiado pela visão.

Um robô também pode ter coordenação visuomotora e usá-la para matar moscas!

Para isso vamos usar as facilidades de processamento de vídeo e detecção de objetos coloridos com a webcam que Scratch nos oferece e integrá-las às funções de controle do Arduino para produzir um Robô Mata-Moscas totalmente automático:

  • ele detecta a mosca;
  • ele mata a mosca.
Tipo de Material Descrição
Microcontrolador Arduino Nano ou Uno
Base de Prototipagem Protoboard 128 ou 400 furos
Servomotor SG-5010 (mais forte!) ou SG-90 (superbarato!)
Sensor Visual Qualquer webcam
Material de Construção Eucatex ou Papelão, restos de madeira, pregos, matamoscas do 1,99
Ferramentas de Construção Martelo, serrote de arco

Fazendo o Detector de Moscas

Para detectar se a mosca pousou no alvo, vamos usar a webcam, ativando a entrada de vídeo, e o bloco de Scratch que verifica se alguma parte da imagem que está sob o ator sofreu uma modificação. Assim, sempre que pousar uam mosca sob o alvo, vamos poder executar alguma ação:

Comece mudando o seu ator para ele virar um alvo: crie duas fantasias do mesmo tamanho e de cores diferentes. Uma vai ser o alvo de a outra vamos usar apenas para sinalizar que o detector de moscas foi ativado.

Alvo.png

Um alvo ideal seria um onde você pode ver a mosca por debaixo, mas Scratch detecta apenas modiifcações em partes da imagem que possuem um desenho. Se você não preencher o alvo com alguma cor, a parte interna dele ficará insensível a modificações no vídeo.

Agora vamos ao programa Scratch para a detecção automatizada de moscas:

Mosca.png

O valor numérico com o qual comparamos o resultado do bloco de detecção diz quantos pontos da imagem têm de ter mudado para ele disparar. Ele dependerá da distância, da iluminação, etc. Um bom valor para começlar é 30 e ir testando. Teste agora jogando uma “mosca” na parte do alvo da imagem. A “mosca” pode ser uma lentilha ou um feijão, que têm um tamanho e cor similares a uma mosca. Se estiver muito sensível, aumente o valor, se não reagir à “mosca”, diminua o valor.

Construindo o Mata-Moscas

Para fazer o mata-moscas vamos fazer um braço-robô comandado por um servomotor: sempre que uma mosca é detectada, ele bate nela e volta à posição original.

Para isso construa primeiro um suporte para o alvo e para o servo e seu braço. Em seguida fixe o braço no servo e o servo no suporte:

Matamoscas2.png
Em seguida, vamos escrever as partes do programa Scratch que movem o braço:

 

Finalmente, conecte o servomotor ao Arduino:

Scratch-Nano-Servo.png

Um Piano no Ar

Quer tocar um instrumento musical por mágica, simplesmente movendo as suas mãos no ar, como Jean-Michel Jarre em sua Harpa de Luz no seu famoso concerto na China em 1981?

Jarre.jpgJarre2.jpg

A Harpa de Luz usada por Jarre utiliza vários feixes de laser que detectam os movimentos da mão. Você pode fazer a mesma coisa utilizando ultra-som para detectar as suas mãos, como os morcegos: Para isso Scratch e Arduino tem uma forma de interação chamada SONAR.

Tipo de Material Descrição
Microcontrolador Arduino Nano ou Uno
Base de Prototipagem Protoboard 128 ou 400 furos
Sensor Ultrassônico HC-SR04
Sinalizador Sonoro Buzzer ou Alto-falante de Radinho de Pilha
Material de Construção 1 Cartolina e Hidrocor

Para fazer um sonar nós vamos usar o transdutor de ultra-som HC-SR04. Ele pode ser conectado ao Arduino de forma muito simples, como mostra o desenho abaixo:

Scratch-piano.png

Conecte também um altofalantinho (buzzer).

Agora é só escrever um código bem simples para fazer o seu Piano no Ar funcionar:

Piano-codigo.png

Nesse código você vai criar duas variáveis: sonar para armazenar a distância que seu sonar detectou e som para armazenar a freqüência da nota que você vai gerar. O SONAR retorna um valor em centímetros. Multiplicando esse valor por uma constante (nós usamos 50 – é um bom valor para você começar) você pode gerar um novo valor que vai ser usado como a nota a ser gerada pelo alto-falante sempre que a sua mão passar na frente do SONAR. Passando a mão a diferentes distâncias, gera diferentes notas.

Desenhe agora um teclado em uma faixa de cartolina e toque uma música como por mágica simplesmente movendo as mãos no ar por sobre esse teclado.