Salas de aula remotas inteligentes baseadas em IoT

Salas de aula remotas inteligentes baseadas em IoT

Este projeto mostrará como podemos usar a IoT para criar salas de aula remotas inteligentes e baratas para áreas rurais usando Raspberry Pi e seu módulo de câmera. Se um professor lecionar em uma cidade distante, essa sessão poderá ser transmitida ao vivo para áreas rurais. Através destas aplicações, as crianças das zonas rurais podem obter educação de qualidade num local remoto, pagando uma pequena taxa.

Tais aplicações já estão disponíveis no mercado, mas são caras, por isso precisamos de uma solução barata que as famílias dessas crianças possam pagar.

Componentes necessários

Ferramentas e bibliotecas necessárias
Ferramentas

  1. PythonIDE 3.0
  2. Visualizador VNC
  3. Qualquer navegador da Web para cliente

Bibliotecas Python

  1. Servidor de soquete – link
  2. Picamera – pode ser instalado seguindo comandos no terminal
    $ sudo apt-get install python-picamera python3-picamera

Informações Técnicas
Nosso dispositivo pode ser implantado em qualquer lugar e irá gravar e transmitir ao vivo em seu endereço. Esta aplicação funciona no modelo cliente-servidor usando TCP/HTTP como protocolo de comunicação. Portanto, o stream pode ser acessado de qualquer lugar (se o firewall permitir) em um navegador da web.

Usaremos o Raspberry Pi para processamento e como servidor que transmitirá os dados de mídia recebidos da câmera em um endereço IP específico do Raspberry Pi. Para conectividade com a Internet, podemos usar Wi-Fi ou qualquer modem de Internet.

Escreveremos um script Python que cuidará de todos os processos técnicos, como habilitar a rede e configurar o Raspberry Pi como um servidor de streaming de mídia.

Diagrama de blocos/algoritmo

Figura 1 Comunicação Cliente-Servidor

O Raspberry Pi é conectado diretamente ao modelo da câmera usando seu conector de cabo, e o modem fornece ao Raspberry Pi um endereço IP válido com conectividade à Internet. Uma conexão TCP/HTTP compartilha todos os dados de mídia entre o Raspberry Pi e o modem.

Os clientes acessam o Raspberry Pi (servidor de streaming) usando dispositivos habilitados para internet, como celulares e laptops. Raspberry Pi tem um bom navegador porque o stream é HTTP.

Como funciona
Quando todas as conexões estiverem instaladas e funcionando, iniciamos nosso script que será transmitido no endereço IP do Raspberry Pi. Para entender isso, siga os pontos abaixo.

  1. A câmera começa a gravar e salvar as fotos em um arquivo “mjpg” quando o script é ativado.
  2. A câmera substitui continuamente o fluxo dentro de apenas um arquivo.
  3. Um servidor é criado dentro do sistema usando uma função, e esse arquivo de imagem é passado dentro dessa função. O servidor também abre uma porta no sistema para que os clientes possam acessar o servidor através da rede.
  4. Um código/página HTML é escrito para lidar com o arquivo de imagem nas páginas da web. Esta página HTML exibe essa imagem e continua sendo atualizada para mostrar que as alterações nas imagens podem ser vistas como vídeos.
  5. Agora, se um cliente conseguir se conectar ao servidor, ele será recebido com aquela página HTML, e assim, o cliente poderá ver a imagem em forma de vídeo.
  6. Se vários clientes estiverem conectados, o multithreading será usado e uma nova página será aberta para cada cliente.
  7. Quando um cliente é desconectado, o fluxo desse cliente específico é interrompido.
  8. O servidor sempre escuta o cliente na porta que ele abriu.

Entendendo o código-fonte

Vamos entender o código-fonte e suas funções essenciais.

Existem três funções manipuladoras, uma função primária e um modelo de página HTML em nosso código.

Modelo de página HTML
A tag de título mostra o título principal da página quando um cliente está conectado.
demonstração de streaming MJPEG do picamera

A tag

é um cabeçalho em nossa página principal.

Demonstração de streaming PiCamera MJPEG

A linha “

StreamingOutput(objeto)
Esta função cria buffer de dados suficiente para salvar o arquivo de fluxo. Ele também fornece um novo quadro na conexão do cliente.
retornar self.buffer.write(buf)

StreamingHandler(servidor.BaseHTTPRequestHandler)
Esta função trata os clientes em solicitações HTTP. Ele grava o cabeçalho principal com as seguintes informações.

Se um cliente estiver tentando acessar o servidor apenas pelo seu endereço, ele mostra a página completa ao cliente.
self.send_header('Local', '/index.html')
Se a página index.html for acessada, ele grava a página com o conteúdo e exibe o que foi escrito na parte da página.
Também especifica o tipo de conteúdo na página principal para que os clientes (navegadores) possam entender o tipo de conteúdo e agir de acordo.
self.send_header('Tipo de conteúdo', 'multipart/x-mixed-replace; limite=FRAME')
Este fluxo é um fluxo do tipo quadro com conteúdo multipartes (multimídia).

StreamingServer(socketserver.ThreadingMixIn, server.HTTPServer)
Esta função de servidor trata da parte de rede e cria um novo soquete para cada cliente. Ele também permite múltiplas conexões de clientes usando multithreading.

Função principal
O script da função principal é o código para gravar o stream e passá-lo para as funções acima.
camera.start_recording(saída,formato='mjpeg')
A câmera começa a gravar e grava no arquivo no formato mjpeg.

O endereço é o objeto que passa a porta do servidor e o endereço IP, o que significa que suportará a disponibilidade do servidor em cada endereço IP ao qual o sistema está atribuído.
endereço = (”, 8000)

O servidor está se vinculando ao endereço do objeto e ao conteúdo, que é a função “StreamingHandler”
servidor = StreamingServer(endereço, StreamingHandler)

Esta linha diz ao servidor para continuar servindo o serviço até que o script seja finalizado.
servidor.serve_forever

Então é assim que podemos encontrar uma solução barata e fácil para salas de aula remotas inteligentes em áreas rurais.

Vissza a blogba

Hozzászólás írása

Felhívjuk a figyelmedet, hogy a hozzászólásokat jóvá kell hagyni a közzétételük előtt.