[Tutorial] Lendo orientação espacial do celular (Android)
O tutorial a seguir ensina a fazer isso:
Basicamente, trata-se de acessar as informações de orientação espacial do celular a partir do computador. Para tanto, utilizamos um emulador de terminal Linux para Android chamado Termux, e rodamos um pequeno script Python através dele. Esse script acessa o sensor inercial do celular usando o Termux API, e disponibiliza a orientação espacial atualizada através de um mini servidor web implementado com o pacote Flask. Do lado do PC, fizemos como exemplo um script que fica continuamente acessando a informação do celular por HTTP, e posiciona um objeto 3D feito com o visualizador 3D VPython. O diagrama abaixo ilustra a arquitetura da nossa implementação.
![](https://utfpr-ct-static-content.s3.amazonaws.com/utfpr.curitiba.br/wp-content/uploads/sites/131/2024/03/diagram-3.png)
Siga os passos a seguir e nos avise caso algum passo não esteja funcionando bem.
Instalar o emulador de terminal Termux
- Instale o f-droid através da apk disponível no site https://f-droid.org/en/
- Use o f-droid para instalar o Termux
- Use o f-droid para instalar o Termux API
- Abra o termux e rode o comando
pkg install termux-api - Ainda no termux, verifique se o acesso aos dados de rotação está funcionando, rodando o comando
termux-sensor -s “Rotation Vector” -n 30 -d 10 - Atualize o Termux com o comando
pkg upgrade
Habilitar o acesso por SSH no Termux
Esta etapa é opcional, mas permite acesso ao terminal do Termux através de um PC, o que facilita muito as coisas. Adaptado de https://wiki.termux.com/wiki/Remote_Access
- Instale o OpenSSH, rodando o comando
pkg install openssh - Inicie o servidor SSH rodando o comando
sshd - Certifique-se de que o Termux está atualizando, rodando o comando
pkg upgrade - Crie um password (senão, não funciona), rodando o comando
passwd
Instalar o cliente OpenSSH no Windows
Esta etapa é opcional, mas permite acesso ao terminal do Termux através de um PC, o que facilita muito as coisas.
- Clique com o botão direito do mouse no botão Windows (Iniciar)
- Clique em Apps e Recursos
- Clique em Recursos Opcionais
- Verifique se, entre os recursos instalados, encontra-se o Cliente OpenSSH
- Se o Cliente OpenSSH não estiver instalado:
- Clique em + Adicionar um Recurso
- Procure pelo recurso Cliente OpenSSH, selecione-o e intale-o
Autenticar o acesso SSH a partir do Windows
Esta etapa é opcional, mas permite acesso ao terminal do Termux através de um PC, o que facilita muito as coisas. Adaptado de https://www.chrisjhart.com/Windows-10-ssh-copy-id/
- Certifique -se de que o servidor SSHe esteja ativo no Termux, simplesmente rodando o comando sshd
- Certifique-se que o PC e o celular estejam na mesma rede Wi-Fi
- Verifique qual é o IP do celular, rodando no Termux o comando
ifconfig - Abra o Windows PowerShell
- No Windows PowerShell, crie uma chave SSH rodando o comando
ssh-keygen- Será solicitado o nome do arquivo. Apenas tecle Enter.
- Ainda no Windows PowerShell, envie para o celular a chave criada, rodando o comando
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh -p 8022 IP_DO_SEU_CELULAR “cat >> .ssh/authorized_keys”- Substitua IP_DO_SEU_CELULAR pelo IP encontrado através do ifconfig
- Teste o acesso remoto por SSH rodando no PowerShell o comando
ssh -p 8022 IP_DO_SEU_CELULAR- Nas próximas vezes, para fazer o acesso remoto, você executará somente esta última etapa. Caso receba a mensagem “connection refused”, execute novamente o comando sshd no Termux para ligar o servidor SSH
- Agora você pode executar todos os próximos passos a partir de um PC
Instalar o python no Termux
- Abra o termux
- Rode o comando pkg install python
Instalar os pacotes python necessários no Termux
Instale o flask (servidor web):
- Rode os seguintes comandos:
python3 -m pip install –upgrade pip
pip install flask
Instalar o ftpd (servidor FTP) no Termux
O acesso FTP serve para enviar os arquivos python para o celular e para acessar os dados gerados pelos programas. Adaptado de https://wiki.termux.com/wiki/Remote_Access
- Instale o termux-services, rodando o comando
pkg install busybox termux-services - Rode o comando
source $PREFIX/etc/profile.d/start-services.sh - Reinicialize a sessão
- Saia do Termux, rodando o comando
exit - Abra novamente o Termux
- Saia do Termux, rodando o comando
- Habilite o ftpd, rodando os seguintes comandos:
sv-enable ftpd
sv up ftpd
Instalar o FileZilla (cliente FTP) no Windows
- Instale o FileZilla: https://filezilla-project.org/
- No FileZilla, conecte ao IP do seu celular pela porta 8021
- Envie algum script python para o celular e rode a partir do Termux
Exemplo: disponibilizando quaternion via servidor web
O exemplo a seguir realiza a disponibilização em tempo real do quaternion de orientação do celular através do servidor web Flask.
- Envie o script quaternion_server.py para o celular através de FTP
- Deixe o Termux ativo na tela do celular. Isso é necessário para que o script consiga acessar os sensores através do Termux API. Você pode acessar o console por SSH, mas uma instância do console deve estar aberta na tela do celular, e a tela deve estar desbloqueada.
- Rode o script, executando seguinte comando
python quaternion_server.py - A partir de um navegador web, acesse o endereço
http://IP_DO_SEU_CELULAR:5000/vector
e veja o valor atual do quaternion no navegador - Rode no PC o script quaternion_client.py que usa requisições HTTP para acessar os quaternions
- Se você tem o vpython instalado no PC, outro exemplo interessante de de cliente é o quaternionVpython.py
Update: um estudante me enviou este misterioso vídeo: