Mindstorms EV3 voice control com MIT App Inventor 2

Para os mais especializados em mecânica e electrónica em LEGO.
Responder
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4558
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Mindstorms EV3 voice control com MIT App Inventor 2

Mensagem por CyberX »

Continuando no esforço inglório de dinamizar o fórum, aqui segue uma explicação muito básica de como controlar LEGO Mindstorms EV3 com a voz:

Requisitos:
- tlm ou tablet Android com Bluetooth normal
- Mindstorms EV3 (tb é possível WeDo 2.0 mas ainda não cheguei lá)
- computador com acesso à Net (talvez apenas um tablet com um tamanho decente chegue)

Ir à App Store da Google e instalar o MIT App Inventor 2 Companion - não é obrigatório mas dá jeito.
Aceder por browser à aplicação na Cloud (http://ai2.appinventor.mit.edu/) e começar um novo projecto.

Um projecto tem uma parte "Design" onde arranjamos os objectos que vamos usar e uma parte "Blocks" onde construímos o nosso programa usando os blocos disponibilizados por cada objecto limitando-nos a parametrizâ-los e encaixá-los nos sítios certos. Quase LEGO.

No meu caso, para fazer a Aplicação que controla um motor EV3 com a voz como no video que esta manhã publiquei:


são estes os objectos:

Imagemvoicecontrol-01 by Jorge Pereira, on Flickr


e estes os blocos:
Imagemvoicecontrol-02 by Jorge Pereira, on Flickr

Os objectos são:
The designer part of the App:
- 1 TableArrangement com outros 5 objectos lá dentro, dispostos em grelha:
- 1 ListPicker ("Connect")
- 3 Buttons ("Disconnect", "Press+speak" and "Shoot")
- 1 Label
- 1 BluetoothClient
- 1 EV3Motor
- 1 SpeechRecognizer
- 1 Clock
- 1 TextToSpeech

O ListPicker interage com o BluetoothClient para descobrir e conectar o EV3 (que é um EV3 normalíssimo saído da caixa, só foi activada a conectividade Bluetooth - desta vez não uso ev3dev nem wi-fi).
O botão "Press+Speak" interage como o EV3Motor para disparar o canhão cada vez que é dito "fire".
O botão "Shoot" faz o mesmo da maneira clássica.
O botão "Disconnect" termina a sessão Bluetooth.
O Label e o TextToSpeech são usados para apresentar mensagens de texto e lê-las em voz alta.
O relógio é usado para controlar o tempo durante o qual as mensagens de texto são apresentadas.

Já a parte do código não está lá muito bem arrumadas mas faz essencialmente isto:

Quando o utilizar prime "Connect" é-lhe mostrado uma lista com todos os EV3 ao alcance e é estabelecida uma sessão Bluetooth com aquele que for escolhido. Depois disso o botão "Press+Speak" é activado (já o botão "Shoot" está sempre activo... wrong!).

Quando "Press+Speak" é premido o Android pede uma voz de comando. Se "fire" é reconhecido, a App responde "Aye aye, sir!" e dispara o canhão. Se não reconhecer "fire" responde apenas "Sorry?"

Depois é só transferir a App para o Android. Eu costumo usar o Companion de modo que na aplicação online escolho para ser gerado um código de 6 caracteres (tb pode ser um QR Code) que o Companion encarrega-se da transferência e depois da execução.

Quando estou satisfeito crio um APK, é gerado um QR Code que uso para descarregar para o Android e instalar em definitivo no Android.

Hackers de todo o país... vamos ao Hacathon?
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
gads
Administrator
Administrator
Mensagens: 6370
Registado: 11 set 2006, 23:58
Localização: Oeiras

Re: Mindstorms EV3 voice control com MIT App Inventor 2

Mensagem por gads »

Está muito fixe :)
Não conhecia este MIT App Inventor.

Embora neste momento tenho de ver como cumprir os requisitos mínimos... Não tenho EV3 nem Android :P
Guilherme Santos
www.historybricks.com
Avatar do Utilizador
PocasNuckie
Sócio
Sócio
Mensagens: 7882
Registado: 10 mar 2007, 19:12
Localização: Miranda do Corvo
Contacto:

Re: Mindstorms EV3 voice control com MIT App Inventor 2

Mensagem por PocasNuckie »

Eu Android tenho, não tenho é EV3 nem dinheiro para um. :'(

Gosto desse tipo de programação do MIT App Inventor, faz-me lembrar os programas de Data Mining que usei no projecto de final de curso que também é tudo à base de drag, drop and connect de blocos já existentes.  :fixe:
Imagem
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4558
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Mindstorms EV3 voice control com MIT App Inventor 2

Mensagem por CyberX »

[member=96]PocasNuckie[/member]  vê lá que o meu mais velho já o ano passado mexia um bocadinho com o Scratch na escola (3a classe) que é muito parecido

O MIT desenvolveu uma série de ambientes de programação (eu não lhe chamaria linguagens) com aspecto semelhante - o Scratch e o App Inventor são os mais conhecidos, o Scratch por ter sido adoptado pela Fundação Raspberry Pi e o App Inventor pela Google.

A parte gira é que isto passou pela Disney como Squeak (http://squeak.org/) que faz já 20 anos e a própria Disney foi buscar ao Smalltalk do Xerox PARC nos anos 70... o mesmo sítio onde o Steve Jobs foi buscar o rato e a ideia de um sistema operativo com janelas.

[member=96]PocasNuckie[/member] e [member=21]gads[/member] Não ter EV3 não me parece problemático, podemos avançar em duas frentes - uma framework física e outra de software, quem não tiver EV3 ajuda no software e nas ideias.
Não ter Android tb não é problema nenhum, há VM's de Android pelo que deve ser possível ter uma VM em OSX (em Ubuntu tive em tempos) como neste tutorial para VirtualBox.

E mesmo sem Android, o "IDE" do App Inventor é online por browser... qualquer um pode criar um bloco de código e partilhar com outro ou criar um projecto completo, gerar uma apk e enviar a outro ou enviar apenas o projecto para que outro crie a apk.

E continuo aberto a outras plataformas de desenvolvimento, embora a conectividade final importe muito - temos sempre de ter um "controlador", pode não ser o EV3 mas vai ser mais dificil arranjar uma plataforma que suporte Power Functions IR ou NXT ou RCX ou WeDo... mais fácilmente faziamos o nosso próprio controlador (com Arduino ou Raspberry Pi).
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Responder