Você sabia que é possível controlar os pinos do seu Raspberry Pi, usando o Scratch 2.0?
A última versão Raspbian para Raspberry Pi já vem com o Scratch 2.0 (na verdade uma versão offiline e modificada do ScratchX) pré-instalada.
Essa versão (Abril/18) poderá ser baixada clicando aqui:
A extensão do Scratch foi criada pelo MrYsLab e está disponível para download na versão em inglês clicando aqui:
Acabamos de fazer um “fork” desse desenvolvimento e disponibilizamos para vocês em nosso Github.
Esse artigo foi baseado no trabalho disponibilizado por MrYslab e poderá ser encontrado aqui
Neste artigo veremos:
O que você vai precisar?
Baixar a imagem do Raspbian, caso ainda não tenha (opte pela versão com Desktop)
https://downloads.raspberrypi.org/raspbian_latest
Instale a imagem em um cartão SD, nós utilizamos o programa Etcher para esse propósito:
https://etcher.io/
Após esse processo coloque o cartão SD no seu Raspberry Pi e pronto, deixo-o inicializar e fazer as instalações necessárias.
Após alguns minutos o sistema estará pronto para o próximo passo.
Abrindo Scratch 2.0
Verifique se o Scratch já está disponível. Ele deve estar localizado em: Menu–>Desenvolvimento–>Scratch 2.0
Inicialmente, você notará que não há nenhum extensão instalada.
Os próximos passos mostrará como instalar as extensões necessária para comunicação.
Copiando arquivo do nosso Github
Abra o terminal:
Digite:
git clone https://github.com/HackEduca/s2-pi.git
Agora você deve ter uma cópia de nosso diretório no Github.
Inciando a Instalação
Digite agora os seguintes comandos na sequencia: (você pode copiar e colar, caso esteja já utilizando o seu Raspberry Pi).
cd /home/pi/s2-pi
sudo python3 setup.py install
sudo systemctl enable pigpiod
sudo systemctl start pigpiod
cd /usr/lib/scratch2/scratch_extensions
sudo curl -o s2_pi.js https://raw.githubusercontent.com/HackEduca/s2-pi/master/s2_pi/s2_pi.js
sudo curl -o extensions.json https://raw.githubusercontent.com/HackEduca/s2-pi/master/additional_files/extensions.json
cd /usr/lib/scratch2/medialibrarythumbnails
sudo curl -o hackeduca.png https://raw.githubusercontent.com/HackEduca/s2-pi/master/docs/images/hackeduca.png
cd && sudo rm -r s2-pi
Se tiver alguma pergunta como, por exemplo: protegido contra escrita?, digite Y
e depois a tecla ENTER
Caso queira utilizar um comando único, cole o comando abaixo em seu terminal
cd /usr/local/lib/python3.5/dist-packages/ && sudo rm -f *.egg ; sudo rm -r s2_pi* ; cd && sudo rm -r s2-pi ; git clone https://github.com/HackEduca/s2-pi.git && cd /home/pi/s2-pi && sudo python3 setup.py install && sudo systemctl enable pigpiod && sudo systemctl start pigpiod && cd /usr/lib/scratch2/scratch_extensions && sudo rm s2_pi.js ; sudo rm extensions.json ; sudo curl -o s2_pi.js https://raw.githubusercontent.com/HackEduca/s2-pi/master/s2_pi/s2_pi.js && sudo curl -o extensions.json https://raw.githubusercontent.com/HackEduca/s2-pi/master/additional_files/extensions.json && cd /usr/lib/scratch2/medialibrarythumbnails && sudo rm hackeduca.png ; sudo curl -o hackeduca.png https://raw.githubusercontent.com/HackEduca/s2-pi/master/docs/images/hackeduca.png && cd && sudo rm -r s2-pi ; s2pi
Vamos verificar se tudo deu certo:
Digite:
s2pi
Você estará iniciando o servidor e na sequencia o Scratch 2.0 irá se abrir:
- Clique em More Blocks ou Mais Blocos, caso você já tenha mudado o idioma para português.
- Clique em Add an Extension ou Adicionar uma Extensão, caso você já tenha mudado o idioma para português.
Selecione R_Pi_Hackeduca_GPIO:
Voilá! As extensões já estão disponíveis para o seu projeto!!!
Próximos Passos
Reinicie o sistema e abra o terminal em seguida.
Início
Digite: s2pi
Você deverá iniciar o seu projeto com o bloco Conectar ao servidor (o círculo mudará de cor, de amarelo para verde)
Gravando um projeto
Ao gravar um projeto ele irá obrigar automaticamente o uso da extensão .sbx, que não servirá para abrir o projeto com esse Scratch.
Isso ocorre devido a um bug (originalmente este é um ScratchX e não Scratch 2.0).
Desta forma, o arquivo deverá ser renomeado para uso futuro.
Siga os próximos passos:
- No Scratch: Arquivo–>Salvar Projeto
- Escolha o diretório de usuário
(/home/pi)
- Abra o terminal neste diretório e digite:
sbx_to_sb2
Prontinho….
Agora é só você criar e compartilhar o seu projeto….
6 Comments
Elaine e Edson quero deixar registrado aqui o meu agradecimento pela dedicação e empenho em atender ao meu pedido. Inicialmente era uma pergunta que se tornou um pedido e, para a minha surpresa, já foi atendida de prontidão no outro dia! Procurei várias soluções para programação por blocos no Raspberry mas não havia encontrado nenhuma como essa. No momento não estou próximo ao Raspberry que fiz a instalação dessa extensão do HackEduca mas lembro que havia um bloco que estava faltando se comparado ao print dessa página. Com mais calma (após passar o Scratch Day rs), dou um feedback sobre esse bloco. Agradeço mesmo pela atenção de vocês e parabenizo pelo projeto!
Olá Ailton, muito obrigado!
Alguns meses atrás tínhamos iniciado um trabalho sobre Raspberry Pi, mas nunca tivemos um incentivo para terminá-lo (aparecia demandas mais urgentes.
O bloco diferente entre ambas as extensões creio que seja a função PWM.
Obrigado!
Salve pessoal do Hackeduca!! Tenho um pedido a fazer. Gostaria de controlar servos motores através dessa aplicação do Scratch com Raspberry Pi pois tenho uma situação onde não teremos Arduinos disponíveis e não posso contar com soluções on line de programação por blocos. Seria possível desenvolver uma solução para programar servos motores através das portas GPIO do Raspberry? Desde já agradeço e parabenizo pelo trabalho! Abraço!
Olá Ailton, conforme conversamos, conseguimos fazer o bloco.
Obrigado pelos testes.
Enviamos um Pull Request (github) para o autor (Alan) com as nossas modificações/inclusões. Essa funcionalidade ficará válida também para a versão em inglês.
A posição 0º e 180º ficarão alinhadas?
Percebemos que a calibração varia conforme a marca do Servo (diferente do Arduino).
Olá! Utilizando essa extensão, como eu poderia limpar a configuração das GPIO? Algo semelhante ao GPIO.cleanup() do python?
Olá, essa função coloca os pinos que por ventura estejam como output como input.
Atualmente não há bloco que suporte essa função, mas creio que criando uma variável e dar um loop nela com todos os pinos colocando em input mode, teria o mesmo efeito.
MAs de qualquer forma a idea é interessante, vamos pensar uma maneira de implementar