Mostrando postagens com marcador raspberry pi. Mostrar todas as postagens
Mostrando postagens com marcador raspberry pi. Mostrar todas as postagens

quinta-feira, 20 de outubro de 2022

Automatizando Câmera Rasp com Python

Como salvarei as imagens em um pendrive antes de tudo preciso montar o mesmo, caso não se recorde de como fazer isso, tenho descrito em   Câmera no Raspberry Pi

Aqui compartilho alguns detalhes para fazer a automação do módulo da câmera, como:
  • Criar o arquivo
  • Editor Nano
  • Execução
  • Finalizar execução
  • Alguns comandos de ajustes para fotos


Montagem do setup usado rasp, câmera e python


Criar Arquivo

Antes de tudo precisamos criar um arquivo para depois abrir no editor de texto, vamos nomear como camera.py e a criação pode ser feita com o comando cat, que também pode ser usado para conCATenar arquivos.




Para confirmar que o arquivo foi criado podemos usar o comando ls, que lista os arquivos da pasta em que você esta.




Antes de rodar o interpretador python é preciso verificar que o arquivo a ser executado esteja na mesma pasta, para verificar a pasta atual podemos usar o comando pwd.




Editor Nano


Para editar o arquivo criado e escrever o código do programa que vamos usar basta digitar nano seguido do nome do arquivo.




Ao abrir o editor Nano repare que na linha branca esta o nome do arquivo, e basta editar conforme sua necessidade.


Editor de texto Nano no Raspberry Pi OS Lite


Encontrei um exemplo de programa que serviu como base para eu alterar de acordo com minhas necessidades. 

Assim que finalizado o programa, para salva-lo basta teclar Ctrl+O que ele "escrevera" as mudanças no programa. Depois basta confirmar com a tecla enter. (repare na linha branca inferior).





Ao acabar de gravar aparece a mensagem na linha branca inferior. O tempo de intervalo é em segundos, ou seja os 180 do exemplo na imagem são equivalentes a 3 minutos.





Pronto estão gravadas as alterações no Nano, agora basta um Ctrl+X para sair do editor. A última linha comentada é para eu fazer um teste se as fotos já saem com o nome e data/horário nas mesmas, pois incrementando na hora de ordenar acontecem alguns "imprevistos".


Execução

Como no meu caso vou salvar as imagens no pendrive (conforme visto acima) preciso executar o interpretador python em modo sudo, permitindo o acesso a mídias externas.




Agora precisamos executar o programa, a sintaxe é como a da imagem abaixo, bastando mudar o nome do arquivo.py para o que você usa.





O LED do módulo da câmera ficará ligado todo o tempo, diferente do tempo de apenas 5 segundos (padrão) quando se tira apenas uma foto com o comando raspistill.

Uma das formas de sair da execução do programa é usando o comando exit seguido de parenteses.



Resolução

A resolução máxima vai até 2592 × 1944 pixels (5MP).


Tabela de resoluções da câmera v1 - Reprodução: Raspberry Pi Camera Guide página 110


Comandos de Ajustes para Fotos

Apesar da aparência simples este módulo de câmera oferece diversos ajustes para melhorar o resultado final das fotos.

Saturation
--saturation or -sa (-100 to 100)
Saturação (intensidade) de cor da imagem. 0 é o padrão.

ISO
--ISO or -ISO (100 to 800)
Sets the ISO to be used for captures. In effect, this adjusts the light sensitivity of the sensor.

EV compensation
--ev or -ev (-10 to 10)
Sets the EV compensation of the image. Default is 0.

Exposure mode
--exposure or -ex
Sets the exposure mode to any of: auto, night, nightpreview, backlight, spotlight, sports, snow, beach, verylong (long exposure), fixedfps (for video only), antishake, or fireworks. Not all of these settings may be implemented, depending on camera tuning.

Automatic white balance (AWB)
--awb or -awb
Set the AWB mode to any of the following: off, auto, sun, cloud, shade, tungsten,
fluorescent, incandescent, flash, or horizon. 

Image statistics
--stats or -st
This displays the exposure, analogue and digital gains, and AWB settings used.

Annotate flags/text
--annotate or -a
Adds some text and/or metadata to the image. Metadata is indicated using a bitmask
notation, so add them together to show multiple parameters. For example, 12 will show
time(4) and date(8), since 4+8=12. Text may include date/time placeholders by using the ‘%’
character, as used by strftime (magpi.cc/strftimedoc).



Image quality
--quality or -q
Ajusta a qualidade do JPEG , vai de 0 até 100.


Links complementares:

segunda-feira, 10 de outubro de 2022

Câmera no Raspberry Pi

Como vimos em RPi02 - Raspberry Pi OS Lite estou usando meu antigo Raspberry Pi Model B Rev 2 sem interface gráfica para alguns projetos, nesse meio tempo resolvi fazer uns testes com uma câmera V1 e compartilho aqui alguns passos.

 

Verso e frente da câmera usada no raspberry pi model b rev 2




A câmera usada aqui é uma não oficial da primeira versão modelo RP_ov5647. Os tópicos abordados serão:
  • Instalação (habilitação)
  • Como Fotografar
  • Armazenar no pendrive
  • Consumo
  • Metadados da imagem
 

 Instalação


Para instalar a câmera é bem simples, basta usar o comando raspi-config, que já usamos para habilitar o SSH em RPi02 - Raspberry Pi OS Lite.






Assim que entra na tela de configurações selecionamos a opção 3 Interface Options    Configure connections to peripherals e confirma com a tecla enter.






Na segunda tela seleciona a opção I1 Legacy Camera     Enable/disable legacy camera support e confirma.






O rasp vai te perguntar se realmente quer habilitar o suporte para a câmera e basta selecionar o sim.






O sistema avisará que o suporte da câmera foi habilitado, apesar do aviso que não desenvolverão em futuras edições.






Ao concluir a habilitação volta para a tela inicial do raspi-config, onde basta finalizar.






E para concluir de vez é necessário reiniciar a rasp.





Para instalar a câmera no rasp também pode seguir o tutorial em Funcionamento da Câmera Raspberry Pi, e ainda existe um manual de configuração com 10 páginas.


Como Fotografar


Para fotografar sem ambiente gráfico é bem simples basta utilizar o comando raspistill.





Por padrão a câmera aguarda 5 segundos para fotografar, mas é possível alterar esse tempo. Mas vamos explorar um pouco mais as opções.

Essa parâmetro -o é a abreviação de output, ou seja, define o local onde o arquivo da foto será armazenado, e caso necessite muitas fotos sugiro usar um pendrive para armazenar as imagens.

E vamos ver como montar o pendrive.

Pendrive

Para saber se o pendrive foi reconhecido pelo rasp podemos executar o comando lsblk que exibe informações sobre as partições do HD e outros dispositivos de armazenamento como pen drives e CDs em formato de árvore, ou resumidamente lista dispositivos de bloco.





Agora precisamos criar um diretório para o pendrive ser reconhecido, no caso usarei /pen mas você pode escolher o nome que quiser.





Para descobrir o nome do dispositivo no linux usaremos o comando dmesg (display message ou driver message) mostra o buffer de mensagens do núcleo/kernel, ou seja, quando o sistema reconhece o pendrive como um dispositivo e dá um nome para ele. 

A saída desse comando é redirecionada para outro comando, o grep, que busca strings no texto informado e mostra a linha que o contém; nesse caso, o texto a ser encontrado é removable, que sempre aparece na linha sobre a inclusão de um novo dispositivo USB.






A partir do resultado (apresentado na segunda linha da imagem abaixo) identificamos que é um "disco removível" em vermelho, mas o  que nos interessa esta entre os colchetes, no primeiro é o tempo em que o rasp esta ligado (contado em segundos), já o segundo com três letras é o que nos importa no momento, revelando que nosso pendrive foi nomeado como [sda].






Considerando que o normal é o pendrive conter apenas uma partição, para montá-lo usaremos sda1 como na imagem abaixo.






Agora esta pronto para copiar a foto no pendrive como no exemplo abaixo. 






Depois não se esqueça de desmontar o pendrive antes de retirar do raspberry pi.





Mas e se quiser já gravar as fotos diretamente no pendrive evitando o uso do cartão SD da rasp?

Ai você já deve ter concluído que com o pendrive montado na rasp basta usar o raspistill com o endereço da pasta do pendrive completando a saída, mas com o detalhe de precisar do sudo.





Consumo com a câmera

Aqui vamos sempre considerar a tensão de alimentação como 4,87 V. Enquanto a raspiberry pi "sem nada" consumia em média 0,41 A como vimos em RPi02 - Raspberry Pi OS Lite com a câmera instalada o consumo aumenta sensivelmente a média já vai para 0,426 A, por exemplo em stand-by apenas conectada na tomada ela consome 0,116 A.


Apesar de borrada é possível identificar os valores




Já para quando esta rodando com a câmera instalada a média de consumo é de 0,426 A, e como pode ser visto no vídeo o consumo na hora de fotografar se eleva de forma razoável chegando até a picos de 0,637 A como pode ser observado no vídeo, quando ocorrem as duas oscilações de 5 segundos (tempo de espera programado) é no momento em que é feita a fotografia. 





Para mais exemplos de configuração e efeitos na foto recomendo ler Como usar a câmera Raspberry Pi.


Metadados

Todo arquivo digital possui seus metadados e as fotos não fogem desta regra, então para os que gostam de mais detalhes da imagem elas são de 2592 x 1944 pixels, apesar de salvo com extensão .PNG a imagem é do tipo JPEG, e demais informações podem ser vistas na imagem abaixo.






Só reforçando, esses dados são do formato padrão, sem nenhuma alteração, que podem ser alteradas a gosto do freguês.


Links complementares sobre a câmera do raspberry pi: 

Outros links interessantes sobre Raspberry Pi:

terça-feira, 27 de setembro de 2022

RPi02 - Raspberry Pi OS Lite

Preciso fazer um projeto que esta empacado a alguns anos e já vou aproveitar para tirar poeira da minha rasp e praticar um pouco.

Neste texto abordo algumas coisas como:
  • consumo
  • acesso remoto por SSH
  • primeiro acesso por SSH
  • alterar senha
  • lista de serviços executados
  • alterar fuso horário
  • Python, pip e Scapy

Raspberry Pi Model B Rev 2 com 512Mb RAM e Raspberry Pi OS Lite


Se assim como eu você deixou seu raspberry antigo encostado por algum tempo e não tiver nada de importante salvo no cartão, instale outro sistema do zero, será muito mais rápido que aguardar mais de duas horas para atualizar.

O sistema utilizado depois de aguardar toda a atualização, é o Raspberry Pi OS Lite
Release date: September 6th 2022
System: 32-bit
Kernel version: 5.15
Debian version: 11 (bullseye)
Tamanho: 338MB

Como curiosidade na lista de MAC Address Vendors ao procurar o MAC da minha rasp o retorno é Raspberry Pi Foundation.


Print Screen do site Macvendors


Para saber o MAC Address ou o IP do rasp basta usar o ifconfig, onde o resultado para o IP é indicado como  inet   e o resultado para o MAC Address é indicado como ether.



Resultado do comando ifconfig no Raspberri Pi OS Lite




Consumo


Como na época do RPi01 - Revivendo um Raspberry Pi B de 1ª Geração eu ainda não tinha o USB Color Display Tester aproveitei para fazer a medição do meu Raspberry Pi Model B Rev 2 com 512Mb RAM e usando o sistema Raspberry Pi OS Lite,  com um carregador de celular genérico, a corrente variava em torno de 0,450A chegando algumas vezes a picos de 0,51A com média de 4,86V, gravei um vídeo durante a inicialização para ver a variação. Quando em repouso, sem nenhum programa executando ele consome 0,4A em 4,87V.





Como este é um hardware antigo e instalei um sistema sem modo gráfico, além de usar para alguns experimentos na minha rede, não tenho necessidade de teclado, mouse e monitor ligados na rasp, então para manuseá-la preciso habilitar o acesso remoto.

SSH - Acesso Remoto


Para habilitar o SSH na rasp fique atento na versão do seu hardware, pois algumas opções podem ser diferentes, as imagens apresentadas são do antigo Raspberry Pi Model B Rev 2. Primeiro é preciso entrar nas configurações com:





Depois de abrir o menu selecione a opção 3 Interface Options    Configure connections to peripherals   e depois confirme com a tecla enter.





 Na segunda tela selecione I2 SSH     Enable/Disable remote command line access using SSH e depois confirme com a tecla enter.






O sistema ainda é legal de perguntar se realmente deseja habilitar o SSH com senhas padrão ou fracas, confirme pressionando enter novamente, que daqui a pouco mudaremos a senha. 






Depois da confirmação o sistema envia uma mensagem avisando que o SSH esta habilitado.






Após isso ele retorna para o menu inicial das configurações, para sair basta selecionar o Finish e pressionar o enter.





Primeiro Acesso 


Depois de habilitado o SSH, para acessar pela primeira vez com o ®windows é preciso usar o Putty, e com o Linux é bem simples, depois de abrir o terminal, basta digitar ssh seguido do nome de usuário, sinal de arroba e endereço IP da máquina, que descobrimos usando o ifconfig.






Apenas para deixar registrado, uma tentativa de acesso ao rasp quando esta indisponível.





Senha



Para alterar a senha padrão ou uma senha fraca do usuário basta usar o comando passwd, ele vai pedir para digitar a senha atual, depois a nova senha e para confirmar a nova senha, ao final dará a mensagem que a senha foi atualizada.
O comando whoami ajuda a identificar qual usuário esta logado no momento.




Lista de Serviços


Ao pedir para listar os serviços executados pelo Raspberry Pi OS Lite no meu Raspberry Pi Model B Rev 2, ele não tem nada conectado além da fonte de alimentação, cartão SD e o cabo de rede.







Fuso Horário


No caso do meu rasp o fuso horário é importante estar correto, pois por padrão ele vem no europeu, então para acertar utilizei novamente o comando raspi-config.

Na primeira tela selecionei 5 Localisation Options Configure language and regional settings, depois a tecla enter para selecionar.





Para alterar o fuso horário seleciono L2 Timezone        Configure time zone, e seleciono o Select com  a tecla Tab e novamente aperto a tecla enter para confirmar.






Como não faltei na aula de geografia, a opção que mais se aproxima aqui é America, e confirmo com a tecla Tab o OK e depois tecla enter.






Como estou próximo de São Paulo esta é a minha opção e confirmo.






Depois ele mostra rapidamente a confirmação do horário local e do universal. 





Após isso ele retorna para o menu inicial das configurações, para sair basta selecionar o Finish e pressionar o enter.





Para confirmar as atualizações e configurações preferi reiniciar o rasp, e para isso utilizei o comando reboot, lembre-se que é preciso usar o sudo.





Python

Para o projeto que farei com esta rasp vou precisar automatizar algumas coisas e para isso preciso verificar a versão do python no sistema, basta usarmos python3 --version e o resultado é:





Para facilitar essas automatizações ainda será preciso usar o pip





E também o scapy






Para personalizar ainda mais as configurações do seu rasp, como por exemplo alterar para português,  recomendo a leitura do O melhor guia para a ferramenta Raspi-Config e para melhorar a segurança tem as 17 Security Tips To Protect Your Raspberry Pi Like A Pro.

Em breve farei o teste neste mesmo rasp rodando Open-WRT.