Перейти к содержанию

Навигация

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

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


==О ШИМ и пересчёт параметров==<!--T:2-->
==Описание== <!--T:22-->
Контроллер Wiren Board имеет на борту Зуммер (звуковой излучатель). Зуммер питается от 5В и управляется ножкой gpio процессора в режиме ШИМ. Управлять зуммером можно через sysfs-интерфейс ядра и различное ПО поверх него. Также реализовано управление из веб-интерфейса, движка правил wb-rules и python.
 
==Управление из веб-интерфейса== <!--T:14-->
 
<!--T:23-->
[[Файл:buzzer.png |300px|thumb|right| Управление зуммером]]
В веб-интерфейсе контроллера управление зуммером доступно во вкладке ''"Devices"''. Параметр ''"Frequency"'' - частота звука в Гц. ''"Volume"'' - громкость (в условных единицах, шкала линейная). Параметры сохраняются при перезагрузке контроллера.
 
==Управление из движка правил== <!--T:15-->
 
 
<!--T:24-->
Управление зуммером, выведенное в веб-интерфейс - это виртуальное устройство, созданное системным правилом wb-rules при старте контроллера. Исходный код правила доступен [https://github.com/wirenboard/wb-rules-system/blob/master/rules/buzzer.js на нашем github].
 
<!--T:16-->
О том, для чего нужны виртуальные устройства, можно узнать подробнее в [[wb-rules|описании движка правил]].
 
<!--T:17-->
Системное правило внутри реализует пересчёт тональности и громкости (см [[#О ШИМ и пересчёт параметров|раздел о пересчёте]]) и работу с pwm через sysfs (см [[#Работа из sysfs|соответствующий раздел]]). Наружу пользователю доступно устройство ''"buzzer"'', имеющее несколько mqtt-контролов:
{| class="wikitable"
!Device||Control||Тип||Максимальное значение||Описание
|-
|rowspan="3"|Buzzer
|Frequency
|Range
|7000
|Частота звука
|-
|Volume
|Range
|100
|Громкость, %
|-
|Enabled
|Switch
|
|Включение/отключение
|}
 
<!--T:18-->
Контролы устройства можно использовать в собственных правилах. Подробнее о структуре mqtt-топиков виртуальных и физических устройств можно узнать из нашей [https://github.com/wirenboard/conventions/blob/main/README.md mqtt-конвенции].
 
==Управление из python== <!--T:19-->
 
<!--T:20-->
На контроллерах 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-->
Пример работы из python:
<syntaxhighlight lang="python">
from wb_common import beeper
 
<!--T:25-->
beeper.beep(0.5, 2)
</syntaxhighlight>
Поддерживаются все настройки sysfs-интерфейса (пересчёт нужно проводить вручную; см [[#О ШИМ и пересчёт параметров|раздел о пересчёте]]).
 
==Низкоуровневая работа== <!--T:5-->
 
===О ШИМ и пересчёт параметров=== <!--T:2-->
[[Файл:Duty_cycle.gif|440px|thumb|right|Duty cycle управляет яркостью светодиодов / громкостью Зуммерa]]
[[Файл:Duty_cycle.gif|440px|thumb|right|Duty cycle управляет яркостью светодиодов / громкостью Зуммерa]]
ШИМ (PWM) - это распространённый способ управления мощностью, подаваемой к нагрузке.
ШИМ (PWM) - это распространённый способ управления мощностью, подаваемой к нагрузке.
Строка 17: Строка 79:
</b>
</b>


==Низкоуровневая работа==<!--T:5-->
===Номер pwm-порта для sysfs=== <!--T:6-->
 
===Номер pwm-порта для sysfs===<!--T:6-->


<!--T:7-->
<!--T:7-->
Строка 29: Строка 89:
Во всех примерах далее будем считать, что номер pwm-порта = 0.
Во всех примерах далее будем считать, что номер pwm-порта = 0.


===Работа из sysfs===<!--T:9-->
===Работа из sysfs=== <!--T:9-->


<!--T:10-->
<!--T:10-->
Строка 39: Строка 99:


<!--T:11-->
<!--T:11-->
Для того, чтобы выключить Buzzer, нужно записать 0: <syntaxhighlight lang="bash">echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable</syntaxhighlight>
Для выключения зуммера, нужно записать 0: <syntaxhighlight lang="bash">echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable</syntaxhighlight>


<!--T:12-->
<!--T:12-->
Строка 49: Строка 109:
T(ns) = 1 000 000 / f(kHz)
T(ns) = 1 000 000 / f(kHz)
</b>
</b>
==Управление из web-интерфейса==<!--T:14-->
[[Файл:buzzer.png |250px|thumb|right| Управление зуммером]]
В web-интрефейсе контроллера управление зуммером доступно во вкладке ''"Devices"''. От параметра ''"frequency"'' зависит высота звука. Параметры сохраняются при перезагрузке контроллера.
==Управление из движка правил==<!--T:15-->
<!--T:15-->
Управление зуммером, выведенное в web-интерфейс - это виртуальное устройство, созданное системным правилом wb-rules при старте контроллера. Исходный код правила доступен [https://github.com/wirenboard/wb-rules-system/blob/master/rules/buzzer.js на нашем github].
<!--T:16-->
О том, для чего нужны виртуальные устройства можно узнать подробнее в [[#Движок_правил_wb-rules:Первое правило с виртуальным устройством|описании движка правил]].
<!--T:17-->
Системное правило внутри реализует пересчёт тональности и громкости (см [[#О ШИМ и пересчёт параметров|раздел о пересчёте]]) и работу с pwm через sysfs (см [[#Работа из sysfs|соответствующий раздел]]). Наружу пользователю доступно устройство ''"buzzer"'', имеющее несколько mqtt-контролов:
{| class="wikitable"
!Device||Control||Тип||Максимальное значение||Описание
|-
|rowspan="3"|buzzer
|frequency
|range
|7000
|высота звука
|-
|volume
|range
|100
|громкость, %
|-
|enabled
|switch
|
|включение/отключение
|}
<!--T:18-->
Контролы устройста можно использовать в собственных правилах. Подробнее о структуре mqtt-топиков виртуальных и физических устройств можно узнать из нашей [https://github.com/wirenboard/homeui/blob/master/conventions.md mqtt-конвенции].
==Управление из python==<!--T:19-->
<!--T:20-->
На контроллерах 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-->
Пример работы из python:
<syntaxhighlight lang="python">
from wb_common import beeper
beeper.beep(0.5, 2)
</syntaxhighlight>
Поддерживаются все настройки sysfs-интерфейса (пересчёт нужно проводить вручную; см [[#О ШИМ и пересчёт параметров|раздел о пересчёте]]).
</translate>
</translate>
translator, wb_editors
4259

правок