Tabla de contenido:

Indicador de velocidad de Internet: 4 pasos (con imágenes)
Indicador de velocidad de Internet: 4 pasos (con imágenes)

Video: Indicador de velocidad de Internet: 4 pasos (con imágenes)

Video: Indicador de velocidad de Internet: 4 pasos (con imágenes)
Video: Como Medir Velocidad De Internet | Test De Velocidad De Internet 2024, Mes de julio
Anonim
Image
Image
Indicador de velocidad de Internet
Indicador de velocidad de Internet
Indicador de velocidad de Internet
Indicador de velocidad de Internet

Visión general

Este "indicador de velocidad de Internet" le brindará una supervisión casi en tiempo real del uso de su red. Esta información está disponible en la interfaz web de la mayoría de los enrutadores domésticos. Sin embargo, acceder a él requiere que detenga su tarea actual para buscarla.

Quería ver esta información sin tener que interrumpir mi tarea actual, mostrarla en un formato que fuera comprensible con solo un vistazo rápido y obtener la información de una manera que funcione con tantos enrutadores como sea posible, para que otros puedan potencialmente usarlo también.

Como hace las cosas

Me decidí por SNMP (Simple Network Management Protocol) como la forma de obtener la información del enrutador. SNMP se usa ampliamente en equipos de red y si su dispositivo no lo admite de forma predeterminada, se puede usar DDWRT (firmware de enrutador de código abierto) para implementar SNMP.

Para mostrar la información de una manera fácil de entender, utilicé un medidor de un automóvil. Los medidores de automóviles están diseñados para brindarle información sin distraer o confundir, para que el conductor pueda mantener la vista en la carretera. Además, tenía algunos por ahí.

Como esto estaría en mi escritorio, decidí que también haría la luz de fondo RGB porque los accesorios de computadora deberían ser todos RGB. ¿Derecha?

Desafíos

Los medidores que tenía utilizan un actuador Air-Core. Nunca había oído hablar de ellos antes de este proyecto.

De Wikipedia: El medidor de núcleo de aire consta de dos bobinas perpendiculares independientes que rodean una cámara hueca. El eje de una aguja sobresale en la cámara, donde se fija un imán permanente al eje. Cuando la corriente fluye a través de las bobinas perpendiculares, sus campos magnéticos se superponen y el imán queda libre para alinearse con los campos combinados.

No pude encontrar una biblioteca para Arduino que admitiera SNMP en la configuración del administrador. SNMP tiene dos formas principales, agente y administrador. Los agentes responden a la solicitud y los gerentes envían la solicitud a los agentes. Pude hacer funcionar la funcionalidad de administrador modificando la biblioteca Arduino_SNMP creada por 0neblock. Nunca he programado en C ++ más que hacer que los LED parpadeen en un Arduino, así que si hay problemas con la biblioteca SNMP, avíseme e intentaré solucionarlos, por ahora está funcionando.

Además, SNMP no está diseñado para visualización en tiempo real. El uso previsto es para realizar un seguimiento de las estadísticas y detectar interrupciones. Debido a esto, la información en el enrutador solo se actualiza cada 5 segundos (su dispositivo puede variar). Esa es la causa del retraso entre el número de la prueba de velocidad y el movimiento de la aguja.

Paso 1: herramientas y materiales

Herramientas y materiales
Herramientas y materiales
Herramientas y materiales
Herramientas y materiales
Herramientas y materiales
Herramientas y materiales
Herramientas y materiales
Herramientas y materiales
Diseño de circuito
Diseño de circuito

Necesitaremos 3 puentes en H completos. Los modelos que utilicé son Dual TB6612FNG y Dual L298N.

Cada actuador Air-Core requiere 2 puentes H completos porque las bobinas deben controlarse de forma independiente.

Uno de los medidores que estoy usando tiene una bobina en cortocircuito a tierra con un diodo y una resistencia. No estoy seguro de la ciencia detrás de esto, pero hacerlo le permite girar unos 90 grados con solo una bobina encendida.

Usaré el regulador de 12v a 5v que es parte de la placa L298N que seleccioné para alimentar el ESP32.

Todos los circuitos LED son opcionales, así como los conectores JST. Puede soldar fácilmente los cables directamente al ESP32 y al controlador del motor.

Paso 3: Diseño de código

Configuración de código

Necesitaremos configurar Arduino para poder usar la placa ESP32. Hay una buena guía ubicada aquí que lo guiará a través de la configuración de ESP32 Arduino.

También necesitará la biblioteca Arduino_SNMP que se encuentra aquí.

Para configurar el código, deberá recopilar cierta información.

  1. IP del enrutador
  2. Velocidad de carga máxima
  3. Max Velocidad de descarga
  4. Tu nombre y contraseña de WiFi
  5. OID que contiene los recuentos de octetos para "entrada" y "salida" en la interfaz WAN de su enrutador

Existen OID (identificadores de objeto) estándar para la información que queremos. Según el estándar MIB-2 los números que queremos son:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Donde X es el número asignado a la interfaz de la que desea obtener las estadísticas. Para mí, ese número es 3. Una forma de confirmar que este es el OID correcto para usted y de identificar qué número de interfaz necesita usar, es usar una herramienta como MIB Browser.

Para obtener velocidades máximas, utilicé SpeedTest.net. una vez que tenga sus velocidades en Mbps, deberá convertirlas en octetos usando esta fórmula.

Octetos por segundo = (Resultado de la prueba de velocidad en Mbps * 1048576) / 8

Función de código

El código envía una solicitud de obtención de SNMP al enrutador. Luego, el enrutador responde con un número, el número representa el recuento de octetos que se han enviado o recibido. Al mismo tiempo, registramos la cantidad de milisegundos que han pasado desde que se inició Arduino.

Una vez que este proceso ha sucedido al menos dos veces, podemos calcular el porcentaje de uso basado en nuestros valores máximos usando este código

percentDown = ((float) (byteDown - byteDownLast) / (float) (maxDown * ((milis () - timeLast) / 1000))) * 100;

Las matemáticas se desglosan así:

octetsDiff = snmp_result - Anterior_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second) / 1000

Porcentaje = (octetsDiff / MaxPosableOverTime) * 100

Ahora que tenemos el porcentaje de uso de la red, solo necesitamos escribirlo en el indicador. Lo hacemos en 2 pasos. Primero usamos la función updateDownloadGauge. En esta función usamos "mapa" para convertir el porcentaje en un número que representa una posición en radianes en el indicador. Luego le damos ese número a la función setMeterPosition para mover la aguja a la nueva posición.

Paso 4: Diseño de la carcasa

Diseño de caso
Diseño de caso
Diseño de caso
Diseño de caso
Diseño de caso
Diseño de caso

Para contener todo, diseñé un gabinete en fusion360 y lo imprimí en 3D. El diseño que hice es relativamente simple. Usé pegamento caliente para sujetar los componentes al interior y el medidor se mantiene en su lugar pellizcándolo entre la cubierta frontal y la contraportada. No es necesario utilizar la impresión 3D para crear la carcasa. Por ejemplo, podría hacer un estuche de madera, o podría volver a poner todo en el estuche original en el que venían los medidores.

Mis archivos STL están disponibles en thingiverse si desea verlos, pero es poco probable que funcionen para usted a menos que obtenga exactamente los mismos calibres que usé.

Archivos de casos:

Gracias por leer. Avíseme si tiene alguna pregunta y haré todo lo posible para responder.

Recomendado: