Всем привет!
Эта статья содержит исходники приложения для операционной системы iOS, цель которого управление светодиодной лентой WS2801, подключенной к Raspberry PI.
В качестве базы для этого поста послужила статья pbelov — «Управляем светодиодной лентой при помощи Raspberry Pi и Android» habrahabr.ru/post/203532. Если нужно ознакомиться с базовыми принципами подключения лент с чипами WS2801 к Raspberry PI, лучше начать чтение с исходной статьи Павла.
Некоторое время тому назад увлекся организацией освещения в доме. Поиск готовых программных решений дал свои результаты, однако хотелось большей свободы в кастомизации RGB-ленты. В частности, существующие решения были лишены возможности настраивать кастомные анимации, бегущие строки или перетекания одного цвета в другой. По этой причине было решено взяться за создание собственного приложения с расширенными функциями настройки цветов, порядок цветов в ленте и их плавное анимирование.
Репозиторий проекта github.com/PawelMolodkin/HomeLed
В корневой папке репозитория находится клиенский iOS проект для XCode, а в папке ledserver проект серверного приложения для IntelliJ IDEA.
В папке ledserver/putty находятся облегчающие жизнь скрипты, написанные для автоматизации заливки и отладки серверного приложения на raspberry.
Клиентская часть
Так выглядит программа целиком.
Первая ячейка настраивает цвет всей ленты
Вторая ячейка служит для создания списков цветов.
Можно последовательно выбрать любые цвета, затем сохранить список, наделив его именем. Сохраненные списки понадобятся для настройки анимации
Третья ячейка совмещает в себе две функции: линейную анимацию и анимацию плавного чередования списков цветов, созданных во второй ячейке.
Тублер «Включить анимацию» запускает линейную анимацию. Спиннером можно изменять скорость линейной анимации.
С анимациями списков чуть сложнее.
Вначале у вас должно быть сохранено несколько списков цветов во второй ячейке. Затем тапаем на кнопку «Анимация цвета». В нем добавляем нужные списки в той последовательности, в которой хотите, что бы цвета изменялись. Затем возвращаемся из диалога добавления список. Теперь жмем «Сохранить» и вводим имя новой анимации.
Что бы активировать сохраненную анимацию, нажимаем «Загрузить» и выбираем нужную нам анимацию списка цветов
Серверная часть
Запуск сервера происходит командой
java -jar ledserver.jar 50
Где цифра 50 — число диод в ленте.
Сервер слушает UDP порт 8090. UDP был выбран для более простой интеграции сервера в локальную сеть, так как он настроен на прослушивание широковещательного канала, следовательно если ваш iPhone и Raspberry подключены к одному роутеру, даже не придется вводить верный IP-адрес Raspberry в iOS, сервер все равно получит свои сообщения от клиента.
Отладка
Для удобства разработки на Desktopе и отладки на удаленной Raspberry PI, создайте Remote конфигурацию отладки в IDEA.
В качестве 'external tool' выберите 'Run External Tool', далее скрипт putty/launch-led-server.bat. Помните, в скрипте launch-led-server.bat следует прописать верные IP-адреса вашей Raspberry. Так же на raspberry должен быть добавлен ssh публичный ключ, что бы putty смогло посредством pagent автоматически авторизоваться для заливки свежего .jar и его использования.
Благодарю за внимание!
Автор: JasF