Разработка программного обеспечения для беспроводной WiFi-колонки

Заказчик

Европейская компания, разработчик профессиональной аудио-аппаратуры.

 

Задача

Клиент поручил нам часть работ по созданию беспроводной WiFi-колонки. Мы разрабатывали отдельные компоненты программного обеспечения для профессиональной аудиосистемы, которые объединяют несколько аудиоколонок в группу для централизованной настройки и воспроизведения аудиопотока по беспроводному каналу.

Перед инженерами Promwad стояли задачи:

  1. Разработать системное программное обеспечение (прошивку) на основе Linux и OpenWRT.
  2. Разработать прикладное программное обеспечение для автоматического добавления/удаления колонки из WiFi-сети. 

Основные технические параметры и требования к системе:

  • Совместимость с технологией AirPlay Apple.
  • Функция таймерного включения по Wi-Fi и BLE.
  • Передача аудиопотока с мобильного телефона (iOS and Android), а также из интернета.
  • Настройка колонок из мобильного приложения.

Система включает до четырех Wi-Fi-колонок, которые работают в группе под управлением OpenWrt. В каждой группе одна колонка — главная, а остальные — подчиненные. В беспроводной сети может работать неограниченное число групп колонок. Их контролирует программа-клиент (iOS-приложение / компьютер / дистанционный пульт BLE). Главная колонка в каждой группе получает и отправляет данные на все клиенты своей группы.

Пользователь регулирует громкость из мобильного приложения или при помощи кнопок на любой колонке в группе (в этом случае подчиненная колонка отправит команду управления по восходящему потоку к главной колонке для рассылки этой команды всей группе). Только главная колонка соединяется с интернетом через базовую станцию для получения аудиопотока с музыкальных серверов.

 

Решение

1. Аппаратное обеспечение

Мы получили опытные образцы первой версии и комплект разработчика от чип-вендора. Команда Promwad выполнила проверку схемотехники и трассировку печатной платы заказчика, чтобы улучшить работу антенны и радио.

Основные компоненты системы:

  • Модуль Wi-Fi/Bluetooth 4.0 TI WiLink 8
  • Интерфейсы: WiFi 802.11 a/b/g/n, Bluetooth Low Energy (BLE)
  • Микропроцессор TI Sitara Cortex-A8 AM33xx DDR3 128 МБ
  • NAND Flash 128 МБ
  • Аудио-усилитель класса D

2. Программное обеспечение

Мы разработали прошивку на основе последней версии ядра Linux и OpenWrt с поддержкой всего аппаратного обеспечения.

Также мы создали «умный» WiFi-конфигуратор, он проверяет наличие нужных сетей, подключается и работает в них. В случае отсутствия нужной WiFi-сети колонка становится точкой доступа, к которой подключаются другие колонки.

Основные программные модули:

  • Модули Wi-Fi kernel: модули ядра wl18xx для аппаратного обеспечения WiLink8 (встроены в ядро или скомпилированы как модули ядра).
  • Netifd: «родной» диспетчер сети OpenWRT. Он контролирует основные функции сети, такие как включение / выключение сети, присоединение к AP/ad-hoc, создание APs (можно контролировать через интерфейс U-BUS).
  • UCI (единый интерфейс конфигурации): «родная» подсистема OpenWRT для контроля конфигурации. Она хранит и контролирует все файлы конфигурации системных компонентов.
  • Менеджер сети (Network Manager): программный модуль, контролирующий беспроводные функции устройства. Он конфигурирует сеть WiFi, выбирает главную колонку, отправляет пакеты данных между устройствами по беспроводной сети, инициирует и закрывает соединение по mDNS, предоставляет интерфейс D-BUS для пользовательского ПО верхнего уровня.
  • Пользовательское ПО: программные модули, которые обеспечивают выбор и передачу аудиопотока, настройку системы со стороны пользователя и т.д.
  • TEST Module: простое пользовательское приложение для тестирования функциональности верхнего уровня. Оно эмулирует передачу аудиопотока, нажатие кнопок и т.п.

 

Результат

Заказчик получил протестированную прошивку (firmware) для беспроводной колонки c поддержкой следующих функциональных возможностей:

  • Проигрывание аудиопотока AirPlay (MAC, iPhone, iPad and Apple TV)
  • Воспроизведения музыки через популярный интернет-сервис Spotify
  • Получение и воспроизведение аудиопотока через протокол Bluetooth Audio
  • Включение по таймеру с настройкой через мобильное приложение