Índice:
- Etapa 1: O Plano
- Etapa 2: Coisas que você vai precisar
- Etapa 3: Calculando a corrente de deflexão em escala real
- Etapa 4: Criação de solicitação SNMP GET
- Etapa 5: Compreendendo a resposta GET
- Etapa 6: Conversor Digital para Analógico (DAC)
- Etapa 7: A montagem
- Etapa 8: Tempo para codificação
- Etapa 9: Divirta-se
Vídeo: Velocímetro da Internet: 9 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Com o bloqueio total acontecendo na Índia, tudo, incluindo os serviços de correio, foi encerrado. Sem novos projetos de PCB, sem novos componentes, nada! Então, para superar o tédio e me manter ocupada, resolvi fazer algo com as peças que já tenho em casa. Comecei a procurar na pilha de lixo eletrônico e encontrei um multímetro analógico velho e quebrado. Recuperei o 'movimento do medidor' dele e decidi exibir algum tipo de informação, mas não sabia exatamente o quê. Primeiro, pensei em exibir as estatísticas do COVID-19, mas já existem muitos projetos melhores na Internet. Além disso, os dados são atualizados após algumas horas e um ponteiro parado do medidor seria enfadonho. Eu queria dados que mudassem rapidamente, mudando a cada segundo. Pedi sugestões no Instagram e um dos meus seguidores respondeu com Velocímetro da Internet. Pareceu interessante e decidi dar certo!
Neste Instructable, vou mostrar como peguei dados do meu roteador WiFi usando SNMP e exibi as velocidades de upload e download no medidor.
Vamos começar
Etapa 1: O Plano
Como sempre antes de começar o projeto pesquisei um pouco na internet. Encontrei alguns projetos relacionados a este tópico. Eles eram de dois tipos. Um que mostrou a velocidade da Internet medindo a 'força' do sinal wi-fi. Eu não sou um cara especialista em redes, mas isso não parecia certo. Os outros mediram a latência e categorizaram a velocidade como lenta, média ou rápida. Latência é o intervalo de tempo entre o envio da solicitação e a obtenção da resposta e, portanto, não pode ser a representação real da velocidade da Internet. Podemos chamá-lo de velocidade de resposta da rede! Depois, havia projetos legítimos que mediam o tempo necessário para baixar alguns dados e calculavam a velocidade da internet com base nisso.
Mas foi neste projeto (de Alistair) que aprendi sobre Simple Network Management Protocol ou SNMP. Usando SNMP, podemos nos comunicar com o roteador WiFi e obter os dados necessários diretamente dele. Fácil, certo? Na verdade não! Porque os diferentes modelos de roteadores WiFi usados têm configurações diferentes e precisam de muitas tentativas e erros antes de você finalmente obter a saída. Não tenha medo. Explicarei resumidamente tudo o que aprendi sobre SNMP e as dificuldades que enfrentei nas próximas etapas.
Portanto, o plano é usar o NodeMCU para se conectar ao roteador WiFi. Estas são as etapas para chegar ao resultado final:
- Envie uma solicitação ao roteador 'solicitando' os dados necessários
- Obtenha a resposta do roteador
- Analise a resposta e analise os dados necessários dela
- Converta os dados 'brutos' em informações compreensíveis
- Gerar voltagem proporcional à velocidade da internet para o medidor
- Repetir
Usarei um DAC ou conversor digital para analógico para controlar o medidor.
Etapa 2: Coisas que você vai precisar
1x NodeMCU
1x movimento do medidor analógico
1x MPU4725 DAC
1x interruptor SPDT
1x Potenciômetro de 10k
1x resistor
Etapa 3: Calculando a corrente de deflexão em escala real
Observação: pule para a etapa 7 para a construção real!
Pule esta etapa se você já souber a corrente de deflexão de escala total para o seu medidor. Meu medidor não mencionou isso, então tive que calcular. Mas, primeiro, vamos ver rapidamente como funciona esse movimento. Consiste em uma bobina suspensa em um campo magnético. Quando a corrente flui pela bobina, de acordo com a lei de Faraday, ela experimenta uma força. A bobina pode girar livremente no campo magnético, assim como o ponteiro que está preso à bobina. A magnitude da corrente que faz o ponteiro se mover no 'final da escala' é chamada de corrente de deflexão de escala total. Esta também é a corrente máxima que deve ser permitida fluir pela bobina.
Há muito mais coisas acontecendo, mas isso é o suficiente para o que estamos fazendo. Agora temos o movimento. Ele pode ser usado como um voltímetro adicionando uma alta resistência em série com ele ou como um amperímetro adicionando uma pequena resistência em paralelo a ele. Vamos usá-lo como um voltímetro para mostrar a tensão proporcional à velocidade da internet. Portanto, precisamos calcular a resistência que deve ser adicionada em série. Para isso, primeiro precisamos calcular a corrente de deflexão em escala real.
- Escolha um valor de resistência alto (como> 100k)
- Conecte-o em série com o movimento e aplique uma tensão variável nele usando o potenciômetro.
- Continue aumentando a tensão lentamente até que o ponteiro alcance o final da escala.
- Usando um multímetro, meça a corrente que flui. Esta é a corrente de deflexão em escala real. (I = 150uA no meu caso)
Estamos usando um DAC que tem a faixa de tensão de saída de 0 a VCC (3,3 V devido ao NodeMCU). Isso significa que quando 3,3 V é aplicado ao medidor, ele deve apontar para o final da escala. Isso pode acontecer quando a corrente de deflexão em escala real flui através do circuito quando 3,3 V é aplicado. Usando a Lei de Ohm, 3.3 / (corrente de deflexão em escala real) fornece o valor para a resistência a ser inserida em série.
Etapa 4: Criação de solicitação SNMP GET
SNMP (Simple Network Management Protocol) é um protocolo padrão da Internet para coletar e organizar informações sobre dispositivos gerenciados em redes IP e para modificar essas informações para alterar o comportamento do dispositivo. Os dispositivos que normalmente oferecem suporte a SNMP incluem modems a cabo, roteadores, switches, servidores, estações de trabalho, impressoras e muito mais. Para esta construção, estaremos nos comunicando com nosso roteador WiFi usando SNMP e obteremos os dados necessários.
Mas, primeiro, precisamos enviar uma solicitação conhecida como 'Solicitação GET' ao roteador mencionando os detalhes dos dados que desejamos. O formato do pedido GET é mostrado na imagem. O pedido consiste em várias partes. Eu destaquei os bytes que você pode querer alterar.
Observe que tudo está em hexadecimal.
Mensagem SNMP - No meu caso, o comprimento de toda a mensagem é 40 (cor cinza) que quando convertido para hexadecimal é 0x28.
SNMP Community String - O valor 'PUBLIC' é escrito em hexadecimal como '70 75 62 6C 69 63 'cujo comprimento é 6 (amarelo).
Tipo de PDU SNMP - No meu caso, o comprimento da mensagem é 27 (azul), ou seja, 0x1B.
Varbind List Type - no meu caso, o comprimento da mensagem é 16 (verde), ou seja, 0x10.
Tipo Varbind - No meu caso, o comprimento da mensagem é 14 (rosa), ou seja, 0x0E.
Identificador de objeto -
Como mencionado anteriormente, os dispositivos de rede habilitados para SNMP (por exemplo, roteadores, switches, etc.) mantêm um banco de dados de status do sistema, disponibilidade e informações de desempenho como objetos, identificados por OIDs. Você precisa identificar os OIDs do seu roteador para upload e download de pacotes. Isso pode ser feito usando um navegador MIB gratuito como este.
Digite o endereço como 192.168.1.1 e o OID como.1.3.6.1.2.1.2.2.1.10.x (ifInOctets) ou.1.3.6.1.2.1.2.2.1.16.x. (ifOutOctets). Selecione Get operation e clique em Go. Você deve ver o OID junto com seu valor e tipo.
No meu caso, o comprimento da mensagem é 10 (vermelho), ou seja, 0x0A. Substitua o valor pelo OID. Neste caso, '2B 06 01 02 01 02 02 01 10 10'
É isso! Sua mensagem de solicitação está pronta. Mantenha o resto dos bytes como estão.
Ativando SNMP em seu roteador:
- Faça logon na página do seu roteador WiFi por meio do gateway padrão. Digite 192.168.1.1 em seu navegador e pressione Enter. Por padrão, o nome de usuário e a senha devem ser 'admin'.
- Estou usando um roteador TP-LINK (TD-W8961N). Para este roteador, você deve ir para Gerenciamento de Acesso> SNMP e selecionar 'Ativado'.
- Comunidade GET: pública
- Host Trap: 0.0.0.0
Etapa 5: Compreendendo a resposta GET
Você pode pular esta etapa, mas é bom saber se você precisa solucionar alguns problemas.
Depois de fazer upload do código e executá-lo, você pode dar uma olhada na resposta por meio do monitor serial. Deve ser parecido com o mostrado na imagem. Existem alguns bytes que você precisa procurar que eu destaquei.
A partir de 0, O 15º byte informa o tipo de PDU - 0xA2 significa que é uma GetResponse.
O 48º byte informa o tipo de dados - 0x41 significa que o tipo de dados é Contador.
O 49º byte informa o comprimento dos dados - 0x04 significa que os dados têm 4 bytes.
Byte 50, 51, 52, 53 contém os dados.
Etapa 6: Conversor Digital para Analógico (DAC)
Microcontroladores são dispositivos digitais que não entendem tensões analógicas diretamente. Estou usando um medidor analógico que precisa de uma tensão variável como entrada. Mas o microcontrolador pode apenas produzir ALTO (3,3 V no caso do NodeMCU) e BAIXO (0 V). Agora você pode dizer por que não usar apenas o PWM. Não funcionará, pois o medidor exibirá apenas o valor médio.
Estou usando MCP4725 DAC para obter tensão variável. É um DAC de 12 bits, ou seja, em termos simples, ele dividirá de 0 a 3,3 V em 4096 (= 2 ^ 12) partes. A resolução será 3,3 / 4096 = 0,8056mV. Isso significa que 0 corresponde a 0V, 1 corresponde a 0,8056mV, 2 corresponde a 1,6112mV,….., 4095 corresponde a 3,3V.
A velocidade da internet será 'mapeada' de '0 a 7 mbps' a '0 a 4095' e então este valor será dado ao DAC para emitir uma tensão que será proporcional à velocidade da internet.
Etapa 7: A montagem
As conexões são muito simples. O esquema foi anexado aqui.
Eu projetei e imprimi a escala. O superior é para velocidade de download e o inferior é para velocidade de upload. Colei a nova balança sobre a antiga.
Tirei todo o material antigo do multímetro e coloquei tudo nele. Foi um ajuste apertado. Tive que fazer um furo na frente para conectar a chave seletora que é usada para selecionar entre a velocidade de upload e download.
Etapa 8: Tempo para codificação
O código foi anexado aqui. Baixe e abra-o no Arduino IDE. Instale a biblioteca MCP4725 da Adafruit.
Antes de fazer upload:
- Digite seu SSID WiFi e senha
- Insira a velocidade máxima de upload e download mencionada na escala.
- Faça as alterações necessárias na matriz de solicitação para download e também para upload de pacotes.
- Remova o comentário da linha 165 para visualizar a resposta no monitor serial.
Clique em upload!
Etapa 9: Divirta-se
Ligue-o e divirta-se assistindo a dança da agulha enquanto você navega na Internet!
Obrigado por seguir até o fim. Espero que todos vocês amem este projeto e aprendam algo novo hoje. Deixe-me saber se você fizer um para você. Inscreva-se no meu canal no YouTube para mais projetos desse tipo.
Recomendado:
Velocímetro de bicicleta Arduino usando GPS: 8 etapas
Velocímetro de bicicleta Arduino usando GPS: neste tutorial, usaremos Arduino e Visuino para exibir uma velocidade de bicicleta atual do GPS no visor ST7735. Assista a um vídeo de demonstração
Visor do velocímetro da bicicleta: 10 etapas (com imagens)
Visor do velocímetro da bicicleta: o que é? Como o nome sugere, neste projeto você aprenderá a criar um visor para a sua bicicleta que consiste em um velocímetro e um hodômetro. Indicando a velocidade em tempo real e a distância percorrida. O custo total deste projeto chega a aro
Velocímetro GPS: 4 etapas (com fotos)
Velocímetro GPS: o carro da minha empresa, que normalmente dirijo, tende a ter um carro " pequeno " problemas de vez em quando, o velocímetro cai para 0 Km / h ao dirigir (depois de algum tempo ele recomeça). Normalmente, isso não é um grande problema, pois se você sabe dirigir um carro
Um velocímetro de bicicleta: 3 etapas
Velocímetro de bicicleta: Oi amigos … Neste instrutível vou explicar como fazer um velocímetro de bicicleta, na verdade tenho uma bicicleta ergométrica velha cujo velocímetro mecânico quebrou há muito tempo, e resolvi substituí-lo por um eletrônico, mas s
Velocímetro de trabalho RC do carro: 4 etapas (com fotos)
Velocímetro de carro RC de trabalho: Este é um pequeno projeto que criei como parte de uma construção RC maior de um Land Rover Leve. Decidi que gostaria de ter um velocímetro funcionando no painel, mas sabia que um servo não iria cortá-lo. Havia apenas uma opção razoável: d