Всем привет!
Эта статья содержит исходники приложения для операционной системы 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.
Так выглядит программа целиком.
![image](https://habrastorage.org/getpro/habr/post_images/a13/228/a74/a13228a74151ac323d471be0739ca20d.png)
Первая ячейка настраивает цвет всей ленты
![image](https://habrastorage.org/getpro/habr/post_images/223/2ed/a9d/2232eda9d3640352d0057dd0ff1b143a.png)
Вторая ячейка служит для создания списков цветов.
![image](https://habrastorage.org/getpro/habr/post_images/a15/2d2/8aa/a152d28aaf8fb85df91bfc430932f555.png)
Можно последовательно выбрать любые цвета, затем сохранить список, наделив его именем. Сохраненные списки понадобятся для настройки анимации
Третья ячейка совмещает в себе две функции: линейную анимацию и анимацию плавного чередования списков цветов, созданных во второй ячейке.
![image](https://habrastorage.org/getpro/habr/post_images/a0c/75e/f8b/a0c75ef8bcd76e6f8821df9a6a139ae9.png)
Тублер «Включить анимацию» запускает линейную анимацию. Спиннером можно изменять скорость линейной анимации.
С анимациями списков чуть сложнее.
Вначале у вас должно быть сохранено несколько списков цветов во второй ячейке. Затем тапаем на кнопку «Анимация цвета». В нем добавляем нужные списки в той последовательности, в которой хотите, что бы цвета изменялись. Затем возвращаемся из диалога добавления список. Теперь жмем «Сохранить» и вводим имя новой анимации.
Что бы активировать сохраненную анимацию, нажимаем «Загрузить» и выбираем нужную нам анимацию списка цветов
Запуск сервера происходит командой
Где цифра 50 — число диод в ленте.
Сервер слушает UDP порт 8090. UDP был выбран для более простой интеграции сервера в локальную сеть, так как он настроен на прослушивание широковещательного канала, следовательно если ваш iPhone и Raspberry подключены к одному роутеру, даже не придется вводить верный IP-адрес Raspberry в iOS, сервер все равно получит свои сообщения от клиента.
Для удобства разработки на Desktopе и отладки на удаленной Raspberry PI, создайте Remote конфигурацию отладки в IDEA.
![image](https://habrastorage.org/getpro/habr/post_images/adc/2da/9c1/adc2da9c133b6c3679c9f384500de3db.png)
В качестве 'external tool' выберите 'Run External Tool', далее скрипт putty/launch-led-server.bat. Помните, в скрипте launch-led-server.bat следует прописать верные IP-адреса вашей Raspberry. Так же на raspberry должен быть добавлен ssh публичный ключ, что бы putty смогло посредством pagent автоматически авторизоваться для заливки свежего .jar и его использования.
Благодарю за внимание!
Эта статья содержит исходники приложения для операционной системы 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.
Клиентская часть
Так выглядит программа целиком.
![image](https://habrastorage.org/getpro/habr/post_images/a13/228/a74/a13228a74151ac323d471be0739ca20d.png)
Первая ячейка настраивает цвет всей ленты
![image](https://habrastorage.org/getpro/habr/post_images/223/2ed/a9d/2232eda9d3640352d0057dd0ff1b143a.png)
Вторая ячейка служит для создания списков цветов.
![image](https://habrastorage.org/getpro/habr/post_images/a15/2d2/8aa/a152d28aaf8fb85df91bfc430932f555.png)
Можно последовательно выбрать любые цвета, затем сохранить список, наделив его именем. Сохраненные списки понадобятся для настройки анимации
Третья ячейка совмещает в себе две функции: линейную анимацию и анимацию плавного чередования списков цветов, созданных во второй ячейке.
![image](https://habrastorage.org/getpro/habr/post_images/a0c/75e/f8b/a0c75ef8bcd76e6f8821df9a6a139ae9.png)
Тублер «Включить анимацию» запускает линейную анимацию. Спиннером можно изменять скорость линейной анимации.
С анимациями списков чуть сложнее.
Вначале у вас должно быть сохранено несколько списков цветов во второй ячейке. Затем тапаем на кнопку «Анимация цвета». В нем добавляем нужные списки в той последовательности, в которой хотите, что бы цвета изменялись. Затем возвращаемся из диалога добавления список. Теперь жмем «Сохранить» и вводим имя новой анимации.
Что бы активировать сохраненную анимацию, нажимаем «Загрузить» и выбираем нужную нам анимацию списка цветов
Серверная часть
Запуск сервера происходит командой
java -jar ledserver.jar 50
Где цифра 50 — число диод в ленте.
Сервер слушает UDP порт 8090. UDP был выбран для более простой интеграции сервера в локальную сеть, так как он настроен на прослушивание широковещательного канала, следовательно если ваш iPhone и Raspberry подключены к одному роутеру, даже не придется вводить верный IP-адрес Raspberry в iOS, сервер все равно получит свои сообщения от клиента.
Отладка
Для удобства разработки на Desktopе и отладки на удаленной Raspberry PI, создайте Remote конфигурацию отладки в IDEA.
![image](https://habrastorage.org/getpro/habr/post_images/adc/2da/9c1/adc2da9c133b6c3679c9f384500de3db.png)
В качестве 'external tool' выберите 'Run External Tool', далее скрипт putty/launch-led-server.bat. Помните, в скрипте launch-led-server.bat следует прописать верные IP-адреса вашей Raspberry. Так же на raspberry должен быть добавлен ssh публичный ключ, что бы putty смогло посредством pagent автоматически авторизоваться для заливки свежего .jar и его использования.
Благодарю за внимание!
Поделиться с друзьями
sashabeep
Не очень понял смысла сего продукта в-принципе. У меня тоже есть экран на RPi и WS2801, но я его разберу, потому что RPi уже давно избыточен для таких вещей.
1. Для RPi и так уже есть artnet-сервер openlighting и мешок клиентов под любую мобильную ОС.
2. Да и вообще, зачем там RPi и WS2801, когда всё то же самое собирается на ESP и более дешевых ультрапикселях