{"id":512,"date":"2024-03-06T14:31:13","date_gmt":"2024-03-06T17:31:13","guid":{"rendered":"https:\/\/utfpr.curitiba.br\/lassip\/?p=512"},"modified":"2024-03-13T16:36:00","modified_gmt":"2024-03-13T19:36:00","slug":"tutorial-lendo-orientacao-espacial-do-celular-android","status":"publish","type":"post","link":"https:\/\/utfpr.curitiba.br\/lassip\/2024\/03\/06\/tutorial-lendo-orientacao-espacial-do-celular-android\/","title":{"rendered":"[Tutorial] Lendo orienta\u00e7\u00e3o espacial do celular (Android)"},"content":{"rendered":"\n<p>O tutorial a seguir ensina a fazer isso:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Lendo orienta\u00e7\u00e3o espacial do celular\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/Vcp8mxcGUIY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Basicamente, trata-se de acessar as informa\u00e7\u00f5es de orienta\u00e7\u00e3o 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\u00e9s dele. Esse script acessa o sensor inercial do celular usando o Termux API, e disponibiliza a orienta\u00e7\u00e3o espacial atualizada atrav\u00e9s 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\u00e7\u00e3o do celular por HTTP, e posiciona um objeto 3D feito com o visualizador 3D VPython. O diagrama abaixo ilustra a arquitetura da nossa implementa\u00e7\u00e3o.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"873\" height=\"544\" src=\"https:\/\/utfpr-ct-static-content.s3.amazonaws.com\/utfpr.curitiba.br\/wp-content\/uploads\/sites\/131\/2024\/03\/diagram-3.png\" alt=\"\" class=\"wp-image-525\" srcset=\"https:\/\/utfpr-ct-static-content.s3.amazonaws.com\/utfpr.curitiba.br\/wp-content\/uploads\/sites\/131\/2024\/03\/diagram-3.png 873w, https:\/\/utfpr-ct-static-content.s3.amazonaws.com\/utfpr.curitiba.br\/wp-content\/uploads\/sites\/131\/2024\/03\/diagram-3-300x187.png 300w, https:\/\/utfpr-ct-static-content.s3.amazonaws.com\/utfpr.curitiba.br\/wp-content\/uploads\/sites\/131\/2024\/03\/diagram-3-768x479.png 768w\" sizes=\"(max-width: 873px) 100vw, 873px\" \/><\/figure>\n\n\n\n<p>Siga os passos a seguir e nos avise caso algum passo n\u00e3o esteja funcionando bem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar o emulador de terminal Termux<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Instale o f-droid atrav\u00e9s da apk dispon\u00edvel no site <a href=\"https:\/\/f-droid.org\/en\/\">https:\/\/f-droid.org\/en\/<\/a><\/li>\n\n\n\n<li>Use o f-droid para instalar o Termux<\/li>\n\n\n\n<li>Use o f-droid para instalar o Termux API&nbsp;<\/li>\n\n\n\n<li>Abra o termux e rode o comando<br><strong>pkg install termux-api<\/strong><\/li>\n\n\n\n<li>Ainda no termux, verifique se o acesso aos dados de rota\u00e7\u00e3o est\u00e1 funcionando, rodando o comando<br><strong>termux-sensor -s &#8220;Rotation Vector&#8221; -n 30 -d 10<\/strong><\/li>\n\n\n\n<li>Atualize o Termux com o comando<br><strong>pkg upgrade<\/strong><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Habilitar o acesso por SSH no Termux<\/h2>\n\n\n\n<p>Esta etapa \u00e9 opcional, mas permite acesso ao terminal do Termux atrav\u00e9s de um PC, o que facilita muito as coisas. Adaptado de <a href=\"https:\/\/wiki.termux.com\/wiki\/Remote_Access\">https:\/\/wiki.termux.com\/wiki\/Remote_Access<\/a><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Instale o OpenSSH, rodando o comando<br><strong>pkg install openssh<\/strong><\/li>\n\n\n\n<li>Inicie o servidor SSH rodando o comando<br><strong>sshd<\/strong><\/li>\n\n\n\n<li>Certifique-se de que o Termux est\u00e1 atualizando, rodando o comando<br><strong>pkg upgrade<\/strong><\/li>\n\n\n\n<li>Crie um password (sen\u00e3o, n\u00e3o funciona), rodando o comando<br><strong>passwd<\/strong><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar o cliente OpenSSH no Windows&nbsp;<\/h2>\n\n\n\n<p>Esta etapa \u00e9 opcional, mas permite acesso ao terminal do Termux atrav\u00e9s de um PC, o que facilita muito as coisas.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Clique com o bot\u00e3o direito do mouse no bot\u00e3o Windows (Iniciar)<\/li>\n\n\n\n<li>Clique em <strong>Apps e Recursos<\/strong><\/li>\n\n\n\n<li>Clique em <strong>Recursos Opcionais<\/strong><\/li>\n\n\n\n<li>Verifique se, entre os recursos instalados, encontra-se o <strong>Cliente OpenSSH<\/strong><\/li>\n\n\n\n<li>Se o Cliente OpenSSH n\u00e3o estiver instalado:\n<ol class=\"wp-block-list\">\n<li>Clique em <strong>+ Adicionar um Recurso<\/strong><\/li>\n\n\n\n<li>Procure pelo recurso <strong>Cliente OpenSSH<\/strong>, selecione-o e intale-o<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Autenticar o acesso SSH a partir do Windows<\/h2>\n\n\n\n<p>Esta etapa \u00e9 opcional, mas permite acesso ao terminal do Termux atrav\u00e9s de um PC, o que facilita muito as coisas. Adaptado de <a href=\"https:\/\/www.chrisjhart.com\/Windows-10-ssh-copy-id\/\">https:\/\/www.chrisjhart.com\/Windows-10-ssh-copy-id\/<\/a><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Certifique -se de que o servidor SSHe esteja ativo no Termux, simplesmente rodando o comando <strong>sshd<\/strong>&nbsp;<\/li>\n\n\n\n<li>Certifique-se que o PC e o celular estejam na mesma rede Wi-Fi<\/li>\n\n\n\n<li>Verifique qual \u00e9 o IP do celular, rodando no Termux o comando<br><strong>ifconfig<\/strong><\/li>\n\n\n\n<li>Abra o Windows <strong>PowerShell<\/strong><\/li>\n\n\n\n<li>No Windows PowerShell, crie uma chave SSH rodando o comando<br><strong>ssh-keygen<\/strong>\n<ol class=\"wp-block-list\">\n<li>Ser\u00e1 solicitado o nome do arquivo. Apenas tecle <strong>Enter<\/strong>.<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Ainda no Windows PowerShell, envie para o celular a chave criada, rodando o comando<br><strong>type $env:USERPROFILE\\.ssh\\id_rsa.pub | ssh -p 8022 <\/strong><strong><em>IP_DO_SEU_CELULAR<\/em><\/strong><strong> &#8220;cat &gt;&gt; .ssh\/authorized_keys&#8221;<\/strong>\n<ol class=\"wp-block-list\">\n<li>Substitua <em>IP_DO_SEU_CELULAR<\/em> pelo IP encontrado atrav\u00e9s do ifconfig<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Teste o acesso remoto por SSH rodando no PowerShell o comando<br><strong>ssh -p 8022 IP_DO_SEU_CELULAR<\/strong>\n<ol class=\"wp-block-list\">\n<li>Nas pr\u00f3ximas vezes, para fazer o acesso remoto, voc\u00ea executar\u00e1 somente esta \u00faltima etapa. Caso receba a mensagem &#8220;connection refused&#8221;, execute novamente o comando <strong>sshd<\/strong> no Termux para ligar o servidor SSH<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Agora voc\u00ea pode executar todos os pr\u00f3ximos passos a partir de um PC<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar o python no Termux<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abra o termux<\/li>\n\n\n\n<li>Rode o comando <strong>pkg install python<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar os pacotes python necess\u00e1rios no Termux<\/h2>\n\n\n\n<p>Instale o flask (servidor web):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Rode os seguintes comandos:<br><strong><s>python3 -m pip install &#8211;upgrade pip<\/s><\/strong><br><strong>pip install flask<\/strong><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar o ftpd (servidor FTP) no Termux<\/h2>\n\n\n\n<p>O acesso FTP serve para enviar os arquivos python para o celular e para acessar os dados gerados pelos programas. Adaptado de <a href=\"https:\/\/wiki.termux.com\/wiki\/Remote_Access\">https:\/\/wiki.termux.com\/wiki\/Remote_Access<\/a><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Instale o termux-services, rodando o comando<br><strong>pkg install busybox termux-services<\/strong><\/li>\n\n\n\n<li>Rode o comando<br><strong>source $PREFIX\/etc\/profile.d\/start-services.sh<\/strong><\/li>\n\n\n\n<li>Reinicialize a sess\u00e3o\n<ol class=\"wp-block-list\">\n<li>Saia do Termux, rodando o comando<br><strong>exit<\/strong><\/li>\n\n\n\n<li>Abra novamente o Termux<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Habilite o ftpd, rodando os seguintes comandos:<br><strong>sv-enable ftpd<\/strong><strong><br><\/strong><strong>sv up ftpd<\/strong><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar o FileZilla (cliente FTP) no Windows<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Instale o FileZilla: <a href=\"https:\/\/filezilla-project.org\/\">https:\/\/filezilla-project.org\/<\/a><\/li>\n\n\n\n<li>No FileZilla, conecte ao IP do seu celular pela porta 8021<\/li>\n\n\n\n<li>Envie algum script python para o celular e rode a partir do Termux<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Exemplo: disponibilizando quaternion via servidor web<\/h2>\n\n\n\n<p>O exemplo a seguir realiza a disponibiliza\u00e7\u00e3o em tempo real do quaternion de orienta\u00e7\u00e3o do celular atrav\u00e9s do servidor web Flask.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Envie o script <a href=\"https:\/\/drive.google.com\/file\/d\/1F4GvHsev-DNqqtCQI4LnUKXgtxLhDw_B\/view?usp=sharing\"><strong>quaternion_server.py<\/strong><\/a> para o celular atrav\u00e9s de FTP<\/li>\n\n\n\n<li>Deixe o Termux ativo na tela do celular. Isso \u00e9 necess\u00e1rio para que o script consiga acessar os sensores atrav\u00e9s do Termux API. Voc\u00ea pode acessar o console por SSH, mas uma inst\u00e2ncia do console deve estar aberta na tela do celular, e a tela deve estar desbloqueada.<\/li>\n\n\n\n<li>Rode o script, executando seguinte comando<br><strong>python quaternion_server.py&nbsp;<\/strong><\/li>\n\n\n\n<li>A partir de um navegador web, acesse o endere\u00e7o<br><strong>http:\/\/IP_DO_SEU_CELULAR:5000\/vector<\/strong><br>e veja o valor atual do quaternion no navegador<\/li>\n\n\n\n<li>Rode no PC o script <a href=\"https:\/\/drive.google.com\/file\/d\/1-swNza0Uvkk5_g2hAbblP0MdtMJlqDRx\/view?usp=sharing\">quaternion_client.py<\/a> que usa requisi\u00e7\u00f5es HTTP para acessar os quaternions<\/li>\n\n\n\n<li>Se voc\u00ea tem o vpython instalado no PC, outro exemplo interessante de de cliente \u00e9 o <a href=\"https:\/\/drive.google.com\/file\/d\/1AGLcGXxrNmHGRdSrN3lvpDbRr7rtXeQY\/view?usp=sharing\">quaternionVpython.py<\/a><\/li>\n<\/ol>\n\n\n\n<p><strong><em>Update<\/em><\/strong>: um estudante me enviou este misterioso v\u00eddeo:<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"850\" style=\"aspect-ratio: 478 \/ 850;\" width=\"478\" controls src=\"https:\/\/utfpr-ct-static-content.s3.amazonaws.com\/utfpr.curitiba.br\/wp-content\/uploads\/sites\/131\/2024\/03\/WhatsApp-Video-2024-03-13-at-15.58.17.mp4\"><\/video><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>O tutorial a seguir ensina a fazer isso: Basicamente, trata-se de acessar as informa\u00e7\u00f5es de orienta\u00e7\u00e3o espacial do celular a<\/p>\n","protected":false},"author":44,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[1],"tags":[],"class_list":["post-512","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/posts\/512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/comments?post=512"}],"version-history":[{"count":8,"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/posts\/512\/revisions"}],"predecessor-version":[{"id":533,"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/posts\/512\/revisions\/533"}],"wp:attachment":[{"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/media?parent=512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/categories?post=512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/utfpr.curitiba.br\/lassip\/wp-json\/wp\/v2\/tags?post=512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}