Устанавливаем и включаем WiFi, коннектимся к сети:
apt-get install network-manager-gnome
sudo nmtui
Теперь после перезагрузки OPI будет автоматически коннектиться по WiFi к выбранному подключению, но лучше, конечно, всё настроить ещё по LAN.
2. Добавление пользователя pi
2.1. Создание пользователя и назначение групп
sudo adduser pi
sudo usermod -a -G tty pi
sudo usermod -a -G dialout pi
sudo adduser pi sudo
2.2. Перезагрузка системы
sudo reboot
3. Настройка sudoers
3.1. Редактирование файла sudoers
Редактируем sudoers, добавляем пользователю pi все разрешения. Этот этап очень важный и нельзя ошибиться. При открытии может потребоваться закрыть 2 страницу (Ctrl+X):
sudo nano edit /etc/sudoers
Добавляем в следующий блок:
#User privilege specification
root root ALL=(ALL:ALL) ALL
pi ALL=(ALL:ALL) ALL // этот блок без сноски
Сохраняем изменения (Ctrl+O, подтверждаем, Ctrl+X – закрываем).
3.2. Перезагрузка системы
sudo reboot
4. Установка необходимых пакетов
4.1. Установка net-tools
sudo apt-get install net-tools –y
4.2. Установка остальных пакетов (копируем целиком)
sudo apt install -y \
git \
make \
gcc \
libncurses-dev \
libusb-1.0-0-dev \
python3-virtualenv \
python3-dev \
avrdude \
zlib1g-dev \
libjpeg-dev \
libopenjp2-7-dev \
libtiff5-dev \
libfreetype6-dev \
liblcms2-dev \
libwebp-dev
5. Обновление системы
5.1. Обновляем установленные пакеты и систему
sudo apt update && sudo apt upgrade –y
6. Расширение оперативной памяти
6.1. Увеличиваем объем оперативной памяти до 2 ГБ
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Этому проекту уже, наверное, лет 7-8. Однажды ко мне с вопросом - "А можешь мне часы сделать, на лампах?" - обратился мой братишка. Я подумал, а почему бы и нет и погрузился в работу.
Был ряд требований:
- часы;
- календарь;
- простенькие игры, уже и не помню какие;
- RGB подсветка;
- аккумулятор;
- управление через Bluetooth и кнопки.
На тот момент подходящих конструкций в интернете не нашлось, поэтому решил делать разработку "с нуля".
Первым делом рисуем схему и трассируем печатную плату. В моем конструктиве их будет 2 - плата управления и плата индикации.
Трассировал в Altium, он позволяет заодно выгрузить 3D модель.
На плате управления размещается ардуина - мозг часов, микросхема RTC, генератор напряжения для ламп, аккумулятор со схемой зарядки, разъёмы для Bluetooth модуля и кнопок управления.
На плате индикации размещались сами лампы и светодиоды подсветки ламп.
Платы заказал в Новосибирске и пока их делали, приехали лампы.
А через время были готовы и сами платы.
Проверка генератора напряжения
И началась длительная череда написания софта, отладки и дымтестов:)
Бутерброд в сборе
А это уже первый осознанный запуск:)
К сожалению, фото с выносным пультом, аккумулятором и Bluetooth модулем не сохранились.
Так как прямоты моих рук не хватает для красивостей, собранная начинка отправилась для дальнейшего корпусирования к братишке:)
Вот такие классные часики получились в итоге. Декоративные колечки из бронзы на лампы выточил папа на токарном.
Пишу на Дзене, буду признателен за лайк, подписку:)
Взял на Али 5 ардуинок нано и всякое к ним. Одна не завелась вообще, вторая отъехала пока отстраивал код. Мониторчик не все пиксели показывает. Брал по принципу- купили 10000, рейтинг 4,7, недорого-быстро. Думал пофигу с какого завода- все одинаковые- ан нет. Ткните пальцем, которые из них +- получше
И так, второй пост из серии про светильники. В нём я покажу актуальную версию своей умной базы, новые плафоны и новые анимации. Расскажу о дальнейших планах. В этом посте будет очень много фотографий, GIF изображений и рассуждений.
Для затравки
Этап второй - я назову его: Развитием.
Начну с конструкции и изменений, а так же что послужило причиной этих изменений:
Причины:
DC-DC преобразователь на 2 Ампера(3 Ампера в пике и с радиатором) не подходил. Он жутко грелся, а лента в пике по расчетам могла потреблять до 5 ампер, поэтому предыдущая конструкция была жутко доколхожена вторым DC-DC модулем в параллель для хоть какого то запаса по амперажу, но это тоже особо не помогло. Поэтому два дешевых модуля были заменены на XL4016E 9A. Так как они полностью удовлетворяют моим требованиям по размеру, мощности и цене.
Добавления акселерометра для одной очень замысловатой анимации.
Перенос порта питания на другое место и соответственно изменения модели под это дело.
И вот какую внутрянку я получил, после некоторых мытарств.
Собственно сам стакан, поверх как и в прошлой версии одевается цилиндр с намотанной лентой. При необходимости, все можно разобрать и легко извлечь тот или иной компонент. Все на винтах и впаиваемых бонках.
Вот так. На этом цилиндре намотана уже сама лента. (не промоделивал, так как не видел в этом смысла для себя, а занятие гнуть компоненты во фьюжене, это мега мучительно)
Поверх собственно ленты, на следующий выступ, одевается рассеиватель, а сверху скрепляется все крышкой.
В разрезе это выглядит примерно вот так. Собирается это на клей, либо плотной посадкой, которой достаточно для того что бы изделие стало монолитным и надежным. В дальнейшем, есть мысль сделать резьбовые соединения везде где это нужно, но пока обхожусь этим
В реальности цилиндр с LED лентой выглядит вот так:
Пайка такого количества перемычек, изрядно умотала, но это того стоило, так как я получил полноценную матрицу свернутую на цилиндр и мог гораздо удобнее с ней работать, чем с намотанной по спирали лентой.
Это что касается конструкции и железа. Что касается софтверной части, ох и много же там было проблем. Ниже опишу и проблемы и все
Проект был сделан в скетче, что со временем усложнило его модификацию, отладку и работу с ним в целом. Работа в Arduino IDE мягко скажем, не была столь удобной. Поэтому проект был перенесен на VS Code в связке с PIO, где произошел рефакторинг и разделение всех функций на отдельные файлы прям как по ООП. (эх, если б я был профи и знал заранее, я бы не потратил столько времени на этот этап)
Интерфейс был допатопным, морально устаревшим, а так как его прям делать снова с 0 не хотелось, поэтому он был доработан, добавлены красивости и тд. Но мне кажется, я ещё не удволетворил все свои хотелки. и впереди меня ждет очень много интересных визуальных изменений.
Отсутствие серверной части. Я хочу видеть подключенные лампы к сети интернет, на какой прошивке они сейчас, какой аптайм у них, какой город у пользователя и какая анимация включена. Иметь возможность перепрошивки удаленно на выбранную прошивку и возможность смены анимации так же удаленно. Удаленно в этом контексте, это через интернет, без открытия портов, знания IP адреса и тд и тп. Вообщем, статистическая и прочая информация для технической поддержки в будущем. Она может каким то образом изменятся, в дальнейшем, но фундамент необходимо сделать.
Отстутствие сервера для поддержки "интернета-вещей", тоесть лампой можно управлять только находясь в одной локальной сети, то это категорически не устраивало меня, все таки в современных реалиях, хочется видеть статус той же лампы онлайн и 24\7. А так же, это стесняло меня в некоторых анимациях, о которых я расскажу позже.
Как оказалось, фаза луны отображалась не в реальном времени, а расчитывалась по расчетам. Что в целом не плохо, но зная реальное время, эти расчеты не нужны. Тоже надо было пофиксить.
Так же, из за того что вся прошивка и все анимации были написаны под накрученную спиралью ленту, новая лампа с новой конструкцией естественно отображала все анимации неверно и не корректно, это затронуло все анимации и полностью изменение логики их работы.
Вообщем, описывать все проблемы дословно, я не вижу смысла и так понятно, что багов лагов и проблем, там было ООЧЕНь много. Прям сверхдошиша. Не долго думая, приступил к исправлению.
По итогу интерфейс теперь выглядит уже более прилично, а количество настроек и каких то маленьких штучек увеличилось и работает гораздо быстрее и коректнее.
Интерфейс версии 2.0, адаптивный и под мобильные устройства и под ВЕБ версию.
Блок системных настроек.
И да, как можно заметить, в веб интерфейсе все ещё как то не сгрупировано нормально и выглядит не сказать что вау круто. Но над этим я ещё в будущем поработаю. Теперь у меня есть возможность, обновлять интерфейс отдельно от прошивки и все это с поддержкой версионности и автоматических обновлений. При этом для пользователя, ничего не изменится, всегда будет одна кнопка для обновлений, но обновится только нужная часть устройства) И вот так выглядит если доступно обновление.
Если доступно обновление.
Так же, сделал приятную мелочь и бонус, в процессе обновления естественно у нас появляется прогресс-бар с процентным заполнением и текущим статусом процесса (качается прошивка, распаковывается, обновляется и тд) и сама лампа в этот момент начинает плавно переливаться голубым цветом, что дополнительно уведомляет пользователя об обновлениях.
Рассказывать можно долго, об абсолютно всех изменениях, но пожалуй это и 2 новые анимации заняли у меня больше всего времени. 1 анимация, это связь ламп или постучись в мою дверь) В интерфейсе это выглядит вот так и суть её работы в следующем:
Постучись в мою дверь.
Первое что надо сделать, это отправить второму обладателю, свой ID что бы он вставил его в соответствующее поле и всё. Настройка завершена и лампы связаны. Теперь, когда вы трогаете свою лампу (бьете по ней, просто трогаете, гладите и тд) ровно с такой же силой, на абсолютно любом расстоянии(лишь бы был интернет) у второго пользователя его лампа загорится тем цветом, который он выбрал у себя в настройках. Получается некие парные лампы можно сказать для отношений на расстоянии или для общения морзянкой если хочется)
И вот видео работы:
Я засимулировал работу второй лампы, так как сейчас второй собранной у меня нет в наличии, но уже проверял. работает и работает весьма быстро)
Устроено все весьма просто и стандартными методами. Протокол MQTT, свой сервер и базовая аутентификация, которая зашифрована и хранится уже в памяти ESP. + уникальный ID формируется из MAC адреса для каждого устройства, который не изменяется при перепрошивках или перезагрузках, возможно в будущем я упрощу этот механизм, но пока сам прототип работает и это радует. Это потребовало от меня множества усилий, но это одна из самых главных фич которые мне нравятся самому. Естественно для этого режима(как и для всех) работают настройки и установки такие как: якрость, высота подсветки, чувствительность и цвет) реализовано это всё с помощью акселерометра и вполне стандартных алгоритмов фильтрации шумов(спасибо универу, за специальность в области сигналов и фильтрации шумов и тд, наконец то пригодилось). Грубо говоря, ничего сложного.
Погодная анимация
Куда сложнее, это была следующая анимация. Симуляция режима погоды. В интерфейсе это выглядит очень просто. Нет никаких настроек (в этом и смысл).
Погодная анимация
Тут, вы задаете ваш город, поселок или область, или даже известное место(например торговый центр) и дальше происходит магия. Светильник начинает получать погоду почти ровно из этого места. (самое ближайшее к нему где есть метеостанция отдающая данные в интернет) А дальше, я эту погоду уже превращаю в соответствующие анимации. Облачно - лампа будет плавно мигать тусклым белым светом, если пойдет снег или дождь - то по лампе будут стекать синие или белые капли, если туман, то просто будет гореть тусклым белым светом, а если солнечно то будет светить ярко и желтым цветом, во время грозы и ливня, будет смешиваться режимы дождя и грозы) Бывает и такое, что лампа не знает такого состояния погоды, тогда она будет пульсировать синим цветом ровно как во время перепрошивки, сейчас это нужно мне для отладки, и регулярно записывается в логи которые отправляются мне на сервер и постепенно я фикшу все недостающие статусы)
Вот например, погода для Санкт-Петербурга и для Сочи. (1 и 2 видео соответственно). В СПБ- Облачно, а в Сочи шел небольшой дождь. (и да, я показываю на примере Марса)
Как обычно, на камере плоховато видно, но в живую результат гораздо лучше. Но либо тут уж я криворученька и снимать не умею. Автор не оператор)
Конечно же, смена погоды происходит автоматически и без участия пользователя. Лампа сама обновляет статус погоды раз в N времени, и если погода изменилась, то и отображение на лампе поменяется.
И да, может быть кто то справедливо заметит, что некоторые анимации не сказать что прям выглядят как то информативно, но пока я сделал так. В дальнейшем естественно это все будет изменятся и не один раз переработается. Сейчас я стараюсь придерживаться принципа, что плафоны это отдельный продукт, а умная база отдельный. И из за этого принципа, не всегда получается в том числе, сделать анимации информативными, так как плафон рассеивает свет и получается что диоды смешиваются. С этим я борюсь отчаенно и неоднократно модифицировал сами плафоны.
Так же, есть Температурный режим этой анимации. Он просто показывает цветом свечения, текущую температуру на улице. Диапазон можно задать самому, от -20 до + 30 градусов по умолчанию, где -20 это максимально синий цвет, а +30, максимально красный. Эти цвета так же можно изменить в настройках. И так же естественно все в Live режиме меняется.
Новая анимация луны
У меня остался бракованный плафон, так как принтер почему то решил что он допечатал. (да, я бракодел) и на нём я тестирую всякое.
Вот как выглядит секторность и фазы луны. У анимации луны есть ряд настроек: Режим работы:
Реалистичное время. (не думаю что стоит пояснять, что на небе - то на лампе)
Ускоренное время. (можно задать какое то количество минут, за которое луна сменится от полностью темной, до полной луны)
Ручной режим. ( на видео выше, мы можем изменить фазу вручную, от 0 до 12)
Интерпретация:
Реалистичная (Всегда горит строго 180 градусов луны) как и в реальной жизни, у луны всегда есть темная сторона)
Артистичная (В процессе того как луна меняет фазы, она как бы заполняется от 0 до 360 градусов и в итоге будет гореть вся сфера)
Минималистичная (всегда горит 1 из 12 столбцов, он перемещается как месяц) (на видео)
Ну и конечно остальные настройки, такие как цвет, яркость и тд. Кому что по душе.
Админка.
Ну и админку грех не показать. Очень быстро написал её, буквально за один два дня.
Собственно моя удаленная админка. Тут я вижу некоторые статистические данные, которые могут мне помочь в решении каких то вопросов удаленно. А так же то, что я описывал в начале поста.
Что в планах дальше?
В планах дальше, это:
Ещё раз переработать интерфейс, сделать его уже с анимациями, желательно на React или чем то подобным, с меню и настройками. С базовой аунтентификацией пользователей и в целом как то поприятнее.
Доработать некоторые баги, например сейчас смена цветов не всегда происходит в Live режиме, это связано с JS и миллиардами запросов, к устройству.
Собрать полноценное Android приложение, зачатки уже есть, я могу с приложения изменять анимации и их параметры, но показывать пока не буду, так как это совсем ранний прототип и я только изучаю этот вопрос. Но у меня по сути дела, есть почти полноценный API для работы с устройством, так что вопрос написания приложения не кажется мне уж очень сложной задачей.
Интеграция в Apple Home и Алису. В Apple Home, тестово уже прокидывал, но крайне упрощенную версию лампы. С полноценной лампой пока не вышло, но работаю в этом направлении. В Алису, слышал что можно через MQTT, но на стадии изучения этого вопроса.
Интеграция с Home Assistance - можно считать сделана, так как будет через MQTT, а MQTT в устройстве уже есть, осталось написать пару функций и готово, возможно для самого HA надо будет написать своё дополнение, что бы пользователь не парился с добавлением кода в Configuration.yaml и тд. Вообщем как то надо это придумать попроще чем уже протоптанная неоднократно мною дорожка.
Многое многое другое.
Если вам интересна реализация этих планов, подписывайтесь тут или на мой тг. Там я буду чаще постить какие то отрывки которые не требуют оформления и выделения времени на написание поста) https://t.me/magic_lamps
Привет, друзья! Хочу поделиться своей недавней находкой — Клуб электроники на Пражской. Если коротко, это место, где ты реально начинаешь понимать, как работают все эти загадочные схемы, микроконтроллеры и платы, которые всегда казались чем-то из другой вселенной.
Я давно хотел попробовать что-то новое, связанное с технологиями, изучить нюансы электроники и также реализовать одну идею. Еще лет 10 назад пытался найти подобные клубы, но тогда ничего стоящего в Москве не нашел, да и сейчас такие места - это редкость. Поэтому, когда я случайно узнал о новом Клубе электроники, решил, что это мой шанс! Собрался записаться на курсы, и честно говоря, вообще не пожалел.
На первом занятии нас сразу погрузили в мир электроники: объяснили, как работают базовые компоненты, показали, как собирать простейшие схемы. А еще дали попробовать сделать свой первый проект — собрать светодиодный индикатор. Это невероятно, когда ты видишь, как твои усилия буквально начинают светиться!
Впечатлился разнообразным современным спецоборудованием: паяльные станции, генераторы сигналов, осциллографы — всё это доступно для работы. Думаю, занятия вживую именно на реальном оборудовании дают возможность закрепить знания и получить практические навыки в отличие от онлайн-обучения.
Кстати, осциллограф сначала звучал как что-то невероятно сложное, но когда преподаватели объяснили, как им пользоваться, оказалось, что это очень полезная и даже увлекательная штука. Теперь я понимаю, как визуализировать сигналы и анализировать работу схем — это действительно круто!
В клубе можно получить обширный опыт не только по электронике. Здесь есть и другие направления, такие как программирование. Например, меня научили делать таймер, который через определенное время включает или выключает устройство. Мы реализовали его двумя способами: на обычной микросхеме и на микроконтроллере. Оба варианта работают отлично, и это вдохновляет на новые проекты! Представьте, вы создаете устройство, которое может управлять, скажем, моторчиком или подсветкой — это реально интересно.
Преподаватели в клубе очень крутые. Они не просто знают, о чем говорят, но и реально могут объяснить так, чтобы ты понял. Даже если ты, как я, полный новичок, тебя всегда поддержат и направят. Народа пока ходит мало, я с позитивным впечатлением пообещал им порекламировать клуб)
Недавно спрашивал у друзей, насколько вообще популярно такое хобби, и, к моему удивлению, многие сказали, что тоже хотели бы попробовать. Это не только полезно, но и невероятно увлекательно. Когда ты понимаешь, как что-то работает, это прям поднимает уровень твоей уверенности в себе.
Если вы тоже задумывались о чем-то подобном, советую заглянуть сюда. У клуба есть сайт nb6.ru, там можно посмотреть расписание и записаться на пробное занятие. Также на Яндекс Картах можно найти отзывы. Попробуйте, возможно, это тоже станет вашим новым любимым хобби!
Пишите, кому интересно такое направление и что хотели бы создать/изобрести. Есть в ваших городах такие клубы или курсы?
И столкнулся с невообразимой штукой - не смог из UI-приложения просто тупо ... запустить браузер дефолтный с URL, ну страничку открыть с описанием программы.
Пробовал:
getHostServices().showDocument - штатная классика для JavaFX
java.awt.Desktop.browse
getRuntime.exec или из шелла пробуя утилиты xdg-open, x-www-browser
Это какой-то трэш и угар - все варианты под Виндой (ясно дело кроме запуска линуховых утилит) работают, а в Mint 21, который есть под рукой - всяческий набор ошибок недостатка прав, gtk, ограничений (--no-sandbox), зависания приложения при попытке это сделать.
java.awt.Desktop.browse сработал ОДНОКРАТНО, а при повторном вызове - зависание приложения, с системным диалогом "прибить или подождать"...
Как же из графических приложений это в Линуксе делают, жмакая по кнопочке ? Да и конечно, хотелось бы чтобы на максимуме дистрибутивов работало б...
Сделал себе панель тумблеров внешнего и внутреннего освещения, управления радио и выбора частоты КГС и управление паками. Привязал через MSUIPC. В основном оверхэд, кроме энкодеров и потенциометров.
Панель снизу - управление MCP. Отдельный кабель. В будущем сделаю её менее габаритной.
Что интересно, обе панели делались на STM32F103C8T6, только одна пришла с алихи на micro USB, а другая чисто на TYPE C. Прошилось всё без проблем. Нужно прогнать через FreeJoy https://github.com/FreeJoy-Team/FreeJoy для назначения кнопок и крутилок.
1/2
Допущена ошибка в Wheel Well. Исправлена в исходнике. Так же буду делать рамки на 3д принтере, как на панели снизу. Крутилки тоже распечатаю. LDG LTS тумблер выпал. Назначил все посадочные на один тумблер через MSUIPC до замены.
Пайка - чисто дело техники. Строго по схеме. Важно не прозябать полярность диодов. Сама панелька и корпус вырезалась на ЧПУ плоттере. Благо профессия позволяет. Могу скинуть автокадовский рисунок для конвертации в вашу прогу или сам файл .nc
Всё работает как положенно. Кроме потенциометров. Лень было разбираться в MSUIPC. На потенчики я назначил управление передней стойкой шасси для руления, а так же управление хвостом на скоростях. Ну и спойлеры конечно же. Всё по дефолту в игре. У кого нет MSUIPC то можно назначить стандартные команды. В MSFS2020 их не много, зато в X-PLANE 11/12 их в достатке.
Процесс пайки и проверки. Люблю я термоусадки.
Не могу приложить pdf со схемой сборки в норм качестве. Так что если кто желает собрать по такой же схеме, могу скинуть на почту или в соц сети пдф-ник в хорошем разрешении.