Оглавление:

Датчик скорости Интернета: 4 шага (с изображениями)
Датчик скорости Интернета: 4 шага (с изображениями)

Видео: Датчик скорости Интернета: 4 шага (с изображениями)

Видео: Датчик скорости Интернета: 4 шага (с изображениями)
Видео: ВНИМАНИЕ: Эта коварная настройка испортит качество изображения, если вы не сделаете вот этого.... 2024, Ноябрь
Anonim
Image
Image
Датчик скорости интернета
Датчик скорости интернета
Датчик скорости интернета
Датчик скорости интернета

Обзор

Этот «Интернет-датчик скорости» даст вам возможность почти в реальном времени контролировать использование вашей сети. Эта информация доступна в веб-интерфейсе большинства домашних маршрутизаторов. Однако для доступа к нему необходимо остановить текущую задачу, чтобы найти ее.

Я хотел просмотреть эту информацию, не прерывая мою текущую задачу, отобразить ее в формате, понятном с первого взгляда, и получить информацию таким образом, чтобы она работала с максимально возможным количеством маршрутизаторов, чтобы другие могли потенциально использовать его тоже.

Как это делает вещи

Я выбрал SNMP (простой протокол сетевого управления) в качестве способа получения информации от маршрутизатора. SNMP широко используется в сетевом оборудовании, и если ваше устройство не поддерживает его по умолчанию, DDWRT (прошивка маршрутизатора с открытым исходным кодом) может использоваться для реализации SNMP.

Чтобы отобразить информацию в удобном для понимания виде, я использовал автомобильный датчик. Автомобильные датчики разработаны, чтобы предоставлять вам информацию, не отвлекая и не сбивая с толку, поэтому водитель может следить за дорогой. Кроме того, у меня было кое-что валяющееся.

Так как это будет на моем столе, я решил, что также сделаю подсветку RGB, потому что компьютерные аксессуары должны быть RGB. Верно?

Вызовы

Датчики, которые у меня были, используют актуатор Air-Core. Я никогда не слышал об этом до этого проекта.

Из Википедии: Датчик с воздушным сердечником состоит из двух независимых перпендикулярных катушек, окружающих полую камеру. Вал иглы выступает в камеру, где к валу прикреплен постоянный магнит. Когда ток течет через перпендикулярные катушки, их магнитные поля накладываются друг на друга, и магнит может свободно выравниваться с объединенными полями.

Мне не удалось найти библиотеку для Arduino, поддерживающую SNMP, в конфигурации менеджера. SNMP имеет две основные формы: агент и менеджер. Агенты отвечают на запрос, а менеджеры отправляют запрос агентам. Мне удалось заставить работать менеджер, изменив библиотеку Arduino_SNMP, созданную 0neblock. Я никогда не программировал на C ++, кроме как заставить мигать светодиоды на Arduino, поэтому, если есть проблемы с библиотекой SNMP, дайте мне знать, и я постараюсь их исправить, но сейчас он работает.

Кроме того, SNMP не предназначен для просмотра в реальном времени. Предполагаемое использование - для отслеживания статистики и обнаружения отключений. Из-за этого информация на маршрутизаторе обновляется примерно каждые 5 секунд (ваше устройство может отличаться). Это причина задержки между числом в тесте скорости и движением иглы.

Шаг 1. Инструменты и материалы

Инструменты и материалы
Инструменты и материалы
Инструменты и материалы
Инструменты и материалы
Инструменты и материалы
Инструменты и материалы
Инструменты и материалы
Инструменты и материалы
Схемотехника
Схемотехника

Нам понадобится 3 полных Н-моста. Я использовал модели Dual TB6612FNG и Dual L298N.

Для каждого привода Air-Core требуется 2 полных H-образных моста, потому что катушками нужно управлять независимо.

В одном из датчиков, которые я использую, одна катушка закорочена на землю с помощью диода и резистора. Я не уверен в науке, лежащей в основе этого, но это позволяет ему вращаться примерно на 90 градусов при питании только одной катушки.

Я буду использовать регулятор с 12 В на 5 В, который является частью платы L298N, которую я выбрал для питания ESP32.

Все светодиодные схемы не являются обязательными, так же как и разъемы JST. Вы можете легко припаять провода непосредственно к ESP32 и драйверу двигателя.

Шаг 3: Дизайн кода

Настройка кода

Нам нужно будет настроить Arduino, чтобы можно было использовать плату ESP32. Здесь есть хорошее руководство, которое проведет вас через настройку ESP32 Arduino.

Вам также понадобится библиотека Arduino_SNMP, расположенная здесь.

Чтобы настроить код, вам нужно будет собрать некоторую информацию.

  1. IP маршрутизатора
  2. Максимальная скорость загрузки
  3. Максимальная скорость загрузки
  4. Ваше имя и пароль от Wi-Fi
  5. OID, который содержит количество октетов для входов и выходов на интерфейсе WAN вашего маршрутизатора.

Существуют стандартные OID (идентификаторы объектов) для нужной нам информации. Согласно стандарту MIB-2 нам нужны следующие числа:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Где X - номер, присвоенный интерфейсу, с которого вы хотите получать статистику. Для меня это число 3. Один из способов подтвердить, что это правильный OID для вас, и определить, какой номер интерфейса вам нужно использовать, - это использовать такой инструмент, как MIB Browser.

Чтобы получить максимальную скорость, я использовал SpeedTest.net. как только у вас будет скорость в Мбит / с, вам нужно будет преобразовать ее в октеты, используя эту формулу.

Октетов в секунду = (Результат теста скорости в Мбит / с * 1048576) / 8

Код Функция

Код отправляет маршрутизатору запрос на получение SNMP. Затем маршрутизатор отвечает числом, которое представляет собой количество отправленных или полученных октетов. В то же время мы записываем количество миллисекунд, прошедших с момента запуска Arduino.

После того, как этот процесс произойдет как минимум дважды, мы можем рассчитать процент использования на основе наших максимальных значений, используя этот код.

процентDown = ((float) (byteDown - byteDownLast) / (float) (maxDown * ((millis () - timeLast) / 1000))) * 100;

Математика выглядит так:

octetsDiff = snmp_result - Предыдущий_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second) / 1000

Процент = (octetsDiff / MaxPosableOverTime) * 100

Теперь, когда у нас есть процент использования сети, нам просто нужно записать его в датчик. Мы делаем это за 2 шага. Сначала мы используем функцию updateDownloadGauge. В этой функции мы используем «карту» для преобразования процента в число, которое представляет положение в радианах на датчике. Затем мы передаем это число функции setMeterPosition, чтобы переместить иглу в новое положение.

Шаг 4: Дизайн корпуса

Дизайн корпуса
Дизайн корпуса
Дизайн корпуса
Дизайн корпуса
Дизайн корпуса
Дизайн корпуса

Чтобы вместить все, я спроектировал корпус из fusion360 и напечатал его на 3D-принтере. Дизайн, который я сделал, относительно прост. Я использовал горячий клей, чтобы прикрепить компоненты к внутренней части, и датчик удерживается на месте, зажатым между передней и задней крышками. Для создания корпуса не обязательно использовать 3D-печать. Например, вы можете сделать ящик из дерева или положить все обратно в исходный ящик, в котором были датчики.

Мои файлы STL доступны на сайте thingiverse, если вы хотите их просмотреть, но маловероятно, что они будут работать для вас, если вы не получите точно такие же датчики, которые я использовал.

Файлы дела:

Спасибо за прочтение. Дайте мне знать, если у вас возникнут вопросы, и я постараюсь ответить.

Рекомендуемые: