Timeweb.Cloud

Timeweb.Cloud

То самое облако Наш сайт: https://timeweb.cloud/ ТГ: https://t.me/timewebru Хабр: https://habr.com/ru/companies/timeweb/articles/
На Пикабу
87К рейтинг 1878 подписчиков 19 подписок 354 поста 302 в горячем
Награды:
более 1000 подписчиков5 лет на Пикабу
55

Оживляем контроллер машиниста от ушедшего в историю электропоезда

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Приветствую всех!

Пожалуй, самой желанной для меня железкой на транспортную тему был контроллер машиниста от какого-нибудь поезда. Но, как это часто бывает, достать такой экземпляр не так уж и просто.

И вот наконец в мои руки попал не просто какой-то контроллер, а очень примечательный экземпляр — от «концептуальной» электрички ЭМ2И, коих в наши дни уже не осталось.

Итак, в сегодняшней статье поговорим о том, как устроен такой контроллер и как его подключить. Традиционно будет много интересного.

❯ Суть такова


Так получилось, что ко мне в руки попал контроллер от старого электропоезда ЭМ2И. И, само собой, напрашивалось единственное верное решение — подключить его к Trainz или «Метрострою».

Удивительно, что при наличии огромного количества железнодорожных симуляторов нет практически никакой периферии для них. Если вспомнить, сколько всякой амуниции выпускается для фанатов авиации, то окажется, что для желающих покататься на поезде у себя дома по сути нет ничего.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Безусловно, кое-что всё же существует. Есть такая штука как Raildriver, которая даже нативно поддерживается в Trainz, однако в России оказалось реальнее достать настоящий контроллер, нежели её.

Немного про электропоезда ЭМ2И

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Прежде чем начать разбираться с подключением, поговорим о том, что это вообще была за электричка.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

ЭМ2И являются детищем более старых проектов — ЭМ1 и ЭМ2. Все эти поезда — глубокие модернизации куда более старых ЭР2. Серия была предназначена для эксплуатации на линии в Домодедово в качестве экспрессов.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Электропоезд обладал целым рядом нововведений — новые сцепные устройства, полупантографы, электронная система управления. Выпускались они на Московском локомотиворемонтном заводе, а запчасти для них поставляло некое ЗАО «Спецремонт».

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Модель была многообещающей — тут вам и скорость аж в сто шестьдесят километров в час, и мягкие сиденья, и салон повышенной комфортности, всё как в дорогих иномарках японских поездах.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Увы, с самого начала история этих электричек пошла не в их пользу — уже на испытаниях выяснилось, что многие характеристики не соответствовали заявленным, а в конструкции имелось немало фатальных недостатков. Эксплуатировались необычные поезда совсем недолго, в первой половине нулевых, а большую часть своего существования они стояли в депо или на базах запаса и тихонечко гнили. Проект вышел крайне неоднозначным: стоили машины очень дорого (практически как новые ЭД4М), имели небольшой срок службы (ведь ходовая часть осталась от старых ЭРок), а также были крайне ненадёжными и неудобными в ремонте. В итоге от их использования довольно быстро отказались, а в 2019-2020 годах все машины (точнее, то, что от них осталось за долгие годы стояния на открытом воздухе и постепенного разграбления вандалами) были порезаны на металлолом.

Впрочем, многие (как и я) до сих пор жалеют, что не успели прокатиться на этом неудачном, но всё же весьма интересном МВПС.

Обзор оборудования


Ну что же, переходим к нашей железке. Ко мне в руки попал контроллер машиниста КМ-4А, снятый с одного из списанных таких поездов. Скручен он был ещё много лет назад, отчего он не успел сгнить, пострадать от рук вандалов или стать собственностью охотников за драгметаллами.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

А вот и подопытный экземпляр. На нём две ручки — реверс и непосредственно управление. Также имеется тумблер.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Позиции.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вид снизу. Видно сердце контроллера — кулачки. В нынешних электронных вагонах применяются бесконтактные контроллеры машиниста (БКМы), где вместо кулачков и контактных групп используются датчики (оптические или магнитные). Чуть позже я расскажу и про этот тип контроллеров, ну а пока что будем разбираться с нашим.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

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

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Разъём для связи девайса с внешним миром — DB37F. Закреплён он на обычном куске фанерки.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Наклейка того самого «Спецремонта».

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

А вот механизм. Дискретное перемещение ручки обеспечивается за счёт детали сложной формы, в которую упирается подпружиненный ролик. Шестерни обмазаны густой липкой смазкой.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вдалеке видно тот самый прижимной механизм.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Нужное усилие обеспечивается двумя мощными пружинами.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

По бокам находятся толстые стальные пластины, в которые вкручиваются стойки и вставляются валы. Из-за их толщины (десять миллиметров) скромный по размерам контроллер имеет весьма внушительную массу — чуть больше семи килограммов.

Кулачки


Контроллер внутри очень похож на командоаппарат.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

В самом деле, в нём имеются всё те же самые контактные элементы, которые переключаются расположенными на вращающемся валу кулачками. Разница лишь в том, что в командоаппарате вал вращается электромотором, а тут он связан с ручкой контроллера машиниста.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост
Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вот для примера положение кулачков в разных позициях ручки.

Реверс


Начнём, наверное, с самого простого — с ручки реверса.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Для неё выделено сразу три кулачка, один из которых не используется. От оставшихся контактных групп идут четыре провода — по одной на каждое из двух «рабочих» положений.
Помимо этого ручка реверса блокирует перемещение основного вала. Когда она стоит на нуле, ручка контроллера заблокирована. В то же время нельзя переключить реверс на ходу. Достигается это за счёт использования диска с прорезью на основном валу и ролика на реверсоре. Когда вал находится в положении, отличном от нуля, ролик не может встать в прорезь, отчего реверс не переключается. При этом, когда ролик находится на своём месте, диск не может повернуться, что обеспечивает блокировку ручки контроллера.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вот положение этих двух деталей при нулевой позиции реверса.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

А вот — когда включён реверс, а ручка повёрнута на ход или тормоз.

Распиновка


Чтобы разобраться с работой самого контроллера, пришлось выяснить распиновку, благо проблем с её определением не возникло. Она здесь оказалась вот такая:

  1. Пятый кулачок (нормально разомкнутый контакт)

  2. Четвёртый кулачок (нормально разомкнутый контакт)

  3. Третий кулачок (нормально разомкнутый контакт)

  4. Второй кулачок (нормально разомкнутый контакт)

  5. Первый кулачок (нормально разомкнутый контакт)

  6. Третий кулачок (нормально замкнутый контакт)

  7. Второй кулачок (нормально замкнутый контакт)

  8. Назад

  9. Вперёд

  10. Ничего

  11. Вперёд

  12. Назад

  13. Второй кулачок (нормально замкнутый контакт)

  14. Третий кулачок (нормально замкнутый контакт)

  15. Первый кулачок (нормально разомкнутый контакт)

  16. Второй кулачок (нормально разомкнутый контакт)

  17. Третий кулачок (нормально разомкнутый контакт)

  18. Четвёртый кулачок (нормально разомкнутый контакт)

  19. Пятый кулачок (нормально разомкнутый контакт)

  20. Ничего

  21. Ничего

  22. Ничего

  23. Ничего

  24. Ничего

  25. Ничего

  26. Ничего

  27. Ничего

  28. ЗАП/ОТП

  29. ЗАП/ОТП

  30. Ничего

  31. Ничего

  32. Ничего

  33. Ничего

  34. Ничего

  35. Ничего

  36. Ничего

  37. Ничего


Далее берём мультиметр и выясняем, какие контакты в какой позиции замкнуты.

Далее объединяем всё в одну таблицу:

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Посмотрев на список контактов, решил задействовать их все — лишние несколько занятых выводов контроллера ничего не меняют, зато вероятность глюков из-за пропавшего контакта в одном из концевиков существенно снизится.

Подключение к ПК


Для того, чтобы связать контроллер с компьютером, понадобится всего-ничего — плата на самом дешёвом МК с поддержкой USB HID в лице Raspberry Pico, вилка DB37 и немного проводков...

> Продолжение в источнике материала на Хабре. Увы, все фото не влезли (их действительно много), а именно в них вся суть и самое вкусное. Так же там элементы кода и прошивка :)

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост
  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 25
101

Эмуляция сотового телефона… на сотовом телефоне

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Многие помнят линейку телефонов Siemens 65-75 серии, которые были в ходу около 20 лет назад. Мы попробуем провести необычный эксперимент на их основе, для чего напишем небольшую управляющую библиотеку на C, а также изменим код одной из встроенных в ОС Linux утилит. Подробнее в статье.

❯ 1. Аппаратная часть


В серии телефонов «Siemens 75» существовали такие модели, как C75, ME75, CX75 и прочие. Они различались между собой дизайном корпуса и некоторым другим функционалом. Но их основные элементы были, во многом, схожи. Например, дисплей разрешением 132x176. Для работы с данным проектом в коробке с различным электронным мусором были обнаружены останки подобного телефона. Состояние изделия за 20 с лишним лет очень плохое, надписи стёрлись, но я предполагаю, что это был экземпляр телефона C75 – BenQ, позднего выпуска. Родной процессор телефона давно уже умер — какое-то время назад удавалось оживить его, прогрев плату паяльным феном, но теперь осталась лишь безжизненная плата и оболочка. Поэтому я решил перехватить информацию на уровне дисплея.

Нас интересует, в первую очередь, этот самый дисплей. Поэтому, для начала, разберём устройство:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Поскольку любая наука стоит «на плечах гигантов», я не буду повторять материал о видах дисплеев в данном телефоне. Ознакомиться с ним вы можете самостоятельно, это описал ещё в 2013 году Кизим Игорь, в своей статье.

У меня уже был некоторый опыт работы с данным дисплеем. Используя библиотеку, взятую из статьи Игоря, я подключал данный дисплей к микроконтроллеру ATmega8. Однако, это было более 5 лет назад, поэтому, для начала, я решил проверить, а работает ли вообще данный дисплей. Для чего собрал схему Игоря. Её ключевые особенности: установлен стабилитрон по питанию дисплея (5V -> 2.9V), установлены резисторы для понижения уровней логики (5V -> 3.3V). Однако, нам необходимо ещё одно напряжение – 12V, для питания диодной ленты подсветки. Поскольку я не хотел городить дополнительный инвертор, я расковырял подсветку и заменил диоды на те, которые могут работать напрямую от 5V, подсоединив их не последовательно, а параллельно. Таким образом я избавился от лишнего провода питания, хотя и качество подсветки несколько пострадало.

Теперь я имел 2 провода питания (+5V, GND), и 5 сигнальных проводов с уровнем логики 3.3V.

Однако, контроллера ATmega8 под рукой не оказалось, но был китайский клон Arduino Uno на ATmega328. Я попытался поискать библиотеку Arduino под этот дисплей, и нашёл такую. Но она была заточена под ESP8266. Хотя идею замены SPI в функции Send_to_lcd с программного на аппаратный я намотал на ус:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост


В итоге я взял оригинальную библиотеку Игоря (Igoryosha), и портировал её под Uno, просто заменив в текстовом редакторе функции присваивания (напр. LCD_CLK=0) на ардуиновские digitalWrite(LCD_CLK, LOW). Библиотека запустилась без особых проблем.

Так как в ней используется программная имитация SPI, выводы GPIO можно назначить произвольно (кроме тех, что заняты RX TX). Библиотеку под Arduino Uno для данного дисплея в итоге я оставил у себя на github, в ветке main.

Результат запуска программы и скорость работы такого SPI можно увидеть наглядно на видео:


Теперь можно подсобрать телефон для удобства работы. Я вытащил динамик, чтобы вывести провода через отверстие.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Проверено: дисплей работоспособен, а это означает, что наша задумка в конечном итоге получится.

❯ 2. Подключаем Orange Pi GPIO


Как можно было увидеть в предыдущем фрагменте, скорость отрисовки картинки просто черепашья. Оно и неудивительно: контроллер работает всего лишь на 16 МГц, ещё и использует программный SPI для вывода картинки. Ситуацию нужно исправлять, взяв более мощный и производительный контроллер. Тут я натыкаюсь на статью хабровчанина Hoshi.

В ней он данный дисплей подключает к Raspberry Pi, и использует его как «монитор». Поскольку мы стоим на плечах гигантов, было решено проследовать его примеру, и не изобретать ещё какие-либо методики. Но Raspberry Pi у меня не оказалось, нашёлся только Orange Pi PC.

Поэтому запустить код Hoshi без переделки у меня бы не вышло: в своей статье он оперирует GPIO через библиотеки чипсета bcm2835. Так как данного чипсета на моей плате нет, и библиотеку подключить не выйдет. Я начал поиски способа, как подключить GPIO на моём чипсете h3. Выяснилось, что для этого нужна библиотека wiringPi (на текущий момент уже не поддерживается официальными авторами). Однако, просто установить её через apt-get оказалось мало: устанавливался оригинал под Raspberry. Спустя некоторое время была найдена модификация этой библиотеки от zhaolei. Я собрал её через build (ветка h3), и именно она оказалась рабочей для моей платы. После выполнения build библиотека установилась в систему, и стало возможным вызвать её из требуемого места (например, проверить пины с помощью sudo gpio readall).

Назначение выводов GPIO для «апельсина» назначается через define по аналогии с Arduino:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Также следует отметить следующий момент: в схеме Igoryosha для AVR использовался логический уровень +5В, а на Orange Pi разъем GPIO сразу оперирует уровнями +3.3В. Поэтому резисторные делители я убрал. В итоге получилась следующая конструкция:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Однако, у меня сходу не получалось завести аппаратный SPI. Поэтому для повторной проверки работоспособности дисплея я взял, опять же, библиотеку Игоря из-под AVR, портировав её теперь и под wiringPi. К счастью, особых замен не понадобилось, только поменять в коде LOW и HIGH на 0 и 1 соответственно. Даже функции delay в wiringPi аналогичны ардуиновским. Также на данном этапе библиотека лишилась практически всех графических функций отрисовки примитивов, кроме отрисовки, непосредственно, одного кадра из буфера.
После чего я собрал программу через gcc (gcc –o example example.c –lwiringPi), и запустил из терминала.

Результат можно увидеть на видео:


Однако разницы, по сравнению с Arduino, практически нет. Отрисовка стала шустрее, но лишь немножко. Оно и неудивительно: чаще всего вызывается метод передачи по SPI (Send_to_lcd), а так как он у нас всё ещё программный, прироста в скорости мы не видим, сам GPIO работает достаточно медленно, по скорости сопоставим с обычным Arduino. Поэтому нам нужно исправлять ситуацию, задействовав аппаратный SPI.

❯ 3. Подключаем аппаратный SPI


Для замены программного SPI на апаратный можно, также, задействовать библиотеку wiringPi, а именно, из wiringPiSPI.h использовать функции wiringPiSPISetup и wiringPiSPIDataRW. Функции эти несколько хитрые. Но перед тем, как их использовать, нужно включить этот самый SPI. Информации о том, как это сделать конкретно на Orange Pi PC также в интернете нет, но удалось найти направление, в котором нужно искать. Немного погуглив, я выяснил, что spi включается правкой файла /boot/armbianEnv.txt (актуально для моей версии системы Armbian_23.11.1_Orangepipc_jammy_current_6.1.63_xfce_desktop.img).

В него нужно добавить следующие строки:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост
Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

После чего сделать sudo reboot, и у нас в /dev/ появляется spidev0.0. Проверить это можно, выполнив команду ls /dev | grep spi. Если spidev0.0 появился, дальше библиотека wiringPiSPI подхватит его. Теперь контакты дисплея CS, CLK, DATA нужно подключить к пинам SPI0, как это сделано у Hoshi. Распиновка (40-pin) полностью соответствует Raspberry Pi. Пины RS и RESET оставляем на попечении обычного GPIO.

Однако, просто заменив SPI на аппаратный, я заметил, что FPS отрисовки практически не поменялся. Проблема заключалась в том, что если отправлять по одному байту, то с каждой посылкой SPI будет заново открываться и закрываться, а эта процедура отнимает очень много времени. Поэтому было решено отправлять данные пачками максимально возможной длины.

Возникла следующая проблема: буферизация пакетов SPI. На данном устройстве мы можем отправить только 4 килобайта данных за одну посылку. Наша страница же занимает порядка 44 Кб: 132*176*2, так как используется 16-битная цветность. В качестве решения можно было либо увеличить буфер SPI, что возможно, однако, мне не хотелось прибегать к данной методике. Поэтому я просто в своём коде раздробил страницу на 11 пачек:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

И используя memcpy, копировал перед отправкой каждую пачку в буфер. К слову, это необходимо ещё и потому, что буфер побайтово очищается в процессе передачи, заменяя выходные данные на входные с буфера RX (MOSI pin).

Также библиотека позволяет регулировать скорость: от 500 КГц до предела в 32 МГц. Делается это в момент инициализации: int fd = wiringPiSPISetup(0, 32000000); мы выставляем канал 0, и скорость в 32 МГц.

После вышеописанных процедур мне удалось получить скорость кадров в 60 FPS. Я не уверен, способен ли дисплей отрисовать данные с такой скоростью, но таймер рапортовал именно так. Можно увидеть это на видеозаписи:


На первой половинке видео можно увидеть кусочек области дисплея, который передаётся за одну отправку (4096 байт), это примерно одна десятая всей экранной области. Скорость шины выставлена в 500 КГц. На второй половинке отправка всех 11 областей, и скорость шины в 32 МГц. То есть, скорость передачи примерно порядка 20 Мбит/сек. В данном случае, я считаю, достигнут потолок пропускной способности всей нашей сборки.

❯ 4. Выводим статичный bmp кадр


Следующее, что сделал Hoshi в своей статье – вывел статичную картинку, получив проблемы с цветностью. Поскольку я иду по его стопам, я попробовал вывести картинку из буфера, используя частично его код, поменяв только сдвиг (offset, так как мой заголовок занял другое количество байт). Однако, сначала я получил такую картинку, как показана на левой части изображения, и, лишь потом, такую, как на правой:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Я взял такую же картинку, как у Hoshi, и получил примерно такой же результат. Подводный камень заключался в следующем:

  1. Два байта нужно поменять местами, этот момент был в коде Hoshi. Либо же добавить/убрать один лишний байт в начале пакета, чтобы вызвать сдвиг всего массива.

  2. Я сохранил исходную картинку через Adobe Photoshop в формат BMP 16-bit. Однако, как выяснилось после просмотра в HEX-редакторе, белый цвет у меня получился не FF FF, а FF 7F, вследствие чего он отображался, как бирюзовый, и остальные цвета также имели искажения:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Произошло это из-за того, что редактор сохранил BMP файл в режиме X1R5G5B5 (с альфа-каналом), а у нас в дисплее используется R5G6B5, то есть, зелёный цвет занимает на один бит больше. Поэтому, при скармливании картинки дисплею, мало того, что один из старших битов пропадает, так ещё и происходит бинарный сдвиг одного цветового канала на единицу, из-за чего вся палитра оказывается искажена. После сохранения картинки в нужном режиме значения белого заменились на FF FF, потери одного бита данных больше не было, и она отрисовалась с нормальной цветностью.

На этом построение библиотеки для работы с дисплеем было закончено, и началось самое интересное – попытка вывести на него живой видеопоток.

❯ 5. Пишем ПО для захвата экрана


Далее вышеупомянутый автор для рендеринга использует интерполяцию из фрейм-буфера ОС Linux /dev/fb0. Попытка запустить его код не привела ни к чему хорошему: в моём случае фреймбуфер отображается как чёрная сетка из-за несоответствия данных, да и мне не нужно было проводить интерполяцию картинки всего рабочего стола, а нужна была конкретная область экрана.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Слева: отрисовка из /dev/fb0. Справа: отрисовка из скриншота.

Так как моя GUI в Armbian работает на графической оболочке XFCE, у меня возникла идея выдрать требуемые пиксели непосредственно через неё. Для этого используются средства gdk и x11. Добавление всех необходимых библиотек сильно усложнило бы программу, поэтому мне пришлось прийти к костыльному решению проблемы.

Я решил копнуть в сторону встроенной в ОС утилиты xfce4-screenshooter. Данная утилита позволяет снять скриншот, в том числе, через командную строку. Однако, функции сохранения заданной области в ней нет, либо требуется задавать каждый раз область мышкой, что было мне неудобно. Поэтому я сделал форк кода данной утилиты. И добавил в опции командной строки, помимо FULLSCREEN, WINDOW и REGION ещё и аргумент FIXED, который сохранял в файл конкретно прописанную в коде область экрана.

Для удобства разработки пришлось поставить xubuntu на виртуальную машину с x86, после чего изменить исходный код, а затем собрать его же, но под armbian непосредственно на своём Orange Pi. Сборка утилиты осуществляется помощью xdt-autogen: сначала ./autogen.sh, далее установить библиотеки по требованию (через apt-install) затем с помощью make, и make install для замены установленного в систему скриншоттера на изменённый вариант. После этого готовый скриншот нужного размера стало можно выводить в файл с помощью одной лишь команды терминала – для определения файлового пути, формата и прочего используется оригинальный код скриншоттера.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Однако, данное решение имеет и недостаток: программа-скриншоттер работает, вероятно, таким образом, что сначала делает скриншот всего root-окна (рабочего стола), затем обрезает его до требуемого размера. При этом, на какой-то момент, отрисовка даже приостанавливается. Вся процедура съемки занимает порядочное количество времени: на десктопе xubuntu она осуществлялась примерно за 50-100 миллисекунд. На Orange Pi она же стала занимать порядка 100-400 миллисекунд. Видеозахват – в целом тяжелая процедура для ЦПУ. Поэтому уменьшение разрешения рабочего стола помогло, но незначительно. В идеале нужно выдирать изображение через низкоуровневый код непосредственно из экранной памяти, а не из пользовательской среды через функции gdk. Более того, в самом коде скриншоттера написано, что рекомендуемая задержка между скриншотами должна быть не менее 200 мс, то есть, это уже ограничивает нас до 5 FPS. В случае, если нужно просто проверить консольный вывод, этого достаточно, а вот для видеопотока оказалось маловато.

Прим. авт.: через некоторое время после написания статьи, мне удалось решить данную проблему, используя вместо скриншоттера ПО jsmpeg-vnc. С ним я получил 50 FPS и выше, плюс имеются встроенные функции обрезки кадра до нужного размера.

Данное ПО передаёт MPEG-поток через WebSocket протокол (выполняя трансляцию видеосигнала), позволяет закодировать только нужную область, чтобы не передавать весь рабочий стол. Далее кадр можно расшифровать и передать непосредственно в контроллер, минуя костыль в виде отображения его на экране и снятия скриншота. Если это будет интересно, можно показать подробнее в следующей статье.


Также, поскольку сохранение в bmp происходит через встроенные средства gdk, мне не удалось заставить программу сохранять в 16-битный формат. Она сохраняла в 24-битный формат, поэтому для преобразования цветовой палитры мне пришлось написать фрагмент кода на бинарных сдвигах:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Изначально содержимое нашего скриншота копируется в массив байтов (uint8_t) в порядке очередности. Для конвертации цвета 24bit -> 16 bit (ещё и с перевёрнутым порядком байтов) использованы сдвиги: мы сравниваем первый байт красного с пятью единицами, далее сравниваем второй байт зелёного с тремя единицами и сдвигаем результат в самое начало, далее сравниваем следующие разряды байта зелёного и сдвигаем в самый конец, далее сравниваем синий и сдвигаем его в середину. Таким образом, из цветности КККККККК ЗЗЗЗЗЗЗЗ ССССССС мы привели палитру к цветности ЗЗЗССССС КККККЗЗЗЗ, которую и принимает наш дисплей. Для отладки я использовал цветные картинки, после чего смотрел, корректно ли отображается цвет согласно своему описанию, или же цветовой канал требуется сдвинуть ещё на какое-то количество ячеек.

После чего я в цикле запустил скриншоттер через вызов терминала, а далее отрендерил картинку на экран. Это можно увидеть на видео:


Конечно, данный пункт программы нуждается в доработке – ссылки на заголовочные файлы библиотек gdk и x11 следует внести в общий файл программы, в котором происходит работа с дисплеем чтобы избежать костыля в виде сохранения картинки в кэш на жестком диске. Возможно, это несколько улучшит производительность. А для идеальной работы требуется переписать это всё на уровне ядра ос, чтобы превратить самодельную библиотеку в драйвер для устройства. Но на текущий момент ход программы получился такой:

  • Через терминал вызывается скриншоттер, который сохраняет кадр в cache.bmp;

  • Файл cache.bmp открывается, после чего отправляется его содержимое на дисплей.

Причём, основная потеря скорости идёт на этапе снятия скриншота, а не записи/чтения его с диска. Для увеличения FPS выше 5 необходимо заменить xfce4 скриншоттер на какое-то другое ПО. Тем не менее, мы движемся дальше.

❯ 6. Эмуляция сотового телефона


Эмулятор телефона CX75 был написан лет 20 назад, и входил в официальный пакет программ для разработки java-приложений через WTK/JDK 2.0. Он пролежал у меня на жестком диске лет 15, после чего я запустил его для данной работы. Если кому-то интересно также запустить его на своём компьютере, делюсь файлами.

Для работы требуется JDK 6u45 и Windows XP. Насколько я помню, даже при запуске на Windows 7 эмулятор вылетал, на Win 10, тем более, работоспособность я не проверял. Поэтому запускать я его буду через виртуальную машину с WinXP.

Эмулятор полностью реализует функционал прошивки телефона 75-й серии, в том числе, можно устанавливать java-игры, подключать веб-камеру для съемки фото, и так далее. Единственное, вряд ли будет работать интернет, по причине того, что WAP технологии уже не получится использовать.

Вот так эмулятор выглядит в системном окне. Управлять можно с клавиатуры (джойстик – стрелки и enter, клавиши – цифры или тачпад), либо нажатием на виртуальные кнопки.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Выдаёт он картинку чётко размера 132x176, поэтому интерполяция не потребуется. Теперь нужно прокинуть картинку из виртуальной машины в Linux машину. Можно было использовать wine, но я не уверен, будет ли эмулятор адекватно работать на нём. Поэтому он запущен в XP. Для передачи картинки, опять же, ничего нового изобретать я не буду, использую TightVNC.

На Windows мы устанавливаем сервер, на armbian’е устанавливаем клиент через apt-get xtightvncviewer.

После чего запускаем клиент-сервер, и выставляем на экране требуемую зону отображения. FPS в данном случае также примерно равен 5 кадрам, поэтому дисплей будет рендерить с точно такой же скоростью.

И вот момент, ради которого всё затевалось: помещаем эмулятор телефона в экранную область на самом телефоне

Видео:


Таким образом, наш видеопоток проходит через следующие уровни:

  • Эмулятор CX75 (x86 C-программа, но порт ARM-совместимой прошивки);

  • Windows XP (виртуальная машина);

  • Windows 10 (через виртуализацию, но можно пропустить, выведя в VNC напрямую с XP);

  • Armbian xfce4 gui (через VNC);

  • Изображение cache.bmp (через xfce4-screenshooter);

  • Дисплей C75 (через wiringPi + wiringPiSPI).


Для эмуляции же клавиатуры достаточно просто припаять контактные площадки к контроллеру от USB-клавиатуры в соответствии со схемой их разводки:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Делать этого сейчас я не буду по причине того, что это несколько монотонное занятие, и вся задача заключается лишь в правильном сопоставлении таблиц кнопок и таблиц на контроллере от USB клавиатуры. После чего клавиатура подключается к виртуальной машине, и можно испытать полное погружение в эмулятор.

❯ 7. Заключение


Результат проекта:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

В ходе работы были изучены особенности работы с GPIO, SPI, GTK3, VNC, преобразованием цветности и некоторым другим функционалом компьютерных и микроконтроллерных систем.

Готовые файлы проекта под wiringPi.

Спасибо за внимание.

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 17 5
20

Спасти Linux

Спасти Linux Linux, Железо, Timeweb, Перевод, Windows, Компьютер, Познавательно, Длиннопост, YouTube (ссылка)

Некоторое время назад я написал статью, в которой критически высказался о Linux-разработчиках, не желающих поддерживать дистрибутив, если он предназначен для работы на компьютерах, которым более 15 лет. За это я получил немало критики от читателей с Hacker News. Кто-то указывал, что я не понимаю, насколько же это сложно – создать и поддерживать дистрибутив Linux. Были и такие, кто советовали мне просто накатить на старый компьютер старую версию Windows. Я же начал пользоваться Linux в первую очередь для избегания Windows, так как считал её монструозным порождением Билла Гейтса. Фактически, разработчики операционной системы, ранее обещавшие освободить меня от Windows, теперь склоняют меня вернуться к Windows, как только мой компьютер настолько состарится, что им станет неудобно его поддерживать. Ответы, которые я получаю от Linux-разработчиков, явно свидетельствуют, что Linux больше не является операционной системы для технарей-компьютерщиков, желающих сохранить на ходу свои любимые винтажные машины. Напротив, Linux превратился в операционную систему, которую разработчик рассматривает как средство для прокачки карьеры. Те, кому интересно подробнее разобраться в нарастающей дисфункциональности Linux и узнать, почему сложилась такая ситуация, могут посмотреть это видео на YouTube.

Некоторые разработчики советовали мне собрать собственный дистрибутив Linux. Хотел бы я! К сожалению, по паре причин этот вопрос не обсуждается. Во-первых, у меня просто нет на это времени. Слишком много времени у меня уходит на работу по поддержке моих сообществ Cheapskate's Guide и Blue Dwarf. Во-вторых, даже если бы я взялся за создание собственного дистрибутива, то получился бы ISO-образ размером более 1 гигабайта и с репозиторием на десятки гигабайт, а такой крупный софт я просто не мог бы выложить в общее пользование, так как мне было бы слишком дорого передать все эти данные.

Учитывая, что немного найдётся Linux-разработчиков, готовых поддерживать старые версии своих дистрибутивов в рабочем состоянии, единственный разумный с моей точки зрения выход – сохранить мои любимые дистрибутивы на будущее. К счастью, я сохраняю ISO-образы Linux, которым более 15 лет. Сейчас у меня есть резервные жёсткие диски с самыми разнообразными дистрибутивами. Вот неполный список: AntiX 19.4, AntiX 22, AntiX 23, Arch Linux 2020.09.01, Debian 11.3, Debian 11.1.0 Server, DSL 4.4.10, версии 1.2 и 4.4.9 со встроенными DSL, Kali Linux 2022.2, Kodachi Linux 8.15, LibreELEC 8.2, Mint 9, Mint 13, Mint 17, Lubuntu 22.04, MV Linux 21.1, Nano Linux 1.3, OpenElec 8.0.4, OpenWRT 19.07.7 обобщённый, Parrot OS 4.11.3, Parrot OS 5.3, PirateBox, Noobs v2_4_5, OSMC_TGT_rbp2_20190424, Raspberry Pi Buster 2020-05-27, Raspberry Pi Buster Lite 2020-05-27, Raspios Bullseye 2023-5-03, Raspian Buster 2019-07-10, Raspbian Jessie 2017-07-05, Raspbian Stretch 2017-11-29, TAILS 2.2.1, TAILS 4.5, Zenlive Linux 7.0 и Zorin 9 Lite. Большинство из этих версий в Интернете уже не найти. Если бы не моя предусмотрительность, то и у меня не было бы к ним доступа. Для большинства пользователей кроме меня они навсегда утрачены.

Со всеми вышеупомянутыми ISO-образами Linux существует важная проблема: в них содержатся только такие приложения, которые поставляются в виде ISO-файлов. Зачастую в них нет программ для чтения RSS-лент, браузера Lynx, PHP, веб-серверов, nmap, bleachbit, cowsay и fortune, truecrypt или Veracrypt, Unetbootin, macchanger, espeak, hwinfo, cpulimit, thermald, calibre, fbreader, браузера Dillo, браузера Vivaldi, libdvdread4, libdvd-pkg, libdvdnav4, загрузчика yt (теперь yt-dlp), почтового клиента Alpine, pulseaudio и многих других, от которых бы я не отказался. Многие из этих пакетов и сопутствующие им зависимости содержатся в репозиториях вышеупомянутых дистрибутивов. К сожалению, по прошествии многих лет установить их нельзя, поскольку многие репозитории теперь просто не существуют! Также можете не рассчитывать найти многие из библиотек, от которых зависят старые версии этих приложений для Linux.

Очевидное решение – скачивать и сохранять не только ISO-образ каждого дистрибутива Linux, но и его репозитории. Да, это осуществимо, и в Интернете можно найти множество статей, в которых объясняется, как скопировать репозиторий. Но сам процесс скачивания и хранения файлов на десятки гигабайт на множестве резервных жёстких дисков для каждого дистрибутива порой утомляет, особенно, если приходится делать это годами и учитывать такие факторы, как гниение бит и плановые обновления винчестеров.

Теперь, когда многие из моих старых ПК слишком устарели для современного Linux, мне приходится серьёзнее относиться к информации и сохранять не только базовые ISO-образы Linux, но и дополнительные файлы. Немного поразмыслив, я решил пойти по компромиссному пути, между двумя крайностями «сохранять только ISO-образ» и «сохранять ISO и все связанные с ним репозитории». Итак, пока такая возможность ещё не утрачена, я решил сохранять хотя бы по одной версии дистрибутива Linux плюс дополнительные пакеты к нему. Очевидный вариант – а в настоящее время, вероятно, и единственный – работать с AntiX Linux. Я не особенно переживаю за AntiX, поскольку багов в нём хватает. Кроме того, он работает несколько иначе, нежели другие Debian-подобные дистрибутивы. Вероятно, дело в том, что он использует легковесные среды для рабочего стола, в частности, IceWm. Они довольно старые и никогда не стандартизировались до такой степени, до какой принято доводить более современные окружения. К сожалению, не знаю ни одного другого до сих пор поддерживаемого дистрибутива, который бы нормально работал на компьютерах от двадцати лет и старше. Я пробовал несколько «легковесных» дистрибутивов и убеждался, что они просто кишат багами, и пользоваться ими на компьютерах старше 15 лет решительно невозможно.

❯ Устанавливаем AntiX


Я скачал ISO-образ AntiX-23_386_full.iso современной версии AntiX со страницы загрузки AntiX. Это самая «полная» версия, в которой содержится больше всего приложений для работы на ПК. Это 32-битная версия. Кстати, немного найдётся таких Linux-разработчиков, которые до сих пор предоставляют 32-битные версии своих дистрибутивов. Пожалуйста, не надо мне доказывать, что 32-битную версию любого дистрибутива Linux вполне можно скомпилировать из исходного кода. Я не раз безуспешно пытался скомпилировать таким образом хотя бы единичное приложение, поэтому на собственном опыте знаю, насколько маловероятно преуспеть с таким подходом.

Попытался установить AntiX из скачанного ISO-файла на мой компьютер fDell Precision M20, 2004 года выпуска. Эта машина может похвастаться ЦП Pentium M (Centrino) с частотой 1,86 ГГц и 2 ГБ ОЗУ (это для неё максимум). Этот компьютер я купил в 2019 году на барахолке за 20 долларов. Даже если вы совсем новичок в Linux, вам не составит труда установить AntiX, так как установщик в нём включён. К сожалению, я неоднократно и безуспешно пытался поставить его на «жёсткий диск» Precision M20 (за громким названием скрывается карта памяти microSD с адаптером IDE-to-microSD). Всякий раз казалось, будто установка прошла успешно. Я даже проверял систему при помощи Gparted, убеждаясь, что раздел диска действительно создан, с него можно загрузиться, и в него записываются данные. Потом перезагружаюсь – и никакого раздела нет! Короче говоря, мне не удавалось установить на этот компьютер ни одну из версий AntiX, ни 19.4, ни 23, ни через установщик с GUI, ни через командную строку. Теряюсь в догадках, но, возможно, что-то не так с самой microSD-картой или адаптером, поэтому установка и не выходит. Ранее я уже поднимал проблему некачественных установщиков Linux, поэтому здесь не стану снова в неё углубляться.

Поскольку мои первые попытки установить AntiX на Precision M20 успехом не увенчались, я решил повторить попытку на ноутбуке с обычным твердотельным жёстким диском SATA. Для начала установил компактный твердотельный диск SATA в мой ноутбук Lenovo Thinkpad T500, модель 2008 года, воспользовался при этом утилитой для установки AntiX через командную строку. AntiX установился! К сожалению, по-видимому, мне не удалось бы таким способом установить сверх одного-двух дополнительных пакетов при помощи команды «apt-get install» (уверен, что сначала я выполнил «sudo apt-get update»). В AntiX на этой машине проявлялись и другие неприятные баги, поэтому я подумал, что лучше воспользуюсь другим дистрибутивом Linux.

Несмотря на все эти неудачи, я не отступал. Попытался установить AntiX 23 на ноутбук Dell Inspiron 5100, модель 2002 года, с жёстким диском IDE на 40 ГБ и с 256 МБ ОЗУ. Это самый старый из имеющихся у меня действующих компьютеров. Установщик потребовал, чтобы я выделил ему весь жёсткий диск, но AntiX всё-таки встал. Затем, чтобы сэкономить место, я ужал сегмент с AntiX до 14 ГБ. Для этого я воспользовался Gparted на загрузочной флешке с AntiX, так как Gparted не может ужать сегмент, используемый в настоящий момент. Держал в уме, что нужно сделать перманентную резервную копию этого сегмента и потом попробовать устанавливать её на другие старые компьютеры. Непосредственно после установки дистрибутив занимал около 5 ГБ дискового пространства. Я обновил получившуюся конфигурацию при помощи «sudo apt-get update», а потом приступил к установке дополнительных пакетов.

❯ Добавляем пакеты Linux в AntiX


Как решить, какие именно пакеты Linux устанавливать? Если у вас есть рассчитанные на работу под Linux копии приложений, не содержащие зависимостей, то, теоретически, их можно установить в любой момент (хотя, чтобы максимально перестраховаться, можете поставить их сразу же). Важно установить именно те пакеты Linux, у которых есть по несколько зависимостей, ведущих в репозитории. В данном случае у вас возникает такая дилемма: требуется установить те приложения, которые могут вам понадобиться не только в ближайшем будущем, но, вероятно, и через 10, и через 20 лет. Конечно, непросто сходу определить, что это за приложения. Но можете попробовать установить по одному-два приложения всех основных типов: браузер, читалка для электронных книг, агрегатор новостных лент, офисный пакет, утилиты, т.д.

В качестве первой попытки я установил при помощи «sudo apt-get install» следующие дополнительные пакеты себе на Inspiron 5100:

  • nmap

  • ftp

  • tcpdump

  • iotop

  • nethogs

  • cowsay

  • fortune

  • macchanger

  • bleachbit

  • lynx

  • liferea

  • gedit

  • thermald

  • goldendict

  • mplayer

  • smplayer

  • aspell

  • fbi

  • w3m

  • seamonkey

Установив вышеперечисленные пакеты, я убедился, что все они сохранены на жёстком диске в каталоге /var/cache/apt/archives в формате ".deb". Кроме того, посмотрел с DVD кино через Smplayer. Шло медленно, но работало. С огромными проблемами установил библиотеки, необходимые для просмотра DVD-фильма в ОС Parrot 4.11 и выше. Очевидно, разработчик Parrot OS считает, что больше никто уже не смотрит фильмы с DVD.

Всякий раз при установке дополнительных пакетов в любой дистрибутив Linux, вы рискуете его дестабилизировать. Я не обнаружил никакой явной рассогласованности в работе того AntiX, который сам и установил, но, чтобы с уверенностью полагать, что всё прошло нормально, дистрибутив нужно тестировать неделю или более. Чтобы сохранить эту вполне работоспособную конфигурацию AntiX, я сделал резервную копию 14-гигабайтного сегмента и сохранил её на внешнем диске.

Затем я попытался установить следующие приложения, входящие в оборудованный графическим интерфейсом установщик пакетов для AntiX:

  • pulseaudio

  • Audacious

  • GIMP Basic

  • ImageMagick

  • Handbrake

  • Adobe Reader

  • xfce4-screenshot

  • VLC

Adobe Reader не установился, предположительно, потому, что для него не выполнялись две зависимости, которые мне не удалось подтянуть. Audacious не заработал. Когда я попытался проиграть в Smplayer и VLC фильм с DVD и MP4-файл, ни в одном из четырёх вариантов не было звука, в обеих программах ролики шли очень медленно, а в конце концов зависали. Позже мне удалось заставить VLC зазвучать, но всё равно ни одно из двух этих приложений не стало работать хотя бы так же гладко, как работал Smplayer до установки последнего набора программ. Я даже пытался нарастить ОЗУ на 750 МБ, но это проблем не решило. Я решил перенести резервную 14-гигабайтную копию AntiX на Inspiron 5100, вернувшись таким образом на более работоспособную машину. Пока мне кажется, что чем меньше приложений установлено, тем стабильнее работает вся система, а мне было бы предпочтительнее рассчитывать на уверенное воспроизведение видео, пусть и ценой отказа от некоторых приложений.

Есть два способа перенести файлы ".deb" в каталог /var/cache/apt/archives на другой компьютер, где установлен новый экземпляр AntiX. Первым делом нужно сделать резервные копии всех файлов ".deb", дополнительно к ISO-образу системы AntiX. Затем можно попытаться установить ISO на новый компьютер, скопировав файлы ".deb" в каталог /var/cache/apt/archives на новом компьютере, а затем установив их при помощи «apt-get install». Второй вариант – просто создать файл ".img" и записать в него весь сегмент с AntiX плюс дополнительные пакеты, а затем всё это скопировать на новый компьютер.

Как только я пошёл по первому пути, нарисовалась очевидная проблема. По какой-то причине «apt-get install» не понимала, какие ".deb"-файлы из каталога /var/cache/apt/archives от каких зависят. Не знала, в каком порядке их нужно устанавливать, если только они не лежат в репозитории. Подозреваю, что команда «gdebi -i» может устанавливать отдельно взятые пакеты с зависимостями, а команда «dpkg --unpack» – устанавливать пакеты безотносительно их зависимостей. Но у меня ни с одной ничего не получилось. Путь, на первый взгляд показавшийся простым как с точки зрения установки, так и относительно хранения дополнительных пакетов, не входящих в ISO-образ AntiX, на практике вышел более тернистым.

Таким образом, немного потрепав себе нервы за исследованием первого подхода, я осознал, что не представляю, как методично устанавливать файлы ".deb" в каталог /var/cache/apt/archives. Поэтому решил попробовать второй подход.

Второй подход выглядел так:

  1. Установить AntiX в небольшой сегмент на жёстком диске компьютера (напомню, после установки этот сегмент можно ужать при помощи Gparted);

  2. При помощи «sudo apt-get install» установить любые дополнительные пакеты на мой вкус;

  3. Сделать файл-образ небольшого сегмента (допустим, 14 ГБ) и вынести его на флешку командой «sudo dd if=/dev/sda of=/media/user/usb/AntiX_installed_with_extra_packages.img bs=1M count=14812 conv=notrunc, noerror» (обратите внимание: здесь используется /dev/sda, а не /dev/sda1);

  4. Запустить другой компьютер с загрузочной флешки с Linux, а уже в него вставить флешку, на которой содержится копия только что изготовленного мною образа AntiX;

  5. Скопировать образ AntiX на жёсткий диск нового компьютера при помощи «sudo dd if=/media/user/usb/AntiX_installed_with_extra_packages.img of=/dev/sda bs=1M conv=notrunc,noerror», и, наконец;

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

На этапе 3 я воспользовался «count=14812», чтобы скопировать первые 14,5 ГБ с жёсткого диска. Это я сделал лишь чтобы удостовериться, что у меня будет скопирована и главная загрузочная запись, на случай, если её не окажется в сегменте sda1. Если конфигурационный файл grub не заработает на новом компьютере, то придётся поразмыслить, как изменить его, чтобы загрузка прошла. Обратите внимание: я скопировал на новый компьютер лишь 14-гигабайтный сегмент sda1, но в какой-то момент его загрузочная последовательность оборвалась, поэтому и потребовалось указать «count=14812».

Именно вторым способом мне удалось перенести установленный AntiX с компьютера Dell Inspiron 5100 на модели Emachines KAV60 и Compaq Presario V5000. Оба раза всё получилось, даже не пришлось вносить изменений в файл grub.cfg. После того, какую огромную фрустрацию доставил мне первый способ, успех в данном случае практически сподобил меня простить разработчиков Linux и AntiX в частности, хотя, согласитесь, они сделали очень хрупкую операционную систему. Как говорится, осадочек остался.

Если кому-то из вас придётся работать со старым дистрибутивом, обязательно учитывайте эти риски. Конечно же, может быть опасно бороздить Интернет на таком старом софте. Может быть, воспользуйтесь Gemini или другой оверлейной сетью, которая пока не кишит подозрительными личностями (интересно, а существуют ли ещё такие сети?). Может быть, отключите JavaScript в браузере, и такой защиты будет достаточно? Ещё лучше было бы выделить старый компьютер строго для путешествий по Интернету, а на другом компьютере хранить исключительно личные данные. Также работает подход с использованием нескольких загрузочных USB-флешек на одном старом компьютере. Любая старая версия любого дистрибутива Linux отлично подойдёт для оффлайновой работы. В самом деле, а есть ли более удобные варианты для старого компьютера, на котором современный дистрибутив Linux? Может быть, Windows? Нет, я не враг моим старым компьютерам!

❯ Заключение

Ни в коем случае не утверждаю, что вышеописанный метод спасения старых версий любимых дистрибутивов Linux идеален (то же касается любых других операционных систем, которые вы хотели бы запустить на старом компьютере). Может быть, читатели предложат способ получше. Но я думаю, так лучше, чем довольствоваться лишь теми приложениями, которые оказались в конкретном образе, либо пробовать копировать целые репозитории (и эти резервные копии тоже копировать), а затем пытаться хранить их десятилетиями. Если бы мы только могли рассчитывать, что разработчики Linux сделают это за нас. Но они не сделают.

Спасти Linux Linux, Железо, Timeweb, Перевод, Windows, Компьютер, Познавательно, Длиннопост, YouTube (ссылка)
Показать полностью 2
2574

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Приветствую всех!

Давным-давно я уже рассказывал про то, как в домашних условиях поднять GSM-сеть при помощи комплектующих, доступных любому школьнику. И в той статье я мельком упомянул, что идеальным в плане производительности вариантом будет запускать сети при помощи SDR, а не телефонов.

Итак, в сегодняшней статье поговорим о том, как быть владельцам SDR, желающим запустить свою GSM-сеть. Узнаем, какой софт нужен, чтобы заставить её работать в прямом смысле слова за пять минут. Попутно запустим GPRS и ненадолго побываем в 2007 году. Традиционно будет много интересного.

❯ Суть такова

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Многие помнят тот поистине легендарный пост про то, как из двух телефонов и обычного компьютера собрать базовую станцию. Но всё же у той конфигурации был целый ряд недостатков, которых лишена БС на базе SDR. В свою очередь, единственным минусом того, что будет рассмотрено в данной статье, является высокая стоимость оборудования.

Также на просторах Хабра был найден пост про Osmocom в Docker-контейнере, однако за десять лет софт порядком устарел, теперь есть куда более новые версии с большими возможностями и более стабильной работой.
И вот в мои руки попал полнодуплексный SDR, а это значит, что самое время попробовать запустить сеть при помощи него и узнать, что же из этого выйдет.

❯ В чём преимущества сети на базе SDR?


В отличие от телефонов, мы будем избавлены от целого ряда проблем, неминуемо возникающих при попытке использовать подобное железо:

  • Диапазон частот. В телефонах используются фильтры, не позволяющие прослушивать входящий трафик. Моя БС работала исключительно из-за их неидеальности, лучшим же решением было бы заменить их, что доступно не каждому ввиду необходимости наличия оборудования и хороших навыков пайки, дабы не запороть плату телефона. SDR лишён этой особенности.

  • Генератор. Точности внутреннего генератора SDR с лихвой хватит, чтобы обеспечить корректную работу сети. В телефонах такого устройства нет, поэтому нам приходилось ловить тактовый сигнал от других коммерческих вышек.

  • Подключение к компьютеру. В случае с SDR не придётся заниматься ерундой типа пайки проводов, проверки заряда аккумулятора и тому подобными вещами, достаточно просто подключить его к ПК и больше не думать о том, что причины неработоспособности сети кроются где-то здесь.

  • Производительность. В отличие от телефонов, можно создать конфигурацию, где будут доступны сразу и звонки, и SMS, и интернет.

  • Стабильность. Сеть на базе SDR при правильной настройке не падает.

  • Поддерживаемые устройства. При запуске сети на базе телефонов я смог подключить к ней далеко не все устройства, какие у меня были. В частности, телефон от Nokia смог поймать её только один раз. В случае же с SDR все имевшиеся у меня телефоны, которые участвовали в испытаниях, подключались без проблем. Товарищ axilirator подсказал, что связано это с частотной характеристикой сигнала, так как телефон после попытки подключения к операторской сети ориентируется на неё, а лабораторную не видит. В моём случае эта проблема если и возникала, то устранялась банальной перезагрузкой трубки.


Таким образом, если у вас есть желание серьёзно заниматься исследованием устройства и работы сотовых сетей, приобретение полнодуплексного SDR должно стать вашим первым шагом.

❯ Обзор оборудования

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

А вот и SDR. Это USRP B200mini-i, которого для данных опытов хватает с избытком. Само собой, к нему понадобится и компьютер, который будет им управлять. Виртуалка или Raspberry не подойдёт.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Далее понадобятся телефоны, которые будут ловить сеть. В них должны быть симки, какие именно — неважно, лишь бы были. Вот, например, Samsung Galaxy M12, уже фигурировавший в опытах с LTE.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Три легенды кнопочных телефонов — Nokia 3310, Siemens CX75, Sony Ericsson K750i.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Nokia E90, крутейший девайс, совмещающий в себе кнопочный телефон, коммуникатор на Symbian и клавиатурный КПК.

❯ Софт


Как и в прошлых опытах с SDR, использовать будем дистрибутив DragonOS. Там уже есть все необходимые компоненты для запуска сети, достаточно лишь слегка поменять настройки. Уже не придётся ни собирать софт из исходников, ни искать примеры файлов конфигурации.
Как и в прошлых статьях, ссылки на всё необходимое я оставлю в конце.

❯ Конфигурация


Теперь, когда ОС загружена, можно приступать к настройке.
Открываем папку osmo-nitb-scripts (ярлык на неё есть в меню «Пуск» в разделе «Other»), а в ней — папку configs. Нас интересует файл openbsc.cfg.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Вообще, сеть будет работать и с тем файлом, что есть по умолчанию, однако SMS не будут ходить из-за неправильной настройки таймслотов и протокола SMPP. Так что приводим файл к следующему виду:

!
! OpenBSC configuration saved from vty gprs mode none | phys_chan_config SDCCH8
! !
password foo
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
network
network country code 250
mobile network code 10
short name MaFrance
long name MaFrance
auth policy accept-all
location updating reject cause 13
encryption a5 0
neci 1
rrlp mode none
mm info 1
handover 0
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
subscriber-keep-in-ram 0
bts 0
type sysmobts
band GSM900
cell_identity 1087
location_area_code 13415
training_sequence_code 7
base_station_id_code 56
ms max power 30
rxlev access min 0
periodic location update 1000
cell reselection hysteresis 14
cell reselection offset 120
temporary offset 0
penalty time 20
channel allocator ascending
rach tx integer 9
rach max transmission 7
ip.access unit_id 1801 0
oml ip.access stream_id 255 line 0
gprs mode none
trx 0
rf_locked 0
arfcn 25
nominal power 34
max_power_red 20
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config TCH/H
hopping enabled 0
timeslot 2
phys_chan_config TCH/H
hopping enabled 0
timeslot 3
phys_chan_config TCH/H
hopping enabled 0
timeslot 4
phys_chan_config TCH/H
hopping enabled 0
timeslot 5
phys_chan_config TCH/H
hopping enabled 0
timeslot 6
phys_chan_config TCH/H
hopping enabled 0
timeslot 7
phys_chan_config TCH/H
hopping enabled 0
nitb
assign-tmsi
subscriber-create-on-demand random 100 199
smpp
local-tcp-port 2775
system-id OSMO-SMPP
policy accept-all
esme OSMPP
password 1234
osmocom-extensions

Коротко пройдёмся по параметрам.

  • ARFCN — самый важный. Это номер канала, на котором будет работать наша вышка. Необходимо воспользоваться приложением по типу Net Monitor, чтобы узнать, на каких каналах работают вышки в округе и выбрать незанятый.

  • LAC. Код зоны, использующийся для определения местоположения. Вообще, он не влияет на работу, но некоторые телефоны могут не подключаться, если он равен 0 или 1.

  • CID. Код соты. Выбирается аналогично LAC.

  • MCC — код страны. Для России это 250. Можно выбрать другой, но стоит учитывать, что не все телефоны смогут подключиться к такой сети.

  • MNC — код сети. Нужно открыть список сотовых операторов (он есть, например, тут или тут)

  • Long name и Short name. Это, как нетрудно догадаться, имя сети, отображаемое в строке состояния на телефоне. Устанавливается любое желаемое.


    Теперь разберёмся с таймслотами. Каждый из них конфигурируется на определённый тип канала. Подробнее о них можно почитать тут.

    Теперь, когда параметры изменены, запускаем нашу сеть:

sudo ./main.py

Если у вас не LimeSDR, а USRP, то запускать надо следующим образом:

sudo ./main.py -d uhd

Если всё было сделано правильно, то на экране должно будет появиться примерно следующее:

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

А через несколько секунд — вот это:

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Всё, сеть работает. На всё ушло меньше пяти минут не считая времени загрузки ОС. Можно пробовать подключаться.
В этом окне отображаются IMSI абонентов, подключившихся к сети, а также их номера.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

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

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост
Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Запустились и две более новые легенды. Всё, можно звонить и отправлять SMS. Точно так же, как мы делали это при помощи телефонов.

❯ А что насчёт интернета?


Но, конечно, при помощи Osmocom можно поднять и GPRS. Причём в случае использования SDR можно получить полноценную сеть, где будут работать все составляющие: звонки, SMS, USSD и пакетные данные. В случае использования телефонов нам пришлось бы либо подключать дополнительные моторолы, либо потерять возможность звонить.
Ну что же, самое время попробовать запустить GPRS.

❯ GPRS и как он работает


И перед началом экспериментов традиционно разберёмся с тем, как пакетный трафик в 2G-сети перенаправляется во внешний мир.

GPRS имеет свою опорную сеть. Она представляет собой расширение для сети GSM, добавляющее в неё возможность обмена пакетными данными.

Итак, сеть с поддержкой GPRS дополнительно включает в себя следующие компоненты:

  • PCU (Packet Control Unit). Это устройство управления пакетами, позволяющее в паре с контроллером БС отправлять и принимать те самые данные.

  • SGSN (Serving GPRS Support Node). Этот узел отвечает за обслуживание абонентов — обмен пакетами, тарификацию, проверку APN (Access Point Name) точки доступа, распределение ресурсов.

  • GGSN (Gateway GPRS Support Node). Шлюз, соединяющий сотовую сеть с другими сетями передачи данных.


Для работы GPRS на телефоне должна быть создана точка доступа, включающая в себя APN, логи и пароль. Обычно она создаётся сразу при регистрации в сети оператора и участие пользователя в этом не требуется.

❯ Конфигурация


Как и в прошлом случае, для начала необходимо настроить сеть.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Необходимо узнать имя подключения, через которое компьютер получает доступ в интернет. Сделать это можно, открыв ifconfig или iwconfig.

Теперь открываем opengts_egprs.cfg из папки configs. И приводим его к следующему виду:

!
! OpenBSC configuration saved from vty
! !
password foo
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
e1_line 0 port 0
no e1_line 0 keepalive
network
network country code 250
mobile network code 10
short name MaFrance
long name MaFrance
auth policy accept-all
authorized-regexp .*
location updating reject cause 13
encryption a5 0
neci 1
rrlp mode none
mm info 1
handover 0
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
subscriber-keep-in-ram 0
bts 0
type sysmobts
band GSM900
cell_identity 7229
location_area_code 7619
training_sequence_code 7
base_station_id_code 63
codec-support fr efr amr
ms max power 15
rxlev access min 0
periodic location update 1000
cell reselection hysteresis 14
cell reselection offset 120
temporary offset 0
penalty time 20
radio-link-timeout 32
channel allocator ascending
rach tx integer 9
rach max transmission 7
channel-descrption attach 1
channel-descrption bs-pa-mfrms 5
channel-descrption bs-ag-blks-res 1
ip.access unit_id 1801 0
oml ip.access stream_id 255 line 0
gprs mode egprs
gprs routing area 1
gprs cell bvci 1234
gprs nsei 1234
gprs nsvc 0 nsvci 1234
gprs nsvc 0 local udp port 23001
gprs nsvc 0 remote udp port 23000
gprs nsvc 0 remote ip 127.0.0.1
no force-combined-si
trx 0
rf_locked 0
arfcn 100
nominal power 34
max_power_red 20
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config SDCCH8
hopping enabled 0
timeslot 2
phys_chan_config TCH/H
hopping enabled 0
timeslot 3
phys_chan_config TCH/H
hopping enabled 0
timeslot 4
phys_chan_config TCH/H
hopping enabled 0
timeslot 5
phys_chan_config TCH/H
hopping enabled 0
timeslot 6
phys_chan_config PDCH
hopping enabled 0
timeslot 7
phys_chan_config PDCH
hopping enabled 0
nitb
assign-tmsi
subscriber-create-on-demand random 100 199
smpp
local-tcp-port 2775
system-id OSMO-SMPP
policy accept-all
esme OSMPP
password 1234
osmocom-extensions

Здесь активирован GPRS, а также изменены два таймслота — теперь им выделены пакетные данные. Настройки, касающиеся сети (имя, канал, код...) остались те же самые, их также нужно изменить, как в прошлый раз.

На телефоне необходимо создать точку доступа. APN её может быть любым, как и в случае с srsRAN он не проверяется, нужна она лишь для того, чтобы телефон сам начал подключение.
Итак, время запускать сеть. На этот раз делается это так:

sudo ./main.py -d uhd --gprs -i (тут ваше имя подключения)

Если в более старых руководствах надо было править файлы конфигурации, менять iptables, то тут достаточно просто указать подключение, которое связывает машину с внешним миром.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Для проверки был взят всё тот же смартфон от Samsung. Подключаемся к сети, включаем сотовые данные, и в строке состояние появляется «EDGE». Отлично, работает.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

У меня было много опасений, что интернет работать не будет. Во-первых, куча приложений, стремящихся дорваться до сети во что бы то ни стало, во-вторых, сам размер сайтов, не позволяющий пропихнуть их через канал, по скорости недалеко ушедший от модемного. Но легковесные сайты по типу old-dos.ru вполне открылись.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Далее я подключил и свой основной телефон. Он тоже отлично заработал и подхватил созданную сеть.

❯ Возвращаем свой две тысячи седьмой


Пожалуй, одна из немногих составляющих старого железа и «тех» времён в принципе, к которой я не испытываю ностальгии, — мобильный интернет.

По поистине конским тарифам (единицы рублей за мегабайт) предоставлялось весьма слабенькое соединение. Мобильные версии сайтов тогда тоже сильно отличались от привычных нам. Существовало два протокола — WAP (созданный специально для GSM-сетей, работающий через шлюз поверх GPRS или SMS), в котором передавалиись страницы в формате WML, и обычный HTTP. Позднее префикс «wap.» получили вообще почти все сайты, адаптированные под сотовые телефоны.

Сайты эти тоже были весьма своеобразными — на типичной страничке было в наличии практически всё, от новостей и мобильного софта (с непременными разделами для J2ME, WM и Symbian) до знакомств и дешёвой эротики. Многие телефоны из использовавшихся в те времена до сих пор хранят на своих картах памяти картинки с котиками, скачанные по пять рублей за мегабайт.

Также существовал такой бич для баланса как «premium-rate сайты». Суть их заключалась в том, что при заходе на с виду обычный сайт абонент мог не только просадить весь свой баланс, но и уйти в глубокий минус — тарификация по ним была повышенной (вплоть до сотен рублей за мегабайт), отчего заход на такие страницы обходился во всех смыслах дорого (на безлимитных тарифах они всё равно списывали деньги). Не обходилось и без грязного SEO (в духе тех времён) в виде размещения на страницах элементов с вот таких вот сайтов по типу «невидимых» картинок и тому подобного материала.

К слову говоря...

Нечто подобное сейчас тоже существует, правда, в куда меньших масштабах (например, у Tele2 — на страницах ошибок по типу 404).
Случайный жмяк по рекламе (которую ещё иногда делают картинкой в виде видеоплеера, чтобы кто-то намеренно нажал), и пользователь немедленно получает подписку за двадцать-тридцать рублей в сутки, отказаться от которой очень сложно.

Для работы полноценного WAP сейчас понадобится WAP-шлюз, поэтому в данной статье ограничимся только HTTP.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Увы, Siemens так и не смог загрузить ни один сайт. То ли что-то с настройкой точек доступа, то ли его браузер поддерживает только WML, но ничего больше унылой надписи «Соединение...» из него выжать не удалось.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Поэтому на помощь был призван Nokia E90, который смог загрузить вначале old-dos.ru…

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

… а потом и какой-то древний мобильный сайт.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

А вот он же на экране Nokia N95.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Интересно, обновляются ли они? Или эти «обновления дня» остаются такими уже лет десять?

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Отправляемся гуглить и находим список из всё ещё живых старых сайтов. А вот и ещё один экземпляр…

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Забавно — программы для WM, а значок от Win8/WP…

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

lankost.net, один из крупнейших ныне живых...

> Продолжение в источнике материала на Хабре. Увы, все фото не влезли (их действительно много), а именно в них вся суть и самое вкусное. :)

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост
  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 25
82

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Однажды мне попался один весьма интересный проект платы, поддерживающей большое количество разнообразных E-Ink экранов. Проект довольно быстро заинтересовал, появилось желание несколько переработать плату, внести улучшения, узнать и попробовать что-нибудь новое. Больше всего изменений претерпела система питания: она была разработана практически с нуля. Процесс оказался очень познавательным и увлекательным, а отладка прототипа преподнесла много поучительных и забавных сюрпризов. Это жизненный рассказ о разработке как есть.

❯ Что такое EPDiy?

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

EPDiy – это интересный проект платы и сопутствующего ПО для управления довольно большим количеством e-Ink экранов. Способ управления у разных моделей одного типа примерно одинаковый. Отличаются лишь разъёмы и временные параметры.

У автора проекта получилось несколько вариантов платы, отличающиеся, в основном, системой питания. В тот момент, когда я вдохновился спроектировать свою систему питания, последней версией была шестая. Седьмая версия, построенная на более современном чипе, появилась сравнительно недавно.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост
Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост
Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост


Проект мне понравился, и захотелось его несколько переработать, чтобы кроме конечного результата получить ценный опыт живой разработки и насладиться процессом. Основное внимание хотелось уделить силовой части.

Сейчас я пишу эти строки и, оглядываясь назад, могу с уверенностью сказать, что было весьма интересно и опыт значительно подрос. В процессе сделано немало ошибок, узнано и взято на вооружение много новых для меня вещей. Не обошлось и без забавных, неожиданных ситуаций. Один только бабах чего стоит…) Но обо всём по порядку.

❯ С чего начнём?


А начнём мы с осмысления того, как мы видим будущий проект, и составления небольшого технического задания. Это удобно. Если делать параллельно несколько проектов, то можно просто забыть какие-то детали. А так всё будет в одном месте. ТЗ несколько ограничит нас, если вдруг что-то будет не получаться и появится желание снизить требуемые характеристики.
Первым делом стоит изучить имеющиеся решения.

В версии 5 преобразователи напряжения построены на двух микросхемах LT1945. Не самая дешёвая и доступная микросхема.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост
Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

В версии 6 питание экрана построено на специализированной микросхеме TPS651851RSLR.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Решение интересное, но на момент проектирования мне не удалось найти эту микросхему по приемлемой стоимости. К тому же, хотелось спроектировать систему питания самостоятельно, а не просто поставить готовую микросхему, скопировать схему из даташита и всё. Был большой интерес попробовать новые для себя топологии, схемные решения, новые компоненты, вроде ферритовых бусин и другое.

В схемах EPDiy предусмотрены варианты питания платы от аккумулятора или от USB. На мой взгляд, аккумулятор имеет смысл поставить в какое-то законченное устройство с конкретной моделью экрана. У нас же универсальная плата для разных моделей. Этакий испытательный стенд. Мне хочется сделать попроще, поэтому сделаем простое питание от USB (+4,5…5,5 B), так преобразователи напряжения будут проще. Питать плату будем от банки или от зарядки, например, смартфона.

Экраны бывают разных диагоналей. С увеличением размера растёт потребление. Изучив несколько документов на экраны разных размеров (ED050SC3 (диагональ 5"), ED060SC4V2 (диагональ 6"), ED097ОС1 (диагональ 9,7"), Экран 13,3" и другие), сформируем требования к источникам питания:

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Посмотрим также документ на драйвер питания TPS65185х.
Возьмём запас 30% для максимального тока. В итоге получим примерно такие же токи, как у микросхемы TPS651851. Кстати, она используется в модуле WaveShare для питания 13,3" экрана (вот схема).

Также мне попадалось такое решение на основе версии 5.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

На первый взгляд, у решения есть свои плюсы. Одна из микросхем LT1945 заменена дешёвыми и доступными линейными стабилизаторами. Но ещё раз внимательно посмотрим на потребление по линиям разных напряжений (в табличке выше). Брать питание для более мощных линий +-15 В с маломощных +22, -20 В и рассеивать излишек напряжения на линейных стабилизаторах – это как-то неправильно. Хотя стремление понятно: автор схемы хотел удешевить и упростить её.
Очень важный момент – оценить ток, потребляемый преобразователями и платой в целом. Начнём с преобразователей.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

К ним нужно добавить ток, потребляемый по линии 3,3 В. Самый большой 13,3" экран потребляет по линии +3,3 В 10 мА. Микросхемы – 30 мА. Основной вклад вносит ESP32, особенно, при работе передатчика.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

По линии +3,3 В получается ток 540 мА. Добавим его к току преобразователей и получим 2,273 А. Не хило! Особенно, если вспомнить, что ток порта USB 2.0, к которому плата тоже может подключаться, ограничен значением 500 мА.

Решение довольно простое: добавить схему автосброса, которая будет сбрасывать ESP32 при подключении к компьютеру. Получается, с помощью компьютера будем прошивать, а работать плата будет от банки (power bank) или зарядки.

Питание по линии +3,3 В для модуля ESP 32, экрана и других микросхем, в целом, оставим без изменения.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Получается такой список требований (ТЗ):

  1. Питание от USB (+4,5…5,5 B);

  2. Выходные напряжения:
    2.1 +-15B (+-14,6…+-15,4 В) 200мА. Минимальный ток нагрузки 3.4 мА;
    2.2 -20 В (-21…-19 В) 15 мА. Минимальный ток нагрузки 0.3 мА;
    2.3 +22В (21…23 В) 15 мА. Минимальный ток нагрузки 0.4 мА (Токи как у TPS651851);

  3. Наличие схемы автосброса ESP32.

  4. Попробовать новые для себя решения. Желательно сделать попроще и, по возможности, дешевле. Остальное по ситуации.

❯ Выбираем топологию. Первый вариант схемы


Нам нужно получить из +4,5 В (минимальное напряжение от USB) четыре напряжения: +-15 В, +22 и -20 В.

Первыми вспоминаются топологии повышающего (boost) и инвертирующего (inverting buck-boost) преобразователей.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Обычно их используют при кратностях повышения напряжения 3…5 раз. Если отношение выходного напряжения к входному больше, то начинаются сложности с подбором индуктивности для правильной настройки. Из-за высокой крутизны регулировочной характеристики преобразователя небольшое изменение в потребляемом токе нагрузки приводит к большому отклонению выходного напряжения преобразователя. Замечательный обзор на эту тему с описанием сложностей (источник питания по топологии boost 5-200 В).
Проверим максимальную кратность для нашего случая. 22 В/4,5 В = 4,9 < 5 раз. Как раз помещается. Остальные напряжения дадут меньшую кратность.

Есть ещё топологии Sepic.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

В Сепике и Чуке есть ноль в правой полуплоскости (RHPZ), из-за чего приходится снижать полосу пропускания обратной связи (конвертер будет реагировать на изменения тока нагрузки или входного напряжения медленнее). В похожей топологии Zeta нет нуля в правой полуплоскости.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Но такую топологию я особо не встречал. Чаще попадается совмещённый Сепик+Чук.

Топологии интересные и имеют свои плюсы: выходное напряжение может быть как выше, так и ниже входного, а конденсатор С1 защищает вход схемы от короткого замыкания на выходе.

Выходное напряжение в нашем проекте только выше (по модулю) и нам такая особенность не нужна. К тому же, в схемах по две индуктивности, что мне кажется лишним усложнением (и удорожанием) в данном случае.

Выбираем простые повышающий и инвертирующий преобразователи.

Кстати, эти симпатичные картинки из книги Power Topologies Handbook.

Материал в ней расположен удобно. Есть также краткая версия Power Topologies Quick Reference Guide.

Я решил остановиться на микросхемах Texas Instruments. У них довольно подробные даташиты, множество рекомендаций по применению (application notes и др.), полезных программ. Для быстроты поиска микросхемы используем WEBENCH Power Designer. Вводим входные и выходное напряжения, ток и из списка предложенных микросхем выбираем наиболее понравившуюся.

Важную роль в этом сыграла доступность и стоимость микросхемы.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Там же можно немного помоделировать схему и посмотреть, какие компоненты рекомендует программа.

После некоторых поисков, сравнений стоимости и доступности микросхем я остановился на двух – LMR62014 (для линии +15 В) и LMR64010 (для линии +22 В). LMR62014 не подходит для +22 В из-за ограничения на выходное напряжение в 20 В.

Подберём теперь микросхему для инвертирующего (inverting) преобразователя. Идём в магазин.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

У начинающих может возникнуть вопрос: для повышающих и понижающих топологий микросхемы есть, а для инвертирующих нет? Как так?

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Всё просто! Инвертирующий преобразователь (inverting buck-boost) можно реализовать на основе микросхемы понижающего (buck). Есть хорошая апнота Working with Inverting Buck-Boost Converters (snva856b) от TI по применению микросхем понижающих (buck) преобразователей для инвертирующих.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

В процессе поиска мне попалась неплохая дешёвая микросхемка понижающего преобразователя AOZ1280CI. На основе неё сделаем инвертирующий преобразователь.

Оценочный расчёт можно провести с помощью Power Stage Designer Tool.

Посмотрим, подойдёт ли AOZ1280CI для линии -15 В:

  1. Максимальное напряжение, которое будет приложено к микросхеме
    5.5 В + |-15 В|=20.5 В (< максимума = 26 B => подходит)

  2. Максимальный ток в индуктивности Power Stage Designer Tool насчитала 995 мА (< минимального Current Limit =1.5 A => подходит)

  3. Коэффициент заполнения 77 % (< Dmax=87 %, есть запас => подходит)

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Посчитаем для линии -20 В:

  1. Максимальное напряжение 5.5 В + |-20 В|=25.5 В (< 26 B => подходит). Если смотреть максимальное напряжение Vin в Absolute Ratings AOZ1280CI, то там 30 В. Запас есть, всё хорошо.

  2. Максимальный ток в индуктивности Power Stage Designer Tool насчитала 92 мА (< минимального Current Limit =1.5 A => подходит)

  3. Коэффициент заполнения 82 % (< Dmax=87 %, есть запас => подходит)

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Оценочный расчёт сделали, микросхемы и топологии выбрали. Теперь рассчитаем и подберём остальные детали.

Идём на сайт TI и смотрим, что у них есть интересного для LMR62014. Скачаем spice-модель – может пригодится нам позже. Также есть разные апноты и рекомендации по применению: Working with Boost Converters snva731, Basic Calculation of a Boost Converter's Power Stage slva372d и другие.

Для AOZ1280 модельки не нашлось. Зато есть расчётка (которая нам не поможет, так как она для понижающей топологии ☺). Даташит AOZ1280 не такой подробный, как у TI. Но AOZ1280 стоит в два раза дешевле LMR62014.

А можно как-нибудь применить LMR62014 и для линии +22 В? Это весьма привлекательное решение, так как она несколько дешевле LMR64010 (была на момент проектирования). Заодно уменьшилось бы количество наименований в списке компонентов, что тоже хорошо. Конечно можно!

❯ Boost с удвоителем напряжения

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Для топологии boost с умножителем на 2 каскад повышающего преобразователя рассчитывается на напряжение в 2 раза ниже выходного, но ток в 2 раза больше выходного. Такая схема снижает напряжение на диодах выпрямителя, выходных конденсаторах, конденсаторе передачи энергии и силовом ключе до Vout/2, что является основным преимуществом. Транзистор и катушка индуктивности будут работать почти с тем же пиковым током и рабочим циклом, что и в схеме без удвоителя, поскольку общая мощность на выходе не изменится.

На картинке ниже приведён boost с умножителем на 3 (картинка нашлась только в таком качестве, но общая идея понятна). Если нужно, можно добавить ещё умножителей.

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост

Также есть любопытный вариант с инвертированием напряжения.

Например, микросхема LT3463 использует эту топологию совместно с топологией повышающего преобразователя.

> Продолжение в источнике материала на Хабре. Увы, все фото не влезли, а именно в них вся суть и самое вкусное. :)

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания Электроника, Техника, Программирование, Плата, Монтаж, E-ink, Электрика, Запчасти, Длиннопост
  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 24
128

Лазерный DIY или как с помощью дешевого гравера делать качественные платы

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Всем привет!

В этой статье хочу поделиться своей историей, как спонтанная покупка на местном маркетплейсе упростила процесс изготовления прототипов печатных плат в домашних условиях, сэкономив время, при этом повысив качество. Интересно? Тогда добро пожаловать под кат!

❯ С чего всё началось


Однажды вечером, когда до Нового года оставалось пару дней, я «прогуливался» по местным маркетплейсам в поискахинтересных инструментовподарка себе на Новый год и случайно наткнулся на заманчивое предложение. Ниже скриншот.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Сравнив цены с другими подобными площадками, я был удивлен столь выгодной ценой и ради эксперимента заказал данный девайс. Ранне я задумывался о покупке лазерного гравера, но как-то гнал от себя эти мысли. Мне хотелось иметь компактное устройство, которое не занимало бы много пространства и имело мобильность.

❯ Доставка


Спустя три недели, мне доставили небольшую коробку в местное почтовое отделение. Посылка приехала напрямую из Китая. В ожидании очередного «кота в мешке», которого бы стоило доработать напильником, чтобы оно заработало, я вскрыл коробку и увидел следующее.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

В коробке была кинематика лазерного гравера, отличные очки для защиты от лазерного излучения и пакет, в котором лежали гайки и USB-флешка. «Пощупав» кинематику, я был приятно удивлен качеством и отсутствием люфта. При покупке на странице товара не было информации о характеристиках гравера, но после вскрытия коробки, удалось идентифицировать устройство. Им оказалось модель Engraver-T от производителя VoidMicro. Вот некоторые технические характеристики:

  Model: LC1720T
  Laser Power: 30W, 20W, 10W,5.5W
  System: Windows, Android, IOS
  Software: VoidMIcro, lightBurn, laserGRBL
  Paint Area: 170mm * 200mm

❯ Сборка


Сборка гравера заняла буквально пять минут. Все основные узлы уже поставлялись в собранном виде. Нужно было просто соединить кинематику оси X и Y вместе с помощью гаек. Ниже на фото изображено устройство в собранном виде.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Данное устройство не комплектовалось лазерными модулями, поэтому дополнительно были заказаны на Алиэкспресс два лазера:

  • LT-20W-A от компании LaserTree на 20Вт электрической и 5Вт оптической мощности с длиной волны 445нм (для гравировки и т.п.) (3520 руб)

  • И маломощный No Name, с длиной волны 405нм и оптической мощностью 0,5Вт (2600 руб)


Данные модули приехали на неделю раньше. С помощью Arduino и ШИМ сигнала мне удалось протестировать их мощь. Ниже на фото представлены данные модули.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

❯ Пора зажечь


Итак, гравер собран, лазер установлен, настало времяжеститестов. Почему-то, в тот момент, мне очень сильно захотелось что-то выжечь на камне. Из ближайшего цветочного горшка я достал речную гальку и сделал из неё объект испытания. Ну что ж, давайте зажжем!


Ниже результаты тестов. Как можно видеть, тесты не обошли стороной металлический шпатель от моего 3D принтера.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

❯ Наконец-то что-то полезное


Ну что ж, пришло время отключить режим «хардкора» и сделать что-то полезное. А заодно проверить возможность изготовления печатных плат с помощью данного устройства. Для теста выберем что-то миниатюрное и полезное. У меня в закромах давно лежат датчики качества воздухаBME680. Давайте изготовим для них печатную плату. В KiCAD на скорую руку создадим проект платы. В итоге у нас платы будут выглядеть следующим образом.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Экспортируем необходимые слои платы в графической файл, обязательно в хорошем качестве с минимальным сжатием. Я использую графический редактор GIMP для подготовки файлов для гравировки. Ниже вы можете видеть результат экспорта.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Ах, да, забыл сказать, что слабым звеном данного гравера является софт. Мобильное приложение корректно не работает. Под MacOS, увы, тоже. Единственное, на чем удалось запустить родное приложение — это на Windows. А так как использую данную операционную систему, ровным счетом, никогда, то вариант использования родного софта можно отбросить. Благо, что гравер работает на базе микроконтроллера esp32 с прошивкой GRBL V.1.1, значит мы можем использовать сторонний софт для работы с гравером. Я остановился на LightBurn. Это платный софт, который имеет пробный период на 30 дней, чего нам будет достаточно для тестов.

С софтом определились, теперь необходимо проработать технологию изготовления платы.
Для корректного совмещения слоя дорожек и паяльной маски, нужно наметить область расположения заготовки платы. Самым лучшим решением будет выжечь необходимую область на листе бумаги, который будет подложен под лазерный гравер. Чтобы избежать смещение листа и гравера, зафиксируем их. Для теста я применил малярный скотч.

Итак, давайте приступим! Для начала нам нужно установить лазерный модуль с длиной волны 405нм, которая будет активировать наши фотополимерные материалы (фоторезист и паяльную маску). Ниже размещены скриншоты, в которых отображены все необходимые параметры для реализации нашего проекта.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост
Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост
Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Для начала, нам необходимо сфокусировать луч лазера на поверхности заготовки нашей платы и добиться минимального диаметра. Теперь можно наметить область расположения нашей платы.

В результате мы получаем следующее:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Чтобы избежать скольжения платы в процессе работы гравера, создадим посадочное место для нашей заготовки с помощью изоленты. Это выглядит примерно так:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Теперь можно наклеить фоторезист на нашу заготовку и разместить её в посадочное место.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

И выполнить засветку, видео отображает процесс в реальном времени.

Ниже на фото результат облучения фоторезиста лазером:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

После этого нам необходимо проявить фоторезист, предварительно сняв защитную пленку. Появление фоторезиста выполняется в 10 % растворе гидроксида натрия. Ниже можно видеть результат данного процесса.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Теперь нам необходимо выполнить травление платы в растворе.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Результат травления:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Для защиты медного слоя платы от окисления и для эстетического наслаждения, необходимо нанести на нашу плату паяльную маску. В примере используется паяльная маска Mechanic LY-LVH900-WY. С помощью сетки для шелкографии и карты вашего любимого банка, аккуратно наносим маску.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Ниже представлен результат нанесения паяльной маски:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Далее необходимо аккуратно перенести плату к нашему граверу, не уронив её десять раз на пол, и поместить в посадочное место, предварительно убедившись в правильном расположении.

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

И выполнить активацию фотополимера, пример показан на видео:

Затем с помощью салфетки и спирта удаляем маску с незасвеченной области. После этого можно дополнительно укрепить слой маски. с помощью солнечного света или, как сделал я, с помощью UV источника.

Результат нанесения маски представлен ниже:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

Нам осталось только выполнить монтаж SMD компонентов с помощью термостола и плата готова. Результат:

Лазерный DIY или как с помощью дешевого гравера делать качественные платы Электроника, Техника, 3D печать, 3D принтер, Timeweb, Сборка, Гаджеты, Длиннопост

❯ Подведение итогов


Не смотря на предчувствие разочарования, которое меня посещало в момент покупки и доставки, я вполне доволен и удивлен качеством данного лазерного гравера. Особенно меня воодушевило точное изготовление миниатюрной печатной платы. Всё получилось с первого раза и без каких-либо проблем. Теперь изготовление печатных плат в домашних условиях можно полностью перевести в диджитал без необходимости печати трафаретов для засветки и подобных сопутствующих проблем. В итоге мы получаем компактное и универсальное устройство, которое мы можем использовать не только для изготовления печатных плат, но и для гравировки и резки материалов для наших DIY проектов.

На этой позитивной ноте хочу вас поблагодарить за ваше внимание. Надеюсь, мой опыт окажется кому-то полезен. Спасибо!

Ссылки к статье:

Показать полностью 22
74

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Осциллограф это один из самых желанных приборов на столе любого радиолюбителя. Этот прибор открывает огромные возможности для отладки или ремонта различной электроники. Но, часто, начинающие электронщики не до конца понимают, как же он работает.

В этой статье я предлагаю вместе разобраться, на каких принципах работает осциллограф. Для этого мы смоделируем электрическую схему простого осциллографа с индикацией на светодиодной матрице из дискретных компонентов в моем любимом симуляторе ISIS Proteus.

❯ Введение


Во время отладки электронных схем иногда нужно понимать, как изменяется форма сигнала (его амплитуда и частота) при прохождении электрических цепей, именно для этого удобно пользоваться осциллографом. Фактически, он позволяет увидеть электрические сигналы своими глазами.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Большинство современных осциллографов цифровые, и, практически, представляют собой специализированный планшет с сильно прокаченной звуковой картой, которая способна оцифровывать входные сигналы далеко за пределами звукового диапазона. Они накапливают информацию о сигнале в памяти, проводят необходимую математическую обработку и строят на дисплее график сигнала. Это позволяет реализовать множество автоматических функций, например измерение частоты, определение амплитуды, или даже преобразование Фурье. С помощью таких приборов можно отлавливать и расшифровывать даже одиночные цифровые посылки.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Но еще в прошлом веке в эпоху аналоговой электроники использовались осциллографы на основе лучевых трубок. Они не имели совсем никакой памяти, и вполне успешно использовались преимущественно потому, что в схемах преобладали аналоговые сигналы. Форма таких сигналов не сильно изменяется в течение достаточно большого количества периодов следования. Горизонтальное отклонение луча на трубке осциллографа синхронизировали с частотой исследуемого сигнала, а отклонение луча по вертикали происходит пропорционально амплитуде измеряемого сигнала. На фоне разметки экрана «отпечаток» в люминофоре формирует график, называемый осциллограммой.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Схема, которой просвещена данная статья, имеет аналогичный принцип работы, с той разницей, что вместо электронно-лучевой трубки будет использоваться динамическая светодиодная матрица.

Интернет почти забыл подобные схемы, и удивляет, что до сих пор находятся энтузиасты, которые собирают аналогичные устройства и в наше время. Мне-то казалось, что я один такой «повернутый»…

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

На фотографии вы видите осциллограф со светодиодной матрицей, конструкцию которого придумал наш коллега из Бразилии Arthur Zuliani для обучения своих студентов навыкам сборки радиоэлектроники.

Схемы таких осциллографов можно найти в старых журналах, и мне даже удалось найти на ютубе несколько относительно свежих проектов. Одно из таких видео загружено примерно 5 лет назад, но просмотр оставляет впечатление, что снимали его значительно раньше.


Ну что же, самое время разобраться в том, как это работает, погнали дальше!

❯ Структурная схема


Структурная схема осциллографа со светодиодной матрицей показана на рисунке ниже, и в целом она очень похожа на схему осциллографа с электронно-лучевой трубкой.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Пускай светодиодная матрица в нашей схеме будет иметь разрешение 10 на 10 точек. Этого будет достаточно, чтобы условно отличить синусоиду от прямоугольных импульсов или пилы. На рисунке показано, как это примерно будет выглядеть, оттенки красного демонстрируют яркость светодиодов, которая будет не равномерной из-за динамической развертки.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

В отличии от люминесцентной маски электронно-лучевой трубки, светодиодная матрица способна показывать изображение только в виде дискретных точек, причем весьма крупных точек. По этому признаку нашу схему нельзя считать полноценным осциллографом, никаких подробностей и деталей на ней не разглядеть. Но оценить форму сигнала вполне можно. Так что это устройство скорее следует называть осциллографическим пробником.

❯ Канал вертикального отклонения


Для включения светодиодов в столбцах матрицы необходимо формировать дискретные сигналы управления, для этого в схеме осциллографа используется детектор уровня аналогового сигнала. Эта схема делит максимальный диапазон входного сигнала на уровни в соответствии с количеством светодиодов в столбце. И каждый светодиод должен гореть, пока входной сигнал находится в границах его диапазона. Технически это может быть реализовано на отдельных компараторах, или с помощью специализированной микросхемы – индикатора уровня LM3914.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

В составе микросхемы уже имеется десяток компараторов со светодиодными драйверами и источник опорного напряжения для каждого из них. Получается, что входной сигнал может быть разделен на десять уровней, и в матрице может быть под десять светодиодов в каждом столбце.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

❯ Аттенюатор и предварительный усилитель


Для того, чтобы наша схема могла масштабировать амплитуду сигнала по вертикале на светодиодной матрице, и значение амплитуды можно было измерить по клеточкам, в ней используется предварительный усилитель и аттенюатор. Именно они обеспечивают связь между клеточками на экране осциллографа и вольтами, то есть позволяют получить те самые заветные вольты на деление.

Так как мы не претендуем на звание «измерительный прибор года», ограничимся двумя пределами регулировки вертикальной развертки: 1 В на деление и 100 мВ на деление.

Для начала нужно определиться с напряжением питания всей схемы, пускай это будет батарейка типа «Крона» с напряжением 9 В.

Сейчас самое время вспомнить, что измеряемые сигналы могут иметь не только положительное значение амплитуды. Амплитуда сигналов может увеличиваться в отрицательной полярности. Поэтому входной сигнал будет правильным подключать относительно «середины» питания схемы.

Для удобства разработки схемы добавим дополнительные резисторы в цепь опорного напряжения LM3914 относительно плюсового и минусового потенциалов питания так, чтобы опорное напряжение находилось в диапазоне 5 В относительно середины питания. Диапазон переключения для светодиодов получается 0,5 В.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Чтобы получить вертикальную развертку с разрешением «1В/деление» аттенюатор должен иметь соотношение 1:2. Для развертки «100мВ/деление» входной сигнал после аттенюатора потребуется усилить в 10 раз. Таким образом в схему добавим делитель напряжения и усилитель с переключаемым коэффициентом усиления. И не забудем, что входной сигнал должен усиливаться относительно середины питания.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Получилось так, что аттенюатор на резисторах R1, R2 делит измеряемый сигнал пополам, и, в зависимости от положения кнопки, усилитель либо усиливает его в 10 раз, либо передает без усиления. В разомкнутом положении кнопки мы получим значение развертки «100мВ/деление», в замкнутом — «1В/деление».

Усилитель построен на операционном усилителе LM358. По своим параметрам это не самая лучшая микросхема, но для нашего случая пойдет. Благодаря тому, что опорное напряжение для LM3914 уже, чем напряжение питания, нам не важно, что выход LM358 «не дотягивается» до диапазона питания. Микросхема LM3914 рассчитана на звуковой диапазон, поэтому невысокие частотные характеристики LM358 нас тоже не должны беспокоить.

Вентиль А LM358 осуществляет усиление измеряемого сигнала в 10 раз при разомкнутой кнопке и передает сигнал без усиления — при замкнутой. Вентиль В LM358 формирует искусственную среднюю точку, относительно которой нужно подавать входной сигнал. Объединять предварительный усилитель и искусственную среднюю точку в одном корпусе конечно не правильно, т.к. вентиль В будет генерировать по общей подложке микросхемы помехи, но мы можем закрыть на это глаза, они все равно не будут различимы на светодиодной матрице из-за ее низкого разрешения.

❯ Горизонтальная развертка


Горизонтальную развертку изображения сигнала на светодиодной матрице обеспечивает счётчик Джонсона CD4017. На рисунке показан график переключения выходов счетчика при подаче импульсов на его счетный вход.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Выходы счетчика подключены к столбцам светодиодной матрицы и поочередно включают один из них. Если частота этих переключений будет достаточно высокой, зрительно они не будут различимы, и глазу будет казаться, что светодиоды во всех столбцах матрицы светятся одновременно.

Как это примерно будет выглядеть, можете посмотреть на картинке. Из-за особенностей виртуальной модели LM3914 время моделирования на моем компьютере отличается от реального времени раз в десять.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Серия CD тут выбрана не случайно, микросхема имеет широкий диапазон напряжений питания, не требует отдельного стабилизатора напряжения и может напрямую управлять выбором столбца матрицы светодиодов.

Дополнительное усиление на выходе счетчика не потребуется. Декодер уровней аналогового сигнала LM3914 сконфигурирован так, что на его выходе одновременно может светиться только один светодиод, и ток светодиода не превышает 20 мА. Таким образом выходы счетчика не будут перегружены по току.

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

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Если же частота синхронизации не совпадает с частотой измеряемого сигнала, то из-за частой смены кадров на экране осциллографа мы увидим либо шум, различить в котором отдельные периоды сигнала будет практически невозможно, либо измеряемый сигнал будет «бежать» по экрану, а это тоже не способствует удобству измерений.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

❯ Синхронизация


Чтобы стабилизировать отображение сигнала на экране осциллографа, и оно постоянно не «прыгало», необходима схема запуска развертки. Принцип ее работы очень прост. Схема контролирует уровень входного сигнала, и разрешает формирование сигналов горизонтальной развертки только тогда, когда амплитуда входного сигнала превысит заданный уровень.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

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

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

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

Чтобы счетчик Джонсона останавливался при достижении своего максимального значения, проще всего завести его старший выход на вход разрешения тактового сигнала. Такое решение попадалось в нескольких схемах из интернетов.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Но за простоту мы заплатим потерей одного столбца в светодиодной матрице, его придётся отключить от старшего выхода. Если этого не сделать, то десятый столбик все равно будет работать не корректно.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Схему запуска развертки можно реализовать на компараторе LM393. Порог запуска будет определяться положением подстроечного резистора RV1. Конденсатор С1 выполняет функции детектора фронта, с его помощью будет получен короткий положительный импульс для сброса счетчика при переключении компаратора. Это приведет к повторному запуску сигнала развертки.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Эта схема будет иметь один недостаток. Она не сможет показать на экране больше одного периода измеряемого сигнала. Счетчик может быть сброшен до того, как досчитает до своего максимального значения.

Для настоящего осциллографа было бы неплохо использовать высоко стабильный по частоте источник сигнала горизонтальной развертки. Но для нашей схемы вполне сгодиться генератор на основе таймера NE555, а лучше использовать CMOP версию, тогда можно будет иметь более высокую частоту развертки. Импульсы, которые будет формировать таймер, можно использовать для тактирования дешифратора CD4017. Изменение периода импульсов можно реализовать переключением времязадающих конденсаторов, вы можете подобрать их значение в зависимости от необходимых значений времени на деление.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Параметры таймера подобраны так, что тактовый сигнал составит 5 кГц. Это позволит показывать один полный период измеряемого сигнала с частотой 500 Гц. Можно будет подключиться к выходу ФНЧ усилителя звуковой частоты и использовать схему осциллографа для его украшения.

❯ Заключение


На сегодняшний день рассмотренная нами схема осциллографа со светодиодной матрицей не имеет прикладной ценности в качестве измерительного прибора. Но вполне может сгодиться в качестве украшения для самодельного усилителя звуковой частоты. Полная схема осциллографа со светодиодной матрицей показана на рисунке.

Осциллограф из рассыпухи на светодиодной матрице. Разбор схемы в Proteus Электроника, Техника, Электрика, Осциллограф, Timeweb, Гаджеты, Длиннопост, Видео, YouTube, Гифка

Я бы с удовольствием собрал ее в железе, если бы меня не опередили… кто-то придумал ее на 30 лет раньше меня))) Да и я уже собирал нечто подобное по функциональности и схемотехнике. Надеюсь, вам понравилась эта схема и вы получили такое же удовольствие, как и я, от анализа ее работы.

______________________________________

Также подписывайтесь на наш блог и телеграм-канал.

Показать полностью 21 1
58

IR remote control, а без микроконтроллеров можно? Да не вопрос

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Сколько логических микросхем понадобится для того, чтобы получить полноценный ИК пульт дистанционного управления? Наверняка вам даже в голову не приходил этот вопрос! А в моем воспаленном сознании однажды такой вопрос возник.

Если вам приходилось сталкиваться с моими предыдущими статьями, то вы уже имеете представление о моем специфическом увлечении схемотехникой. Но далеко не все мои идеи находят воплощение в железе, многое так и остается в виде черновиков на виртуальных моделях. Так случилось и с этой схемой, но она кажется мне достаточно интересной, чтобы поделиться ей с вами.

Если вы тоже считаете, что немного схемотехники после новогодних праздников вам не повредит, тогда добро пожаловать под кат.

Одному моему товарищу из Ярославля необходимо было разработать задание для конкурса по электронике. Формат конкурса удивительным образом совпал с форматом моего увлечения. Поэтому товарищ и обратился ко мне.

Конкурс проводился для студентов колледжа, и мне хотелось предложить что-то «умное», а не очередную «свистелку-мигалку» на жесткой логике. И тут в моем архиве попалась схема ИК пульта дистанционного управления в формате RC-5. Почему бы и нет? Тут и модуляция есть, и кодирование и схемотехника занятная. Решено! Я предварительно согласовал идею с товарищем и приступил к проработке.

❯ Формат RC-5


Сам по себе протокол RC-5 стар как этот мир и является хорошим примером функционального минимализма в схемотехнике. Разрабатывался он в те времена, когда инженерам приходилось экономить вычислительные ресурсы в своих схемах. Это сегодня можно взять какую-нибудь Arduino и сделать на ней любой протокол управления без особых хлопот. Наверное, поэтому в современных статья по протоколу RC-5 опускаются некоторые важные моменты.

Протокол RC-5 использует бифазное модулирование, которое в зарубежной литературе именуется кодом «Манчестер». Его основным преимуществом является самосинхронизация. То есть двоичный код можно передавать по одному каналу связи без дополнительного канала синхронизации.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост


Все биты передаются за одинаковое время 1.778мс. Для передачи логического ноля первую половину периода передается высокий уровень, а вторую — низкий. Для передачи единицы — наоборот.

Такой код получается очень просто путем кодирования данных тактовым сигналом с заполнением 50% с помощью функции «исключающего или». Тактовый сигнал должен иметь высокий уровень первую половину периода, и низкий уровень — во второй. Если вспомнить, как работает логическая функция XOR, то все сразу станет понятно.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

К слову, время передачи одного бита данных 1.778мс выбрано не случайно. Для исключения влияния фонового ИК излучения, например от ламп дневного освещения, сигнал пульта модулируется на частоте 36кГц. Таким образом за один период передачи данных помещается ровно 64 заполняющих импульса. Опорная частота обычно имеет скважность 3 или 4, так сигнал потом проще фильтровать.

Сама посылка в формате RC-5 включает в себя 14 бит. Чуть позже мы увидим, что это тоже очень удобно с точки зрения схемотехники. Общее время передачи одной посылки составляет 24,9мс.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

В начале посылки всегда передается два стартовых бита, имеющих значение логической «1». При Манчестерском кодировании нам необходимо знать значение первого бита, иначе все последующие могут быть интерпретированы неверно. Также это позволяет синхронизироваться приемникам.

Третий бит триггер (бит управления) меняет своё состояние при каждом следующем нажатии кнопки. Если кнопка удерживается, то посылка должна повторяться каждые 114 мс, а бит — триггер при этом не меняется. Таким образом определяется различие между нажатием одной кнопки несколько раз и ее удерживанием.

Пять битов адреса системы S4 — S0 управления позволяют выбрать одно из 32-х стандартных устройств (телевизор, видеопроигрыватель, CD-плеер и так далее), для которого адресуется команда C5 — C0. Команды были тоже стандартизированы разработчиком протокола — компанией Филипс.

Когда-то это позволяло различать пульты управления для разных устройств. Но потом Китайцы, как всегда, все поломали, в их сверх массовых устройствах частенько коды использовались так, как это было удобно китайским инженерам. Вот сейчас и случается так, что на пульте от люстры появляется секретная кнопка, которая добавляет громкости телевизору и одновременно включает кухонную вытяжку на первой скорости.

❯ Структурная схема пульта


У меня получилась следующая структурная схема пульта управления. Вспоминая, что это задание для конкурса, количество элементов схемы и площадь печатной платы имеют ограничение, функциональность пульта пришлось ограничить десятью кнопками. Функция повторной отправки команды при удержании кнопки тоже не реализована. Но все это достаточно просто можно добавить при необходимости.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

На схеме я добавил наименования микросхем, которые используются в каждом конкретном блоке.

Клавиатура и приоритетный шифратор

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Обработка командных кнопок реализована с помощью приоритетного шифратора CD4532. Для добавления еще двух кнопок я использовал три вентиля ИЛИ 74НС32. Можно было бы использовать два шифратора включенных последовательно, но один вентиль ИЛИ понадобился в другом блоке схемы, так получилось сократить количество корпусов.

Кнопки обязательно следует подтянуть на землю резисторами, чтобы входы шифратора не болтались в воздухе. В зависимости от качества кнопок, параллельно каждой можно поставить по конденсатору на 0,1мкФ.

Вывод 14 GS микросхемы U6 позволяет определить момент нажатия кнопки, дифференциальная цепочка С7-R9 выступает в роли детектора фронта и формирует короткий импульс запуска схемы write. На выходах d0-d3 формируется двоичный код нажатой кнопки.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Формирователь сообщения

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Код нажатой кнопки передается на схему формирования сообщения. Эта схема построена на основе двух сдвиговых регистров 74НС165. Я думаю, что тут все должно быть понятно, RC-5 это же последовательный протокол, вот и регистры использованы параллельно-последовательные.

Один вентиль XOR используется в качестве инвертора, это тоже сделано с целью сокращения количества корпусов логических микросхем, чтобы еще дополнительный корпус не ставить с вентилями НЕ.

Через инвертор сигнал write защелкивает входы сдвигового регистра, чтобы последовательно были переданы данные, установившиеся на входе регистра на момент нажатия кнопки.

Входы D0-D4 сдвигового регистра U1 посажены на землю и формируют нулевой адрес устройства, при необходимости эти линии можно переключить между землей и плюсом питания так, как вам будет удобно. По классификации от Филипс 0h это адрес для телевизоров, кнопками можно будет клацать TV-программы.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Бит-переключатель

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Бит управления trig формируется триггером U3:B, включенным по схеме ждущего мультивибратора с увеличенной крутизной фронта. Короткий импульс write со схемы обработки клавиатуры переключает выход триггера на противоположенное значение. Благодаря этому в посылке можно различать отдельные нажатия на кнопки пульта.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Отправка сообщений и тактирование

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Также сигнал write переключает выходы второго вентиля триггера U3:A, что активирует работу схемы формирования сообщения на основе счетчика 74HC393.

Задача этой схемы заключается в том, чтобы подать на сдвиговые регистры 14 тактовых импульсов и выдать все 14 бит данных.

Триггер U3:A удерживает счетчик U2:A в состоянии сброса, пока не придёт сигнал write. Благодаря схеме монтажного ИЛИ на диодах D3-D6, счетчик будет вести счет до тех пор, пока хотя бы на одном из его выходов Q0-Q3 будет присутствовать низкий уровень.

По фронту 15-ого тактового импульса все выходы счетчика установятся в высокий уровень, через вентиль ИЛИ U4:A на вход триггера поступит импульс переключения, и работа схемы завершится. То есть пятнадцатый импульс от тактового генератора на сдвиговый регистр не поступит, схема пропустит ровно 14 тактовых импульсов с выхода генератора U8 на NE555, во время которых выходной сигнал схемы формирования сообщения transfer будет в активном уровне.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Бифазный модулятор

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Думаю, что объяснять работу модулятора в манчестерский код подробно не нужно. Это должно быть понятно из предыдущего текста.

Заполнение сформированного сообщения частотой 36кГц выполняет генератор U9 на таймере NE555. Современные ИК-приемники часто строятся на модулях типа TSOP, которые на выходе сразу дают низкочастотный сигнал, и поэтому они не так критичны к количеству импульсов заполнения.

Светодиод D7 должен быть инфракрасным с длинной волны 940нм, это самый распространенный диапазон для ИК управления. Если длинна волны светодиода будет отличаться, дальность приема может сильно сократиться.

Немного о питании схемы


Питание схемы можно осуществлять от трех, а лучше четырех последовательно включенных батареек типа ААА. Либо использовать две батарейки с повышающим стабилизатором на 5В. Наличие стабилизатора предпочтительнее, это позволит выжать из батареек максимальную емкость.

❯ Итоги проектирования


Предварительная компоновка схемы на печатную плату показала ее жизнеспособность. Для реализации схемы ИК-пульта в формате RC-5 мне понадобилось всего девять корпусов типа SOIC, два из которых имеют по 8 выводов. Все эти компоненты вполне помещаются в формате классического пульта управления для телевизора.

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост

Вопрос остается только к энергопотреблению схемы. Жрать батарейки конечно же она будет прилично, не сравнить со специализированными микросхемами, которые переходят в сон между нажатиями кнопок.

До воплощения этой схемы в железо так и не дошло, хотя было бы интересно ее спаять. По итогу проектирования схемы, мы с товарищем пришли к другой концепции задания для конкурса. Но из этой схемы получилась хорошая головоломка для дополнительной тренировки студентов на понимание цифровой схемотехники.

А почему, эту схему мы так и не собрали, как-нибудь напишу в одной из следующих своих статей.

Если вам понравилась эта статья, то вы можете посмотреть другие мои проекты:

IR remote control, а без микроконтроллеров можно? Да не вопрос Электроника, Техника, Электрика, Timeweb, Телевизор, Схема, Гаджеты, Познавательно, Длиннопост
Показать полностью 15
Отличная работа, все прочитано!