Scratch para Arduino S4A
- ARDUINO E SCRATCH
Uma busca na internet por “Arduino visual programming” retornou a informação de que o Scratch poderia controlar o Arduino, e esta é a enorme vantagem de se utilizar um sistema open source, os desenvolvedores compartilham informações de forma livre, sem custo.
- SCRATCH
O Scratch é um software livre, desenvolvido pelo do grupo Lifelong Kindergarten no Media Lab do MIT, como uma evolução do software LOGO de Pappert. Disponível desde 2007, com projeto voltado à aprendizagem e educação. É uma forma criativa de desenvolvimento de rotinas de programação, orientada a objetos, “arrastáveis” (drag and drop). Histórias, jogos e animações interativas podem facilmente ser programados, através de sua interface. Grupos de compartilhamento de programas, chamados de “Scripts”, são numerosos na internet.
O grupo desenvolvedor afirma que ele “ajuda os jovens a aprender a pensar de maneira criativa, refletir de maneira sistemática, e trabalhar de forma colaborativa - habilidades essenciais para a vida no século 21.” [1]
Muitos professores tem utilizado o programa em ambientes de educação formais e informais, além de pesquisadores da educação e informática. Uma comunidade virtual existe para compartilhamento de informações sobre o seu uso em educação, desde 2009, com o nome de ScratchEd e milhares de participantes, de diversas partes do mundo, está disponível em < http://scratch.mit.edu/educators/ >>, a adesão é estimulada e gratuita.
Seu ambiente é dividido em três áreas principais, à esquerda encontram-se os comandos disponíveis para uso, no centro está à área de programação e na extrema direita encontra-se o palco, onde o personagem (sprite) realiza as ações comandadas. Seu personagem original, e tradicional, é um gato alaranjado, que pode ser aletrado por outros existentes no programa, ou criados a partir de desenho próprio.
Fig.01: Interface gráfica do Scratch 1.4.
Fonte: o autor
Um exemplo de programa realizado no Scratch, onde o gato desloca-se da direita para a esquerda emitindo um som de batida e “falando” (através de um balão): Toc. Ao bater na borda da arena, emite som de miado, “fala”: miau gira 90 graus, retorna (de cabeça para baixo), e se repete indefinidamente.
Fig. 02 - Exemplo de programa Scratch
Fonte: o autor
O Scratch 1.4 pode ser conectado, sem alterações, ao LEGO® WEDO, acionando o motor – controlando a potência e o sentido de rotação- e lendo um dos sensores, conectados ao WEDO. A Pico Board também permite conexão direta com o Scratch, mas demanda uma placa proprietária, que deve ser comprada do fabricante.
Fig. 03 – Scratch controlando o motor e lendo o sensor do LEGO® WEDO
Fonte: o autor.
- SCRATCH PARA ARDUINO (S4A)
O Scratch para Arduino é uma modificação, de utilização livre, do Scratch do MIT, que permite a programação do Arduino, através da adição de blocos de comando de atuadores e leitura de entradas, conectadas ao Arduino. Foi desenvolvido em 2010, pela equipe Citilab Smalltalk, cujo objetivo principal é o de prover um modo simples de interação com o mundo real, aproveitando a facilidade de uso do Scratch. O Citilab Smalltalk é um grupo do Laboratory for Relational Algorithmics, Complexity and Learning, da Universitat Politècnica de Catalunya, de Barcelona.
O S4A possibilita a programação do Arduino em alto nível, facilitando o acesso ao mundo da programação, da automação e da robótica, às pessoas que não tenham tido contato anterior, e crianças em tenra idade.
O sistema consiste de dois programas básicos, o software S4A que roda no computador e o firmware, que deve ser carregado no Arduino, para que exista a comunicação entre os dois. O programa está disponível [2]para Windows, Mac, Linux (Debian) e Raspbian. O firmware[3] deverá ser aberto no programa de compilação[4] do Arduino, para upload[5].
O S4A, em sua versão 1.5, permite, através de blocos adicionais, controlar um servo motor padrão (controlável por ângulo de posicionamento), dois servo motores de rotação contínua (somente o sentido de rotação e o acionamento podem ser controlados), três saídas digitais (ligadas ou desligadas), três saídas analógicas por modulação de largura de pulso (PWM, podendo assumir qualquer valor inteiro entre 0 e 255), duas entradas digitais (ligadas ou desligadas) e seis entradas analógicas (podendo assumir qualquer valor inteiro entre 0 e 1024, conforme o valor de tensão disponibilizado).
Fig. 04 – Blocos adicionados ao Scratch, pelo S4A
Fonte: o autor
O S4A dispõe de um sprite distinto, uma placa de Arduino, que detecta automaticamente o controlado, quando plugado. Várias placas podem ser controladas ao mesmo tempo, pela adição de novos sprites. Seu número é limitado pela disponibilidade de portas USB no computador. Ele pode controlar distintos tipos de Arduinos, entre eles o Diecemila, o Duemilenove e o UNO.
Normalmente, o controlador deve ficar conectado ao computador, pelo cabo USB, de forma semelhante ao HUB do LEGO® WEDO. O controle sem fio é possível através de interfaces do tipo Xbee.
Os programas desenvolvidos no Scratch podem ser abertos no S4A, os do S4A não podem ser abertos no Scratch. Os programas do S4A não devem ser compartilhados na comunidade Scratch, pois é contra as regras da comunidade.
O S4A interage com o Arduino pelo envio do estado dos atuadores (saídas) e leitura dos sensores (entradas), a cada 75 milissegundos. Pode-se observar esta comunicação pelo piscar dos Led´s (diodos emissores de luz) assignados como RX (recepção) e TX (transmissão), na placa do Arduino. O protocolo de comunicação ( a linguagem de comunicação entre computador e controlador) é o mesmo do Pico-board, e necessita de um programa residente específico (firmware), carregado no Arduino, antecipadamente.
- DESENVOLVENDO UMA PLACA PARA O S4A.
Agora, existia a necessidade de desenvolvimento de um sistema para trabalhar com o S4A, para testar as possibilidades e funcionamento. Dentro da comunidade que trabalha com o Arduino, as placas de interfaceamento, externas ao controlador, são conhecidas como shields, e um deveria ser desenvolvido. O padrão pra shields, no mercado, é o de conexão direta a placa Arduino em sua parte superior, e vários tipos estão disponíveis no mercado.
Fig. 05: Conexões do Arduino Uno
CONFIGURAÇÂO DE ENTRADAS E SAIDAS DO S4A
Entradas analógicas -
A0
A1
A2
A3
A4
A5
Entradas Digitais
2
~3
Motor (servo motor contínuo)
4
7
Servomotor (0-180)
~8
Saídas digitais
~10
~11
12
13
Saídas analógicas PWM (modulação por largura de pulso)
~5
~6
~9
1.4. MODIFICANDO O S4A
Os servomotores padrão, largamente utilizados em brinquedos de controle remoto, são facilmente encontráveis no mercado, a preço acessível. Sua utilização é interessante, pois possuem redução de velocidade interna, aumentando sua força e diminuindo sua velocidade, dimensões compactas e bom controle de posicionamento final, resultante do comando fornecido. Garras robóticas estão disponíveis para aquisição, com pelo menos dois servos instalados, e podem facilmente ser confeccionadas com a utilização de prototipagem 3D. Com a utilização do sistema LEGO®, sua construção também é facilitada pelo uso de servomotores padrão. Sistemas de posicionamento de câmaras de vídeo, para vigilância remota, utilizam dois servomotores para posicionamento de Tilt e Pan, e são facilmente encontráveis no mercado.
Existem duas formas de alterar as alocações de entradas e saídas do S4A, uma está disponível no site da Arduteka [6], em espanhol, que permite o acréscimo das alterações, diretamente no S4A, sendo a mais flexível, porém, requer conhecimento técnico de programação. A alteração deve ser feita diretamente no programa instalado, em cada máquina.
A outra forma é muito simples, mas pouco flexível, e permite o acréscimo de servomotores padrão ao S4A 1.5. Em versões anteriores o número de servos era maior, na versão 1.2 existiam dois servos disponíveis. Porém o firmware da versão 1.2 só suporta o Arduino UNO em sua primeira versão, sendo incompatível com o ArduinoUNO R3, atualmente disponível no mercado, e aqui utilizada. O S4A 1.2 pode ser baixado da internet.······.
Uma possível solução é a utilização do S4A 1.2 com o firmware 1.5 modificado. A modificação do firmware consiste na alteração do atributo da porta 12. A designação da função das portas se dá pelo uso de uma letra entre aspas, sendo ‘c’ para servomotor contínuo, ‘a’ para saída analógica, ‘s’ para servomotor padrão e ‘d’ para saída digital.
A designação de saídas, original do código fonte em linguagem C, é:
outputs[0] = 'c'; //pin 4
outputs[1] = 'a'; //pin 5
outputs[2] = 'a'; //pin 6
outputs[3] = 'c'; //pin 7
outputs[4] = 's'; //pin 8
outputs[5] = 'a'; //pin 9
outputs[6] = 'd'; //pin 10
outputs[7] = 'd'; //pin 11
outputs[8] = 'd'; //pin 12
outputs[9] = 'd'; //pin 13
Fonte: Firmware do S4A
A nova designação de função para o pino 12, passa a ser:
outputs[8] = 's'; //pin 12
Outra solução funcional é abrir um projeto do S4A 1.2, que contenha os blocos de controle do servomotor padrão na saída 12, dentro do ambiente S4A 1.5. O bloco funcionará perfeitamente, com o firmware modificado, no S4A 1.5, porém não estará disponível na paleta de comandos, bem como o comando para controle do servomotor 08 não aceitará a troca para o servomotor 12.
- INSTALAÇÃO DO S4A
- Instalar o programa “arduino-1.5.5-r2-windows”, que instala os drivers necessários para a comunicação entre o computador e o Arduino. Este é o programa compilador C para o Arduino.
- Instalar o S4A.
- Quando um Arduino for preparado para trabalhar com o S4A, abrir o programa “S4AFirmware15” no “arduino-1.5.5-r2-windows” e fazer o upload do firmware para o Arduino UNO.
- PROGRAMAS BÁSICOS DE CONTROLE DE ENTRADAS E SAÍDAS
- CONTROLANDO O SERVO-MOTOR
O motor vai para 170 graus, aguarda 1 seg, vai para 10 graus, aguarda 1 seg. e repete indefinidamente.
3.1. CONTROLANDO O MOTOR DE CC
Aqui o motor liga para um lado quando o botão Digital 2 for acionado.
Aqui, o motor inverte a rotação e aumenta a velocidade, quando o botão é pressionado.
- BOTÃO CONTROLA POSIÇÃO DO SERVO
- BOTÃO LIGA LED DA PLACA
3.4 BOTÃO CONTROLA BRILHO DO LED CONECTADO A SAIDA ~9
- BOTÃO LIGA MOTOR CC
- POTENCIÔMETRO CONTROLA POSIÇÃO X DO SPRITE:
Como o palco vai de X= -240 até X= 240 e a entrada varia de 0 a 1024, então deve-se dividir entrada por 2, do resultado desta divisão diminuir 240. Manter o Y = 0.
Pode-se trocar a entrada para Analog 5 e controlar com um LDR conectado a esta entrada, ou outro dispositivo analógico qualquer.
- POSIÇÃO DO SERVO CONTROLADO POR ENTRADA ANALÓGICA
Como o servo só assume valores entre 0 e 180, e a entrada varia de 0 a 1024, divide-se a entrada por 5,8. O resultado pode conter valor decimal e o servo não aceita, então se arredonda o valor resultante da divisão.
Trocando Analog5 por Analog4, controla-se a posição através do potenciômetro.
- CONTROLANDO O MOTOR DE CC
Continue Lendo
Como funciona o Arduino, suas entradas e saídas, cuidados ao trabalhar com Arduino.
Controlando motores de Corrente Contínua.
Construindo o Arduino para o Scratch e sua caixa.
Construindo sensores, para o Arduino e Scratch, sobre peças LEGO.
[1] Disponível em <http://scratch.mit.edu/about/>
[2] Disponível em <http://s4a.cat/>
[3] Disponível em <s4a.cat/downloads/S4AFirmware15.ino>
[4] Disponível em <http://arduino.cc/en/Main/Software>
[5] Envio do programa, do computador para o microcontrolador Arduino
[6] Disponível em < http://www.arduteka.com/2013/01/modificar-el-codigo-de-s4a-y-del-firmware/>
- Robótica na Educação
- Utilização de LEGO, Arduino e Scratch na educação
- Como Funciona o Arduino, I/O
- Controlando Motores de Corrente Contínua
- Minibloq e arudino
- Scratch para Arduino S4A
- Construindo o Arduino para o Scratch e sua caixa.
- A caixa de comando
- Construindo sensores e atuadores para Lego e Ardui
- LEGO
- Arduino
- Scratch
- Robos feitos com sucata
- Coisas doidas
- Outros sistemas de montagem
- Literatura relacionada
- Tutoriais
- Glossário
- Programas
- Trabalhando com imagens
- Área Reservada
- Contactos