Зонный усилитель для умного дома на микросхеме PAM8610
Для голосового оповещения в квартире понадобился усилитель. Можно конечно обойтись обычным усилителем и кричать им на всю квартиру чтобы было слышно во всех комнатах, но это не наш метод. Разработал для себя зонный усилитель который будет оповещать либо играть нам музыку только в той комнате(ах) где кто то присутствует.
Усилитель построен на базе микросхем PAM8610 и имеет выход на 5 стерео зон.
Микросхема PAM8610 это миниатюрный стерео усилитель класса D, номинальная мощность, при 8’ми Омной нагрузке, 10 Ватт на канал, чего вполне достаточно не только для оповещалки. Питание от 7.5 до 13.5 Вольт.
Усилитель спроектирован под корпус для крепления на DIN рейку.
Для связи с умным домом и для управления усилителем используется протокол MQTT. Организовано управление громкостью каждого усилителя независимо, управление режимом Mute, SHUTDOWN и режимом FADE (плавное включение звука).
Код для усилителя доступен на моей странице GitHub.
Код написан в среде Arduino, микроконтроллер, установленный в усилителе, прошит стандартным бутлоадером от arduino и для обновления прошивки достаточно USB-UART конвертера. Так же на плате выведет стандартный ISP разъем для программирования микроконтроллера с помощью программатора.
[code lang=»JS»] AllOff(); var obj ={ for (var key in obj) { [/code]JS скрипт для переключения усилителя
var timerAmp;
var count = 30000;
var SubsPos;
var locations = ‘javascript.0.Location’;
var state = ‘mqtt.0.myhome.Audio_Amplifier.’;
on({id: ‘sayit.0.tts.text’, change: ‘any’}, function (obj) {
OnAmp(true);
});
on({id: ‘sayit.1.tts.text’, change: ‘any’}, function (obj) {
OnAmp(true);
});
‘bedroom’: ‘zone_1’,
‘guestroom’: ‘zone_2’,
‘kitchen’: ‘zone_3’,
‘hall’: ‘zone_4’,
‘bathroom’: ‘zone_5’
};
function OnAmp(sub){
unsubscribe(SubsPos);
if (sub){
clearTimeout(timerAmp);
count = count * 2;
}
var position = getState(locations).val.toString();
log(‘Время воспроизведения — ‘+ count + ‘ : Позиция — ‘ + position);
if (key === ‘hall’){
key = ‘guestroom’;
}
if (~position.indexOf(key)){
setState(state + obj[key], true);
} else {
setState(state + obj[key], false);
}
}
if (sub){
timerAmp = setTimeout(function() {
AllOff();
count = 15000;
}, count);
}
SubsPos = on({id: locations, change: ‘ne’}, function (data) {
OnAmp(false);
});
}
function AllOff(){
unsubscribe(SubsPos);
clearTimeout(timerAmp);
for (var key in obj) {
setState(state + obj[key], false);
}
}
PS перед загрузкой скетча необходимо в файле C:\Program Files (x86)\Arduino\libraries\Ethernet\src\utility\w5100.h найти строки :
inline static void initSS() { DDRB |= _BV(2); };
inline static void setSS() { PORTB &= ~_BV(2); };
inline static void resetSS() { PORTB |= _BV(2); };
и заменить на:
inline static void initSS() { DDRB |= _BV(0); };
inline static void setSS() { PORTB &= ~_BV(0); };
inline static void resetSS() { PORTB |= _BV(0); };
Цифровая часть усилителя состоит из микроконтроллера Atmega 328 и микросхемы w5100 (Ethernet).






Исправление ошибки разводки для плат 2ой ревизии Rev.002:
Для желающих приобрести усилитель идем на эту страницу.
участие в заказе еще актуально?
только платы можно заказать?
Актуально, но цена будет выше