Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Что таится в глубинах Земли? Только Аид знает наверняка. А также те, кто доберётся до дна шахты.

Эпичная Шахта

Мидкорные, Приключения, 3D

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
167
Timeweb.Cloud
Timeweb.Cloud
TECHNO BROTHER

Программирование для Windows 1.0 в 2025 году⁠⁠

10 дней назад

«...Одним из примеров громоздкой и, по мнению авторов, бесполезной надстройки является интегрированная система WINDOWS фирмы Microsoft. Эта система занимает почти 1 Мбайт дисковой памяти и рассчитана на преимущественное использование совместно с устройством типа "мышь".» — вы точно знаете, откуда это

Приветствую всех! Буквально неделю назад прошло сорок лет с момента выхода первой релизной версии Windows. Именно в тот день в 1985 году началась история ныне повсеместно распространённой ОС.

И вот, узнав об этом, я подумал: а что, если попробовать запустить эту ОС и узнать, как предполагалось писать софт для неё? Именно этим мы сейчас и займёмся. Заодно и узнаем, насколько это было проще или сложнее, нежели сейчас.

❯ Суть такова

Уверен, если вы интересуетесь историей ОС, то хорошо знаете, что вообще такое Windows 1.0 и что она собой представляла. Хотя Windows 1.X были не полноценными ОС, а графическими оболочками под DOS, для них существовал SDK, позволяющий писать оконные приложения. Тем не менее, из-за высокой по меркам тех лет сложности разработки самих приложений было не так уж и много.
Особой популярности система тоже не заполучила, поскольку имела значительные системные требования и малое количество софта. Очень многие из тех, у кого в те годы был ПК, про этот продукт вообще ни разу не слышали. В общем, это самая подходящая платформа, под которую сейчас стоит попробовать что-то написать. Этим-то мы и займёмся.

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

Как известно, я пишу про железо, а не только про софт, поэтому запускать то, что получится, будем на настоящем ПК.

Намного более аутентичного для такой системы PC XT у меня нет, поэтому для запуска был вытащен вот такой промышленный одноплатник. Конечно, можно было бы взять и просто плату на 286 или 386, но этот девайс лежал у меня уже больше полугода и всё ждал, когда я сделаю с ним что-то интересное. Так что сейчас будем пробовать с ним.

Это ROCKY-328E-M4. На борту процессор 386SX-40 (точнее, SoC Ali M6117C, объединяющая процессорное ядро и чипсет Ali M1217), четыре мегабайта памяти, IDE, флоппи-контроллер, в данный момент ненужный Ethernet, панелька под DiskOnChip и стандартные для любого ПК интерфейсы. Когда-то давно он работал на одном неназванном предприятии и управлял какими-то устройствами при помощи плат дискретного ввода-вывода и платы последовательных портов. Впрочем, про эти модули поговорим как-нибудь в другой раз, а сейчас будем рассматривать его просто как обычный ПК.

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

Встроенного видео на плате нет, поэтому для запуска понадобится ещё и видеокарта.

Это довольно популярная в своё время плата на чипе Realtek RTG3105i. Особых причин выбрать именно её у меня нет: просто когда-то она досталась мне вместе с этим промПК.

Всё вместе втыкается в кросс-плату.

У меня она вот такая, от Advantech. Конкретно эта сделана под размер обычной материнки типа AT. Даже предусмотрен разъём DIN-5 для клавиатуры с отводом от него для подключения к процессорной карте.

❯ Что нужно, чтобы начать писать софт под Windows 1.X?

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

  • Образ MS-DOS 3.0.

  • Дистрибутив Windows 1.X.

  • Компилятор. В моём случае Microsoft C 4.0.

  • Windows SDK. Тут я решил использовать версию 1.03.

Изначально я хотел использовать SDK 1.01 и Microsoft C 3.0, но...

...во всяком случае, я пытался.

То ли ему чего-то не хватает, то ли устанавливается он не так просто, как мне думалось, но ни одна программа им не собралась. Поэтому выбор был сделан в пользу того, на что имелась документация. Никаких PDF, никакой онлайн-справки в те годы не было, все мануалы были бумажными. Так уж вышло, что на Microsoft C 4.0 и Windows SDK 1.03 их сканы имелись в наличии.

Ну что, приступим?

❯ Эмулятор

Как я уже упомянул, собирать всё будем в эмуляторе. Им стал 86box (пришедший на смену почившему PCem). Как его поставить, описывается тут.

Создал виртуалку с процессором 386SX и чипсетом как у моей платы (дабы, если что, заранее обнаружить, что что-то пошло не так, и это решить).

Далее добавляем винт, а в разделе контроллеров выбираем «PC/AT Floppy Drive Controller» и «[ISA16] PC/AT IDE Controller (Dual-channel)».

В BIOS указываем параметры жёсткого диска. Загружаем в дисковод образ DOS и перезагружаемся.

Далее выполняем стандартные действия для установки DOS: размечаем диск при помощи fdisk, форматируем при помощи format, делаем его загрузочным при помощи sys и копируем остальные файлы. На этом загрузочная дискета нам больше не понадобится. Компьютер теперь будет запускаться с винта.

Процесс установки Windows 1.0 особых сложностей тоже не вызывает, так что показывать его я тут не буду. При установке надо указать следующие параметры: мышь — Microsoft Mouse (Bus/Serial), видеокарта — EGA with Enhanced Color Display or Personal Computer Color Display, принтер — не используется.

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

❯ Компилятор

Теперь очередь компилятора.
Установочной программы у него нет. Поэтому всё придётся копировать самому. На системном диске создаём папки BIN, INCLUDE, TEMP, LIB. В BIN копируем всё содержимое первой дискеты, ещё несколько экзешников со второй и link.exe с третьей, в INCLUDE — всё с расширением *.H и *.INC, в LIB — всё с расширением *.OBJ и *.LIB, TEMP оставляем пустой. В INCLUDE создаём папку SYS и копируем туда содержимое одноимённого каталога на третьем диске. Дискеты 6, 7 и 8 для первого запуска можно пока не трогать.

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

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

Первый, AUTOEXEC.BAT, следующего содержания:

PATH C:\WINDOWS;C:\BIN;C:\INCLUDE;C:\LIB
SET INCLUDE=C:\INCLUDE
SET LIB=C:\LIB
SET TMP=C:\TEMP
SET TEMP=C:\TEMP

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

Второй, CONFIG.SYS, вот такой:

FILES=20 BUFFERS=40

Это файл конфигурирования системы. Здесь мы задали число максимально возможных открытых файлов и число максимально возможных дисковых буферов.

Если у вас не чистая установка DOS, то прописываем эти параметры и имена переменных в соответствующих файлах.

После этого тестовая программа (из комплекта компилятора) должна будет собраться и запуститься. Отлично.

❯ SDK

Теперь нужно установить Windows SDK. Поставляется он опять таки на нескольких дискетах.

Вставляем диск номер два и выполняем следующие команды:

C:
copy A:\INSTALL.BAT C:\INSTALL.BAT
CD \
INSTALL \BIN \WINDOWS \INCLUDE \LIB

После этого начнётся установка.

Тут всё просто, вставляем очередную дискету и ждём, пока скопируются файлы.
На этом установку SDK можно считать законченной.

❯ Ставим Windows

А пока что отвлечёмся от установки инструментария и произведём ещё одну установку Windows.

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

Собираем тестовый стенд.

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

❯ Пишем первую программу

Ну что же, время попробовать что-нибудь собрать. В составе SDK есть и какие-то примеры кода. С них-то и начнём.

Находим папку HELLO и копируем её на жёсткий диск. Теперь заходим в неё и выполняем команду:

make hello

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

Можно даже попробовать запустить свежесобранный экзешник и убедиться, что приложение действительно требует для работы Windows.

Поэтому заходим в Windows, запускаем, и, если всё получилось, на экране должно будет появиться примерно следующее:

Отлично!

❯ Что же тут происходит?

Взглянем на исходник этого приложения.

Файл достаточно внушительной длины (больше полутора сотен строк). Тем не менее, там можно встретить много того, что есть и в куда более свежих программах для Windows на Си.

Вообще, первые версии Windows были просто оболочками, не имели никакой многозадачности, а целью их создания было не выпустить полноценную ОС, а облегчить работу с DOS. Несмотря на это, кое-что из появившегося в них либо претерпело значительное развитие и используется и до сих пор (например, GDI, много позже ставший GDI++ и использующийся и сейчас, появился с самых первых сборок Windows), либо ушло в историю, но оставило свой след (например, параметр hPrevInstance, использовавшийся в Win16 и всегда равный NULL в Win32).

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

❯ Тесты на ПК

Теперь попробуем запустить тестовый стенд.

Насаживаем перемычку между контактами PS_ON и землёй на кросс-плате, запуская тем самым блок питания. Через несколько секунд компьютер проходит POST и начинает загружаться. Можно набирать WIN и пробовать запускать софт.

Всё успешно работает!

И ещё одно приложение — показ фигуры заданного мышкой размера.

❯ Утилиты

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

Первая из них — это редактор шрифтов.

Следом идёт редактор иконок.

В Windows 1.0 нет ни рабочего стола, ни панели задач. Единственное место, где видны эти иконки, так это при сворачивании приложения. Снизу видны открытые HELLO.EXE, MS-DOS Executive и калькулятор.

Вот так выглядит процесс редактирования.

И, наконец, самое важное. Это редактор диалогов.

Весь интерфейс программы создаётся в нём и сохраняется в виде двух файлов — ресурсов и заголовков.

❯ Что же в итоге?

Несмотря на то, что программирование под Win16 по сути умерло, некоторые порой всё же пробуют что-то написать. Кому-то это надо из любви к ретрокомпьютерам, кому-то — ради того, чтобы оживить какой-то древний, но очень нужный и приносящий очень много денег софт.
Но всё же если вдруг вас так и тянет попробовать что-то написать под древнюю ОС, то рекомендую начать опыты с Windows 95 или 98. Под них куда больше документации и примеров кода, а инструментарий намного более удобен.
Такие дела.

❯ Ссылки

  • Win16 for Fun and (Probably No) Profit

  • Building Win16 GUI applications in C

  • Win16 Retro Development

  • Win16 Programming Resources

  • Готовая установка Microsoft C для разработки софта под Windows 1.X


Материал получился очень объемным, но весьма интересным. Все иллюстрации не влезли. Но их можно изучить в

оригинальной статье.


Написано при поддержке Timeweb Cloud.

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 24
IT Программист Windows Программирование Программа Электроника Microsoft Timeweb Telegram (ссылка) YouTube (ссылка) Reddit (ссылка) Длиннопост Блоги компаний
21
89
Timeweb.Cloud
Timeweb.Cloud
Наука | Научпоп

Система мониторинга и подсчета перелетных птиц⁠⁠

18 дней назад
Стадо гуменника :)

Стадо гуменника :)

Идея проекта возникла этой весной, когда в наши края приезжал вице-президент Союза охраны птиц России Алексей Леонович Эбель, для учёта гуменника, мигрирующего через Алтайский край. Проблема в том, что численность этой группировки только оценочная, так как, в отличии от многих других водоплавающих, он не образует сколь-нибудь значимых скоплений ни во время миграции, ни на зимовках. Поэтому разброс мнений экспертов огромен: от 7-10 тысяч в Wetlands до нескольких сотен тысяч у некоторых отечественных.

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

Алексей Леонович вычислил место, где гуменника во время весенней миграции учитывать оптимальнее всего. Эта точка оказалась недалеко от меня. За два полных плюс один неполный световых дня в коридоре 7-8 км он насчитал почти 15 000 пролётных особей, а мы с друзьями ему в этом немного помогали.

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

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

3D модель железки

3D модель железки

Проект не очень сложный, я его отдал своему ученику. Большую часть он по-честному сам выполнил, я же просто немного помог со скриптами и 3D моделями. А также нашел нужные комплектующие.

❯ Подбор комплектующих

Первым делом надо было найти подходящую длиннофокусную камеру с интерфейсом USB и нормальным сенсором. Естественно, готовой камеры не нашлось. Но обнаружился обычный модуль USB камеры. И объектив под него на 50мм.

Сенсор 1/2.9", 4мп

Сенсор 1/2.9", 4мп

50мм без ик фильтра

50мм без ик фильтра

Как оказалось, я немного просчитался: на камере ИК-фильтр был установлен прямо на объективе. А новый объектив оказался совсем без него. Если будем пытаться использовать эту систему ночью — это плюс. Но вот днем совсем не то, чего бы я хотел)

Решение оказалось довольно простым и удачным — кронштейн объектива со встроенным переключаемым фильтром. Это позволит в дальнейшем переходить в ночной режим.

Ещё выяснилось, что 50мм многовато. Такое фокусное расстояние я рассчитывал под сенсор 1/2 дюйма (а такую камеру за недорого я не нашел). Под 1/2.9 идеально было бы 35мм, но и так вполне можно работать.

❯ Сборка

Дальше начался процесс сборки прототипа. Камера должна крутится почти на 360° по горизонтали и хотя бы 90° по вертикали. Для поворота по вертикали использовали сервопривод mg996, а по горизонтали — стандартный шаговый мотор из комплектов ардуино 28byj-48.

Первый прототип

Первый прототип

Все это подключили к плате от контроллера zero (про него писал в статье Как я скрещивал Arduino и Lego), просто к ней было удобнее.

Тут возникла новая проблема. Эта «турель» начала накручивать на себя все провода :). Так как у шагового мотора нет нулевой точки (и вообще обратной связи), при любом переподключении турель начинала работать с текущей точки.

Решение этой проблемы я подсмотрел на своей камере видеонаблюдения.

При запуске Arduino она просто едет в одну точку на 360°, упирается в пластиковый штифт, пропускает какое-то неизвестное количество шагов (пока по мнению Arduino не доедет в точку 360°) и едет обратно на 180°.

Дальше упаковали всю электронику в пластиковый корпус.

❯ Прошивка

Прошивки получается две. Точнее одна прошивка для Arduino и один скрипт на python.

Алгоритм работы следующий. Камера движется по горизонтали от начального угла до конечного угла, с шагом примерно равным углу обзора камеры. На каждом шаге делается кадр (точнее 3 кадра, для надежности). И на этом кадре, при помощи библиотеки YOLO 8 ищутся птицы. Если птицы найдены, считается их количество и кадр сохраняется. Чтобы поиск птицы происходил побыстрее, использована модель yolov8s. Когда камера доходит до конечного угла по горизонтали, она делает один шаг по вертикали и все начинается сначала.
Моторами шевелит Arduino nano, общение происходит по Serial порту.

То есть, если поставить камеру в чистом поле, она тупо будет крутиться и постепенно подниматься, сохраняя фотографии, если увидит птицу. Алгоритм ещё не доработанный, потому что пока не понятно, как камера будет ловить пролетающие стаи.
Дальше надо будет придумать, как отличать одни стаи от других, чтобы не считать одних и тех же птиц несколько раз (Буду благодарен если подкинете пару идей).
Прошивку, если кому-то будет интересно, загружу на github.

❯ Испытания

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

Голубей ловит хорошо

Голубей ловит хорошо

На готовом снимке нашел не всех, но это просто вопрос способа обнаружения. Можно просто темные силуэты искать

На готовом снимке нашел не всех, но это просто вопрос способа обнаружения. Можно просто темные силуэты искать

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

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


Написано при поддержке Timeweb Cloud.

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 11
IT Проект Электроника Arduino Техника Тестирование Программа Птицы Автоматизация Программирование Timeweb Telegram (ссылка) Длиннопост Блоги компаний
7
4
busy.blog
busy.blog
Программирование на python
Серия BUSY Bar

Создаем виджеты для BUSY Bar без кодинга⁠⁠

1 месяц назад

BUSY Bar — это продвинутый фокус-таймер с функцией блокировки отвлекающих приложений и интеграцией в умный дом. В этом посте мы покажем как, используя HTTP API, можно создавать виджеты для BUSY Bar. Это смогут сделать не только разработчики, но и обычные пользователи.

Далее вы узнаете как:

  • Вывести изображения и текст на экран BUSY Bar.

  • Взаимодействовать с устройством прямо из браузера.

  • Создать виджеты без программирования.

Виджеты, которые мы сделаем в этой статье

Виджеты, которые мы сделаем в этой статье

Прежде чем начать создавать виджеты, давайте познакомимся с HTTP API и с тем, как его использовать.

Один API для всех типов подключения

HTTP API — это протокол для взаимодействия с BUSY Bar, доступный через все 3 поддерживаемые типа подключения:

  • USB Ethernet — при подключении BUSY Bar к ПК, он определяется как сетевой адаптер с виртуальной сетью.

  • Wi-Fi сеть — быстрое, беспроводное подключение. BUSY Bar можно разместить где угодно в зоне действия Wi-Fi.

  • Cloud-сервер — удаленное управление через интернет с шифрованием и авторизацией по ключу, используя API-токен, выпускаемый в личном кабинете BUSY.

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

Как работает HTTP API в BUSY Bar

Как следует из названия, HTTP API основан на протоколе HTTP, который используется для передачи данных в интернете, между браузером и web-сервером. Когда вы вводите URL сайта, ваш браузер отправляет HTTP запрос и сервер возвращает web-страницу в ответе.

Взаимодействие web-браузера и web-сервера по протоколу HTTP

Взаимодействие web-браузера и web-сервера по протоколу HTTP

Взаимодействие с BUSY Bar устроено похожим образом. BUSY Bar выполняет роль HTTP сервера и ожидает запросы, а ПО на ПК выполняет роль HTTP клиента. Этим ПО может быть любая программа, поддерживающая отправку HTTP-запросов, например, система умного дома, приложение или скрипт.

Скрипт или приложение отправляет запрос и BUSY Bar возвращает данные в формате JSON

Скрипт или приложение отправляет запрос и BUSY Bar возвращает данные в формате JSON

Благодаря широкой поддержке HTTP в языках программирования, обращаться к BUSY Bar можно с помощью всего нескольких строк кода. А некоторые простые запросы, такие как запрос общей информации о BUSY Bar, могут быть отправлены прямо из браузера - просто открытием http://10.0.4.20/api/status/system.

Запрос /api/status/system возвращает общую информацию о BUSY Bar

Запрос /api/status/system возвращает общую информацию о BUSY Bar

ℹ️ В случае использования USB-подключения IP-адрес BUSY Bar'а всегда будет 10.0.4.20 — он даже указан на задней крышке устройства. При подключении через Wi‑Fi IP-адрес назначается роутером. В следующих примерах мы будем использовать USB-подключение.

IP-адрес BUSY Bar’а указан на задней крышке устройства

IP-адрес BUSY Bar’а указан на задней крышке устройства

Документация HTTP API прямо на устройстве

Все поддерживаемые HTTP-запросы, их параметры и форматы ответов описаны в документации HTTP API, которая хостится прямо на устройстве. При подключении по USB она доступна по адресу: http://10.0.4.20/docs.

Документация HTTP API, открытая с устройства

Документация HTTP API, открытая с устройства

Открыть документацию HTTP API также можно с главной страницы web-интерфейса BUSY Bar, который доступен по адресу http://10.0.4.20.

Главная страница web-интерфейса BUSY Bar и ссылка на документацию HTTP API на ней

Главная страница web-интерфейса BUSY Bar и ссылка на документацию HTTP API на ней

HTTP-запросы можно тестировать прямо на странице с документацией, выполнив следующее:

  1. Выберите запрос, например: /api/display/draw (вывод текста и картинок на экран).

  2. Нажмите Try it out.

  3. Скорректируйте параметры запроса.

  4. Нажмите кнопку Execute, чтобы отправить запрос на BUSY Bar.

После нажатия Execute браузер отправляет HTTP API-запрос в BUSY Bar, который возвращает ответ, указывающий либо на успешное выполнение (OK), либо на ошибку (Bad Request), если с запросом что-то не так. В случае успеха BUSY Bar выводит на экран «HELLO, WORLD!».

Перейти к видео

[Видео] При успешном выполнении запроса BUSY Bar выводит на экран строку "HELLO, WORLD!"

Как AI может помочь использовать HTTP API

В сети есть тонны гайдов, обсуждений и примеров кода для работы с HTTP. А еще со всеми этими знаниями умеют работать AI-ассистенты. Поэтому даже без навыков программирования вы можете создавать виджеты для BUSY Bar.

ℹ️ Для продвинутых пользователей мы также предлагаем готовые библиотеки для Python и JavaScript, реализующие наш HTTP API.

Для создания виджета с помощью AI-ассистента (ChatGPT, Gemini, Claude и других) нужно:

  • Объяснить ему, как выводить картинки и текст на экран (1 промпт).

  • Объяснить, что должен делать виджет (1-2 промпта).

  • Попросить устранить недостатки (0-10 промптов).

В результате вы получите скрипт, который запускается на ПК и по HTTP API отправляет UI виджета на подключенный по USB девайс.

Скрипт работает на ПК и отрисовывает виджет на экране BUSY Bar через HTTP API

Скрипт работает на ПК и отрисовывает виджет на экране BUSY Bar через HTTP API

Дальше мы покажем на реальных практических примерах, как можно сделать виджет, не прибегая к программированию. Мы будем использовать ChatGPT. Все сгенерированные AI-скрипты доступны по ссылкам на каждом шаге.

Шаг 0: Учим AI использовать экран BUSY Bar

При создании каждого виджета сначала нужно объяснить AI, как использовать HTTP API, а именно два запроса:

  • /api/assets/upload — для загрузки картинок в память BUSY Bar.

  • /api/display/draw — для вывода текста и ранее загруженных картинок.

Промпт к AI (сделан на основе документации HTTP API):

Тот же самый текст промпта на GitHub

Результат: AI теперь умеет через USB выводить на экран изображения и тексты, а также использовать разные шрифты и цвета текста.

Делаем виджет часов

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

Шаг 1: Вывод времени и даты

🤖 Промпт к AI: Выведи на экран текущую дату (мелко) и время (крупно) по центру экрана. Формат даты — день.месяц.год. Время выведи с секундами.

Результат: AI написал скрипт на языке Python. Его нужно сохранить в файл с расширением .py и запустить командой python file.ру (Windows) или python3 file.ру (Linux/macOS).

Скрипт от AI: clock-1.py

Виджет часов. Шаг 1: На экран выведены дата и время (часы не идут)

Виджет часов. Шаг 1: На экран выведены дата и время (часы не идут)

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

Шаг 2: Ход часов, цвета и выравнивание

🤖 Промпт к AI: Сделай, чтобы часы шли и не выключались. Текст сейчас не по центру, сдвинь его вправо на 3 пикселя. Выведи время светло-зеленым.

Скрипт от AI: clock-2.py

Результат:

Перейти к видео

[Видео] Виджет часов. Шаг 2: Готовый виджет

Мы получили готовый виджет всего за 3 промпта. Единственное замечание — AI выравнивает текст по центру с погрешностью, т.к. символы имеют разную ширину (например, цифр 1 и 5). В следующей версии HTTP API мы добавим выравнивание текста по горизонтали и вертикали, что полностью решит эту проблему.

Делаем погодный виджет

Скрипт, запущенный на ПК, будет получать погоду из открытых источников в интернете и выводить ее на экран BUSY Bar для нескольких городов. Для каждого города скрипт выведет иконку погоды, город и температуру.

Шаг 1: Вывод погоды

🤖 Промпт к AI: Сделай скрипт, выводящий поочередно погоду в 3 городах: Dubai, London, New York с паузой 3 секунды. Погоду бери из открытых источников без необходимости регистрации.

Скрипт от AI: weather-1.py

Результат:

Перейти к видео

[Видео] Погодный виджет. Шаг 1: Вывод погоды в 3 городах

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

Шаг 2: Улучшение интерфейса

🤖 Промпт к AI: Слева на экран выведи иконку погоды (16×16), пусть скрипт сам их нарисует. Справа выведи: город (мелко) и температуру (крупно).

Скрипт от AI: weather-2.py

Результат:

Перейти к видео

[Видео] Погодный виджет. Шаг 2: Новое расположение элементов на экране

Уже лучше, но есть еще пара недочетов, которые мы устраним следующими запросами к AI.

Шаг 3: Разбираемся со знаком градуса

🤖 Промпт к AI: Символ градуса не отображается. Девайс точно умеет выводить этот символ шрифтом big.

Скрипт от AI: weather-3.py

Результат:

Перейти к видео

[Видео] Погодный виджет. Шаг 3: Теперь символ градуса отображается корректно

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

Шаг 4: Делаем красивые иконки

Нужно подготовить иконки для основных погодных явлений (солнечно, облачно, дождь и т.д.). Сами иконки можно взять в открытых источниках — например, существует отличный шрифт Noto Color Emoji 16.0 от компании Google. Изображения всех символов доступны в репозитории на GitHub.

Нам понадобятся картинки:

  • ☀️ sun.png (солнечно) — символ u2600

  • ☁️ cloud.png (облачно) — символ u2601

  • 🌫️ fog.png (туман) — символ u1f32b

  • ⛅ partly.png (переменная облачность) — символ u1324

  • 🌧️ rain.png (дождь) — символ u1327

  • 🌨️ snow.png (снег) — символ u1328

Эти картинки нужно смасштабировать до 16×16 и сохранить в папке icons, которая должна быть расположена в папке со скриптом. После этого нужно попросить AI доработать скрипт.

🤖 Промпт к AI: Сделай вывод иконок из готовых файлов, которые я положил в папку icons: cloud.png, fog.png, partly.png, rain.png, snow.png, sun.png.

Скрипт от AI: weather-4.py

Результат:

Перейти к видео

[Видео] Погодный виджет. Шаг 4: Готовый виджет

🚀 Готово! В скрипте можно изменять список городов. Можно оставить только один город и тогда будет отображаться только его погода, обновляясь каждые 3 секунды.

Делаем пинг-монитор

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

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

Индикатор пинга в игре Pokémon UNITE

Индикатор пинга в игре Pokémon UNITE

Шаг 1: Вывод графика пинг

🤖 Промпт к AI: Сделай скрипт, который выводит график пинга игрового сервера по IP. Обновление графика раз в секунду. В верхнем левом углу выведи пинг маленьким шрифтом.

Скрипт от AI: ping-monitor-1.py

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

python3 ping-monitor-1.ру --server 8.8.8.8.

Результат:

Перейти к видео

[Видео] Пинг-монитор. Шаг 1: На экран выведен график и текущее значение пинга

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

Шаг 2: Разукрашиваем график

🤖 Промпт к AI: Пусть на графике столбцы, соответствующие 0-20 мс, будут зелеными, 21-50 — желтыми, а больше 50 — красными. Высота шкалы — 100 мс.

Скрипт от AI: ping-monitor-2.py

Результат:

Перейти к видео

[Видео] Пинг-монитор. Шаг 2: График разукрашивается в соответствии со значением пинга

Супер! Осталась одна маленькая, косметическая, деталь — вывод логотипа игры в левой части экрана.

Шаг 3: Добавляем логотип игры

🤖 Промпт к AI: Давай еще слева от графика выведем логотип игры CS:GO.

AI просит, чтобы файл с логотипом игры назывался csgo.png и лежал в папке со скриптом. Нагуглим подходящую картинку, смасштабируем до 16×16 и сохраним.

Скрипт от AI: ping-monitor-3.py

Результат:

Перейти к видео

[Видео] Пинг-монитор. Шаг 3: Готовый виджет

🚀 Готово! Всего за несколько шагов, не прибегая к программированию, мы смогли создать наглядный виджет. Его можно использовать не только для мониторинга доступности игрового сервера, но и в целом для мониторинга доступности любых других серверов в LAN или интернете.

Скоро Kickstarter

В начале 2026 года мы запустим нашу Kickstarter-кампанию. Оформите предзаказ в нашем магазине чтобы получить доступ к специальной цене для первых заказов когда кампания начнется: https://busy.bar/shop

Подпишитесь на наши X, Instagram и Reddit, чтобы следить за обновлениями BUSY Bar.

Instagram — продукт компании Meta Platforms Inc., признанной экстремистской организацией, деятельность которой запрещена на территории Российской Федерации.

Показать полностью 13 9
[моё] Разработка Программирование Гаджеты Python Электроника ChatGPT Видео Без звука Короткие видео Длиннопост
6
4
Вопрос из ленты «Эксперты»
Kronim

Экран ST7735S TZT 1.77" на ESP32-C3⁠⁠

1 месяц назад

Господа, помогите пожалуйста настроить экран. Я купил st7735s tzt 1.77" и для подключения использую ACELEX supermini ESP32-с3. Что не делаю экран остаётся белым и ничего не показывает. Подключил по следующей схеме:

VCC → 3.3V

GND→ GND

SCLK→ GPIO4

MOSI→ GPIO6

CS → GPIO7

DC→ GPIO2

RST→ GPIO3

BLK→ GPIO8

Пробовал через библиотеку TFT_eSPI и менял User_Setup.h до следующей конфигурации:

#define TFT_MISO -1

#define TFT_MOSI 6

#define TFT_SCLK 4

#define TFT_CS 7

#define TFT_DC 2

#define TFT_RST 3

#define TFT_BL 8

#define TFT_BACKLIGHT_ON HIGH

#define TFT_WIDTH 128

#define TFT_HEIGHT 160

#define ST7735_DRIVER

#define TFT_RGB_ORDER TFT_RGB

#define INIT_SEQUENCE_3

#define SPI_FREQUENCY 40000000

#define SPI_READ_FREQUENCY 20000000

#define SPI_TOUCH_FREQUENCY 2500000

с следующим кодом:

#include <TFT_eSPI.h>

TFT_eSPI tft = TFT_eSPI();

void setup() {

Serial.begin(115200);

Serial.println("TZT 1.77\" + ESP32-C3 + TFT_eSPI");

tft.init();

tft.setRotation(1);

pinMode(8, OUTPUT);

digitalWrite(8, HIGH);

tft.fillScreen(TFT_BLACK);

tft.setTextColor(TFT_WHITE, TFT_BLACK);

tft.setTextSize(2);

tft.drawString("TZT 1.77\"", 10, 20);

tft.drawString("WORKING!", 10, 50);

tft.fillCircle(120, 80, 30, TFT_RED);

tft.fillRect(10, 90, 60, 40, TFT_GREEN);

tft.drawLine(0, 0, 160, 128, TFT_BLUE);

}

void loop() {

tft.fillScreen(TFT_RED); delay(500);

tft.fillScreen(TFT_GREEN); delay(500);

tft.fillScreen(TFT_BLUE); delay(500);

}

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

#include <Adafruit_GFX.h>

#include <Adafruit_ST7735.h>

#include <SPI.h>

#define TFT_CS 7

#define TFT_RST 3

#define TFT_DC 2

#define TFT_BL 8

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {

Serial.begin(115200);

Serial.println("ST7735S TZT 1.77\" + ESP32-C3");

pinMode(TFT_BL, OUTPUT);

digitalWrite(TFT_BL, HIGH);

tft.initR(INITR_144GREENTAB);

tft.setRotation(1);

tft.fillScreen(ST7735_BLACK);

tft.setTextColor(ST7735_WHITE);

tft.setTextSize(2);

tft.setCursor(10, 20);

tft.println("TZT OK!");

tft.setCursor(10, 50);

tft.println("ESP32-C3");

tft.fillCircle(100, 80, 25, ST7735_RED);

tft.drawRect(10, 70, 60, 40, ST7735_YELLOW);

tft.drawLine(0, 0, 160, 128, ST7735_BLUE);

Serial.println("ЭКРАН ДОЛЖЕН ПОКАЗАТЬ ЦВЕТА!");

}

void loop() {

tft.fillScreen(ST7735_RED); delay(500);

tft.fillScreen(ST7735_GREEN); delay(500);

tft.fillScreen(ST7735_BLUE); delay(500);

}

Из совета в прошлом посте изменил MOSI с 6 на 5. Bk с 8 на 3.3 V. В соответствии изменил код но ничего не помогло, экран как был белым так и остался. Репост делаю пушто ещё надеюсь что-то кто-то заметит

Показать полностью 3
[моё] Arduino Esp32 Tft Электроника Программирование Разработка Помощь Вопрос Спроси Пикабу Длиннопост
1
276
user11083329

МОЙ прогресс в электронике⁠⁠

1 месяц назад

Я уже освоил:

1. светодиоды

2. сервоприводы

3. кнопки

Сейчас осваиваю дисплей.

Если не против, я буду каждую неделю скидывать сюда прогресс.

Делиться просто нужно с кем-то.

Перейти к видео
[моё] Электроника Электрика Программирование Прогресс Видео Вертикальное видео Короткие видео
65
285
Timeweb.Cloud
Timeweb.Cloud
TECHNO BROTHER
Серия Старое железо

«Fallout Terminal»: Robotron 1715М или наш ответ Vault-Tec родом из ГДР⁠⁠

1 месяц назад

Автор текста: MechNIX

Иногда полезно выбраться из привычной системы координат. Эта мысль посетила меня при взгляде на «Robotron 1715M». Не знаю, насколько привлекателен внешний дизайн этого компьютера, но в своеобразности взаимодействия с ним точно есть свой шарм.

❯ Аппаратная составляющая

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

Техническое описание компьютера — доступно здесь.

Наш экземпляр имеет «на борту»:

  • Центральный процессор UA 880D (аналог Zilog Z80);

  • Оперативную память объемом 256Кб (32 чипа в корпусе DIP);

  • Два дисковода 5'' (К5601), 80 дорожек, 800К;

  • Работает под операционной системой SCP 3.0, являющейся клоном CP/M.

Глянем составляющие:

Открутив три винтика, поднимаем крышку системного блока и видим, что треть пространства занимает блок питания (слева):

1/2

Смотрим на дисководы, расположенные сверху (К5601):

Кроме дисководов видим металлический охлаждающий вентилятор

Кроме дисководов видим металлический охлаждающий вентилятор

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

Модель и производитель:

Дисковод на 80 дорожек

Дисковод на 80 дорожек

Шасси дисководов держатся на двух удобных винтах с насечками для пальцев — снимаются очень легко:

Вот мы и добрались до плат. Их всего две:

1/2

Контроллер

И основная плата, которая содержит центральный процессор UA880D, работающий на частоте 4 МГц:

И поле оперативной памяти, объемом 256К (8Кб X 32):

ПЗУ производства СССР:

Надо отметить, что при подавляющем большинстве комплектующих ГДР, попадаются компоненты СССР:

1/2

Есть и Корея:

1/2

Чип зафиксирован клейкой лентой, предполагаю, от сползания из панельки. Отдирать не стал. Никакой деструкции с ретро:

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

Вообще, не совсем понятно назначение наклееных пленок, заклеек. Подскажите, для чего?

Тоненькие проводники, навитые на стержни. Любопытно, как навивали.

RFT-разъемы:

В завершение внешнего осмотра — интерфейсы.

Мы видим разъёмы для подключения дисплея MDA, принтера, внешнего floppy-дисковода и окно во внешний мир — протокол V.24. Благодаря ему мы и сможем почувствовать себя операторами, подключёнными к майнфреймам Всемирной паутины. А вот чем планировалось заменить заглушку под потенциальный разъём GRAF DISPLAY — интересно было бы найти.

❯ Дисковая подсистема

Так как жёсткий диск в принципе отсутствует, мы будем пользоваться двумя имеющимися дисководами. С одного загружается операционная система, на другом — дискета с данными. Удобно? Да. И дискового пространства больше — есть, где развернуться.

Профилактика — сначала почистим магнитные головки дисководов.

Сюда наносится небольшое количество чистящей жидкости, затем производится обращение к дисководу

Сюда наносится небольшое количество чистящей жидкости, затем производится обращение к дисководу

С профилактикой механики завершили, переходим к «софтовым мытарствам».

❯ Дела софтовые

Начнём с самого сложного (для меня) — с работы с дискетами. «Чего сложного, — скажете вы, — вставил дискету и работай». Но нет. Посмотрим-поглядим.

Прежде чем использовать дискету, её необходимо соответствующим образом записать. Отдельная песня — это работа с файловой системой SCP 3.0 (CP/M) для Robotron. Перепробовав тонну маленьких утилит под MS-DOS для форматирования, редактирования и записи образов, я так толком и не добился цели. Далее описан проверенный, простой и рабочий вариант для OS Linux, но чтобы его осознать и осуществить, пришлось просидеть несколько вечеров. Как оказалось, всё укладывается в несколько команд. Возможно, вам пригодится, да и мне — чтобы не забыть.

Дискеты можно и нужно использовать двойной плотности (DD). Вспомнили такие? 2S/2D означает «двухсторонние, двойной плотности».

Цель весьма простая — записать (дополнить) нужные файлы в готовые образы дискет и эти самые образы, а также записать на физические носители (дискеты). В итоге на помощь пришли пакеты cpmtools & fdutils для Linux.

После установки этих пакетов, необходимо отредактировать файл, находящийся по следующему пути: /etc/cpmtools/diskdefs. Файл описывает специфические парамеры, необходимые для работы дисковой подсистемы.

Файл описания форматов разных систем. Используем в качестве аргумента команды этот блок —параметр 17153

Файл описания форматов разных систем. Используем в качестве аргумента команды этот блок —параметр 17153

Далее все стало проще. Нам нужно изменить настройки контроллера дисковода. Делается при помощи setfdprm (из пакета fdutils). Запускаем команду со следующими параметрами:

После применения подготовительных параметров, форматируем (размечаем) дискету командой #fdformat /dev/fd0

Потом нас интересуют две команды: команда «#cpmls -f 17153 test.ima» выводит содержимое образа test.ima, а команда «#cpmcp -f 17153 test.ima tlc.com 0:», добавляет в образ файл tlc.com. Также существует команда «cpmrm», позволяющая удалять файлы из образа.

Следующей командой записываем свой модифицированный образ на дискету. Test.ima и scp30.cpm — это посекторные образы дискет.

Всего 3 команды, подытожим на живом примере:

Дискета готова

Дискета готова

Записанную таким образом дискету можно загружать в Robotron. Информация собиралась по крупинкам, моя благодарность этим источникам (вот и вот).

Результирующее видео:

❯ «Инжалид дежице»

Если вы увлекаетесь ретро-компьютерами, то вам наверняка встречалось сочетание «инжалид дежице». Мне, как и многим, смешно такое видеть; более того, это словосочетание утекло в мемы. Хочу чуть пояснить его на примере нашего «Роботрона».

Не удержусь — приведу уместную картинку, иллюстрирующую хитросплетение кодировок.

В описываемом компьютере используется древняя кодировка КОИ-7, не вплетённая в венок вышеприведённой картинки, а точнее — два её варианта: Н1 и Н2. В одном случае латинские буквы заменены на подходящие кириллические, а в другом заменены только строчные латинские буквы.

Вот пример для наглядности. Преднамеренное обращение к дисководу без дискеты порождает такое сообщение:

А после нажатия этой «волшебной» кнопки:

Мы видим:

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

Завершая, поясню: легендарное «инжалид дежице» означает Invalid device — дословно «неисправное устройство».

Здесь полное описание кодировки КОИ-7, а здесь объемлющее рассмотрение.

❯ Игры

Как правило, при взгляде на монитор «Роботрона» вспоминается Fallout. Наш сегодняшний «Фоллаут» будет состоять из игральных карт, мышей, машинок в виде цифр — а также текста.

Игра «Казино». Графического режима нет, но, на мой взгляд, изображения карт сделаны старательно.

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

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

Вводная часть

Вводная часть

Гонимся за мышами!

Еще одна аркадная игра — гонки с названием «Ралли»:

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

Результат:

1/3

Так бывает, когда вместо осмысленных цифр вводишь хаос символов

Игровой процесс:

«Тетрис»! О, эта игра не нуждается в представлении. Здесь она «на коне», потому что хронологически близка к первоисточнику. Алексей Леонидович Пажитнов написал её в 1984 году для компьютера «Электроника-60». Она живёт и на «Роботроне».

А теперь — мистификация. За правду в следующем абзаце не ручаюсь, но оцените идею. Повторюсь: в компьютере «Robotron 1715М» отсутствует динамик и, как следствие, звук. Нет звука в системном блоке, зато он есть в принтере.

Впечатляет реализация мифической игры «Диверсия» («DIWERSIQ»), в которой задействован звук «колокольчика» принтера «Robotron» — Bell. Как вам такое?

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

Всех игр для «CP/M» не опишешь. Есть ещё «Горилла» (воображение рисует «Кинг-Конга» на небоскрёбах) и множество других произведений для погружения в «ту эпоху игр».

Не обязательно иметь настоящий, «железный» «Роботрон» — существует эмулятор. Кому нужно, можно найти в Сети; если лень — могу поделиться, пишите.

❯ Внешний мир

Упомянутый выше протокол V.24 используется в реализации стандарта RS232. Для нас это означает, что мы можем использовать последовательное соединение через COM-порт.

Покопавшись в документации, нашел следующую «распиновку» разъема «Роботрона».

Заодно приведу и назначение контактов видео

Заодно приведу и назначение контактов видео

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

Но всё позади и мы видим нуль-модемный кабель для использования COM-порта любого современного компьютера:

«Железо» без «софта» мертво. С пайкой аппаратной части разобрались, а что мы имеем из программ для SCP3? В этой части — скудненько. Сначала удалось найти телекоммуникационную программу TLC. Вроде бы то, что нужно.

Развернув бурную деятельность, в части вызванивания исходящих данных из «Роботрона», я имел вот такую картину:

Данные передавались, но не те, которые я ожидал. Программа TLC не пропускала символы ASCII с кодом выше 127. Изменение количества бит с 8 до 7 тоже не принесло результата. Иными словами, я видел «квакозяблы» вместо осмысленных символов. Терминальную программу с поддержкой КОИ-7 мне найти не удалось. Если есть на примете — подскажите.

Материал получился очень объемным (много фото и видео), но весьма интересным. Всё не влезло :( Продолжение тут.

Написано при поддержке Timeweb Cloud.

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 45 5
IT Техника Программирование Timeweb Электроника Ретро Fallout СССР Компьютерное железо Видео RUTUBE Telegram (ссылка) Длиннопост Блоги компаний
26
78
Webnout
Arduino & Pi

Ответ на пост «Часы из часов на дисплее из дисплеев»⁠⁠1

2 месяца назад

Доброго времени суток Вам, уважаемые Пикабушники.

Почти три года назад Алекс Гайвер разработал безумно интересный и, на мой взгляд, самый недооцененный фанатами проект - "Часы из часов на дисплее из дисплеев!". Но, проект так и остался демонстрацией возможностей дисплея.

Со своими сыновьями собрали его, подшаманили скетч и часы получились (все исходники предоставлю в конце поста). Плюс, Часы научились показывать температуру на улице, температуру/влажность/давление в доме. Делюсь, вдруг кто-то захочет повторить это сам или со своими детьми. На момент сборки моим мальчишкам было 11 лет и они, вполне нормально управляются с паяльником, поэтому думаю, что с возраста 10+ детям будет интересно, тем более, что процесс сборки/пайки очень интересен, да и результат впечатлит. Также, думаю, что проект может быть интересен какому-нибудь школьному кружку Самоделкиных, если такие ещё остались в школах, т.к. часы собираются модульно и коллективное творчество тут вполне уместно. У меня остался комплект плат (9 шт. и одна прозапас), поэтому с радостью подарю их какому-нибудь школьному кружку - пишите.

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

Результат (часы, которые у вас получатся):

Вживую выглядят намного интереснее, чем на фото.

Вживую выглядят намного интереснее, чем на фото.

Видео работы часов.

Перейти к видео

В скетче символы "С" у температуры уже заменил на U (улица) и D (дом), но всё никак не перезалью в часы... (((

Ну и немного фото/видео сборки:

1/2

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

1/6

Собираем всё в кучу.

Первые тесты:

Перейти к видео

Исходники можно скачать ЗДЕСЬ. Там всё понятно и с комменатриями.

//

Что и у кого заказывал:

1) Печатные платы. Заказывал ЗДЕСЬ. Вы пишите продавцу. Отправляете ему архив SMD.zip из папки PCB, он считает и говорит, сколько это будет стоить. Для сборки проекта нужно 9 плат, но лучше заказать одну прозапас, мало ли что...

2) Дисплеи заказывал ЗДЕСЬ. Всего нужно 36 дисплеев.

3) NodeMCU (1 шт.) - заказывал ЗДЕСЬ.

А вот дальше товары, которые покупал - уже недоступны, поэтому просто ищу на али, но можете поискать и сами.

4) Конденсаторы 50 В, 10мкФ (нужно 18 шт.), но они продаются по 50, благо стоят недорого - ССЫЛКА

5) Драйвер max7219 (нужно 18 шт.) - ССЫЛКА

6) Резистор 10 кОм (нужно 18 шт.) - ССЫЛКА

7) Датчик температуры/влажности/давления BME 280 (1 шт.) - ССЫЛКА

8) Блок питания можно не покупать, а запитать часы от нормального зарядника для телефона (5 вольт и 3 ампера хватит с запасом).

В принципе всё. Всем добра!

Показать полностью 9 2
[моё] Alexgyver Своими руками Самоделки Программирование YouTube Arduino Электроника Техника Видео Короткие видео Ответ на пост Длиннопост
4
1418
Timeweb.Cloud
Timeweb.Cloud
TECHNO BROTHER
Серия Старое железо

«Колобок»: история одной советской мыши, которая не хочет работать⁠⁠

2 месяца назад

Автор текста: MechNIX

Здравствуйте, уважаемые читатели!

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

Сразу оговорюсь об использованном в заголовке названии данной мыши.

Официальное название — «Устройство ввода НВ 03.049.003». Выпущенное в 1991 году промышленным объединением «Комета», данный манипулятор иногда называют по наименованию производителя — «Комета», а еще в силу округлой формы — «Колобком». Подчеркну, что это неофициальные, «народно-обиходные» названия, и в паспорте устройства этих упоминаний нет. Но мне нравится название «Колобок»; думаю, в современном мире производитель вполне сам бы мог дать такое яркое название своему продукту. С другой стороны, зачем всё сворачивать к игровой форме? Строгое «УВ НВ 03.049.003» отражает серьёзное время. Вот прилагаемый изготовителем паспорт, я приведу его полностью.

1/3

По результатам чтения паспорта мы видим, что мышь подключается посредством интерфейса RS-232C, то есть в стандартный COM-порт.

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

Внешний вид

Внешний вид

Распаковка «мыши»:

Разборка «мыши»:

Помимо самого корпуса и согласно паспорту устройства, присутствуют два разъема — DIN5 (слева) и db9 (справа):

DB9 крупным планом — это интерфейсный разъем, подключаемый в порт RS-232:

DIN-5 вставляется в материнскую плату в разрыв клавиатуры AT, обеспечивая питание 5В, потому что, как мы увидим дальше, питание через RS-232 на «мышь» не подаётся.

Интерфейсный разъём в разборе, к нему подходят всего три провода, выглядит так:

Номинал резистора можно увидеть на экране мультиметра, чуть менее 1 кОм:

Теперь самый главный вопрос: зачем я разобрал «мышь» и вообще полез туда? Как вы, наверное, догадались, первоначальное подключение к компьютеру и переборка пары десятков мышиных драйверов (не шучу) ни к чему не привели — «мышь» не работала.

Цель данной статьи — найти единоМЫШленников, которые могут помочь. В чём конкретно, расскажу по мере повествования.

Разобранная «мышь» выглядит так:

Итак, рассмотрим составляющие элементы.

Микросхема КР1816ВЕ39 — это однокристальная 8-разрядная микро-ЭВМ, не содержащая ПЗУ.

Само ПЗУ (EPROM) КР573РФ5, организация памяти 16 Кбит (2К x 8). Кварцевое окошко для УФ-стирания заклеено толстой черной изоляцией толщиной 0,5мм.

Микросхема К555ИР22 — это восьмиразрядный регистр хранения информации, тактируемый импульсом. Логика работы приведена по ссылке.

Микросхема К561ЛН2 — это шесть логических элементов НЕ с буферным выходом.

Микросхема К561ТЛ1 содержат 4 элемента 2И-НЕ с триггерами Шмитта на входах.

Плюс ко всему мы видим кварцевый резонатор, три микровыключателя, несколько постоянных и 4 подстроечных резистора. А так же две КМ-ки.

Печатная плата держится на пластиковом основании при помощи маленьких саморезов.

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

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

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

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

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

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

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

ПЗУ слегка встало «на дыбы»:

И с другой стороны:

Результат:

После демонтажа ПЗУ и приведения платы в порядок, вот такой вид. Дорожки, не отслоились, металлизация отверстий не нарушена:

Что мы имеем:

Для чего все это? Конечно сделать дамп при помощи программатора:

Читаем:

И вот какой у меня получился дамп:

ПЗУ чиста, как после полного стирания УФ-лампой. Дамп улетучился, утёк — никакой микропрограммы. ПЗУ как новое. Всегда сохраняйте дампы своих ретро-гаджетов! Без них в один прекрасный момент ваш девайс может превратиться в бездушную железку.

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

Чтобы больше не возиться с пайкой платы, на место ПЗУ я установил «кроватку».

Но еще не всё...

Возвращаясь к названию «Колобок», хочется выразить своё двоякое мнение. С одной стороны, не хочется нести некорректную информацию в ноосферу знаний. А с другой стороны, что вы скажете на нижеизложенный факт?

В загрузочном образе-сборке советской операционной системы «Альфа-ДОС», являющейся клоном MS-DOS 3.2, содержится драйвер мыши КОЛОБОК.КНД. Его можно увидеть вверху списка.

Запустив данный драйвер, мы видим следующее:

Оно и понятно: в COM-порт не вставлен разъём заведомо неисправной мыши.

Но и это ещё не всё. Я нашёл второй экземпляр драйвера «Колобка». Он называется «GMAUS.COM». Ему безразлично, подключена мышь в порт или нет. Без лишних вопросов он загружается резидентом в оперативную память, и при повторном запуске, проверяя наличие уже запущенной копии, «Колобок» отвечает: «программа уже готова».

Размер файлов немного отличается. Мы увидели, что существуют как минимум две модификации драйвера «КОЛОБКА».

Разные размеры файлов

Разные размеры файлов

Файлы различаются

Файлы различаются

Резюмируя, «Колобок» жив в программном коде. Файл в образе «Альфа-ДОС» датируется 1 августа 1988 г., а мой экземпляр мыши — декабрём 1991 года. В каком году начато серийное производство данных мышей, найти информацию не удалось. Под какую мышку написан драйвер «КОЛОБОК.КНД», можно только предполагать.

Итак, «Колобок» всё же был. Но катиться ли ему по столу дальше — решать вам, уважаемые читатели. Дело — за принципиальной схемой, дампом ПЗУ и накопленными вами знаниями и опытом.

Мой «Колобок» пока не готов... Если сможете помочь, пишите советы в комментариях.

Спасибо за уделённое время! :)


Написано при поддержке Timeweb Cloud.

Реклама ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 31 2
IT Программирование Электроника Timeweb Техника Программа СССР Тестирование Видео RUTUBE Длиннопост Блоги компаний
221
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии