Оглавление:
- Запасы
- Шаг 1: особенности
- Шаг 2: Подключение
- Шаг 3: 3D-печать и создание погони
- Шаг 4: Настройка Raspberry PI
- Шаг 5: Программное обеспечение
- Шаг 6: Панель управления IOT
- Шаг 7: Введение в основные функции
Видео: Монитор пропускной способности: 7 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Поскольку я часто спрашивал себя, какая полоса пропускания в настоящее время предоставляется моим интернет-провайдером (я использую модем LTE для подключения к Интернету), я подумал о системе мониторинга пропускной способности. Поскольку система должна быть компактной и энергосберегающей, я выбрал Raspberry Pi Zero в качестве центрального компонента. Raspberry подключен к модему через WLAN, поэтому проблемы с WLAN также могут быть обнаружены.
Запасы
- Малина Pi Zero WH
- Дисплей с электронными чернилами Waveshare (модуль электронной бумаги 2,9 дюйма)
- Преобразователь постоянного тока в постоянный (например, DEBO DCDC 20 Вт)
- RGB светодиод (снят со старого устройства)
- Нажать кнопку
- Выключатель
- Релейный модуль (например, 2-позиционный релейный модуль 2-позиционный релейный модуль)
- Штекерный разъем + женский разъем (оба соответствуют размеру вилки источника питания модема)
- Чехол для 3D-печати
Шаг 1: особенности
- Raspberry Pi Zero подключается через WLAN, проверяет скорость загрузки и загрузки и каждые полчаса выполняет измерение пинга. Версия speedtest.net для командной строки используется в качестве основы для измерений.
- Результат измерения пропускной способности и пинга отображается на дисплее e-ink. Также отображается время измерения.
- Если скорость загрузки падает ниже определенного порогового значения, реле отключает и включает модем на короткое время. Таким образом, модем сбрасывается без каких-либо изменений в устройстве (прерывается только подача питания).
- Кнопка на передней панели устройства доступна для запуска измерения полосы пропускания вручную.
- Измеренные значения отображаются на панели инструментов Ubidots (портал IOT). В обзоре вы также можете увидеть хронологию измеренных значений во времени и причины последних сбросов.
- На портале IOT вы также можете найти кнопку для удаленного сброса модема.
- Монитор пропускной способности использует источник питания модема. Никаких дополнительных поставок не требуется. Реле прерывает подачу питания на модем - малина остается включенной.
Шаг 2: Подключение
На первом изображении вы можете увидеть внутреннее устройство монитора пропускной способности:
Основные компоненты:
- Нажать кнопку
- E-ink дисплей
- Raspberry Pi Zero
- Модуль реле
- Светодиод RGB + резисторы (в зависимости от используемого светодиода RGB)
- Выключатель
- Преобразователь постоянного тока в постоянный
- Женский разъем
На втором рисунке показана схема подключения. Положительный полюс напряжения питания подается через переключатель на преобразователь напряжения постоянного тока в постоянный (который преобразует напряжение питания 12 В маршрутизатора в 5 В для Raspberry) и через реле (через нормально подключенный контакт) обратно на выходной разъем. Таким образом, модем также получает питание, когда монитор полосы пропускания выключен.
Измерение пропускной способности можно запустить вручную с помощью кнопки. Светодиод RGB используется для визуализации различных рабочих состояний.
Связь между Raspberry Pi и дисплеем e-ink на принципиальной схеме не показана. Подключите дисплей в соответствии с таблицей и схемой расположения выводов выше.
Шаг 3: 3D-печать и создание погони
Для корпуса необходимы следующие детали (см. Рисунок выше):
- нижняя часть
- верхняя часть
- передний
- назад
- 4x крепление
Все детали можно распечатать без подставок. Вы также можете найти файлы и некоторые другие мои проекты на Thingiverse:
Дисплей можно прикрепить к передней панели с помощью креплений и двустороннего скотча. К задней и задней панели прикручены кнопочный переключатель и женский разъем. Я использовал винты 3x20 мм, чтобы соединить две половинки корпуса. Допуски на пазы для передней и задней панелей относительно жесткие. При необходимости переднюю и заднюю панели необходимо отшлифовать по краю (с внутренней стороны, чтобы не повредить поверхность).
Шаг 4: Настройка Raspberry PI
Это руководство по установке основано на составлении нескольких инструкций по установке из разных источников (производителей дисплеев e-Ink и т. Д.). Для меня инструкция привела к желаемому результату. Поскольку я не являюсь экспертом по Linux, никаких оптимизаций и т.п. не проводилось. Я знаю, что, безусловно, есть лучшие и более эффективные решения.
Предположим, у вас уже установлен Raspbian на вашем Pi (существует множество руководств по установке базовой операционной системы), и у вас есть подключенный дисплей (через miniHDMI), мышь и клавиатура. Также предполагается правильно настроенное соединение WLAN с маршрутизатором или Интернетом. Если не указано иное, все процедуры установки выполняются в терминале.
Установите удаленный рабочий стол (для доступа к PI с вашего компьютера):
sudo apt-get update
sudo apt-get
установить xrdp
или вы также можете работать без головы через ssh (см., например, Измени пароль:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Установите спидтест:
судо
apt-get установить python-pip
sudo pip установить speedtest-cli
чтобы проверить, прошла ли установка успешно, запустите Speedtest в терминале:
speedtest-cli
если что-то в порядке, вы должны получить что-то, как на первом рисунке выше.
Установить проводкуPI
sudo apt-get install git-core
git clone git: //git.drogon.net/wiringPi
cd wiringPi
./строить
(см. также
Альтернатива:
sudo apt-get install wiringpi
(см.
Установить BCM2835
(см.
Загрузите bcm2835-1.60.tar.gz (или более новую версию, если доступна)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./configure
делать
sudo сделать проверку
sudo make install
Установите библиотеку изображений Python
sudo apt-get install python-imaging
Альтернатива:
sudo apt-get install python-pil
Включите функцию I2C.
Выполните следующую команду, чтобы настроить плату Raspberry Pi:
sudo raspi-config
Выберите «Параметры интерфейса» -> «I2C» -> «Да», чтобы запустить драйвер ядра I2C. Затем вам также необходимо изменить файл конфигурации. Выполните следующую команду, чтобы открыть файл конфигурации:
Судо нано / и т.д. / модули
Добавьте следующие две строки в файл конфигурации
i2c-bcm2708
i2c-dev
См. Также
Включите функцию SPI
Выполните следующую команду, чтобы настроить плату Raspberry Pi:
sudo raspi-config
Выберите «Параметры интерфейса» -> «SPI» -> «Да», чтобы запустить основной драйвер SPI.
Установите дополнительные шрифты:
sudo apt-get install ttf-mscorefonts-installer
Скачайте и установите шрифты (Roboto + Droid)
gksudo
pcmanfm
Чтобы запустить файловый менеджер с правами root и скопировать шрифты TrueType в папку / usr / share / fonts / truetype
Альтернатива:
Скопируйте шрифты в папку Downloads с WinSCP (для использования WinSCP необходимо включить ssh)
sudo cp -r / home / pi / Downloads / droid / usr / share / fonts / truetype
sudo cp -r / home / pi / Downloads / roboto / usr / share / fonts / truetype
Для доступа к папке шрифтов вам потребуются привилегии root. Возможно, есть лучшие способы сделать это (как уже упоминалось, я не эксперт по Linux), но оба способа сработали для меня.
Файлы Python:
Воспользуйтесь файловым менеджером, чтобы создать новую папку "bandwidth_monitor".
Скопируйте все файлы в каталог bandwidth_monitor
Сделайте файлы Python и скрипт исполняемым
chmod + x *.py
chmod + x speedtest-cron.sh
Настроить crontab
crontab -e
Crontab используется для планирования выполнения программы, например. спидтест каждые 30 мин. Добавьте следующие строки в ваш crontab (см. Также второй рисунок):
@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
Описание запланированных задач:
- при перезагрузке сообщение о перезагрузке записывается на панель управления IOT
- при перезагрузке запускается опрос test_now_button
- каждые 30 минут выполняется измерение пропускной способности
- каждые 3 минуты проверяется состояние кнопки удаленного сброса (на панели IOT)
- один раз в день запускается цикл обновления дисплея.
См. Раздел программного обеспечения для краткого описания программ.
Шаг 5: Программное обеспечение
Программа разбита на несколько файлов / программ:
bandwidth_monitor_0_4.py - это основная программа, которая запускается Crontab каждые полчаса. Он выполняет тест пропускной способности (через версию speedtest.net из командной строки). Во время теста светодиод RGB горит синим. Если полоса пропускания превышает выбранный порог, значение отображается на дисплее e-ink (вместе с меткой времени) и экспортируется на панель управления Ubidots. Если полоса пропускания ниже порогового значения, светодиод становится красным, и измерение повторяется после небольшой задержки. После 3 отрицательных попыток реле срабатывает, и питание модема прерывается. Код сброса (значение = 2) записывается в раздел журнала.
poll_killswitch.py считывает состояние логической переменной на панели управления. Если killswitch_state истинно, реле активируется, и питание модема прерывается. Светодиод RGB загорается зеленым во время опроса выключателя. После сброса для killswitch_state устанавливается значение false, и создается запись в разделе журнала панели управления (значение = 1).
poll_test_now_button.py ожидает нажатия кнопки на передней панели корпуса. При нажатии кнопки измерение полосы пропускания запускается вручную. При запуске программы (при перезагрузке Raspberry Pi) светодиод RGB мигает красным.
post_restart_message.py записывает код сброса (значение = 3) в раздел журнала панели управления. Это означает, что монитор пропускной способности был перезапущен. Во время запуска программы светодиод RGB мигает синим.
test_LED.py и test_relay.py - это простые скрипты, которые можно использовать для проверки аппаратной функции светодиода RGB и реле.
epdconfig.py и epd2in9.py - это драйверы устройства для отображения электронных чернил, предоставляемые Waveshare.
Чтобы разрешить программам доступ к панели управления Ubidots, вам необходимо добавить свои индивидуальные токены и имена устройств или переменных (если вы используете другие обозначения). Найдите раздел, подобный показанному на изображении выше (замените XXXXXXXX своим токеном).
Исчерпывающие руководства о том, как создать приборную панель и как интегрировать приборную панель в программу Python, можно найти непосредственно на странице Ubidots (https://help.ubidots.com/en/) или через Google.
Шаг 6: Панель управления IOT
Панель управления Ubidots (см. Https://ubidots.com) содержит несколько областей, которые кратко описаны ниже.
- Временная последовательность скорости загрузки и загрузки. Каждые полчаса в диаграмму добавляется новое значение.
- Динамика измеренного времени пинга. Каждые полчаса в диаграмму добавляется новое значение.
- Временная последовательность средней скорости загрузки. Среднее значение за 24 часа вычисляется и записывается на диаграмму.
- Табличное представление текущих значений измерения, включая отметку времени.
- Кнопка дистанционного управления для сброса модема через Интернет. Запрос выполняется каждые 3 минуты, то есть до выполнения действия может потребоваться некоторое время.
- Регистрация последних сбросов, включая причину сброса (удаленный запуск, отключение или потеря напряжения, падение ниже минимальной полосы пропускания)
Исчерпывающие руководства о том, как создать приборную панель и как интегрировать приборную панель в программу Python, можно найти непосредственно на странице Ubidots (https://help.ubidots.com/en/) или через Google.
Рекомендуемые:
Монитор температуры в бассейне MQTT: 7 шагов (с изображениями)
Монитор температуры плавательного бассейна MQTT: этот проект является дополнением к другим моим проектам домашней автоматизации Контроллер гейзера с функцией интеллектуального сбора данных и контроллер многоцелевого освещения помещений и устройств. Это монитор, устанавливаемый у бассейна, который измеряет температуру воды в бассейне, окружающего воздуха
Монитор масляного бака WiFi: 6 шагов (с изображениями)
Монитор масляного бака WiFi: Есть несколько способов проверить, сколько топлива осталось в масляном баке. Самый простой способ - использовать щуп, очень точный, но не очень интересный в холодный зимний день. Некоторые резервуары оснащены смотровой трубкой, которая снова дает прямую индикацию о
Умный монитор для комнатных растений - знайте, когда вашему растению нужен полив: 8 шагов (с изображениями)
Умный монитор для комнатных растений - знайте, когда вашему растению нужен полив: пару месяцев назад я сделал палку для мониторинга влажности почвы, которая питается от батареи и может быть вставлена в почву в горшке для комнатного растения, чтобы дать вам некоторую полезную информацию о почве. уровень влажности и мигающие светодиоды, сообщающие вам, когда
Монитор кормушки для птиц V2.0: 12 шагов (с изображениями)
Bird Feeder Monitor V2.0: это проект для отслеживания, фотографирования и записи количества и времени, проведенного птицами, посещающими нашу кормушку. В этом проекте использовалось несколько Raspberry Pi (RPi). Один использовался в качестве емкостного сенсорного датчика, Adafruit CAP1188, для обнаружения, записи
Светодиодные фильтры высокой и средней пропускной способности: 4 ступени
Светодиодные фильтры высокого и среднего прохода: мы создали фильтры высокого и среднего прохода, чтобы светодиоды становились ярче и тусклее в зависимости от частоты, подаваемой в схему. Когда в схему вводятся более высокие частоты, загорается только зеленый светодиод. Когда частота вводится в цепь i