Nesta página vamos descrever o processo de configuração do cartão microSD a usar no Raspberry Pi (RPi). Todo esse processo já foi porém executado previamente nas placas que terá ao seu dispor, sendo contudo conveniente realizar a mudança da palavra passe de acesso. Para isso comece por aceder à placa por SSH (tal como foi aqui descrito) com o utilizador pi e a palavra passe a ser facultada na aula, e em seguida proceda à alteração da palavra passe usando o comando:
passwd
Após o que se deverá fazer um reboot:
sudo reboot
Configuração do cartão microSD
Vamos descrever de seguida o processo de configuração do cartão microSD a usar no Raspberry Pi, procedimento que é constituído pelos seguintes passos:
- Gravação da imagem no cartão
- Acesso SSH
- Primeiras configurações
- Atualização inicial
- Autocomplete pelo historial de comandos
- Instalação da biblioteca para acesso ao GPIO (pigpio)
- Instalação da biblioteca para uso de mensagens MQTT (paho-mqtt)
- Mosquitto (MQTT broker)
- Node-RED
Gravação da imagem no cartão
Descarregar a imagem do Raspbian (por exemplo 2019-04-08-raspbian-stretch-lite.img) daqui. De notar que se trata duma imagem lite, ou seja apenas com o indispensável à sua utilização.
No caso da gravação da imagem do cartão microSD ser realizada em Windows, podemos recorrer ao programa Win32DiskImager.
Para que se possa efetuar um acesso ao RPi por SSH é preciso criar um ficheiro vazio com o nome ssh.
NOTA: Para evitar todos os passos seguintes é possível utilizar uma imagem criada especificamente para esta unidade curricular. Esta imagem (edm2k19.img) pode ser obtida descompactando um dos ficheiros zip existentes numa pasta partilhada juntamente com muitos outros ficheiros descritos nestas páginas.
O ficheiro zip a usar depende da versão da placa Raspebrry Pi que tenha na bancada:
- v6l_edm2k19.zip – Placa Raspberry Pi Model B+ V1.2 (bancada 1 a 5)
- v7l_edm2k19.zip – Placa Raspberry Pi 2 Model B (bancada 6 a 12)
Acesso SSH
Após o primeiro arranque da imagem oficial o RPi liga-se à rede por DHCP, pelo que basta descobrir no router o seu IP (o hostname é raspberrypi) e ligar a ele via SSH, por exemplo com o PuTTY. O utilizador (user) é pi a palavra-passe (password) raspberry. Este processo está aqui descrito.
A um eventual aviso “PuTTY Security Alert” deveremos carregar no botão “Sim”.
Nota: Caso use a imagem edm2k19.img o hostname que vem por omissão é o rpi-b00 e a palavra-passe a que foi indicada nas aulas.
Primeiras configurações
Executar o primeiro comando: sudo raspi-config
- Alterar a Password (1 Change User Password)
- Alterar o Hostname (2 Hostname), neste caso usaremos o nome rpi-bXX em que o XX é o número da bancada (de 01 a 12)
- Mudar fuso horário (4 Localicalisations Optons + I2 Change Timezone): Europe + Lisbon
- Expandir (7 Advanced Options + A1 Expand Filesystem) a área de ficheiros para aproveitar todo o espaço do cartão microSD
Após carregar no botão Finish é conveniente efetuar um reboot com o comando:
sudo reboot
Atualização inicial
Convém realizar uma atualização inicial do sistema, fazendo:
sudo apt-get update sudo apt-get -y upgrade
Autocomplete pelo historial de comandos
Quando se escreve na linha de comando é muito útil o uso da tecla TAB para auto completar esse comando.
O uso das teclas do cursor UP e DOWN dão-nos também a possibilidade de percorrer o histórico de comandos. Seria igualmente útil poder escrever o início dum comando e depois poder usar essas mesmas teclas para procurar um comando no historial que comece dessa forma. Para isso, e porque o RPi possui uma shell bash, temos que fazer como está aqui sugerido:
Editar o ficheiro .inputrc:
nano ~/.inputrc
Colocando as seguintes linhas:
"\e0A": history-search-backward "\e[A": history-search-backward "\e0B": history-search-forward "\e[B": history-search-forward "\e0C": forward-char "\e[C": forward-char "\e0D": backward-char "\e[D": backward-char
Não esquecer de fechar o terminal e abrir novamente para que a funcionalidade seja ativada.
Instalação da biblioteca para acesso ao GPIO (pigpio)
Para aceder às funcionalidades do interface GPIO será usada a biblioteca pigpio.
Para instalar o pigpio, fazer:
rm pigpio.zip sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip unzip pigpio.zip cd PIGPIO make sudo make install
O pigpiod ocupa cerca de 8% do CPU como se pode ver com o comando:
top
Instalação da biblioteca para uso de mensagens MQTT (paho-mqtt)
Executar os comandos:
sudo apt-get install python-setuptools sudo easy_install pip sudo pip install paho-mqtt
Ativação do barramentos SPI e I2C
Para se poder usar os barramentos SPI e I2C é preciso ativá-los no raspi-config:
sudo raspi-config
Nas opções de Interface (5 Interfacing Options, ativar o SPI (P4 SPI), e o I2C (P5 I2C), após o que já é possível aceder aos dispositivos, como se pode constatar pelo comando:
ls /dev/spi*; ls /dev/i2c*
Cuja resposta é:
/dev/spidev0.0 /dev/spidev0.1 /dev/i2c-1
Mosquitto
Para instalar o broker MQTT chamado Mosquitto, executar os seguintes comandos:
sudo apt-get update sudo apt-get upgrade sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key sudo apt-key add mosquitto-repo.gpg.key sudo rm mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list sudo apt-get update sudo apt-get install mosquitto mosquitto-clients
Node.js
A instalação do Node RED faz-se com a ferramenta npm que por sua vez é instalada com o Node.js. A versão Raspian Lite não traz o node.js, pelo que para instalar a versão 4.8.1, fazer:
mkdir Downloads cd Downloads wget https://nodejs.org/dist/v4.8.1/node-v4.8.1-linux-armv6l.tar.gz tar -xvf node-v4.8.1-linux-armv6l.tar.gz cd node-v4.8.1-linux-armv6l sudo cp -R * /usr/local/ cd .. rm -r node-v4.8.1-linux-armv6l node -v v4.8.1 npm -v 2.15.11
Node RED
Como a versão Raspian Lite não traz qualquer node-red, é preciso instalá-lo de raiz. Uma vez instalado o node.js, a instalação do node-red faz-se executando o seguinte comando:
sudo npm install -g --unsafe-perm node-red
A versão que ficou instalada foi a 0.16.2!
Para que o node-red arranque com o Raspberry Pi, fazer isto:
sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/nodered.service -O /lib/systemd/system/nodered.service sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-start -O /usr/bin/node-red-start sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-stop -O /usr/bin/node-red-stop sudo chmod +x /usr/bin/node-red-st* sudo systemctl daemon-reload sudo systemctl enable nodered.service
O acesso é feito no link: http://10.0.0.1XX:1880 (mudando para o IP adequado).
Dashboard
Para construir interfaces gráficos vou instalar o node-red-dashboard. Para isso fazer:
cd ~/.node-red npm install node-red-dashboard
Não esquecer de rearrancar o Node-RED:
node-red-stop node-red-start
Isto faz surgir um novo conjunto de nodes: dashboard
O interface pode ser acedido no link: http://10.0.0.1XX:1880/ui
Segurança
Para que o acesso seja condicionado, seguir as instruções aqui descritas.
Editar o ficheiro /home/pi/.node-red/settings.js descomentando/editando certas linhas:
adminAuth: { type: "credentials", users: [{ username: "admin", password: "$2a$08$DQGYwBOFfgqM2ByZFIyoouOGKoyrks/Yv/t2xfbZ28jqU/UGDWtJy", permissions: "*" }] },
O anterior código ativa a autenticação do editor. Para ativar a autenticação também no acesso às páginas descomentar/editar as linhas:
//httpStaticAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, httpNodeAuth: {user:"admin",pass:"$2a$08$DQGYwBOFfgqM2ByZFIyoouOGKoyrks/Yv/t2xfbZ28jqU/UGDWtJy"},
Para obter a hash da password, começar por instalar as ferramentas do node-red:
sudo npm install -g node-red-admin
E depois executar o comando:
node-red-admin hash-pw
Que pede a password dando depois a respetiva hash.