Buzzer: различия между версиями

Нет описания правки
Строка 1: Строка 1:
<languages/>
{{DISPLAYTITLE:Зуммер (звуковой излучатель)
<translate>
Все контроллеры Wiren Board имеют на борту Зуммер (звуковой излучатель). Зуммер питается от 5В и управляется ножкой gpio процессора в режиме ШИМ. Управлять Зуммером можно через sysfs-интерфейс ядра и различное ПО поверх него. Сейчас реализовано управление из web-интерфейса, движка правил wb-rules и python.
<!--T:1-->
Все контроллеры Wiren Board имеют на борту звуковой излучатель (далее - Buzzer). Buzzer питается от 5В и управляется ножкой gpio процессора в режиме ШИМ. Управлять Buzzer'ом можно через sysfs-интерфейс ядра и различное ПО поверх него. Сейчас реализовано управление из web-интерфейса, движка правил wb-rules и python.


==О ШИМ и пересчёт параметров==<!--T:2-->
==О ШИМ и пересчёт параметров==<!--T:2-->
[[Файл:Duty_cycle.gif|440px|thumb|right|Duty cycle управляет яркостью светодиодов / громкостью buzzer'a]]
[[Файл:Duty_cycle.gif|440px|thumb|right|Duty cycle управляет яркостью светодиодов / громкостью Зуммерa]]
ШИМ (PWM) - это распространённый способ управления мощностью, подаваемой к нагрузке.
ШИМ (PWM) - это распространённый способ управления мощностью, подаваемой к нагрузке.


<!--T:3-->
<!--T:3-->
В контексте управления Buzzer'ом, нас интересуют 2 параметра PWM:
В контексте управления Зуммером, нас интересуют 2 параметра PWM:
*Коэффициент заполнения (duty cycle) - влияет на громкость звука. Обычно, считается в процентном соотношении от периода сигнала.
*Коэффициент заполнения (duty cycle) - влияет на громкость звука. Обычно, считается в процентном соотношении от периода сигнала.
*Частота PWM (frequency) - влияет на высоту звука (чем выше частота, тем выше и звук). Единица, обратная периоду сигнала.
*Частота PWM (frequency) - влияет на высоту звука (чем выше частота, тем выше и звук). Единица, обратная периоду сигнала.
Строка 27: Строка 25:


<!--T:8-->
<!--T:8-->
В зависимости от ревизии контроллера и версии его ПО, узнать номер порта PWM для Buzzer можно разными способами:
*Для контроллеров WB6.X.X номер порта = 0,(для всех контроллеров до WB6.X.X номер порта = 2)
*По умолчанию (для всех контроллеров до WB6.X.X), номер порта = 2
*Для контроллеров WB6.X.X, номер порта = 0
*Номер порта можно узнать, выполнив команду <syntaxhighlight lang="bash">echo $WB_PWM_BUZZER</syntaxhighlight>  
*Номер порта можно узнать, выполнив команду <syntaxhighlight lang="bash">echo $WB_PWM_BUZZER</syntaxhighlight>  
Во всех примерах далее будем считать, что номер pwm-порта = 0.
Во всех примерах далее будем считать, что номер pwm-порта = 0.
Строка 56: Строка 52:
==Управление из web-интерфейса==<!--T:14-->
==Управление из web-интерфейса==<!--T:14-->


[[Файл:buzzer.png |250px|thumb|right| Управление Buzzer'ом]]
[[Файл:buzzer.png |250px|thumb|right| Управление Зуммером]]
В web-интрефейсе контроллера управление Buzzer'ом доступно во вкладке ''"Devices"''. От параметра ''"frequency"'' зависит высота звука. Начиная с 2019 года, параметры Buzzer сохраняются при перезагрузке контроллера.
В web-интрефейсе контроллера управление Зуммером доступно во вкладке ''"Devices"''. От параметра ''"frequency"'' зависит высота звука. Параметры сохраняются при перезагрузке контроллера.


==Управление из движка правил==<!--T:15-->
==Управление из движка правил==<!--T:15-->


<!--T:15-->
<!--T:15-->
Управление Buzzer'ом, выведенное в web-интерфейс, внутри представляет собой виртуальное устройство, созданное системным правилом wb-rules при старте контроллера. Исходный код правила доступен [https://github.com/wirenboard/wb-rules-system/blob/master/rules/buzzer.js на нашем github].
Управление Зуммером, выведенное в web-интерфейс - это виртуальное устройство, созданное системным правилом wb-rules при старте контроллера. Исходный код правила доступен [https://github.com/wirenboard/wb-rules-system/blob/master/rules/buzzer.js на нашем github].


<!--T:16-->
<!--T:16-->
Строка 95: Строка 91:


<!--T:20-->
<!--T:20-->
На контроллерах Wiren Board работать с Buzzer можно из python с помощью модуля ''beeper'' из пакета ''wb_common''. Модуль представляет собой обёртку вокруг интерфейса sysfs. Модуль предустановлен на все контроллеры в составе deb-пакета ''python-wb-common''. Исходный код доступен [https://github.com/wirenboard/wb-common/blob/master/wb_common/beeper.py на нашем github].
На контроллерах Wiren Board работать с зуммером можно из python с помощью модуля ''beeper'' из пакета ''wb_common''. Это обёртка вокруг интерфейса sysfs. Модуль предустановлен на все контроллеры в составе deb-пакета ''python-wb-common''. Исходный код доступен [https://github.com/wirenboard/wb-common/blob/master/wb_common/beeper.py на нашем github].


<!--T:21-->
<!--T:21-->
Пример работы с Buzzer из python:
Пример работы из python:
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
from wb_common import beeper
from wb_common import beeper