Решил посмотреть, как будут выглядеть портреты девушек в разрешении 128х128 точек на монохромном дисплее:)
Для преобразования использовал алгоритм дизеринга, правда тут нужно для каждой картинки подбирать свои настройки.
Потом в видео покажу, как они выглядят в реальном дисплее:)
Кстати, сами девушки нарисованы нейросетью Stable Diffusion. Это можно легко понять по количеству пальцев на одной картинке😁 Но в маленьком разрешении это не важно.
Можно будет попробовать сделать микро фоторамку для таких картиночек, только с цветным дисплеем.
Для преобразования использовал алгоритм дизеринга, правда тут нужно для каждой картинки подбирать свои настройки.
Потом в видео покажу, как они выглядят в реальном дисплее:)
Кстати, сами девушки нарисованы нейросетью Stable Diffusion. Это можно легко понять по количеству пальцев на одной картинке😁 Но в маленьком разрешении это не важно.
Можно будет попробовать сделать микро фоторамку для таких картиночек, только с цветным дисплеем.
Как я уже говорил раньше, наиболее близкая к моей игровая консоль это Arduboy, потому что у неё тоже монохромный экран. Только у меня будет другой экран и больше производительность контроллера, а также запуск игр с карты, а не из памяти программ.
И там много интересных игр с открытыми кодами. Вот я и решил изучить библиотеки, созданные разработчиками Ардубоя, чтобы портировать игры для своей консоли. Мне надо разобраться, как там выводится графика, и создать аналогичные функции для своей консоли.
Оказалось, что все картинки там адаптированы для OLED экрана с вертикальным расположением байт. А у меня экран с горизонтальным расположением. Поэтому выходит не очень эффективный вывод графики из игр Ардубой. Так что придётся писать конвертер картинок и менять все массивы в коде.
А ещё у них там часть кода написана на ассемблере ради ускорения вывода графики. Плюс сразу несколько режимов вывода спрайтов: обычный или с маской, просто картинка или spritesheet. И для всего этого надо делать эквиваленты функций.
Вот я и пытаюсь сейчас разобраться, как лучше это сделать, чтобы уже были хоть какие-то игры для моей приставки. Самому с нуля писать их чё-то не хочется пока😁 Заодно подумаю, какую библиотеку сделать мне для своей консольки.
А ещё для картинок в Ардубой есть готовые конвертеры:
https://www.bloggingadeadhorse.com/TeamARGImgConverter/
https://zenndev1337.github.io/Rust-for-Arduboy/image-converter.html
https://www.crait.net/tochars/index.php
И там много интересных игр с открытыми кодами. Вот я и решил изучить библиотеки, созданные разработчиками Ардубоя, чтобы портировать игры для своей консоли. Мне надо разобраться, как там выводится графика, и создать аналогичные функции для своей консоли.
Оказалось, что все картинки там адаптированы для OLED экрана с вертикальным расположением байт. А у меня экран с горизонтальным расположением. Поэтому выходит не очень эффективный вывод графики из игр Ардубой. Так что придётся писать конвертер картинок и менять все массивы в коде.
А ещё у них там часть кода написана на ассемблере ради ускорения вывода графики. Плюс сразу несколько режимов вывода спрайтов: обычный или с маской, просто картинка или spritesheet. И для всего этого надо делать эквиваленты функций.
Вот я и пытаюсь сейчас разобраться, как лучше это сделать, чтобы уже были хоть какие-то игры для моей приставки. Самому с нуля писать их чё-то не хочется пока😁 Заодно подумаю, какую библиотеку сделать мне для своей консольки.
А ещё для картинок в Ардубой есть готовые конвертеры:
https://www.bloggingadeadhorse.com/TeamARGImgConverter/
https://zenndev1337.github.io/Rust-for-Arduboy/image-converter.html
https://www.crait.net/tochars/index.php
Audio
Похоже на мой голос?:)
Да, я всё ещё придумываю, как упростить создание дополнительного контента (основной контент я буду продолжать озвучивать сам).
Знаю, что это всё неправильно, но и тратить кучу времени и сил за копейки - тоже неправильно:) Поэтому пока видео на бусти буду озвучивать так. Смотреть эти видео вообще не обязательно. Просто надо сделать какой-то контент, чтобы было на что подписываться за деньги. А то я там вообще ничего не публикую😁
Кому интересно: голос я сгенерил в сервисе Zvukogram (там недорого и есть оплата с карт из РФ), а оттенки своего голоса я добавил бесплатной нейросетью RVC WebUI, исходники которой лежат на гитхабе:)
Да, я всё ещё придумываю, как упростить создание дополнительного контента (основной контент я буду продолжать озвучивать сам).
Знаю, что это всё неправильно, но и тратить кучу времени и сил за копейки - тоже неправильно:) Поэтому пока видео на бусти буду озвучивать так. Смотреть эти видео вообще не обязательно. Просто надо сделать какой-то контент, чтобы было на что подписываться за деньги. А то я там вообще ничего не публикую😁
Кому интересно: голос я сгенерил в сервисе Zvukogram (там недорого и есть оплата с карт из РФ), а оттенки своего голоса я добавил бесплатной нейросетью RVC WebUI, исходники которой лежат на гитхабе:)
This media is not supported in your browser
VIEW IN TELEGRAM
На видео работает симулятор под винду для симулятора RiscV😁
Я всё-таки решил делать свою игру на симуляторе архитектуры RiscV. То есть, все программы надо будет компилировать под этот процессор с некоторыми фишками. А на консоли будет стоять симулятор, в который прога будет загружаться из SD карты.
Таким образом, я сделаю независимость от архитектуры реального устройства: можно будет запускать одни и те же программы на STM32, ESP32, компьютере или смартфоне. В теории, даже на AVR можно будет запустить, если адаптировать туда симулятор, - но будет очень медленно😁
Почему RiscV? Потому что это очень простая архитектура, для которой не нужно лицензий и уже есть компилятор GCC. Я буду делать 32-битную версию, которая поддерживает 4 гигабайта адресного пространства (программы могут быть большими). Я уже более и менее разобрался с базовыми инструкциями, которые и тестируются на видео. Правда нужно будет ещё провести много тестов, чтобы убедиться, что я правильно реализовал работу всех инструкций процессора:)
А потом - добавлю API функции для работы с графикой, кнопками, файлами и для ускорения вычислений. Тогда уже можно переносить всё в реальное устройство и писать рабочие программы. Работы дофига! Но я рад, что понемногу получается реализовать задуманное:)
Я всё-таки решил делать свою игру на симуляторе архитектуры RiscV. То есть, все программы надо будет компилировать под этот процессор с некоторыми фишками. А на консоли будет стоять симулятор, в который прога будет загружаться из SD карты.
Таким образом, я сделаю независимость от архитектуры реального устройства: можно будет запускать одни и те же программы на STM32, ESP32, компьютере или смартфоне. В теории, даже на AVR можно будет запустить, если адаптировать туда симулятор, - но будет очень медленно😁
Почему RiscV? Потому что это очень простая архитектура, для которой не нужно лицензий и уже есть компилятор GCC. Я буду делать 32-битную версию, которая поддерживает 4 гигабайта адресного пространства (программы могут быть большими). Я уже более и менее разобрался с базовыми инструкциями, которые и тестируются на видео. Правда нужно будет ещё провести много тестов, чтобы убедиться, что я правильно реализовал работу всех инструкций процессора:)
А потом - добавлю API функции для работы с графикой, кнопками, файлами и для ускорения вычислений. Тогда уже можно переносить всё в реальное устройство и писать рабочие программы. Работы дофига! Но я рад, что понемногу получается реализовать задуманное:)
Я задался вопросом: если я сделаю устройство на микроконтроллере STM32 и включу в нём биты защиты памяти программ, то насколько просто будет хакнуть этот микроконтроллер и считать мою прошивку для изготовления полного клона устройства?
Если кратко, то ответ такой:старые и дешёвые STM32 с одним битом защиты хакнуть относительно просто, а более новые и дорогие гораздо сложнее.
Если не учитывать очень сложный вариант вскрытия микроконтроллера и прямых манипуляций в его кристалле, то для многих устройств (не только STM32) есть метод, называемый Glitch-атака. В напряжение питания микроконтроллера добавляют очень короткий импульс, из-за которого внутренняя программа неправильно выполняет одну или несколько инструкций процессора.
Например, в STM32 есть встроенный заводской загрузчик программ, который также позволяет считывать её. Но перед считыванием программы, загрузчик проверяет, установлен ли бит защиты памяти. И вот как раз в момент считывания бита можно создать помеху, из-за которой функция считывания выдаст неверное значение. Таким образом, при удачных обстоятельствах можно заставить загрузчик выдать всю прошивку вместе с сохранёнными пользовательскими данными.
Разумеется, угадать нужный момент для создания помех не так то просто. Для этого делают специальные устройства и разрабатывают алгоритмы, автоматически меняющие параметры атаки. Но всё уже сделано и можно найти в интернете:) И ломают не только STM32, но и ESP32, Atmega и так далее.
Видимо, именно таким образом создаются китайские клоны:) По прошивке они будут совершенно идентичны оригиналу, если китайцы не захотят заменить контроллер на другой:)
Всё это описано в статье на Хабр, выпущенной ещё 5 лет назад. Картинка оттуда. Думаю, сейчас всё ещё проще, поэтому мои поделки быстро скопируют, если они будут успешными:) И как уйти от этого пока не ясно.
Если кратко, то ответ такой:
Если не учитывать очень сложный вариант вскрытия микроконтроллера и прямых манипуляций в его кристалле, то для многих устройств (не только STM32) есть метод, называемый Glitch-атака. В напряжение питания микроконтроллера добавляют очень короткий импульс, из-за которого внутренняя программа неправильно выполняет одну или несколько инструкций процессора.
Например, в STM32 есть встроенный заводской загрузчик программ, который также позволяет считывать её. Но перед считыванием программы, загрузчик проверяет, установлен ли бит защиты памяти. И вот как раз в момент считывания бита можно создать помеху, из-за которой функция считывания выдаст неверное значение. Таким образом, при удачных обстоятельствах можно заставить загрузчик выдать всю прошивку вместе с сохранёнными пользовательскими данными.
Разумеется, угадать нужный момент для создания помех не так то просто. Для этого делают специальные устройства и разрабатывают алгоритмы, автоматически меняющие параметры атаки. Но всё уже сделано и можно найти в интернете:) И ломают не только STM32, но и ESP32, Atmega и так далее.
Видимо, именно таким образом создаются китайские клоны:) По прошивке они будут совершенно идентичны оригиналу, если китайцы не захотят заменить контроллер на другой:)
Всё это описано в статье на Хабр, выпущенной ещё 5 лет назад. Картинка оттуда. Думаю, сейчас всё ещё проще, поэтому мои поделки быстро скопируют, если они будут успешными:) И как уйти от этого пока не ясно.
This media is not supported in your browser
VIEW IN TELEGRAM
Этот рандомайзер я придумал, потому что хочется для начала сделать какой-то очень простой, но необычный девайс для производства и продажи. Но я и тут стал заморачиваться над разными идеями!
Во-первых, это просто генератор случайных цифр с выбором разных диапазонов в пределах от 0 до 9 или даже до шестнадцатеричной F. В последнем случае можно будет генерировать случайные байты данных, запуская генератор дважды в режиме от 0 до F. Но также будет режим 0...1 для генерации случайных бинарных чисел или ответов на вопросы "0 = нет, 1 = да" типа "магического шара".
Во-вторых, тут можно добавить функцию часов, про которые я рассказывал в одном шортсе. Обычный переключатель может менять режим с часов на рандомайзер.
В-третьих, можно ещё добавить белый светодиод и будет мини фонарик. Для него ещё один переключатель или кнопку.
В-четвёртых, можно добавить функцию USB COM-порта и через команды сделать виртуальный генератор произвольных чисел уже для компьютера. А также для управления дисплеем, чтобы своей программкой на питоне можно было выводить свои символы для прикола. То есть, будет ещё USB устройство.
Нужно это всё чисто для игр. Хотя, наверное, в эзотерике и нумерологии такая штука может быть интересна для чего-то ещё, но я не хочу заявлять это устройство как какое-то средство для развития интуиции или ясновидения😁 Но если кому-то это пригодится в этом направлении, то я буду рад😁
Я пытался найти подобные игрушки в продаже, но электронные рандомайзеры есть только в виде платы со светодиодами типа электронный кубик. А также много обычных механических кубиков с точками и цифрами для настольных игр. И ещё есть USB генераторы для криптографии, но я делаю генератор не для криптографии:)
Меня удивило, что в комментах под видео с этим рандомайзером появилось больше десятка желающих такой брелок. Понятно, что они ещё не знают цену, а она тут явно не будет 150 р, как некоторые уже предложили😁 Но всё равно мне уже хочется попробовать собрать хотя бы 10 штук и продать их кому-нибудь:)
Правда я озадачился с пары комментов по типу "не показывай это полиции". Что может быть незаконным в таком брелоке? Рандомайзеры же есть в смартфонах и даже в некоторых школьных калькуляторах:)
Во-первых, это просто генератор случайных цифр с выбором разных диапазонов в пределах от 0 до 9 или даже до шестнадцатеричной F. В последнем случае можно будет генерировать случайные байты данных, запуская генератор дважды в режиме от 0 до F. Но также будет режим 0...1 для генерации случайных бинарных чисел или ответов на вопросы "0 = нет, 1 = да" типа "магического шара".
Во-вторых, тут можно добавить функцию часов, про которые я рассказывал в одном шортсе. Обычный переключатель может менять режим с часов на рандомайзер.
В-третьих, можно ещё добавить белый светодиод и будет мини фонарик. Для него ещё один переключатель или кнопку.
В-четвёртых, можно добавить функцию USB COM-порта и через команды сделать виртуальный генератор произвольных чисел уже для компьютера. А также для управления дисплеем, чтобы своей программкой на питоне можно было выводить свои символы для прикола. То есть, будет ещё USB устройство.
Нужно это всё чисто для игр. Хотя, наверное, в эзотерике и нумерологии такая штука может быть интересна для чего-то ещё, но я не хочу заявлять это устройство как какое-то средство для развития интуиции или ясновидения😁 Но если кому-то это пригодится в этом направлении, то я буду рад😁
Я пытался найти подобные игрушки в продаже, но электронные рандомайзеры есть только в виде платы со светодиодами типа электронный кубик. А также много обычных механических кубиков с точками и цифрами для настольных игр. И ещё есть USB генераторы для криптографии, но я делаю генератор не для криптографии:)
Меня удивило, что в комментах под видео с этим рандомайзером появилось больше десятка желающих такой брелок. Понятно, что они ещё не знают цену, а она тут явно не будет 150 р, как некоторые уже предложили😁 Но всё равно мне уже хочется попробовать собрать хотя бы 10 штук и продать их кому-нибудь:)
Правда я озадачился с пары комментов по типу "не показывай это полиции". Что может быть незаконным в таком брелоке? Рандомайзеры же есть в смартфонах и даже в некоторых школьных калькуляторах:)
This media is not supported in your browser
VIEW IN TELEGRAM
Адресные светодиоды - очень классная штука:) На картинке три миниатюрных WS2812 переливаются всеми цветами.
По-сути, это один управляемый полноцветный пиксель, причём их можно включать последовательно достаточно много - пока хватает питания и производительности микроконтроллера.
Но, во-первых, мне непонятно, почему они называются адресными, если у них нет адреса:) Тут принцип как у последовательных регистров, поэтому логичнее было назвать их "последовательные светодиоды"😁
Во-вторых, очень неудобно загружать данные через один вывод, поскольку для этого требуется выдерживать строгие тайминги в посылке данных.
Было бы лучше загружать данные через два вывода - данные и синхронизация. Тогда достаточно использовать SPI. Но, видимо, производитель решил, что программные заморочки более предпочтительны, чем аппаратные:)
В итоге, весь код для управления этими светодиодами приходится привязывать к частоте работы микроконтроллера, а также надо отключать прерывания на всё время загрузки данных в светодиоды.
Но зато очень красиво смотрится😁
По-сути, это один управляемый полноцветный пиксель, причём их можно включать последовательно достаточно много - пока хватает питания и производительности микроконтроллера.
Но, во-первых, мне непонятно, почему они называются адресными, если у них нет адреса:) Тут принцип как у последовательных регистров, поэтому логичнее было назвать их "последовательные светодиоды"😁
Во-вторых, очень неудобно загружать данные через один вывод, поскольку для этого требуется выдерживать строгие тайминги в посылке данных.
Было бы лучше загружать данные через два вывода - данные и синхронизация. Тогда достаточно использовать SPI. Но, видимо, производитель решил, что программные заморочки более предпочтительны, чем аппаратные:)
В итоге, весь код для управления этими светодиодами приходится привязывать к частоте работы микроконтроллера, а также надо отключать прерывания на всё время загрузки данных в светодиоды.
Но зато очень красиво смотрится😁
У Марка Робера вроде получилось отправить спутник для создания космических селфи:) Причём бесплатно для всех, но я думаю, скоро этот проект заспамят. Загрузить свою фотку можно тут
https://space.crunchlabs.com/
но ждать придётся достаточно долго, если вообще дойдёт очередь до того, как спутник не сломается:)
https://space.crunchlabs.com/
но ждать придётся достаточно долго, если вообще дойдёт очередь до того, как спутник не сломается:)
Стоимость корпуса на заказ
Я тут решил немного ознакомиться с темой изготовления корпусов приборов на заказ. Как я и думал, стоимость у них получается совсем не маленькая.
Например, приблизительная стоимость 1 корпуса для моего рандомайзера методом литья в силиконовую форму выходит где-то 1200 рублей при заказе партии 1000 штук. То есть, мне надо 1.2 млн рублей для этого😁 Можно заказывать партии поменьше, но цена корпуса будет ещё выше. А стоимость электроники тут меньше 300 рублей, так что не уверен, что есть смысл связываться с этой технологией.
При изготовлении деталей с помощью пресс-форм надо будет отдавать 100-300 тысяч рублей только за форму, у которой ресурс 200-400 тыс отливок. Соответственно, стоимость корпуса будет тем дешевле, чем больше количество. Поэтому для удешевления корпуса устройства хотя бы до 100 рублей, надо производить его сотнями тысяч.
Скорее всего, в Китае цены будут меньше, но не факт, что намного.
Мне сейчас нет смысла заказывать большие партии. Поэтому остаётся только оптимизировать 3D печать, причём дешевле всего выходит FDM (печать нитями), хотя по гладкости поверхности и детализации лучше фотополимерная печать, которая дороже и которой у меня нет:)
Я нашёл познавательные статьи по этой теме. Хотя они за 2019 год, но сейчас мало что изменилось в технологиях, поэтому цены похожие.
Как за пару минут самостоятельно рассчитать цену корпуса устройства
Правильно «готовим» прототип. Технологии прототипирования корпуса
20 примеров из практики бюро по инженерному дизайну
Я тут решил немного ознакомиться с темой изготовления корпусов приборов на заказ. Как я и думал, стоимость у них получается совсем не маленькая.
Например, приблизительная стоимость 1 корпуса для моего рандомайзера методом литья в силиконовую форму выходит где-то 1200 рублей при заказе партии 1000 штук. То есть, мне надо 1.2 млн рублей для этого😁 Можно заказывать партии поменьше, но цена корпуса будет ещё выше. А стоимость электроники тут меньше 300 рублей, так что не уверен, что есть смысл связываться с этой технологией.
При изготовлении деталей с помощью пресс-форм надо будет отдавать 100-300 тысяч рублей только за форму, у которой ресурс 200-400 тыс отливок. Соответственно, стоимость корпуса будет тем дешевле, чем больше количество. Поэтому для удешевления корпуса устройства хотя бы до 100 рублей, надо производить его сотнями тысяч.
Скорее всего, в Китае цены будут меньше, но не факт, что намного.
Мне сейчас нет смысла заказывать большие партии. Поэтому остаётся только оптимизировать 3D печать, причём дешевле всего выходит FDM (печать нитями), хотя по гладкости поверхности и детализации лучше фотополимерная печать, которая дороже и которой у меня нет:)
Я нашёл познавательные статьи по этой теме. Хотя они за 2019 год, но сейчас мало что изменилось в технологиях, поэтому цены похожие.
Как за пару минут самостоятельно рассчитать цену корпуса устройства
Правильно «готовим» прототип. Технологии прототипирования корпуса
20 примеров из практики бюро по инженерному дизайну
Для платных подписчиков на мой Boosty выложил крутые фотки электронных плат в хорошем разрешении, которые я сам фоткал. Можно скачать их и использовать для личных целей (например, как обои на рабочий стол).
Подписка у меня очень дешёвая, но вы можете выбрать вариант более дорогой, если есть желание поддержать меня материально:)
СМОТРЕТЬ ФОТКИ
Подписка у меня очень дешёвая, но вы можете выбрать вариант более дорогой, если есть желание поддержать меня материально:)
СМОТРЕТЬ ФОТКИ