Montagem do Pêndulo de Precisão: Gestão de software

From wwwelab
Jump to navigation Jump to search

EM CONSTRUÇÃO

Nesta página pode encontrar-se o ‘set’ de instruções e a maioria dos utilitários de software utilizados no controlador remoto da experiência, bem como a forma como este está ligado à Internet.

Software Raspberry

Gestão do Software

O computador Raspberry Pi faz a interface entre o microcontrolador da experiência e os servidores do e-lab. Sem ele, o acesso remoto não é possível. Assim, é essencial que este seja devidamente instalado e configurado para garantir uma elevada fiabilidade e segurança.

Instalação do Sistema Operativo

Ao iniciar com um cartão SD vazio, a primeira tarefa é instalar o Sistema Operativo (SO). Existem vários sistemas operativos que suportam o Raspberry Pi (RPi) e, em teoria, qualquer um dos que suportam o software necessário pode ser utilizado. Ainda assim, o uso do Raspbian é altamente recomendado. É o SO oficial da Fundação Raspberry Pi para todos os modelos RPi, tem uma vasta seleção de software suportado disponível nos repositórios oficiais e abundam tutoriais e guias, online e em outros meios.

As instruções abaixo deste ponto assumem a utilização do Raspbian. Outros SOs podem ter diferentes métodos de configuração.

Ao criar um novo cartão SD, deve ser instalada a última versão do sistema operativo. Isto assegura que o sistema vai funcionar com todas as correções de segurança e desempenho disponíveis. A última versão do Raspbian pode ser descarregada a partir deste deste link. Estão disponíveis três versões:

  • A versão lite contém a quantidade mínima de software necessária para arrancar o RPi. Nenhum software extra está incluído. Isto implica a falta de uma Interface Gráfica do Utilizador (IGU), o que significa que, se ligado a um ecrã, o RPi mostrará apenas uma linha de comando (como ilustrado).
  • A versão desktop contém o mesmo software que a versão lite mais o software necessário para utilizar uma IGU. Quando ligado a um ecrã, o RPi mostrará uma IGU (na imagem).
  • A versão desktop e de software recomendado contém o mesmo software que a versão desktop mais alguns softwares e utilitários pré-selecionados.

O mesmo software está disponível para instalação em todas as versões, o que significa que se pode começar com uma versão lite e mais tarde instalar todo o software incluído na versão desktop e de software recomendado. Se o RPi estiver a ser preparado para funcionar apenas como servidor para a experiência, recomenda-se que seja escolhida a versão lite ou desktop, uma vez que ter um SO que possua apenas o software necessário é mais seguro e melhora o desempenho e a capacidade de manutenção. Em particular, a versão lite é de especial interesse se o objetivo for utilizar o RPi sem display, visto que não inclui a IGU, que só é útil se utilizar um display.

A Fundação Raspberry Pi fornece instruções de instalação para o SO Raspbian aqui.

Depois da Instalação

Depois de instalado o SO, o cartão SD está pronto para arrancar o RPi. No entanto, antes de inserir o cartão SD no RPi, é necessário considerar como fazer a interface com o RPi. É possível fazê-lo através de dois métodos diferentes:

Usar o RPi através de um teclado, rato e monitor

Ao utilizar um teclado, rato e monitor, o RPi funciona tal como qualquer outro computador. Visto que é possível interagir com o RPi através do teclado, rato e monitor, o cartão SD pode ser inserido no RPi e o processo de arranque pode ser iniciado ligando o adaptador de alimentação ao RPi. Este é um procedimento mais simples mas mais caro devido ao hardware extra necessário. Não ligue o RPi à Internet antes de completar a configuração do SO, tal como descrito abaixo. Quando a configuração for bem sucedida, deverá ver um prompt a apresentar:

pi@raspberry:~ $

ou a interface gráfica habitual do utilizador do sistema operativo, dependendo da versão do Raspbian escolhida.

Avance para a seção Configuração do Sistema Operativo RPi.

Ligação ao RPi através de uma ligação SSH

Se não estiverem disponíveis um teclado, rato e monitor para utilizar e interagir com o RPi, ainda é possível interagir com este através da configuração do serviço SSH antes de inserir o cartão SD no RPi. O serviço SSH permite ligações com um RPi através de uma interface de rede, a partir da qual os comandos podem ser enviados. Isto faz uso do teclado, rato e monitor de um segundo computador (um computador portátil ou fixo já configurado, por exemplo). Para tal, o Raspberry Pi e o computador utilizado necessitam que a sua configuração de rede seja ajustada.

Para permitir externamente o serviço SSH no RPi:

  • Insira o cartão SD num computador, por exemplo, o utilizado para instalar o SO no cartão.
  • Após a instalação do SO, o cartão aparecerá nos computadores como sendo composto por duas unidades. Uma unidade mais pequena de algumas centenas de MBs e uma unidade maior de alguns GBs (dependendo do tamanho do cartão SD).
  • Na "drive" mais pequena, crie um ficheiro vazio chamado ssh. Isto permite o serviço SSH apenas durante o próximo arranque do RPi. Esta configuração será tornada permanente mais tarde.
  • Na "drive" maior, edite o ficheiro "/etc/dhcpcd.conf". No final do ficheiro, deverá haver uma secção de texto semelhante a esta:
# It is possible to fall back to a static IP if DHCP fails:
# define static profile
profile static_eth0
static ip_address=123.123.123.123/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
interface eth0
fallback static_eth0

Edite o ficheiro tal como o texto mostrado acima. A linha:

static ip_address=123.123.123.123/24

Define o endereço IP de recurso do Raspberry Pi quando não recebe ofertas IP através do DHCP. Em geral, isto acontece quando não há nenhuma ligação disponível na rede ou quando foi ligado a um computador portátil ou fixo comum. Podem ser escolhidos outros IPs de fallback para além de 123.123.123.123. Este é sugerido porque é simples de memorizar.

  • O cartão SD pode agora ser removido em segurança do computador e inserido no Raspberry Pi para arrancar.

Em seguida, o computador que se ligará ao RPi deve ter a sua própria ligação Ethernet configurada de modo a ligar-se à mesma sub-rede que o RPi. Isto significa que, seguindo a configuração mostrada acima, o seu IP deve ser configurado para 123.123.123.xxx, onde o último número pode ser qualquer um de 001 a 254, e uma netmask de 255.255.255.000. O procedimento exato a seguir para o conseguir é altamente dependente do SO instalado no computador. É importante proceder de uma forma adequada ao sistema operativo específico. Se o seu computador utiliza a porta Ethernet para a ligação diária à Internet, é possível que lhe seja atribuída alguma configuração específica para tornar esta ligação possível na sua rede. Certifique-se que preserva as configurações originais da rede do seu adaptador Ethernet para que possa reverter quaisquer alterações realizadas, seja tirando capturas de ecrã dos diálogos apropriados ou tomando notas. Pode encontrar alguns exemplos de SOs comuns abaixo.

Configuração do Adaptador Ethernet no Windows 10/8.1/7 e ligação ao RPi
  • A Microsoft fornece instruções sobre como configurar manualmente o adaptador Ethernet.
  • Siga o procedimento de configuração manual das definições IPv4. Quando solicitado, preencha o campo IP Address com um endereço apropriado de acordo com a configuração selecionada para o RPi. Assumindo que foi escolhida a configuração de exemplo mostrada nesta página, este campo pode ser preenchido com 123.123.123.124, e o campo Subnet prefix length/Subnetmask pode ser preenchido com 255.255.255.0 ou 24. As configurações relativas aos campos Gateway e DNS e ao IPv6 podem ser ignoradas.
  • Caso não o tenha feito antes, o RPi pode ser iniciado e ligado ao computador através de Ethernet. Isto é conseguido ligando uma extremidade de um cabo Ethernet à porta Ethernet do computador e a outra extremidade do cabo à porta Ethernet do RPi.
  • O símbolo de rede no Windows deve agora mostrar a ligação Ethernet. Provavelmente afirmará que se trata de uma rede desconhecida.
  • O Windows não instala um cliente SSH por "default". . Para se ligar ao RPi via SSH deve ser configurado um. Embora outros possam ser utilizados, o putty é um software cliente SSH de código aberto e gratuito para Windows. Pode ser instalado ou utilizado como autónomo, o que significa que a instalação não é necessária. Os passos seguintes seguir-se-ão à utilização do putty. Embora a configuração geral também se aplique a outro software, as instruções específicas podem ser diferentes.
  • Preencha o campo Host Name (or IP Address) com o IP configurado do RPi. Se a configuração sugerida estiver a ser seguida, deverá ser preenchido com 123.123.123.123. Nos botões de rádio abaixo, selecione SSH. Se desejar guardar esta configuração para que não seja necessário recordá-la ou reescrevê-la sempre, escreva qualquer nome memorável no campo Saved Sessions e clique em Save. Assim, poderá recuperar esta configuração selecionando o nome da lista e selecionando Load.
  • Pode aparecer um aviso indicando que o anfitrião, o computador ao qual se está a ligar, é novo e desconhecido. Ser-lhe-á perguntado se o novo computador é de confiança e se a ligação pode ser completada. Uma vez que se trata de uma nova instalação de um computador que possui e que foi configurado por si, pode responder com segurança que sim. Quando lhe for pedido, introduza a palavra-chave. Se esta não for a primeira vez que segue este guia, é possível que o aviso indique que o anfitrião, o computador a que se está a ligar, mudou. Isto é esperado, uma vez que pode agora aplicar estes passos a um RPi diferente. Aceite o aviso, selecionando Yes e a ligação deve ser completada.
  • Quando lhe forem pedidos o utilizador e a palavra-passe, introduza o utilizador predefinido e a palavra-passe do SO Raspian que pode ser encontrada aqui.
  • Note que neste caso são utilizados o pi e 123.123.123.123 uma vez que se está a ligar ao RPi como utilizador pi e este está diretamente ligado ao computador com o IP 123.123.123.123 configurado. Depois de criar um novo utilizador, de apagar o predefinido e ligar o RPi à rede normal, isto irá mudar.
  • Depois de introduzir com sucesso a palavra-passe predefinida, surgirá o seguinte texto:
pi@raspberry:~ $

Conectou-se com sucesso e pode proceder à Configuração do Sistema Operativo do RPi

  • Se surgiu um erro que indica:
ssh: connect to host xxx.xxx.xxx.xxx port 22: No route to host

onde xxx.xxx.xxx.xxx é o IP utilizado no comando ssh, os adaptadores Ethernet foram mal configurados. Revisite a configuração dos adaptadores. Para uma ligação bem sucedida, tanto o computador como o RPi devem ser configurados de modo a estarem na mesma sub-rede. Se não adotou a configuração IP sugerida, saiba que esta fornece uma configuração funcional.

Configuração do Adaptador Ethernet no Linux utilizando o Network Manager e ligação ao RPi
  • O Linux não é um SO monolítico. O que é geralmente referido como Linux é um conjunto de várias distribuições, também conhecidas como "distros", que constroem um SO na mesma base, o Linux kernel. Dependendo da "distro" utilizada, o procedimento específico a seguir será diferente. O procedimento seguinte aplica-se às distribuições que têm o Network Manager configurado para gerir a conetividade. Este é o caso da maioria das distribuições populares, tais como Ubuntu e os seus sabores, Linux Mint, Fedora, etc.
  • Clique com o botão direito do rato sobre o ícone Network Manager e selecione Edit connections
  • Clique no sinal + no canto inferior esquerdo da janela, selecione Ethernet no diálogo mostrado e clique em Create. Ao criar uma nova configuração, as definições utilizadas para o acesso normal à Internet são preservadas, tornando mais fácil reverter as alterações.
  • O campo Name pode ser preenchido com qualquer nome, embora seja recomendado escrever um fácil de lembrar, tal como Raspberry ou Ethernet RPi.
  • Selecione o separador IPv4 Settings e, no menu Method dropdown, selecione Manual.
  • Clique em Add junto à tabela Adresses e, quando solicitado, preencha o campo Address com um endereço apropriado de acordo com a configuração escolhida para o RPi. Assumindo que a configuração de exemplo mostrada nesta página foi a escolhida, este campo pode ser preenchido com 123.123.123.124e o campo vizinho Netmask pode ser preenchido ou com 255.255.255.0 ou 24.
  • O resto dos campos podem ser ignorados em segurança. Clique em Save para guardar as novas definições de ligação. As novas configurações surgirão agora na lista com o nome escolhido.
  • Caso não o tenha feito antes, o RPi pode ser iniciado e ligado ao computador através da Ethernet. Isto é conseguido ligando uma extremidade de um cabo Ethernet à porta Ethernet do computador e a outra extremidade do cabo à porta Ethernet do RPi
  • Ao tentar ligar-se o RPi, o ícone do Gestor de Rede deve mostrar um símbolo rotativo. Clique no símbolo do Gestor de Rede e selecione, no menu, a ligação Ethernet com o nome escolhido anteriormente. A ligação deve agora ser configurada.
  • A maioria das distros Linux incluem software SSH na instalação padrão do SO, tornando desnecessária a instalação de qualquer software adicional. Os comandos SSH seguem a sintaxe ssh user@ip ou ssh user@hostname. O utilizador predefinido e a palavra-passe do SO Raspian podem ser encontrados aqui. Para se ligar ao RPi, abra um terminal no computador e escreva
ssh pi@RPI ADDRESS

O RPI ADDRESS deve ser substituído pelo endereço IP selecionado para o RPi na secção anterior. Assumindo que foi adotada a configuração sugerida, o comando deve ser:

ssh pi@123.123.123.123

Note que, neste caso, são utilizados o pi e o 123.123.123.123, uma vez que se está a ligar ao RPi como utilizador pi e este está diretamente ligado ao computador com o IP configurado 123.123.123.123. Depois de criar um novo utilizador, apagar o predefinido e ligar o RPi à rede normal, isto irá mudar.

  • Pode surgir um aviso afirmando que o anfitrião, o computador a que se está a ligar, é novo e desconhecido. Ser-lhe-á perguntado se o novo computador é de confiança e a se ligação pode ser completada. Uma vez que se trata de uma nova instalação de um computador que possui e que foi configurado por si, pode responder com segurança que sim. Quando lhe for pedido, introduza a palavra-chave. Se esta não for a primeira vez que segue este guia, é possível que o aviso indique que o anfitrião, o computador a que se está a ligar, mudou. Isto é esperado, uma vez que pode agora aplicar estes passos a um RPi diferente. Edite o ficheiro indicado no aviso e apague a linha que começa com o IP do RPi. Se a configuração do exemplo estiver a ser seguida, esta será a linha que começa com
123.123.123.123. Experimente voltar a ligar utilizando novamente o comando SSH. Deverá ver um aviso que indica que se trata de um computador novo e desconhecido.
  • Depois de introduzir com sucesso a palavra-passe predefinida, surgirá o seguinte texto:
pi@raspberry:~ $

Conectou-se com sucesso e pode agora proceder à Configuração do Sistema Operativo do RPi

  • Se surgiu um erro que indica:

ssh: connect to host xxx.xxx.xxx.xxx port 22: No route to host onde xxx.xxx.xxx.xxx é o IP utilizado no comando ssh, os adaptadores Ethernet foram mal configurados. Revisite a configuração dos adaptadores. Para uma ligação bem sucedida, tanto o computador como o RPi devem ser configurados de modo a estarem na mesma sub-rede. Se não adoptou a configuração IP sugerida saiba que esta fornece uma configuração funcional.

Configuring the Ethernet Adapter on MacOS Catalina/Mojave/High Sierra and connecting to the RPi
  • Apple provides instructions on how to manually configure the Ethernet adapter.
  • Follow the procedure for manually configuring IPv4 settings. When prompted, fill the IP Address field with an appropriate address according to the configuration selected for the RPi. Assuming the example configuration shown on this page was selected, this field can be filled with 123.123.123.124, and the field Subnetmask can be filled either with 255.255.255.0 or 24. Settings regarding the Gateway and DNS fields and IPv6 can be ignored.
  • If not done so before, the RPi can be booted and connected to the computer throught Ethernet. This is accomplished by connecting one end of an Ethernet cable to the Ethernet port of the computer and the other end of the cable to the Ethernet port of the RPi
  • The network symbol should now show the connection as being completed.
  • MacOS includes a SSH client on the default OS install, making it unnecessary to install any additional software. SSH commands follow the syntax ssh user@ip or ssh user@hostname. The default user and password of the Raspian OS can be found here. To connect to the RPi open a terminal on the computer, and write
ssh pi@RPI ADDRESS

RPI ADDRESS should be replaced by the IP address selected for the RPi on the previous section. Assuming the configuration suggested was followed, the command should be

ssh pi@123.123.123.123

Note that in this case pi and 123.123.123.123 are used since we're connecting to the RPi as user pi and it's directly connected to the computer with the configured IP of 123.123.123.123. After creating a new user and deleting the default one and connecting the RPi to regular network, this will change.

  • A warning can appear stating that the host, the computer you're connecting to, is new and unknown. You'll be asked if the new computer can be trusted and the connection completed. Since this a fresh install of a computer you own and have setup by yourself, you can safely answer yes. When prompted, input the password. If this is not the first time following this guide, it's possible that the warning states that the host, the computer you're connecting to, has changed. This is expected as you can now be applying theses steps to a different RPi. Edit the file stated on the warning and delete the line starting with the IP of the RPi. If the example configuration is being followed, this will be the line starting with 123.123.123.123. Attempt to reconnect by using the SSH command again. You should know see the warning stating this is a new, unknown computer.
  • After successfully inputting the default password, a prompt will be shown stating:
pi@raspberry:~ $

You have logged in successfully and can now proceed to the RPi Operating System Configuration

  • If there was an error stating

ssh: connect to host xxx.xxx.xxx.xxx port 22: No route to host Where xxx.xxx.xxx.xxx is the IP used in the ssh command, the Ethernet adapters have been misconfigured. Please, revisit the configuration of the adapters. For a successful connection both the computer and the RPi must be configured to be in the same subnet. If you haven't followed the IP configuration suggested here, please note it is known to provide a functional set up.

Configuração do Sistema Operativo do RPi

After installation, the OS needs to be configured. The following instructions are to be followed on the terminal prompt. If you are using a keyboard and display connected to the RPi and installed an OS with GUI, please open a terminal emulator.

First, proceed with general system configuration by loading the raspi-config utilty, executing the command:

sudo raspi-config

When prompted input user's pi password. The menu that shows can be navigated using arrow keys for selection, escape key for moving backwards on the menus and enter to select the highlighted entry.

  • The 1 Change User Password entry can be ignored as the pi user will be deleted later
  • On the 2 Network Options entry, it's possible for the Hostname to be set and a Wi-fi connection to be configured.

The Hostname is the name assigned to the RPi and has no special meaning. It's helpful for easy recognition of the computer based only on name.

The Wi-fi entry allows the configuration of a Wi-fi network by entering the SSID (network name) and network password. This dialog only works for WEP, WPA and WPA2 schemes. WPA-entreprise must be manualy setup through the wpa_supplicant.

Ignore the remaining entries unless certain about the changes being performed.

  • On the 3 Boot Options, it's the Desktop / CLI entry selects whether the RPi boots into a GUI environment or into a command prompt, the Wait for Network at Boot if it waits for network connection before completing the boot process and the Splash Screen if it shows an image or debugging text during boot.

Be aware that the Desktop / CLI entry only produces effects if you previously installed a version of Raspbian with GUI or have meanwhile installed a GUI on the lite version.

These settings are safe to setup according to users wishes.

  • On the 4 Localisation Options entry, the Change Locale entry allows setting up the RPi so it's diplayed language, and other localisation elements, such as time and date format, name of days of the wiki, currency, etc, are according the RPi user's location, the Change Timezone entry allows setting the local timezone, so that the RPi shows the correct time and date, the Change Keyboard Layout entry allows the user to set up it's keyboard so that the keys typed in the physical keyboard match the ones that appear on screen, and the Change Wi-fi Country sets up the RPi so it's communicating on the right Wi-fi frequencies according to the local laws.

The Change Keyboard Layout entry is only important if the RPi is used with a keyboard directly connected to it. Users connecting through SSH do no need to configure this setting.

The Change Wi-fi Country entry must be configured if a Wi-fi connection is to be setup. Failure to do so may result in a non-working connection, as the RPi is trying to communicate in different frequencies as the rest of the local Wi-fi devices, and regulatory issues for the user for transmitting in prohibited frequencies.

  • On the 5 Interfacing Options, the entries allow enabling/disabling the various listed services. All should be configured to disabled except for the SSH and/or VNC services, the Serial interface and Remote GPIO access.

Be aware that the VNC service will only work if a GUI is installed on the system. If not, only the SSH' service can be enabled.

Enabling the SSH service makes it unnecessary to create the ssh file on disk as described before. It will be available on every boot until disabled again.

On the Serial entry, please select No when prompted if the login shell should be available over serial and Yes when prompted if the serial port hardware should be enabled.

  • Please ignore the remaining options, except for the Expand Filesystem option available on the Advanced Options entry.
  • Exit the utility by selecting Finish and, when prompted, allow the RPi to reboot by selecting yes. If connected via SSH, the connection will be automatically terminated.
  • Allow the RPi to finish rebooting. Do not power it off by disconnecting the power cable.
  • When the green led has stopped flashing, the reboot is complete. Login into the RPi as before.

Before connecting the RPi to the internet, a new user must be to created and the the default user must be deleted. Since all fresh Raspbian OS installs have the same default user and password, that everyone can find on the internet, keeping them available on the OS is a very serious security vulnerability. Anybody that knows this is free to try to login into your RPi and, if successful, take control of the system.

The following commands create an user named newton. Other usernames can, and should be, chosen when configuring the RPi. The username newton is being used as an example.

  • Create user newton
sudo useradd newton

When prompted to input user pi's password, input the same password used to login. This will start the user creation process where a new password for the new user is going to be asked for. Choose a new password, different from the default pi user password. When choosing the new password please remember that:

Strong passwords have at least 8 characters, a mixture of both uppercase and lowercase letters, a mixture of letters and numbers and include at least one special character, e.g., ! @ # ? ].

A strong password is hard to guess, but it should be easy to remember. A password that has to be written down is not strong, no matter how many of the above characteristics are employed.

Do not choose passwords that are composed of any word that can be found in a dictionary, in any language (e.g., airplane or aeroplano), a dictionary word with some letters simply replaced by numbers (e.g., a1rplan3 or aer0plan0), a repeated character or a series of characters (e.g., AAAAA or 12345), a keyboard series of characters (e.g., qwerty or qazwsx), anything that’s written down and stored somewhere near your computer.

Your username and password are one of the main mechanisms of defense against unauthorized access and tampering. Having easy to guess usernames, weak passwords or having them known to the public severely impacts the security of your devices and network.

  • Add the new user to the system groups

Start by identifying the groups the original user pi is a member of by executing the command:

id

The command will output three lists in the format number(text). Keep the output on screen. Write, but don't execute, the following command:

sudo usermod -a -G

From the previous command output, select the list after groups=, except for the first element, by clicking and dragging with the mouse over the text. Copy it to the command line by clicking the middle mouse button after selecting the text. Edit the current command by using the arrows on the keyboard to move the cursor and removing the numbers and parenthesis but keeping the text and commas. Add the name of the user being created to the end of the command. The final command should have the same format as this:

sudo usermod -a -G group1,group2,group3,group4 newton

Confirm that the user was successfully added to the system groups by executing:

id newton

In the output, after groups=, the same groups as above should appear. Do not proceed before they do.

  • Log out from the RPi and login using the new user
  • Delete the pi user account

The default user pi still exist in the system. Leaving this account active is a security vulnerability. Delete it by executing:

sudo userdel -remove-home pi
  • In order to configure the network where the RPi will be connected, it's often useful to know the MAC address of the network adapter. Execute the following command:
ifconfig

If planning to connect the experiment via Ethernet cable, copy the ether field on the eht0 entry of the output. If connecting via wireless connection, copy the ether field on the wlan0 entry of the output.

  • If planning to use a VPN connection to manage remotely deployed experiments, now is also a good time to send the needed files to the RPi. Doing so ensures the needed secrecy of the keys, as they are sent through the cable that connects your computer and the RPi. If using the RPi with keyboard and display, consider shutting it down and writing the files directly on the sd card by inserting it on a computer. VPN configuration is highly dependent on your setup, so it should be completed on case by case basis.
  • If not done so, shutdown the RPi. Wait for the green led on the RPi to stop blinking before disconnecting the power source. Move it to its permanent location, connecting it to experiment's electronics and network infrastructure.
  • Turn on the RPi by connecting the power source. It should obtain a valid IP adress from your network. Network and firewall configuration is highly dependent on your specific network infrastructure. If the above instructions were followed, the RPi is configured to accept DHCP IP lease offers. In order for the hardware server and the video streaming to work, the RPi must be able to communicate
  • Login into it. Update the software on the RPi by running the following commands in succession:
sudo apt-get update
sudo apt-get full-upgrade

The last command can take a while to complete. While it works, DO NOT DISCONNECT THE RPi FROM THE POWER SOURCE. IF YOU DO, YOU'LL MOST LIKELY CORRUPT THE SD CARD AND YOU'LL HAVE TO START ANEW.

  • Reboot the RPi to ensure the latest software is running. Log into it again.
  • Install the needed software for the hardware server and the video streaming.

For the hardware server, the following software should be installed:

sudo apt-get install openjdk-8-jre-headless librxtx-java

For the video streaming, various software could be used. The recommend way is to use GStreamer and its libraries that support video hardware enconding on the RPi. It can be installed by the following command:

sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-ugly gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-bad\
gstreamer1.0-omx-rpi gstreamer1.0-omx-rpi-config gstreamer1.0-omx-generic gstreamer1.0-omx-generic-config

If needed, also install the software for the VPN connection. For example, the openvpn client would be installed by the command:

sudo apt-get install openvpn

Now that the VPN is install, complete the configuration of the VPN with the files transfered to the RPi on the last step.

Please note that the software manager will suggest extra packages, mostly dependencies of the ones explicited ordered to install. Accept any extra suggested packages.

Ferramentas e utilitários de rede

A conectividade do computador onde o servidor de hardware será instalado pode ser testada e verificada através da instalação de algumas ferramentas como o nmap:

sudo apt-get install nmap

O programa nmap é utilizado para testar o acesso às portas para elab.ist.utl.pt, elab1.ist.utl.pt and elabmc.ist.utl.pt:

nmap -v -A elab.ist.utl.pt

Espera-se que as portas 443, 80, 8080, 22, e [9000..9010] estja abertas. elabmc deveria ter sido acrescentado às portas UDP para "streaming" (ver última secção).

Sugerimos a utilização do utilitário cron caso seja necessário reiniciar. Para evitar pedidos de registo simultâneos, é estabelecido um atraso de 5 minutos de acordo com a ordem da experiência. Nano é o editor eleito.

sudo crontab -e

e a seguinte linha é acrescentada para reiniciar a cada 4h e 35m da manhã (posição 7 na tabela)

0 4   *   *   *    /sbin/shutdown -r +35

Contab -l lista as tarefas a serem executadas num determinado momento.

sudo crontab -l

Instalar um certificado OpenVPN

Se o seu certificado se tornar inválido para permitir que o seu sistema entre no OpenVPN do elab, pode recuperar um recente, emitindo o seguinte comando:

echo "get ca.crt" | sftp -P2222 wpa@elab1.ist.utl.pt:/dist

Aqui deve utilizar a palavra-passe do sistema remoto elab1

Depois, deve movê-lo para o diretório OpenVPN que, que tem privilégios de administrador:

sudo mv ./ca.crt /etc/openvpn/privnet

Introduza a palavra-passe do utilizador wpa local

Para concluir, reinicie o sistema para ter efeito.

Códigos autónomos

Servidor de hardware

Agora que tem o Raspberry Pi e o Pêndulo instalados, está pronto a ligá-lo à rede do projeto World Pendulum Alliance./p>

Para tal, terá de instalar e executar uma aplicação no Raspberry. Esta aplicação chama-se "REC Hardware Server", é uma aplicação Java sendo necessário ter o JDK instalado.

Uma vez executado o "REC Hardware Server", este tentará contactar automaticamente o seu pêndulo onde é expectável encontrar a sua cadeia de identificação (por exemplo, "WP_UESC_IOS"). Se encontrar o ID esperado, ligar-se-á ao pêndulo e este deverá ganhar vida na página pública do elab. Caso contrário, surgirá uma mensagem de erro. Nesse caso, aconselhamo-lo a contactar a equipa de gestão do projeto.

O "REC Hardware Server" específico para o seu pêndulo será fornecido pelos coordenadores do projeto num ficheiro .ZIP que estará disponível numa pasta específica no servidor elab1.

Para instalar uma nova versão do "REC Hardware Server" para um pêndulo específico, deverá abrir um terminal (por exemplo, Putty) e aceder ao aparelho onde o servidor de hardware será instalado - neste caso, o RPi - e seguir estes passos:

  • Confirme se o diretório "rec-deployment" existe. Se não, crie o directório através do comando:
    mkdir ${home_directory}/rec-deployment 
    ex: mkdir /home/wpa/rec-deployment 
  • Liste os ficheiros .Zip do Servidor de Hardware:
    echo "ls *.zip" | sftp -P2222 wpa@elab1.ist.utl.pt:/dist
  • Uma vez identificado o servidor de hardware para o seu pêndulo, copie o ficheiro HardwareServerZip para o seu aparelho (Raspberry):
    echo "get ${hardwareServerZipFile} ~/rec-reployment/" | sftp -P2222 wpa@elab1.ist.utl.pt:/dist 
    ex. echo "get wpunicvraiHarwareServer_21-02-2020.zip ~/rec-reployment/" | sftp -P2222 wpa@elab1.ist.utl.pt:/dist 
  • Aceda ao directório "rec-deployment":
    cd /home/wpa/rec-deployment 
  • Descompacte os ficheiros .zip do Servidor de Hardware para o diretório "rec-deployment":
    unzip ${hardwareServerZipFile} -d ${hardwareServerAliasName}
    ex: unzip wpuesciosHardwareServer_24-01-2020.zip -d wpuescios
  • Altere para o diretório da experiência:
    cd ${hardwareServerAliasName}
    ex: cd wpuescios
  • Inicie o Servidor de Hardware::
    ./Start${AliasName}Driver.sh
    ex: ./StartwpuesciosDriver.sh

    NOTA

    O Servidor de Hardware só deve ser instalado após o procedimento de calibração descrito na página seguinte estar completo e executado com o minicom ou outro programa terminal.

    Transmissão de Vídeo

    A transmissão de vídeo pode ser feita utilizando a picamera, a câmara do RPi, ou uma câmara USB comum. Os passos seguintes foram testados com uma câmara USB. Além disso, foram concebidos para trabalhar com um servidor de transmissão de vídeo que recebe o vídeo do RPi e o reenvia a todos os clientes ligados.

    • Inicie a transmissão no RPi com o comando:
    gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=320,height=240,framerate=10/1 ! clockoverlay time-format="%x - %X" \
    ! videoconvert ! omxh264enc ! video/x-h264,profile=baseline ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=HOST port=PORT async=false

    Embora seja quase certo que esteja em /dev/video0, é possível que a câmara não apareça no sistema RPi em /dev/video0. Verifique se aparece, com o seguinte comando:

    ls /dev
    

    Como resultado, a entrada do formato videoX, onde X é um número, é a localização da câmara no sistema. Edite o comando acima para que o número X seja o mesmo que o que consta no resultado do último comando.

    É possível aumentar a resolução do vídeo e a framerate alterando os campos width (largura), height (altura) e framerate no comando do exemplo acima. Os valores desse exemplo são muito conservadores mas asseguram que o fluxo de vídeo é possível, mesmo nas condições de rede mais difíceis, por gerar um fluxo de bitrate muito baixo. Note que qualquer largura, altura e framerate solicitadas precisam de ser suportadas pela câmara de vídeo, caso contrário, surgirá um erro. Edite os campos HOST e PORT para que apontem para o seu servidor de transmissão de vídeo.

    Uma vez verificado que o vídeo está a ser transmitido, este pode ser tornado permanente, alterando ligeiramente o comando para:

    nohup gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=320,height=240,framerate=10/1 ! clockoverlay time-format="%x - %X" \
    ! videoconvert ! omxh264enc ! video/x-h264,profile=baseline ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=HOST port=PORT async=false &

    Isto funcionará até que o RPi ou a câmara sejam desligados.

    Instruções específicas para o projeto World Pendulum Alliance

    É necessária uma lista de portas TCP para a correta ligação à Internet entre o computador do aparelho e o servidor central.

    Para os pêndulos parceiros principais, o parâmetro HOST do comando de transmissão deve ser definido como instruído nas sessões de formação. O PORT deve ser definido como indicado na página de listagem de portas. Para cada pêndulo secundário, pode ser seguido o mesmo processo. No entanto, os parceiros devem criar uma infraestrutura de transmissão independente para a transmissão de vídeo dos pêndulos secundários.

    A fim de disponibilizar a informação necessária para que os utilizadores possam ligar-se à transmissão, os ficheiros SDP devem ser partilhados. Assim, estes podem ser independentemente abertos num software de leitor de vídeo, como o VLC, ou vistos através do pendulum client software. O ficheiro pode ser criado através da adaptação do modelo abaixo, substituindo os campos EXPERIMENT NAME e PORT pelos campos apropriados, conforme mostrado na página de listagem de portas. O campo HOST deve ser definido com o valor descrito nas sessões de formação.

    v=0
    o=- 16251185917537979632 16251185917537979632 IN IP4 EXPERIMENT NAME
    s=EXPERIMENT NAME
    i=N/A
    c=IN IP4 HOST
    t=0 0
    a=tool:vlc 3.0.8
    a=recvonly
    a=type:broadcast
    a=charset:UTF-8
    m=video PORT RTP/AVP 33
    b=RR:0
    a=rtpmap:33 MP2T/90000
    

    O ficheiro SDP deve ser criado com o mesmo nome que o indicado na página de listagem de portas. Este ficheiro deve então ser transferido para o servidor responsável pela sua disponibilização na web, conforme instruído nas sessões de formação.


    No caso de não estar a ser utilizado o ttyS0, se necessário, pode recorrer-se a um linker simbólico:

    ln -s /dev/ttyAMA0 /dev/ttyS0
    

    Iniciar automaticamente no arranque do RPi

    Para que os programas iniciem automaticamente no arranque do RPi, edite o ficheiro /etc/rc.local executando:

    sudo nano /etc/rc.local
    

    Assumindo que o servidor de hardware foi colocado na pasta indicada na seção anterior, ao adicionar as seguintes linhas ao ficheiro, antes de exit 0 e depois de fi, fará com que o RPi inicie automaticamente o servidor de hardware e a transmissão de vídeo enquanto arranca.

    sleep 120
    su USER -c "/home/USER/rec-deployment/exp_name/expDaemon.sh start &"
    su USER -c "(gst-launch-1.0 v4l2src device=/dev/video0 ! \
     video/x-raw,width=320,height=240,framerate=10/1 ! \
     clockoverlay time-format=\"%x - %X\" ! \
     videoconvert ! \
     omxh264enc ! \
     video/x-h264,profile=baseline ! h264parse ! \
     mpegtsmux ! rtpmp2tpay ! \
     udpsink host=HOST port=PORT async=false ) &"
    

    Note que os campos HOST e PORT devem ser substituídos como exemplificado acima. O campo USER deve ser alterado para corresponder à conta de utilizador criada, tipicamente wpa como previamente instruído. No caso de não estar a ser utilizado o ttyS0, se necessário, pode recorrer-se a um linker simbólico:

    ln -s /dev/ttyAMA0 /dev/ttyS0
    

    Firmware dsPIC

    Programar o dsPIC com o Raspberry Pi

    O dsPIC pode ser programado utilizando o Raspberry Pi, com a ajuda de um software programador. Ver esta página para instruções.

    Descarregar o ficheiro de firmware

    As versões oficiais de firmware disponíveis para download são apresentadas abaixo:

    Version 2021_01_96_22_08_46: File:Wp 2021 01 06 22 08 46.zip

    Página Anterior (Interfaces elétricas)
    Página Seguinte (Calibração)

    Ligações