{"id":455,"date":"2014-06-30T12:47:41","date_gmt":"2014-06-30T11:47:41","guid":{"rendered":"http:\/\/ofalcao.pt\/blog\/?p=455"},"modified":"2014-06-30T12:47:41","modified_gmt":"2014-06-30T11:47:41","slug":"caixa-de-musica-lego-o-software","status":"publish","type":"post","link":"https:\/\/ofalcao.pt\/blog\/2014\/caixa-de-musica-lego-o-software","title":{"rendered":"Caixa de m\u00fasica LEGO &#8211; o software"},"content":{"rendered":"<div class=\"seriesmeta\">This post is part 2 of 2 of \u00a0<a href=\"https:\/\/ofalcao.pt\/blog\/series\/caixa-de-musica-lego\" class=\"series-123\" title=\"Caixa de M\u00fasica LEGO\">Caixa de M\u00fasica LEGO<\/a><\/div><h1>T\u00f3picos:<\/h1>\n<ul>\n<li>Pr\u00e9-requisitos<\/li>\n<li>Prepara\u00e7\u00e3o do cart\u00e3o SD<\/li>\n<li>Configura\u00e7\u00f5es do sistema<\/li>\n<li>Script em python<\/li>\n<li>Automatismo<\/li>\n<li>V\u00e1rios<\/li>\n<\/ul>\n<h1>Pr\u00e9-requisitos<\/h1>\n<p>Conv\u00e9m ter um cart\u00e3o SD com capacidade 4 GB ou superior, categoria 4 ou superior. O cart\u00e3o pode ser micro- ou mini-SD desde que se disponha de um adaptador para o formato SD.<\/p>\n<p>\u00c9 tamb\u00e9m necess\u00e1rio um computador equipado para lidar com cart\u00f5es SD ou ent\u00e3o um adaptador SD USB.<\/p>\n<p>Estas indica\u00e7\u00f5es s\u00e3o para um sistema Linux (mais concretamente Ubuntu 14.04). N\u00e3o \u00e9 dif\u00edcil adaptar para um sistema Windows mas j\u00e1 h\u00e1\u00a0 muito n\u00e3o uso nenhum.<\/p>\n<h1>Prepara\u00e7\u00e3o do cart\u00e3o SD<\/h1>\n<p>\u00c9 necess\u00e1rio um sistema operativo para Raspberry Pi. Eu prefiro o Raspbian por ser baseado em Debian tal como o Ubuntu que venho utilizando h\u00e1 j\u00e1 alguns anos. A <a title=\"Raspberry Pi Foundation: latest Raspbian\" href=\"http:\/\/downloads.raspberrypi.org\/raspbian_latest\">vers\u00e3o mais recente<\/a> est\u00e1 sempre dispon\u00edvel na Raspberry Pi Foundation &#8211; o ficheiro .zip cont\u00e9m um ficheiro \u00fanico, uma imagem de um cart\u00e3o inteiro pronto a usar (na vers\u00e3o de Junho de 2014 a imagem tem 3.0 GB pelo que um cart\u00e3o de 4 GB continua a ser suficiente).<\/p>\n<p>O Ubuntu tem uma aplica\u00e7\u00e3o gr\u00e1fica &#8220;Disks&#8221; (na linha de comando &#8220;gnome-disks&#8221;) que permite entre outras coisas escrever imagens. Seleccionamos o cart\u00e3o SD (qualquer coisa como &#8220;4 GB Block Device | \/dev\/mmcblk0&#8221;) e depois &#8220;Restore disk image&#8221; escolhendo o ficheiro .img do Raspbian.<\/p>\n<p>O cart\u00e3o tem agora duas parti\u00e7\u00f5es:<\/p>\n<ul>\n<li>BOOT<\/li>\n<li>2.9 GB Volume<\/li>\n<\/ul>\n<p>A primeira ser\u00e1 usada como &#8220;\/boot&#8221; e a segunda como &#8220;\/&#8221; como \u00e9 habitual ma maioria das instala\u00e7\u00f5es Linux. N\u00e3o existe a habitual parti\u00e7\u00e3o para swap porque [pelo menos no Raspbian] \u00e9 utilizado um ficheiro dentro de &#8220;\/&#8221;.<\/p>\n<p>Antes de colocar o cart\u00e3o no Raspberry \u00e9 necess\u00e1rio alterar alguns ficheiros para ter um sistema funcional. Se montamos a segunda parti\u00e7\u00e3o (&#8220;2.9 GB Volume&#8221;) como \/X precisamos criar ou editar 2 ficheiros:<\/p>\n<ul>\n<li>\/X\/etc\/hostname<\/li>\n<li><span style=\"color: #373737; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: 24.375px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none; background-color: #ffffff;\">\/etc\/network\/interfaces<\/span><\/li>\n<\/ul>\n<h2>sudo \/X\/etc\/hostname<\/h2>\n<p>Este ficheiro deve conter uma \u00fanica linha, com o nome pelo qual o sistema operativo vai responder:<\/p>\n<pre>caixademusica<\/pre>\n<h2>sudo \/X\/etc\/network\/interfaces<\/h2>\n<p>Este ficheiro cont\u00e9m a configura\u00e7\u00e3o da rede Wi-Fi:<\/p>\n<pre>auto lo\n\nallow-hotplug wlan0\niface wlan0 inet dhcp\n\u00a0\u00a0 wpa-ssid \"RedeWiFi\"\n\u00a0\u00a0 wpa-psk \"PasswordDaRedeWifi\"\n\niface default inet dhcp<\/pre>\n<p>Podemos mais tarde utilizar um endere\u00e7o IP est\u00e1tico em vez de recorrer ao cliente DHCP (deve acelerar <span style=\"text-decoration: underline;\">ligeiramente<\/span> o arranque e utilizar <span style=\"text-decoration: underline;\">ligeiramente<\/span> menos RAM). Neste exemplo defini s\u00f3 uma rede Wi-Fi mas \u00e9 poss\u00edvel definir v\u00e1rias, ver o meu artigo &#8220;<a href=\"http:\/\/ofalcao.pt\/blog\/2014\/raspberry-pi-headless-wireless\">Raspberry Pi \u2013 headless + wireless<\/a>&#8221; (para mim \u00e9 suficientemente uma \u00fanica rede j\u00e1 que tenho um <a title=\"D-Link: DIR-457 Portable 3G router\" href=\"http:\/\/www.dlink.com\/uk\/en\/home-solutions\/connect\/routers\/dir-457-portable-3g-router\">router 3G de\u00a0 bolso<\/a> configurado de forma semelhante \u00e0 rede de casa e assim quando levo um Raspberry Pi comigo para testes ou demonstra\u00e7\u00f5es uso sempre a mesma configura\u00e7\u00e3o).<\/p>\n<p>O cart\u00e3o j\u00e1 pode ser colocado no Raspberry Pi, podemos confirmar o endere\u00e7o IP na p\u00e1gina de configura\u00e7\u00e3o do router (se estivermos a usar DHCP) e aceder remotamente por SSH:<\/p>\n<pre>ssh pi@192.168.1.67<\/pre>\n<p>(&#8220;pi&#8221; \u00e9 o utilizador pr\u00e9-configurado no Raspbian &#8211; a password \u00e9 &#8220;raspberry&#8221;, conv\u00e9m alterar mais tarde com o comando &#8220;passwd&#8221; &#8211; e 192.168.1.67 \u00e9 o endere\u00e7o que no router aparece atribuido ao host &#8220;caixademusica&#8221;).<\/p>\n<h1>Configura\u00e7\u00f5es do sistema<\/h1>\n<p>Tendo acesso remoto \u00e0 Caixa de M\u00fasica \u00e9 necess\u00e1rio expandir o file system do cart\u00e3o de modo a utilizar toda a capacidade deste (como referi, at\u00e9 Junho de 2014 a imagem ocupa apenas 3 GB pelo que num cart\u00e3o de 4 GB fica 1 GB por alocar e que pode fazer falta)<\/p>\n<pre>sudo raspi-config<\/pre>\n<p>Escolher &#8220;Expand Filesystem&#8221; e no final se n\u00e3o for dada op\u00e7\u00e3o de reboot (n\u00e3o recordo) dar o comando<\/p>\n<pre>sudo reboot<\/pre>\n<p>No pr\u00f3ximo login o cart\u00e3o dever\u00e1 ter cerca de 1.4 GB dispon\u00edveis:<\/p>\n<pre>df -h\n\nFilesystem\u00a0\u00a0\u00a0\u00a0\u00a0 Size\u00a0 Used Avail Use% Mounted on\nrootfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3.6G\u00a0 2.0G\u00a0 <span style=\"color: #ff0000;\">1.4G<\/span>\u00a0 60% \/\n\/dev\/root\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3.6G\u00a0 2.0G\u00a0 1.4G\u00a0 60% \/\ndevtmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 211M\u00a0\u00a0\u00a0\u00a0 0\u00a0 211M\u00a0\u00a0 0% \/dev\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 44M\u00a0 232K\u00a0\u00a0 44M\u00a0\u00a0 1% \/run\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 5.0M\u00a0\u00a0\u00a0\u00a0 0\u00a0 5.0M\u00a0\u00a0 0% \/run\/lock\ntmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 88M\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0 88M\u00a0\u00a0 0% \/run\/shm\n\/dev\/mmcblk0p1\u00a0\u00a0 56M\u00a0\u00a0 19M\u00a0\u00a0 38M\u00a0 34% \/boot<\/pre>\n<p>J\u00e1 \u00e9 bastante mas como n\u00e3o vou utilizar ambiente gr\u00e1fico (desktop) posso libertar mais algum espa\u00e7o (cerca de 1.2 GB mais) e reduzir o peso de futuros updates com os dois comandos:<\/p>\n<pre>sudo apt-get --purge remove cups.* xserver.* x11.*\nsudo apt-get autoremove<\/pre>\n<p>Vamos agora actualizar o Raspbian para a \u00faltima vers\u00e3o de todos os pacotes instalados:<\/p>\n<pre>sudo apt-get update\nsudo apt-get dist-upgrade<\/pre>\n<p>E instalar as ferramentas necess\u00e1rias:<\/p>\n<pre>sudo apt-get install htop mpg321 mp3gain<\/pre>\n<ul>\n<li>htop n\u00e3o \u00e9 necess\u00e1rio mas gosto de utiliz\u00e1-lo em vez do top nativo.<\/li>\n<li>mpg321 \u00e9 um player n\u00e3o-gr\u00e1fico de ficheiros mp3 que vai servir para tocar a m\u00fasica que acompanha a \u00abbailarina\u00bb.<\/li>\n<li>mp3gain permite ajustar o ganho dos ficheiros mp3, muito \u00fatil quando estes parecem ouvir-se pior que a maioria dos restantes<\/li>\n<\/ul>\n<pre>sudo apt-get install python-pip python3-pip\nsudo pip install sh\nsudo pip3 install sh<\/pre>\n<ul>\n<li>sh \u00e9 uma library de python que permite invocar comandos da shell (do sistema operativo) e que vou usar no meu programa por isso preciso de instalar primeiro.<\/li>\n<li>pip \u00e9 um gestor de libraries para python (instalo duas vers\u00f5es &#8211; para python v2 e python v3 &#8211; provavelmente bastar\u00e1 a \u00faltima)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h1>Script em pyhton<\/h1>\n<p>[por completar]<\/p>\n<h1>Automatismo<\/h1>\n<p>[por completar]<\/p>\n<h1>V\u00e1rios<\/h1>\n<p>[por completar]<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"seriesmeta\">This post is part 2  of 2 of \u00a0<a href=\"https:\/\/ofalcao.pt\/blog\/series\/caixa-de-musica-lego\" class=\"series-123\" title=\"Caixa de M\u00fasica LEGO\">Caixa de M\u00fasica LEGO<\/a><\/div><p>T\u00f3picos: Pr\u00e9-requisitos Prepara\u00e7\u00e3o do cart\u00e3o SD Configura\u00e7\u00f5es do sistema Script em python Automatismo V\u00e1rios Pr\u00e9-requisitos Conv\u00e9m ter um cart\u00e3o SD com capacidade 4 GB ou superior, categoria 4 ou superior. O cart\u00e3o pode ser micro- ou mini-SD desde que se disponha de um adaptador para o formato SD. \u00c9 tamb\u00e9m necess\u00e1rio um computador equipado para &hellip; <a href=\"https:\/\/ofalcao.pt\/blog\/2014\/caixa-de-musica-lego-o-software\" class=\"more-link\">Continuar a ler<span class=\"screen-reader-text\"> &#8220;Caixa de m\u00fasica LEGO &#8211; o software&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[1],"tags":[],"series":[123],"class_list":["post-455","post","type-post","status-publish","format-standard","hentry","category-sem-categoria","series-caixa-de-musica-lego"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2Mhyv-7l","_links":{"self":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":0,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/posts\/455\/revisions"}],"wp:attachment":[{"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/media?parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/categories?post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/tags?post=455"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/ofalcao.pt\/blog\/wp-json\/wp\/v2\/series?post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}