Monitor de largura de banda: 7 etapas (com imagens)
Monitor de largura de banda: 7 etapas (com imagens)
Anonim
Monitor de largura de banda
Monitor de largura de banda
Monitor de largura de banda
Monitor de largura de banda
Monitor de largura de banda
Monitor de largura de banda

Como sempre me perguntei qual largura de banda é fornecida atualmente pelo meu ISP (eu uso um modem LTE para a conexão com a Internet), pensei em um sistema de monitoramento de largura de banda. Como o sistema deve ser compacto e econômico, escolhi um Raspberry Pi Zero como componente central. O Raspberry está conectado ao modem via WLAN, portanto, problemas de WLAN também podem ser detectados.

Suprimentos

  • Raspberry Pi Zero WH
  • Visor de tinta eletrônica Waveshare (módulo de papel eletrônico de 2,9 polegadas)
  • Conversor DC-DC (por exemplo, DEBO DCDC 20W)
  • LED RGB (retirado de um dispositivo antigo)
  • Botão de apertar
  • Trocar
  • Módulo de relé (por exemplo, módulo de relé de 2 vias, módulo de relé de 2 vias)
  • Conector macho + conector fêmea (ambos ajustando-se ao tamanho do plugue de alimentação do modem)
  • Caixa impressa em 3D

Etapa 1: Recursos

Recursos
Recursos
Recursos
Recursos
Recursos
Recursos
  • O Raspberry Pi Zero é conectado via WLAN, testa a velocidade de upload e download e executa uma medição de ping a cada meia hora. Uma versão de linha de comando de speedtest.net é usada como base para as medições.
  • O resultado da largura de banda e da medição de ping é mostrado em um visor de tinta eletrônica. O tempo da medição também é mostrado.
  • Se a velocidade de download cair abaixo de um valor limite definido, um relé desliga e liga o modem por um curto período. O modem é assim reiniciado sem qualquer modificação do dispositivo (apenas a alimentação é interrompida).
  • Um botão na frente do dispositivo está disponível para acionar a medição da largura de banda manualmente.
  • Os valores medidos são exibidos em um painel Ubidots (Portal IOT). Na visão geral, você também pode ver o histórico de tempo dos valores medidos e os motivos das últimas reinicializações.
  • No Portal IOT, você também pode encontrar um botão para redefinir remotamente o modem.
  • O monitor de largura de banda usa a fonte de alimentação do modem. Nenhum suprimento adicional necessário. O relais interrompe o encaminhamento da fonte de alimentação para o modem - o raspberry permanece ligado.

Etapa 2: Fiação

Fiação
Fiação
Fiação
Fiação
Fiação
Fiação
Fiação
Fiação

Na primeira foto você pode ver o design interno do monitor de largura de banda:

Os principais componentes são:

    1. Botão de apertar
    2. E-ink Display
    3. Raspberry Pi Zero
    4. Módulo de Relé
    5. LED RGB + resistores (dependendo do LED RGB que você usa)
    6. Trocar
    7. Conversor DC-DC
    8. Conector fêmea

A segunda imagem mostra um esquema da fiação. O pólo positivo da tensão de alimentação é alimentado por meio do interruptor para o conversor de tensão DC-DC (que converte a tensão de alimentação de 12 V do roteador em 5 V para o Raspberry) e por meio do relé (por meio do pino normalmente conectado) de volta para o conector de saída. Assim, o modem também é alimentado com energia quando o monitor de largura de banda é desligado.

A medição da largura de banda pode ser iniciada manualmente por meio de um botão. Um LED RGB é usado para visualizar os vários estados operacionais.

A conexão entre o Raspberry Pi e o visor de tinta eletrônica não é mostrada no diagrama de circuito. Conecte o display de acordo com a tabela e a pinagem acima.

Etapa 3: impressão 3D e construção da perseguição

Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição
Impressão 3D e construção da perseguição

As seguintes peças são necessárias para o caso (veja a imagem acima):

    1. parte inferior
    2. parte de cima
    3. frente
    4. de volta
    5. Montagem 4x

Todas as peças podem ser impressas sem suportes. Você também pode encontrar os arquivos e alguns de meus outros designs no Thingiverse:

A tela pode ser fixada no painel frontal com os suportes e uma fita dupla-face. O interruptor de botão e o conector feminino são aparafusados nos painéis traseiro e traseiro. Usei parafusos 3x20mm para conectar as duas metades da caixa. As tolerâncias nas ranhuras dos painéis dianteiro e traseiro são relativamente estreitas. Se necessário, os painéis dianteiro e traseiro devem ser lixados na borda (na parte interna para evitar a destruição da superfície).

Etapa 4: Configurando o Raspberry PI

Configurando o Raspberry PI
Configurando o Raspberry PI
Configurando o Raspberry PI
Configurando o Raspberry PI

Este guia de configuração é baseado na compilação de várias instruções de instalação de diferentes fontes (fabricantes de monitores e-Ink, …). Para mim, as instruções levaram ao resultado desejado. Como não sou um especialista em Linux, nenhuma otimização ou algo semelhante foi feito. Estou ciente de que certamente existem soluções melhores e mais eficientes.

Vamos supor que você já tenha o Raspbian instalado em seu Pi (há muitos tutoriais sobre como instalar o sistema operacional básico) e você tenha um monitor (via miniHDMI), mouse e teclado conectados. Uma conexão WLAN corretamente configurada com o roteador ou a Internet também é considerada. Salvo indicação em contrário, todos os procedimentos de instalação são executados no terminal.

Instale a área de trabalho remota (para acessar o PI de seu computador):

sudo apt-get update

sudo apt-get

instalar xrdp

ou você também pode trabalhar sem controle via ssh (consulte, por exemplo, Mudar senha:

www.raspberrypi.org/forums/viewtopic.php?t=193620

Instale o speedtest:

sudo

apt-get install python-pip

sudo pip install speedtest-cli

para testar se a instalação foi bem-sucedida, execute o Speedtest no terminal:

speedtest-cli

se tudo estiver correto, você deve obter algo como na primeira foto acima.

Instale wiringPI

sudo apt-get install git-core

git clone git: //git.drogon.net/wiringPi

cd wiringPi

./construir

(consulte também

Alternativ:

sudo apt-get install wiringpi

(consulte

Instale BCM2835

(consulte

Baixe bcm2835-1.60.tar.gz (ou uma versão mais recente, se disponível)

tar zxvf bcm2835-1.60.tar.gz

cd bcm2835-1,60

./configure

faço

sudo fazer verificação

sudo make install

Instale a biblioteca de imagens Python

sudo apt-get install python-imaging

Alternativ:

sudo apt-get install python-pil

Habilite a função I2C.

Execute o seguinte comando para configurar sua placa Raspberry Pi:

sudo raspi-config

Selecione Opções de interface-> I2C -> sim, para iniciar o driver principal I2C. Em seguida, você também precisa modificar o arquivo de configuração. Execute o seguinte comando para abrir o arquivo de configuração:

sudo nano / etc / modules

Adicione as duas linhas a seguir ao arquivo de configuração

i2c-bcm2708

i2c-dev

Veja também

Habilite a função SPI

Execute o seguinte comando para configurar sua placa Raspberry Pi:

sudo raspi-config

Selecione Opções de interface-> SPI -> sim, para iniciar o driver do núcleo SPI.

Instale fontes adicionais:

sudo apt-get install ttf-mscorefonts-installer

Baixe e instale fontes (Roboto + Droid)

gksudo

pcmanfm

Para iniciar o gerenciador de arquivos com privilégios de root e copiar fontes truetype para a pasta / usr / share / fonts / truetype

Alternativ:

Copie as fontes para a pasta Downloads com WinSCP (ssh deve estar habilitado para usar WinSCP)

sudo cp -r / home / pi / Downloads / droid / usr / share / fonts / truetype

sudo cp -r / home / pi / Downloads / roboto / usr / share / fonts / truetype

Você precisa de privilégios de root para acessar a pasta de fontes. Talvez haja maneiras melhores de fazer isso (como já mencionei, não sou um especialista em Linux), mas as duas funcionaram para mim.

Arquivos Python:

Use o gerenciador de arquivos para criar uma nova pasta "bandwidth_monitor"

Copie todos os arquivos para o diretório bandwidth_monitor

Tornar arquivos Python e scripts executáveis

chmod + x *.py

chmod + x speedtest-cron.sh

Configurar crontab

crontab -e

O Crontab é usado para agendar a execução do programa, por exemplo teste de velocidade a cada 30 min. Adicione as seguintes linhas ao seu crontab (veja também a segunda figura):

@reboot / usr / bin / python /home/pi/bandwidth_monitor/post_restart_message.py &

@reboot sleep 30 && / usr / bin / python /home/pi/bandwidth_monitor/poll_test_now_button.py * / 30 * * * * /home/pi/bandwidth_monitor/speedtest-cron.sh * / 3 * * * * / usr / bin / python /home/pi/bandwidth_monitor/poll_killswitch.py 13 03 * * * / usr / bin / python /home/pi/bandwidth_monitor/refresh_display.py

Descrição das tarefas agendadas:

  • na reinicialização, a mensagem de reinicialização é gravada no painel IOT
  • na reinicialização, a enquete test_now_button é iniciada
  • a cada 30 minutos uma medição de largura de banda é realizada
  • a cada 3 minutos, o status do botão de redefinição remota (no painel IOT) é verificado
  • uma vez por dia, um ciclo de atualização da tela é iniciado.

Consulte a seção de software para uma breve descrição dos programas.

Etapa 5: Software

Programas
Programas

O software está dividido em vários arquivos / programas:

bandwidth_monitor_0_4.py é o programa principal que é invocado pelo Crontab a cada meia hora. Ele executa um teste de largura de banda (por meio da versão de linha de comando do speedtest.net). Durante o teste, o LED RGB fica azul. Se a largura de banda estiver acima do limite selecionado, o valor é mostrado no visor e-ink (junto com um carimbo de data / hora) e exportado para o painel Ubidots. Se a largura de banda estiver abaixo do limite, o LED fica vermelho e a medição é repetida após um pequeno atraso. Após 3 tentativas negativas, o relé é ativado e, portanto, a alimentação do modem é interrompida. O código de redefinição (valor = 2) é gravado na seção de log.

poll_killswitch.py lê o status de uma variável booleana no painel. Se killswitch_state for true, o relais é ativado e o fornecimento de energia do modem é interrompido. O LED RGB fica verde durante a pesquisa do killswitch. Após a redefinição, o killswitch_state é definido como falso e uma entrada na seção de log do painel é gerada (valor = 1).

poll_test_now_button.py está esperando que o botão no painel frontal do gabinete seja pressionado. Ao ativar o botão, uma medição de largura de banda é disparada manualmente. Quando o programa é iniciado (na reinicialização do Raspberry Pi), o LED RGB está piscando em vermelho.

post_restart_message.py grava o código de redefinição (valor = 3) na seção de log do painel. Isso indica que o monitor de largura de banda foi reiniciado. Durante o início do programa, o LED RGB pisca em azul.

test_LED.py e test_relay.py são scripts simples que podem ser usados para testar a função de hardware do LED RGB e do relé.

epdconfig.py e epd2in9.py são drivers de dispositivo para a tela e-ink fornecida pelo Waveshare.

Para permitir que os programas acessem o painel do Ubidots, você deve adicionar seus tokens individuais e nomes de dispositivos ou variáveis (se você usar notações diferentes). Pesquise a seção como a mostrada na imagem acima (substitua XXXXXXXX pelo seu token).

Tutoriais abrangentes sobre como construir o painel e como integrá-lo a um programa Python podem ser encontrados diretamente na página Ubidots (https://help.ubidots.com/en/) ou via Google.

Etapa 6: Painel IOT

Painel IOT
Painel IOT

O painel hospedado pela Ubidots (consulte https://ubidots.com) contém várias áreas que são descritas resumidamente a seguir.

    1. Sequência de tempo de velocidade de upload e download. A cada meia hora, um novo valor é inserido no diagrama.
    2. Curso de tempo do tempo de ping medido. A cada meia hora, um novo valor é inserido no diagrama.
    3. Sequência de tempo da velocidade média de download. O valor médio em 24 horas é calculado e gravado no diagrama.
    4. Representação em planilha dos valores de medição atuais, incluindo registro de data e hora.
    5. Botão de controle remoto para reinicializar o modem via Internet. A consulta ocorre a cada 3 minutos, ou seja, pode levar algum tempo até que a ação seja realizada.
    6. Registro das últimas reinicializações, incluindo o motivo da reinicialização (acionamento remoto, desligamento ou perda de tensão, queda abaixo da largura de banda mínima)

Tutoriais abrangentes sobre como construir o painel e como integrá-lo a um programa Python podem ser encontrados diretamente na página Ubidots (https://help.ubidots.com/en/) ou via Google.