Сообщество - TECHNO BROTHER
Добавить пост

TECHNO BROTHER

1 629 постов 12 501 подписчик

Популярные теги в сообществе:

Ретропонедельник №135. Примус Рекорд-1

Понедельник - традиционный день нового экспоната в виртуальном музее советской бытовой техники. Сегодня это примус Рекорд-1 1984 года. К сожалению на горелке отсутствует отражатель пламени:

Ретропонедельник №135. Примус Рекорд-1 Техника, Познавательно, Сделано в СССР, Примус, Бытовая техника, Длиннопост

Удивительно, что в 1984 году без изменений производилась модель Primus №1 конца XIX века. В СССР она производилась с 20х годов вплоть до развала страны.

Ретропонедельник №135. Примус Рекорд-1 Техника, Познавательно, Сделано в СССР, Примус, Бытовая техника, Длиннопост

Примус - это устройство для сжигания жидкого топлива для приготовления пищи. Их сразу же оценили путешественники - посреди снежного поля или на склоне горы дров не найти.

Ретропонедельник №135. Примус Рекорд-1 Техника, Познавательно, Сделано в СССР, Примус, Бытовая техника, Длиннопост

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

Ретропонедельник №135. Примус Рекорд-1 Техника, Познавательно, Сделано в СССР, Примус, Бытовая техника, Длиннопост

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

Ретропонедельник №135. Примус Рекорд-1 Техника, Познавательно, Сделано в СССР, Примус, Бытовая техника, Длиннопост

По разным примусам и другим горелкам на жидком топливе, их истории фундаментальный труд в своем ЖЖ публиковал @ErmiAk который горячо рекомендую к изучению: https://ermiak.livejournal.com

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

Нужна помощь по светодиодным панелям

появились вот такие панели, где стояли и чем управлялись я не знаю.

Помогите разобраться в подключении, чем управлять? Есть ли возможность управлять ею

при помощи АРДУИНО ?

Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост
Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост
Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост

после откручивания блока питания-управления выявилась такая картина

Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост
Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост
Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост
Нужна помощь по светодиодным панелям Светодиодные экраны, Светодиодная панель, Светодиоды, Длиннопост
Показать полностью 7

Гоночный симулятор своими руками

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

Все детали разработки тут.

Источник - Дневник Технаря

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

Лазерный 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

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках. Интересно? Тогда жду вас под катом!

Содержание:

  • Не J2ME едины

  • Аппаратные ресурсы

  • Кроссплатформенный рантайм

  • Кроссплатформенный рантайм: Win32

  • Кроссплатформенный рантайм: MRE

  • Кроссплатформенный рантайм: VXP

  • Наконец-то пишем игру

  • Тестируем на реальных девайсах

  • Заключение


❯ Не J2ME едины


Думаю, многие мои читатели помнят о такой платформе, как J2ME. Java-приложения стали фактически основной возможностью расширения функционала телефонов в 2000-х годах. API для них был достаточно хорошо стандартизировано, программы не зависели от архитектуры процессора и ОС устройства, а порог вхождения для написания собственных приложений был довольно низкий и даже новички могли за пару дней написать свою игрушку или какое-нибудь GUI-приложение!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Однако не одним J2ME мы были едины: существовало множество платформ, которые так или иначе пытались занять нишу Java на рынке. Некоторые из них я упоминал в своей прошлой статье о написании 3D-игры под Sony Ericsson с нуля: например, была такая платформа на телефонах Sony Ericsson серии T, как Mophun, а CDMA-телефонами с чипсетами Qualcomm использовалась нативная платформа BREW. Пожалуй, я не буду упоминать о .sis и .cab — поскольку это форматы нативных приложений для смартфонов, а не простых «фичефонов».

В какой-то момент, ближе к 2006-2007 году, прилавки российских официальных ритейлеров (по большей части это были телефоны Fly) и неофициальных продавцов на рынках заполонили различные китайские телефоны, которые предлагали какой-то немыслимый функционал для тех лет за копейки, да ещё и визуально напоминали флагманские модели известных брендов. Пожалуй, одним из самых популярных таких телефонов была Nokla TV E71/E72 (да, именно «нокла»), вышедшая примерно в 2008 году и производившаяся аж до 2011 года! За 2-3 тысячи рублей (это менее 100 баксов), пользователь получал здоровый 2.4" дисплей с разрешением 240x320 весьма неплохого качества (когда в те годы многие продолжали ходить с 176x220), да ещё и с тачскрином, гироскоп, огромный громкий динамик (пусть и не очень качественный), поддержку SD-карточек до 32Гб, нередко фронтальную камеру, а также премиальный дизайн с вставками из алюминия. Частенько китайцы заботливо клали в коробку ещё чехольчик и дополнительный аккумулятор :)

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

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

Но была и ложка дёгтя в этой бочке меда: китайские телефоны очень часто не имели поддержки Java, из-за чего многие пользователи разочаровывались в них из-за отсутствия возможности установить необходимые им приложения. Никакой тебе оперы, аськи, игр… Скорее всего, это связано с необходимостью отчислений Sun, а также разработчикам реализации J2ME-машины (JBed/JBlend) и установки чипа флэш-памяти чуть большего объёма.

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

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Всё как вы любите: HiTech-девайсы на фоне ковра, который старше автора лет на 30 :)

В ранних китайских телефонах использовалась платформа Mythroad (MRP, MiniJ) от китайской компании SkyWorks, которая лицензировала свою технологию производителям чипсетов. Поддержку MRP можно было встретить на телефонах с чипсетами MediaTek, Spreadtrum, а также MStar (и возможно Coolsand). Mythroad предоставлял некоторое API для работы с железом телефона и разработки как UI-приложений, так и игр, кроме того, Mythroad позволял хранить ресурсы в одном бинарнике с основной программой и даже имел какой-то интерпретируемый язык помимо возможности запуска нативного кода. Для работы таких приложений необходимо было скопировать менеджер приложений dsm_gm.mrp и игру в папку mythroad во внутренней памяти устройства или на флэшке, а затем набрать в номеронабирателе код *#220807#, иногда при отключенной первой SIM-карте. Костыльно? Костыльно! Откуда об этом знать среднестатистическому пользователю? Не откуда! Но работало!

Эта платформа поддерживалась на большинстве подделок под брендовые устройства Nokia, Sony Ericsson и Samsung, а также iPhone и на многих китайских кнопочных телефонах 2008-2010 годов.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Ближе к 2010 году MediaTek разработала свою собственную платформу, которая должна была заменить MRP — WRE (VXP). Эта платформа была гораздо шире с точки зрения функционала (например, был доступ к UART) и её API был вполне удобно читаем для программиста, а SDK свободно доступен для всех. Один нюанс всё портил — приложения без подписи привязывались к IMSI (даже не IMEI) симки в девайсе и на некоторых девайсах требовали переподписания под каждую конкретную SIM или патчинг дампа оригинальной прошивки телефона на отключение проверки подписи. Эта платформа поддерживалась на многих кнопочниках и смарт-часиках 2010-2020 годов: к ним относятся новодельные телефоны Nokia, телефоны DNS и DEXP, Explay и т. п. Для запуска приложений достаточно было выбрать файл с разрешением VXP в проводнике и просто запустить его. Но с совместимостью всё равно имелись проблемы: если запустить VXP для версии 2.0 и выше, мы получим лишь белый экран. Ну хоть не софтресет, и на том спасибо!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Далеко не все такие часы поддерживают MRE, смотреть нужно от устройства к устройству


❯ Аппаратные ресурсы


Большинство китайских кнопочных телефонов работает на базе одних и тех же чипсетов. В конце нулевых чаще всего использовались чипсеты MT6225, SC6520 и некоторые чипы от Coolsand. Средние хар-ки девайса были следующими:

  • Процессор: ARMv5 ядро на частоте ~104МГц, ARM926EJ-S. Нет FPU, есть Thumb. Большую часть процессорного времени программа могла забрать себе.

  • ОЗУ: ~4Мб SDRAM. Программам было доступно 512Кб-1Мб Heap'а. Это, в целом, довольно немало для большинства применений.

  • Флэш-память: ~32Мб, пользователю доступно пару сотен килобайт. Да, вы не ослышались, килобайт! Однако можно без проблем использовать MicroSD-флэшки до 32Гб.

  • Дисплей: от 128x128 до 320x480, почти всегда есть 18-битный цвет (262.000 цветов), в случае TV E71/E72 используется очень неплохая TN-матрица с хорошими углами обзора и яркой подсветкой. Иногда есть тачскрин.

  • Звук: громкий динамик, наушники.

  • Аккумулятор: ~800мАч, на некоторых девайсах может быть и 2.000мАч, а то и больше!

  • Ввод: клавиатура, иногда была поддержка QWERTY.

  • Внешние шины: почти всегда был доступен UART, причём его можно было свободно взять прямо с платы — он был явно подмечен! Взять GPIO с проца не выйдет (кроме, возможно, вибромотора), SPI и I2C также напрямую недоступны. Внешние шины можно реализовать с помощью UART через GPIO-мост из микроконтроллера.


В итоге мы получаем очень неплохие характеристики для устройства, которое сочетает в себе сразу всё. На базе такого девайса можно сделать и сигнализацию, и HMI-дисплей с интерфейсом для управления каким-нибудь устройством, и игровую консоль с эмуляторами… да на что фантазии хватает! И это за какие-то 200-300 рублей, если мы говорим о б/у устройстве или 600 рублей, если говорим о новом. Это дешевле, чем собирать девайс с подобным функционалом самому из готового МК (например, RP2040) и отдельных модулей. Кстати, дешевые 2.4" дисплеи на алике — это ни что иное, как невостребованные остатки дисплеев для подобных китайских телефонов на складах! А вы думали, откуда там значки на тачскрине снизу?

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Однако в рамках данной статьи мы не будем ограничиваться лишь теорией и на практике напишем примитивную 2D-игрушку, которая будет работать сразу на трех платформах без каких-либо изменений в коде самой игры: Windows, MRP (Mythroad) и VXP. Но для того, чтобы достигнуть такого уровня абстракции от платформы, нам необходимо написать рантайм, который оборачивает все необходимые платформозависимые функции для нашей игры.

Игрушка будет простой: 2D скролл-шутер с видом сверху, а-ля Asteroids. Летаем по космосу, и стреляем по враждебным корабликам, стараясь не попасть под вражеские лазеры. Всё просто и понятно :)


❯ Практическая часть: Кроссплатформенный рантайм


Итак, что нам необходимо от абстракции для такой простой игры? Давайте посмотрим:

  • Графика: очистка экрана, отрисовка спрайтов с прозрачностью (без альфа-блендинга, только колоркей), отрисовка текста. При возможности, желательно использовать нативное API системы для рисования графики, а не городить собственный блиттер. Формат пикселя фиксирован: RGB565 (65к цветов).

  • Ресурсы: хранятся в одном образе с основной игрой. Фактически, все ресурсы упакованы в виде обычных массивов байт в заголовочных файлах. Я пользуюсь вот этой тулзой для конвертации спрайтов в массивы байтов.

  • Звук: воспроизведение хотя-бы одного WAV-потока. Почему одного? Потому что далеко не на всех платформах есть доступ к аппаратному микшеру… да и вообще не везде есть прямой доступ к PCM (привет MRP), иногда разработчики ограничиваются лишь одним каналом для WAV-звука без возможности воспроизведения нескольких аудиофайлов одновременно.

  • Ввод: абстракция от клавиатуры классического моноблока: стрелки, OK, левый и правые софткеи.

  • Стандартная библиотека: не на всех платформах можно вызывать функции напрямую из stdlib. Как минимум в MRP и, например, «эльфах» для Motorola, нет возможности вызывать аллокатор, rand и некоторые другие функции из обычных заголовочников стандартной библиотеки. На таких платформах, системные инклуды дефайнами подменяют стандартные функции на своих реализации:

    #define malloc system_alloc

    #define free system_free


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

Выглядит всё достаточно просто, верно? Примерно такого набора функций хватит для нашей игры:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост


❯ Win32


Давайте же перейдем к реализации рантайма на каждой платформе по отдельности. Начнём с Win32, поскольку адекватно отлаживать игру можно только на ПК.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

На десктопе у нас будет фиксированное окно 240x320, в качестве GAPI будет использоваться аппаратно-ускоренный OpenGL, а для обработки ввода будет использоваться классически GetAsyncKeyState. Реализация точки входа, создания окна и инициализации контекста GL и главного цикла приложения у нас такая:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Реализация отрисовки спрайтов очень примитивная — OGL 1.0, полностью FFP, вся отрисовка — это 2 треугольника, формирующие квад. Спрайт заливается при первом использовании в текстуру, последующие кадры реюзается уже готовая текстура. Фактическая реализация всего рендерера — т. е. функций для рисования «просто картинок», без поддержки атласов, блендинга цветов (З.Ы - длинные листинги будут на пастбине, на Пикабу нет нормального тега для кода):

https://pastebin.com/BmbqyBjd

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

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Результат:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

❯ MiniJ


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

SDK для MRE можно найти здесь (SKYSDK.zip): оно уже пропатчено от необходимости покупки лицензии. MRP не развивается более 10 лет, поэтому, думаю, его можно считать Abandonware. Компилятор находится в compiler/mrpbuilder.NET1.exe. За китайские SDK в публичном доступе нужно поблагодарить пользователя 4pda AjlekcaHgp MejlbHukoB, который раздобыл их на всяких csdn и выложил в свободный доступ :)

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

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Компиляция приложения:

mrpbuilder.net1.exe game.mpr

Начинаем с функций обработки событий и инициализации, которые вызывает рантайм при старте приложения: mrc_init вызывается при старте приложения, а mrc_event при возникновении события. Вся инициализация очень простая: создаём таймер для обновления и перерисовки состояния игры и вызываем инициализацию игры:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

С вводом тоже никаких проблем нет, нажатия кнопок прилетают как события в mrc_event. Переводим кейкоды MRE в наши кейкоды и сохраняем их состояние:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Опять же, отлаживать MRP-приложение под реальным устройством проблематично, поэтому платформозависимый код должен быть минимальным. Кроме того, обратите внимание, что некоторые функции в MRP зависят от библиотек-плагинов. Линкер слинкует вашу программу, но на реальном устройстве их вызов вывалится в SIGSEGV и софтресет устройства. Также нельзя использовать ничего из стандартной библиотеки именно в стандартных заголовочниках (т. е. stdlib.h, string.h и т. д.), часть стандартной библиотеки реализовывается MRP и дефайнится в mrc_base.h

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Что интересно, защиты памяти толком нет. Если приложение падает в SIGSEGV или портит память — систему, судя по всему, ребутит Watchdog. Защиты памяти никакой, можно напрямую читать и писать в память ядра, а также писать в регистры периферии чипсета. jpegqs, покумекаем над этим? :)

Переходим к рендереру. Тут буквально две функции, gClearScreen очищает экран, а gDrawBitmap рисует произвольный спрайт с форматом пикселя RGB565. В качестве ROP используется BM_TRANSPARENT — таким образом, mrc_bitmapShowEx будет использовать левый верхний пиксель в качестве референсного цвета для реализации прозрачности без альфа-блендинга.

void gDrawBitmap(CBitmap* bmp, int x, int y) {

mrc_bitmapShowEx((uint16*)bmp->pixels, x, y, bmp->width, bmp->width, bmp->height, BM_TRANSPARENT, 0, 0);

}

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

❯ VXP


Теперь переходим к VXP — платформе не менее неоднозначной, чем MRP. Пожалуй, начать стоит с того, что VXP существует аж в трёх версиях: MRE 1.0, MRE 2.0 и MRE 3.0. В MRE 2.0 и выше появилась поддержка плюсов (в MRE 1.0 только Plain C) и довольно интересного GUI-фреймворка, MRE 1.0 же предлагает реализовывать гуй самому. Платформа распространена на большинстве кнопочных телефонов и смарт-часиков на чипсетах MediaTek, примерно начиная с 6235 и заканчивания 6261D. SDK можно скачать вот здесь (см MRE_SDK_3.0).

VXP сам по себе более функционален чем MRE, поскольку ориентирован исключительно на телефоны с чипсетами MediaTek. Но что самое приятное — есть доступ к уарту без каких либо костылей! То есть, если сделать GPIO-мост на условной ESP32, то мы можем получить готовый мощный МК с клавиатурой, кнопками, дисплеем, звуком и т. д. Звучит не хило, да? Кроме того, у нас есть доступ и к BT, и к GPRS, и к SMS без каких либо ограничений.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Однако в бочке мёда нашлась и ложка дёгтя: для компиляции MRE-приложений необходимо накатывать и крякать довольно старый компилятор ADS, который сам по себе поддерживает только C89 (например, нет возможности объявить переменную в объявлении цикла или середине функции, только в начале, как в Pascal). ADS уже вроде как Abandonware, так что это вроде не наказуемо… но всё равно неприятно.

Кроме того, на некоторых девайсах (в основном, фирменных Nokia а-ля 225), прошивка требует подписи у всех бинарников, либо если бинарник отладочный, то должна быть привязка к конкретному IMSI.

К тому же, каждая программа должна фиксированно указывать в заголовке, сколько Heap-памяти ей необходимо выделить. Оптимальный вариант — ~500Кб, тогда приложение запустится вообще на всех MRE-телефонах.

Зато у VXP есть адекватный симулятор под Windows. Но зачем он нам, если у нас порт игры под Win32 есть? :)

Начинаем с инициализации приложения. В процессе вызова точки входа, приложение должно назначить обработчики системных событий, коих бывает несколько. Для обработки ввода и базовых событий хватает всего три: sysevt (события окна), keyboard (физическая клавиатура. Есть полная поддержка QWERTY-клавиатур), pen (тачскрин).

vm_reg_sysevt_callback(handle_sysevt); vm_reg_keyboard_callback(handle_keyevt); vm_reg_pen_callback(handle_penevt);

Переходим к обработчику системных событий. Обратите внимание, что MRE-приложения могут работать в фоне, из-за чего необходимо ответственно подходить к созданию и освобождению объектов. Что важно усвоить с самого начала — в MRE нет понятия процессов и защиты памяти, как на ПК и полноценных смартфонах. Любая программа может попортить память или стек ОС, более того, программа использует аллокатор остальной системы, поэтому если ваша программа не «убирает» после себя, данные останутся в памяти со временем приведут к зависанию. Впрочем, WatchDog делает свою работу быстро и приводит телефон в чувство (софтресетом) за 1-2 секунды. Но как и в случае с MRE, есть приятный бонус: прямой доступ к регистрам чипсета :)

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Переходим к обработке событий с кнопок. Тут всё абсолютно также, как и на MRE, лишь имена дейфанов поменялись :)

https://pastebin.com/XyHQ49N6

И наконец-то, к графике! Пожалуй, стоит сразу отметить, что более 20-30 FPS на большинстве устройств вы не получите даже с прямым доступом к фреймбуферу. Похоже, это связано с тем, что в MRE довольно замороченная графическая подсистема с поддержкой альфа-канала (только фиксированного во время вызова функции отрисовки картинки/примитивов, сам пиксельформат всегда RGB565) и нескольких слоев. Кроме того, похоже есть ограничения со стороны контроллера дисплея.

Изначально, MRE предполагает то, что все картинки в программе хранятся в формате… GIF. Да, весьма необычный выбор. Однако для работы с пользовательской графикой, есть возможность блиттить произвольные картинки напрямую из RAM. Вот только один нюанс — посмотрите внимательно не объявление следующей функции:

void vm_graphic_blt( VMBYTE * dst_disp_buf, VMINT x_dest, VMINT y_dest, VMBYTE * src_disp_buf, VMINT x_src, VMINT y_src, VMINT width, VMINT height, VMINT frame_index );

dst_disp_buf — это целевой RGB565-буфер. Логично предположить, что и src_disp_buf — тоже обычный RGB565-буфер! Но как бы не так. Документация крайне скудная, пришлось посидеть и покумекать, откуда в обычном 565 буфере возьмется индекс кадра. С подсказкой пришёл пользователь 4pda Ximik_Boda — он скинул структуру-заголовок, которая идёт перед началом каждого кадра. В документации об этом не сказано ровным счетом ничего!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Сначала я реализовал софтовый блиттинг, но он безбожно лагал. Мне стало интересно, почему нативный blt быстрее и… вопросы отпали после того, как я поглядел в ДШ чипсета: тут есть аппаратный блиттинг. И даже с ним девайс не может выдать более 20FPS!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Для реализации более-менее шустрого вывода графики, необходимо сначала создать канвас (фактически, Bitmap в MRE), создать и привязать к нему layer, получить указатель на буфер слоя и только потом скопировать туда нашу картинку. Да, вот так вот замороченно:

https://pastebin.com/DPrxG6Uj

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

На данный момент, этого достаточно для нашей игры.

❯ Пишем геймплей


Рантайм у нас есть, а значит, можно начинать писать игрушку. Хоть пишем мы на Plain-C, я всё равно из проекта в проект использую +- одну и ту же архитектуру относительно системы сущностей, стейтов и т. п. Поэтому центральным объектом у нас станет CWorld, который хранит в себе на пулы с указателями на другие объектами в сцене, а также игрока и его состояние:

typedef struct {

CPlayer player;

int nextSpawn; // In ticks

CEnemy* enemyPool[ENEMY_POOL_SIZE];

CProjectile* projectilePool[PROJECTILE_POOL_SIZE];

} CWorld;

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

typedef void(CGameStateCallback)();

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

https://pastebin.com/b3rjz0bV

А также описываем игрока:

typedef struct

{

int health;

int frags;

int score;

int speed;

int nextAttack;

int x, y;

} CPlayer;

Всё! Для текущего уровня реализации игры этого достаточно :)
Переходим к реализации игровой логики. Вообще, динамический аллокатор в играх для китайских платформ лучше использовать как можно меньше. Heap'а довольно мало (~600Кб), да и не совсем понятно, как этот аллокатор реализован, есть вероятность, что используется аллокатор и куча основной ОС.

Начинаем с реализации полёта кораблика. Для этого он должен реагировать на стрелки и не улетать за границы экрана, а ещё для красоты он должен «вылетать» из нижней границы экрана при старте игры:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Переходим к динамическим пулам с объектами. Как вы уже заметили, их всего два — враги и летящие снаряды. Реализация спавна врагов/снарядов простая и понятная: мы обходим каждый элемент пула, если указатель на объект не-нулевой, значит объект всё ещё жив и используется на сцене. Если нулевой — значит ячейка свободна и можно заспавнить новый объект:

https://pastebin.com/s8aQYFG5

При обходе пула во время обновления кадра, мы обновляем состояние каждого объекта и если его функция Think вернула true, значит объект больше не нужен и его нужно удалить:

if (enemyThink(world.enemyPool[i]))

{

sysFree(world.enemyPool[i]);

world.enemyPool[i] = 0;

}

А вот и реализация Think:

bool enemyThink(CEnemy* enemy) {

enemy->y += enemy->_class->speed;

if (enemy->y > gGetScreenHeight() || enemy->health <= 0) return true;

return false;

}

Но кораблики должны же откуда-то появляться! Для этого у нас есть переменная nextSpawn, которая позволяет реализовать самый простой тип спавнера — относительно времени (или в нашем случае тиков):

world.nextSpawn--;

if (world.nextSpawn < 0) {

CEnemy* enemy = spawnEnemy(&enemyClasses[0]);

world.nextSpawn = randRange(40, 70);

}

Результат: мы уже можем полетать, пострелять и поуворачиваться от вражеских корабликов!

Уже что-то напоминающее игру! Осталось лишь добавить подсчет очков, менюшку, разные виды противников, возможно какие-то бонусы и у нас будет готовая простенькая аркада. В целом, выше приведена достаточно неплохая архитектура для простых 2D-игр на Plain C. Фактически, она может быть хорошей базой и для ваших игр: в теме о китах на 4pda я встречал немало людей, которые банально не знали, с чего начать.

❯ Что у нас получилось?


Но без тестов на реальных устройствах материал не был бы таким интересным! Поэтому давайте протестируем игру на двух реальных телефонах, как вы уже догадались, один — Nokla TV E71, а второй — клон Nokia 6700, который подарил мне мой читатель Никита.



На TV E71 игра идёт не сказать что очень бодро. Кадров 15 точно есть, что, учитывая разрешение 240x320, весьма неплохо для такого девайса.

а 6700,, даже учитывая более низкое разрешение — 176x220, дела примерно также — ~15FPS! Но поиграть всё равно можно. Уже хотите написать «автор наговнокодил, а теперь ноет из-за низкого FPS»? Ан-нет, я попробовал игры сторонних разработчиков — они идут примерно также :( К сожалению, таковы аппаратные ограничения устройства.

Исходный код игры с Makefile'ами и файлами проектов для Visual Studio и MRELauncher доступны на моём GitHub. Свободно изучайте и используйте его в любых целях :)

❯ Заключение


Но в остальном же, демка получилась довольно прикольной, как и сам опыт программирования для китайских телефонов. В общем и целом, китайцы пытались максимально упростить API и привлечь разработчиков к своей платформе. Если ради примера взглянуть на API для Elf'ов на Motorola, можно ужаснуться от state-based архитектуры платформы P2K. А тут тебе init, event, draw — и всё!

Но популярности помешала непонятная закрытость платформы, костыльный запуск программ, отсутствие нормального симулятора. А ведь сколько фишек было: даже возможность писать и читать память ядра!
А вы как считаете? Можно ли вдохнуть в китайские кнопочники новую жизнь, узнав о наличии возможности запуска нативного кода на них?

P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады! Да и чего уж там говорить: эта статья уже сама по себе весьма наглядный пример! Найти меня можно в комментариях тут, на Пикабу, и в тг @monobogdan

Понравился материал? У меня есть канал в Телеге, куда я публикую бэкстейдж со статей, всякие мысли и советы касательно ремонта и программирования под различные девайсы, а также вовремя публикую ссылки на свои новые статьи. 1-2 поста в день, никакого мусора!

Полезный материал?
Всего голосов:
Были ли у вас такие китайчики?
Всего голосов:

Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!

Показать полностью 20 4 2

Лол, в США уволили с работы… робота

Лол, в США уволили с работы… робота Робот, США, Полиция США, Робототехника, Робокоп, Лестница, Лестница-трап, Зарядка, Проблемы с зарядкой, Техника, Технологии, Искусственный интеллект, Утопия, Непродуманность

Полиция Нью-Йорка решила отстранить от патрулирования робокопа — он не справлялся со своими задачами.

Робот-патрульный Knightscope K5 не вывез навигацию по лестницам и слишком часто требовал подзарядки. В итоге робокоп почти всё время бездельничал, и его уволили

Источник: https://www.engadget.com/nyc-ends-trial-run-of-times-square-...

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

Делаем веселую дичь. Клон детской игрушки с карточками

Давненько я не публиковал всякой веселенькой дичи. Представляю вашему вниманию Электросказатель - устройство озвучивания карт, Open-source клон Talky Lumicube и им подобных:

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

Видеоверсия для тех, кто любит слушать - в конце поста. Подробно простыню о сборке устройства я накатал у себя на сайт и на хабрахабр, здесь же буду краток. Когда я делал аналог межполушарных досок, про которые, с целью рекламы рассказывал @Dmitriy.Smirnov, я написал:

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

@Snakecatcher Еще спросил в комментариях - а не реклама ли это?...

Итак, прошло 8 месяцев, изделие готово:

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

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

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

Тот, что справа стоит 150 руб, на борту 4 МБ памяти - первые два набора карт я в него уместил. Вариант в центре - со слотом под SD карточку - можно хоть все 256 карточек делать и в каждой сказку на пол часа.

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост
Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

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

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

Сами карточки печатаем, ламинируем:

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост
Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

Готово. Самое веселое - делать свои наборы карточек. я сделал 4, фантазии есть еще на несколько, но мне лень) С таким набором карт, детская игрушка "для детей от 3х лет" превращается в игрушку "для мальчиков от 30 лет"

Делаем веселую дичь. Клон детской игрушки с карточками Электроника, Техника, Познавательно, Рукоделие с процессом, Своими руками, Игрушки, Видео, YouTube, Длиннопост

И, что самое главное, я выкладываю всё необходимое для самостоятельной сборки - файлы для печати корпуса, макет карточек. Лицензия CC BY-NC-SA - в некоммерческих целях можно изготавливать сколько угодно. Файлы для скачивания выложил на Thingiverse: https://www.thingiverse.com/thing:6472113

Файлы с набором карточек с мемами, звуками и прочим - выложил у себя в телеграм канале: https://t.me/s/serkov_me просто из соображений копирайта, вдруг кто прибежит требовать убрать, потому что у него права на мем.

Видеоверсия:

Другая веселая дичь моего авторства:

Машина выбора

Швейная машинка Greta

Самый советский бизиборд-2. Для музея

Новогодняя машина времени

Измеритель качества аудио АДФЛ9000

Полевой этнографический переводчик ПЭП-7

Молотки Чугуноуральского Инструментального Завода

Новый год скоро

Какой год - такие и сувениры

Кондиционер самооценки

Долбосчетчик

Делаем станцию зарядки из Half-Life

Тренажер государственной важности

Шкаф вечных проблем

Совборд - тренажер метода тыка

Музыка политики

Сейф мечты

Измеритель доверчивости

Новогоднее

А еще я пишу книжки и публикую их тоже бесплатно:

Первая Книга об электроматериалах.

Вторая: Я написал книгу. И ее можно скачать свободно

Третья: Надо уже за нее сесть...

Отблагодарить автора звонкой монетой можно через пикабу или через форму на моем сайте.

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

Угадайте звездного капитана юмористической команды «Сборная Красноярска» по описанию одного из участников

Ну что, потренировались? А теперь пора браться за дело всерьез.

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

Микроконтроллер из 90-х или начала 2000 из Японии

Добрый день, сообщество. Прошу помощи в поиске информации по микроконтроллеру mb90f035. 120 пинов.

Микроконтроллер из 90-х или начала 2000 из Японии Микроконтроллеры, Fujitsu, Прошивка

Никак не могу найти на него datasheet, судя по информации, какую мне удалось найти это:

- МК от Fujitsu;

- Семейство f2mc-16lx;

Использовался в приборных панелях корейских авто, например локализованной у нас Kia Rio 3.

Показать полностью 1
Отличная работа, все прочитано!