Os sistemas de streaming de câmeras tornaram-se populares, permitindo aos usuários gravar e/ou transmitir um vídeo ao vivo pela Internet. A câmera Raspberry Pi (RPi) é amplamente utilizada por seu recurso de streaming, pois captura facilmente imagens e vídeos ao vivo. Além disso, é fácil conectar a câmera RPi com o Raspberry Pi 2/3/4 – ou qualquer outro microcomputador.
Para este projeto, estamos projetando um sistema de vigilância residencial on-line usando a Raspberry Pi Camera V2 e o Raspberry Pi 4B (observe que o RPi agora também oferece uma câmera de alta qualidade para imagens de alta resolução). Será possível visualizar o vídeo ao vivo da câmera, que é transmitido online, a partir de qualquer navegador da web.
O módulo da câmera é facilmente controlado com códigos Python limpos. A única condição é que o RPi e o dispositivo que abre o navegador estejam conectados à mesma rede.
Componentes necessários
1. Framboesa Pi 2B/3B/4B x1
2. Câmera Raspberry Pi V2 x1
3. Cabo de fita para conectar a câmera Raspberry Pi x1
Conexões de circuito
Para desenhar este projeto, é necessário fazer a interface do módulo de câmera Raspberry Pi com RPi. Felizmente, o RPi já possui uma interface serial de câmera (CSI).
Primeiro, localize a porta CSI no Raspberry Pi, removendo com cuidado o clipe de plástico da porta. Insira o cabo plano do módulo da câmera na porta CSI de forma que os conectores na parte inferior do cabo fiquem voltados para os contatos da porta.
Em seguida, coloque o clipe de plástico de volta para que o cabo plano fique preso. Uma vez conectado ao RPi, o módulo da câmera deve se parecer com a ilustração abaixo.
O dispositivo está agora pronto para operação. Você pode proteger todo o conjunto em um estojo de câmera Raspberry Pi, conforme mostrado aqui…
Configurando Raspberry Pi
Antes de usar o sistema de câmeras de vigilância doméstica, existem algumas etapas adicionais:
1. Habilite a porta CSI no Raspberry Pi.
2. Escreva o código Python para transmissão ao vivo do módulo da câmera.
3. Localize o endereço IP do RPi para acessar a transmissão ao vivo.
4. Configure o RPi para executar automaticamente o código Python na inicialização.
Por padrão, o módulo da câmera está desabilitado no Raspberry Pi. Para habilitar a porta CSI, vá ao menu principal e abra a ferramenta Raspberry Pi Configuration. Também é possível abrir esta ferramenta no terminal digitando: sudo raspi-config.
Na ferramenta de configuração, selecione a aba interfaces, certificando-se de que a câmera esteja habilitada. O Raspberry Pi será reiniciado com a câmera ativada.
O código Python é fornecido e explicado abaixo. Você pode escrever o código usando Thonny IDE no Raspbian OS, salvando o arquivo de script com um nome adequado.
Para verificar o endereço IP, abra o terminal bash e execute este comando: pi@framboesa:~ $ ifconfig
Este comando lista vários parâmetros de interface de rede. Um desses parâmetros é o endereço IP da rede, garantindo que o RPi esteja conectado.
Para este projeto, o endereço IP é 192.168.29.242. Como a transmissão ao vivo do RPi estará disponível na porta 8000, ela poderá ser acessada através do link HTTP:
Para nós, isso é 192.168.29.242:8000. No entanto, o stream de vídeo pode ser capturado em qualquer dispositivo que execute um navegador por meio do link HTTP acima.
Como gostaríamos que o script Python iniciasse a qualquer momento que o RPi fosse iniciado, abra o arquivo de perfil no terminal Bash executando este comando: sudo nano /etc/profile
Salve o script Python com o nome: onlineHomeSurveillance.py. Para fazer isso, vá até o final do arquivo e adicione as seguintes linhas:
sudo python /home/pi/ onlineHomeSurveillance.py &
Observe o E comercial no final da linha, que permite que o script seja executado repetidamente sem parar.
Script Python…
Como funciona o projeto
O Câmera Raspberry Pi está conectado à porta CSI do Raspberry Pi (RPi). Com o suporte da biblioteca picamera, o módulo da câmera pode ser configurado para transmitir pela web o vídeo capturado pelo módulo.
O código deste projeto é uma receita da biblioteca picamera. Ele usa o módulo http.server integrado do Pytho para usar RPi como um servidor de streaming de vídeo. O vídeo é transmitido no formato MJPEG.
Você pode encontrar mais receitas de picamera no documentação oficial da biblioteca.
Como funciona o código
O código Python executa uma rotina de tratamento de “tentativa e exceção” com um objeto instanciado da classe PiCamera. Ele captura uma saída de streaming usando a classe StreamingOutput em uma variável “Saída”.
Aqui está o que acontece a seguir:
- A classe StreamingOutput usa as funções da biblioteca IO para capturar o fluxo de vídeo bruto.
- O método start_recording é chamado, que inicia a gravação do objeto da câmera (o stream de vídeo).
- O “servidor de objetos” (do módulo http.server) é instanciado no socketserver usando a classe StreamingServer .
- O servidor de streaming de vídeo é configurado usando a classe StreamingHandler .
- O método server_forver é chamado no objeto servidor para executar o servidor de streaming de vídeo indefinidamente.
Dê uma olhada mais de perto nas seguintes linhas de código:
com picamera.PiCamera(resolution='640×480′, framerate=24) como câmera:
saída = StreamingOutput
#Descomente a próxima linha para alterar a rotação da câmera do seu Pi (em graus)
#camera.rotation = 90
camera.start_recording(saída,formato='mjpeg')
tentar:
endereço = (”, 8000)
servidor = StreamingServer(endereço, StreamingHandler)
servidor.serve_forever
finalmente:
câmera.stop_recording
Os resultados