5. Raspberry Pi

Nesta seção vamos disponibilizar informações sobre a instalação e configuração de uma placa Raspberry Pi modelo B+.

5.1. Instalação do Raspbian

Inicialmente preparei um cartão micro SD (Tutorial: SD Cards and Writing Images - SparkFun) para gravar o instalador NOOBS (New Out Of the Box Software) usando o slot que estava disponível no meu nobebook conforme descrito na seção: como montar SD Card.

O NOOBS é um instalador que facilita a instalação de um sistema operacional para a placa Raspberry Pi. Ele já vem com o sistema Raspbian e pode ser baixado em www.raspberrypi.org/downloads/raspbian/.

O Raspbian é um sistema Linux baseado no Debian que foi portado para a arquitetura da placa Raspberry Pi.

Particionei e formatei o cartão SD como FAT32 usando o Gparted, mas se preferir pode usar o fdisk.

Removi a partição existente no cartão SD e criei nova partição ocupando todo o disco formatada como FAT32.

Em seguida baixei o arquivo NOOBS_v2_1_0.zip (consulte a última versão na página de download do NOOBS) e verifiquei a integridade do arquivo com o comando sha1sum:

sha1sum NOOBS_v2_1_0.zip

e comparando com a string disponível na página www.raspberrypi.org/downloads/noobs/.

Depois de verificar a integridade do arquivo, descompactei e copiei os arquivos descompactados para o cartão micro SD que estava no slot do nobebook.

Em seguida coloquei o cartão SD no slot (embaixo da placa), o mouse e o teclado nas portas USB, e no conector HDMI um adaptador HDMI-VGA ligado a um monitor VGA, e conectei a fonte da alimentação ao conector PWR IN.

Fiquei esperando mas não aparecia imagem no monitor e o LED indicador de energia (PWR) ficou piscando.

Depois de quebrar a cabeça algum tempo descobri que o problema era a potência insuficiente da fonte e o adaptador de vídeo HDMI-VGA.

Atenção

A placa, fonte de alimentação e adaptador HDMI-VGA foram comprados em um único lote no site www.lojamundi.com.br.

Fiz essa compra no mesmo site com a promessa que os acessórios eram compatíveis com o modelo da Raspberry Pi B+, mas me dei mal. :-(

Por sorte eu tinha uma outra fonte e adaptador que havia comprado para outra placa Raspberry mais antiga (Modelo B), e esses acessórios funcionaram na placa mais nova. :-)

Figura 2. Fonte de alimentação comprada na www.lojamundi.com.br que NÃO funcionou com o Raspberry Pi B+, conforme o anúncio!

Fonte de alimentação comprada na www.lojamundi.com.br que NÃO funcionou com o Raspberry Pi B+, conforme o anúncio!

Figura 3. Fonte de alimentação que funcionou com o Raspberry Pi B+ (Fonte: http://newportcom.com.br)

Fonte de alimentação que funcionou com o Raspberry Pi B+ (Fonte: http://newportcom.com.br)

Figura 4. Adaptador HDMI-VGA comprado na www.lojamundi.com.br que NÃO funcionou com o Raspberry Pi B+, conforme o anúncio!

Adaptador HDMI-VGA comprado na www.lojamundi.com.br que NÃO funcionou com o Raspberry Pi B+, conforme o anúncio!

Figura 5. Adaptador HDMI-VGA que funcionou com a placa Raspberry Pi B+

Adaptador HDMI-VGA que funcionou com a placa Raspberry Pi B+

Felizmente a fonte e o adaptador HDMI-VGA comprados na www.lojamundi.com.br funcionaram com a placa Raspberry mais antiga (Modelo B).

Os tutoriais Identifying Your Model of Raspberry Pi e How To Identify Which Model Of The Raspberry Pi You Have contêm muitas informações para identificar os diferentes modelos de Raspberry Pi.

Figura 6. Modelos A, A+, B e B+ da placa Raspberry Pi (Fonte:How To Identify Which Model Of The Raspberry Pi You Have)

Modelos A, A+, B e B+ da placa Raspberry Pi (Fonte:How To Identify Which Model Of The Raspberry Pi You Have)

Depois de colocar o cartão Micro SD, teclado, mouse, adaptador HDMI-VGA/monitor, ligamos a fonte no conector de alimentação (PWR IN) para o primeiro boot e fazer a instalação.

Fizemos a instalção e sem problemas e tivemos acesso à interface gráfica:

Figura 7. Tela inicial após o primeiro boot

Tela inicial após o primeiro boot

Atenção

É muito comum ter problemas com fontes de alimentação que não oferecem uma potência suficiente para o correto funcionamento das placas Raspberry.

Para verificar a tensão da fonte de alimentação fiz alguns testes seguindo o tutorial 5 Fun Raspberry Pi Projects: Getting Started.

5.2. Instalação da Tcl/Tk

Para programar com a minha linguagem preferida me loguei como root com o comando sudo su - e instalei os pacotes:

root@raspberrypi:~# apt-get install tcl8.5 tcl8.5-dev tcl8.5-doc
root@raspberrypi:~# apt-get install tk8.5 tk8.5-dev tk8.5-doc

5.3. Instalação do banco de dados Metakit

Para instalar o banco de dados Metakit baixei o arquivo https://github.com/jcw/metakit/archive/master.zip, descompactei com o comando:

pi@raspberrypi:~$ unzip metakit-master.zip

Entrei no diretório metakit-master:

pi@raspberrypi:~$ cd metakit-master

E conforme orientações do arquivo README executei os comandos:

pi@raspberrypi:~$ mkdir tbuild

Dica

O nome do diretório (tbuild) é arbitrário.

pi@raspberrypi:~$ cd tbuild
pi@raspberrypi:~$ CC=g++ sh ../tcl/configure

Mas ao rodar o comando CC=g++ sh ../tcl/configure, apareceu o erro:

checking for correct TEA configuration... ok (TEA 3.6)
checking for Tcl configuration... configure: WARNING: Can't find Tcl configuration definitions

Me loguei como root e procurei pelo local com o arquivo tcl.h:

  pi@raspberrypi:~/Metakit/metakit-master/tbuild $ sudo su - 
  root@raspberrypi:~# find / -name tcl.h
  /usr/include/tcl8.5/tcl.h
  /usr/include/tcl8.5/tcl-private/generic/tcl.h

Mas ao rodar com a nova opção apareceu a mensagem que não encontrava o arquivo tclConfig.sh

pi@raspberrypi:~/Metakit/metakit-master/tbuild $ CC=g++ sh ../tcl/configure --with-tcl=/usr/include/tcl8.5
checking for correct TEA configuration... ok (TEA 3.6)
checking for Tcl configuration... configure: error: 
/usr/include/tcl8.5 directory doesn't contain tclConfig.sh

Então me loguei novamente como root e procurei esse arquivo:

pi@raspberrypi:~/Metakit/metakit-master/tbuild $ sudo su - 
root@raspberrypi:~# find / -name tclConfig.sh
/usr/lib/tcl8.5/tclConfig.sh
/usr/lib/arm-linux-gnueabihf/tcl8.5/tclConfig.sh

E finalmente rodei o comando sem erros:

pi@raspberrypi:~/Metakit/metakit-master/tbuild $ CC=g++ sh ../tcl/configure --with-tcl=/usr/lib/tcl8.5

Em seguida executei o comando:

pi@raspberrypi:~/Metakit/metakit-master/tbuild $ make

Mas ao rodar o teste apareceu uma mensagem de erro:

  make test
TCL_LIBRARY=`echo /usr/include/tcl8.5/tcl-private/library` LD_LIBRARY_PATH=".:/usr/lib/tcl8.5:" PATH=".:/usr/lib/tcl8.5:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games" TCLLIBPATH="." /usr/bin/tclsh8.5 `echo ../tcl/tests/all.tcl` 
Tests running in interp:  /usr/bin/tclsh8.5
Tests located in:  /home/pi/Metakit/metakit-master/tcl/tests
Tests running in:  /home/pi/Metakit/metakit-master/tbuild
Temporary files stored in /home/pi/Metakit/metakit-master/tbuild
Test files sourced into current interpreter
Running tests that match:  *
Skipping test files that match:  l.*.test
Only running test files that match:  *.test
Tests began at Fri Dec 16 17:53:38 UTC 2016
basic.test
commit.test


==== 1 simple commit aside FAILED
==== Contents of test case:

  file delete $f $g

  mk::file open db $f
  mk::view layout db.a i:I
  mk::row append db.a i 111
  mk::row append db.a i 222
  mk::row append db.a i 333
  mk::file close db

  mk::file open db $f -readonly
  mk::file open dba $g

  equal [mk::view size db.a] 3
  mk::file aside db dba
  equal [mk::view size db.a] 3

  mk::row append db.a i 444
  mk::row append db.a i 555

  equal [mk::view size db.a] 5
  mk::file commit db
  mk::file commit dba
  equal [mk::view size db.a] 5

  mk::row append db.a i 666
  equal [mk::view size db.a] 6

  mk::file rollback db
  equal [mk::view size db.a] 5
  mk::file rollback db -full
  equal [mk::view size db.a] 3

  mk::file close db
  mk::file close dba

  mk::file open db $f -readonly
  equal [mk::view size db.a] 3

  equal [mk::get db.a!0 i] 111
  equal [mk::get db.a!1 i] 222
  equal [mk::get db.a!2 i] 333

  mk::file open dba $g -readonly
  mk::file aside db dba
  equal [mk::view size db.a] 5

  equal [mk::get db.a!0 i] 111
  equal [mk::get db.a!1 i] 222
  equal [mk::get db.a!2 i] 333
  equal [mk::get db.a!3 i] 444
  equal [mk::get db.a!4 i] 555

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: expected 3 got 5
    while executing
"equal [mk::view size db.a] 5"
    ("uplevel" body line 24)
    invoked from within
"uplevel 1 $script"
---- errorCode: NONE
==== 1 FAILED

fixed.test
limit.test
object.test

Tests ended at Fri Dec 16 17:53:45 UTC 2016
all.tcl:	Total	46	Passed	45	Skipped	0	Failed	1
Sourced 5 Test Files.
Files with failing tests: commit.test

Não consegui identificar a causa ou a gravidade dessa mensagem de erro, mas testei a execução de um programa (Multipar 04) que utiliza essa biblioteca e aparentemente funcionou normalmente.

Resolvi instalar com o comando:

pi@raspberrypi:~$ make install

Resolvi pedir ajuda no fórum comp.lang.tcl e diretamente no fórum do desenvolvedor do Metakit Jean Claude Wipler. Mas o próprio desenvolvedor alegou que está a mais de 10 anos sem mexer nesse programa. :-(

Percebi que já era hora de começar a usar uma outra ferramenta de banco de dados e comecei a estudar o SQLite.

5.4. Instalação do pacote Tklib

O pacote Tklib é uma coleção de pacotes com utilitários para a programação de Interfaces Gráficas (GUI).

O meu interesse mais imediato é o pacote Plotchart que facilita a exibição de gráficos.

O Tklib é instalado com o comando:

pi@raspberrypi:~# apt-get install tklib

5.5. Instalação do Scrot e ImageMagick

Tive que capturar a tela e seguindo a dica How to printscreen on Raspberry Pi? resolvi instalar o programa Scrot com o comando:

pi@raspberrypi:~# apt-get install scrot

Para capturar tela após 5s e salvar no diretório local do usuário:

pi@raspberrypi:~$ scrot -d5

E para instalar o programa ImageMagick basta o comando:

pi@raspberrypi:~# apt-get install imagemagick