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