Простейший ключ для управления бипером можно сделать на основе биполярного или полевого транзистора, как показано на схеме рис. 6.4.
Рис. 6.4. Ключ на биполярном ( а) и полевом ( б) транзисторе
Подойдет любой маломощный биполярный n-p-n -транзистор или полевой N -канальный, затвор которого управляется логическими уровнями. Такие транзисторы еще называют "цифровыми".
Для активации функции бипера надо раскомментировать строку
#define BUZZER
После этого в интерфейсе конфигуратора появится опция BEEPERи можно будет назначить включение звукового сигнала на один из переключателей AUX. Если хотите, чтобы коптер коротким звуковым сигналом реагировал на изменение режимов, раскомментируйте строку
#define RCOPTIONSBEEP
По умолчанию вход бипера подключается к цифровому выходу D32 на плате контроллера. К сожалению, во второй версии платы Crius AIOP это не штыревой разъем, а контактная площадка на плате (рис. 6.5).
Рис. 6.5. Дополнительные цифровые выходы (D32-D37) контроллера
Рядом расположены площадки нескольких других дополнительных выводов. Крайне неудобное и опасное решение: эти площадки отслаиваются после перегрева при пайке, их можно легко оторвать, неосторожно дернув за провод. Эстетизма конструкции и удобства при эксплуатации торчащие из платы провода тоже не добавляют.
Поэтому желательно перенести выход бипера на один из свободных цифровых выходов, снабженных штыревым разъемом. Например, если вы не планируете использовать выход D46 для управления затвором фотокамеры, то для переноса выхода бипера на вывод D46 найдите в прошивке строки
//#define OVERRIDE_BUZZERPIN_PINMODE pinMode (A2, OUTPUT);
//#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2;
//#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2);
Раскомментируйте их и замените аргументы определений следующими значениями:
#define OVERRIDE_BUZZERPIN_PINMODE pinMode ( 46, OUTPUT);
#define OVERRIDE_BUZZERPIN_ON PORTL|= 1<< 3;
#define OVERRIDE_BUZZERPIN_OFF PORTL&= ~(1<< 3);
Подключать бипер к выводу D46 удобно, т. к. в штатном режиме на гребенке разъема присутствует питающее напряжение +5 В и бипер можно подключить стандартным трехжильным проводом от сервомашинки.
Подключение ультразвукового сонара
Ультразвуковой сонар хорошо подходит для автоматического включения посадочных огней (фонарей подсветки посадочной площадки) в темное время суток, поскольку огни нужно включать на высоте менее 3 м. Это именно та дистанция, на которой обычный модуль сонара начинает достаточно точно и стабильно работать. Такой способ управлять включением огней не является расточительным, т. к. модули сонаров HC-SR04 (рис. 6.6) стоят в Китае менее двухсот рублей. Эти сонары используются во множестве любительских проектов и продаются, как аксессуар для Arduino.
Рис. 6.6. Ультразвуковой сонар HC-SR04
К сожалению, поддержка сонаров SR04 не реализована в прошивке MultiWii 2.3, поэтому для использования сонара можно воспользоваться прошивкой MahoWii RC3. Для включения сонара раскомментируйте в прошивке строку
//#define SONAR_GENERIC_ECHOPULSE
Далее обратите внимание на строки
#define SONAR_PING 12 // D12 PIN that trigger measure
#define SONAR_READ 11 // D11 PIN to read response pulse
//#define SONAR_PING 9 // D9 PIN that trigger measure
//#define SONAR_READ 10 // D10 PIN to read response pulse
Здесь определяется, к каким выводам платы будет подключаться сонар. В нашем случае вывод сонара TRIG подключается к выводу D12 полетного контроллера, а вывод сонара ECHO — к выводу D11 полетного контроллера. Эти выводы расположены в гребенке для подключения регуляторов оборотов. На эту гребенку также выведено напряжение питания, поэтому сонар можно запитать прямо от этого разъема. Рекомендуется использовать именно эти выводы, т. к. выводы D9 и D10 понадобятся нам для управления подсветкой.
Имейте в виду, что при питании от USB из-за развязывающих диодов D1 и D2 (см. рис. 6.1) напряжение питания не будет поступать на гребенку J3. Чтобы сонар начал работать, питание должно поступать на плату через разъем J2 или от встроенного стабилизатора регулятора оборотов.
В процессе измерения полетный контроллер генерирует пусковой импульс на выводе SONAR_PING и ждет ответный импульс на входе SONAR_READ. Работающий сонар издает едва различимые щелчки с частотой несколько герц.
Читать дальше