Прошивальщико-отладчик из серийного монстра

В предыдущей статье я описывал, как устроены цифровые ценники и как их можно использовать для своих нужд. Некоторое время тому назад именно таких ценников, с интерфейсом Zigbee, было на eBay если и не полно, то по крайней мере раз в неделю какой-нибудь лот появлялся.
Сейчас их видно реже — надо дождаться. Но есть другие примерно за такую же цену — меньше 2 евро за штуку, но 250 штук сразу. Называются Hanshow Stellar — и, может быть, они и лучше моих. Интерфейс у них Bluetooth (BLE), соответственно работать с ними гораздо проще. Микроконтроллер тоже используется один из известных (MSP430, CC2640R2F или TLSR8359), на которые вполне можно найти спецификации и с программированием проблем нет. Нашлись даже статьи про них тут и тут, написанные красивыми иероглифами. Что и как с этими ценниками делать — описано в первой из статей.

Но — что имеем, то имеем. Я бы и Stellar тоже разобрал бы, если бы была возможность получить штуки 3 недорого, а покупать 250 — извините, мне их уже девать некуда.

Кстати, для тех, кто ищет где недорого купить ценники — судя по этому сайту, народ иногда покупает их из-под полы у Аарона — ценники бу, самые разные. В том числе и с дисплеями побольше, которые дешево купить вообще трудно (4,2 дюйма он продает 10 евро за штуку плюс доставка). Но это не точно :) — нидерландского я не знаю, а гугл мог и соврать при переводе. Как с ним договариваются (с Аароном, не гуглом) — я не в курсе.

Да, как я писал в предыдущей статье, мне же продавец закинул две пары ценников, которые я не заказывал. Не пора ли их распотрошить? Одна пара похожа на мои, только размер дисплея меньше — расковыривать нет смысла. А вот на других — несколько другие надписи, Samsung вместо SoluM. Хотя говорят, что это и одно и то же — SoluM это Samsung Electro Mechanics, но чем черт не шутит?


Вскрываем и видим — основной контроллер нам уже знаком, это ZBS242 под маской SEM9110. Т.е. опять ZigBee. А вот рядом микросхема побольше — SEM9010, на который спецификация не находится, если не знать, что это опять маскарад. Под маской — SSD1623L2, и на нее спецификация успешно ищется, это контроллер сегментного дисплея.


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



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



Все это любопытно, но не более того. Я не знаю, для чего мне может понадобиться сегментированный e-ink дисплей. Хотя скорость обновления у него намного больше, чем у трехцветного графического — если не использовать готовый специализированный контроллер, вы все определяете сами. Статью со схемами и подробным описанием изготовления такого дисплея я где-то видел, но с тех пор меня или в гугле забанили, или ее удалили — снова найти не могу. Единственное, что нашлось — тут.

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

А у моих ценников Solum ST-GR29000 на базе ZBS243 обнаружилась неприятная особенность — чтобы сделать элементарный сброс, от микропроцессора нужно отключить все сигналы, кроме собственно сброса. Для большинства сигналов это не проблема, программатор переводит свои ножки в режим входа и дело сделано. Но для отладки обычно еще подключен последовательный интерфейс — и он тоже мешает. У меня USB-Serial свисток приходилось отключать для каждого сброса. Во-первых, это надоедает, во-вторых, после сброса микроконтроллер начинает выдавать кучу отладочных сообщений, и как их увидеть, если порт отключен?
Кстати, мой подключенный логический анализатор иногда тоже не дает сбросить процессор — видимо, там подтягивающие резисторы есть.
Куча проводов, вьющихся по столу от хаба, глаз тоже особо не радует.

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

Посему пытаемся найти готовый проект, который с одним микроконтроллером изображает несколько CDC, известных в миру, как виртуальный COM порт, и модифицировать его под себя. Немного проектов, но находится. Проблема в том, что я ищу реализацию для какого-нибудь дешевого и распространенного микроконтроллера — по этим параметрам с STM32F103C8 конкурировать сложно. Но в последнее время многие программисты обленились и пересели на куб, вместо того, чтобы разбираться с аппаратурой самим. В итоге размер кода разросся до неимоверных размеров и возможности теперь ограничены библиотеками, а не аппаратурой.
В итоге ищем старые реализации, написанные до того, как народ плотно подсел на куб. Там другая проблема — те библиотеки, для которых все это писалось, найти уже крайне сложно. И с новыми версиями компиляторов они уже не компилируются. Еще подчас и написаны для среды типа Кейла — это вообще-то недешевый компилятор. Вариант с трофейным программным обеспечением никто не отменял, но оно нам надо, когда есть бесплатные компиляторы? Пусть не так хороши, но убогий программист способен угробить все ресурсы супер-пупер микроконтроллера самым лучшим компилятором, и ему еще этих ресурсов мало покажется.
Но в итоге вариант нашелся — устройство, которое изображает сразу 3 последовательных порта. Причем зависит только от CMSIS — т.е. практически голое железо, никаких библиотек, связанных с аппаратурой микроконтроллера. Код лежит здесь и статью от автора можно прочитать на Хабре. Обитатели Хабра как-то не очень оценили проект, рейтинг совсем небольшой — я бы еще нулик приписал бы справа, работа большая и сделано красиво. Проект назван автором очень романтично — Синепилюльный Серийный Монстр. PlatformIO компилирует его аж со свистом. И это действительно монстр — у него есть все мыслимые и немыслимые сигналы RS232 плюс интерфейс для их конфигурирования.




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


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

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


Третий порт монстра заменяем этим программатором — по сути дела, выбрасываем конфигуратор монстра и на его место занимаем кодом программатора. У STM32F103C8 3 аппаратных последовательных порта, теперь один остается не при делах. И программному обеспечению столько памяти тоже не надо. Так что STM32F103C8 можно смело поменять на STM32F103C6 — у него и памяти в два раза меньше, и порта всего два. Экономика должна быть экономной, как говорил дорогой Леонид Ильич. STM32F103C6 на Али сейчас продается за 50-60 центов и подчас доставка бесплатная. Я не так давно на эту халяву польстился, купил их в районе десятка — вот они и пригодились.

Схема получилась такая:


И платка — пока только в фантазиях, реально — макетка:


Теперь расклад такой — третий порт у нас изображает программатор для ZBS243, первый — отладочный порт для него же. А еще второй остался. Чтобы добро не пропадало, добавляем пару транзисторов — и вуаля! — у нас есть еще и программатор для ESP8266/ESP32 на той же платке. С учетом того, что в проектах с этикетками обычно еще и WiFi нужен для какого-нибудь моста, дополнение очень даже не лишнее.



Может кому сгодится. Даже не в той конфигурации, как у меня — исходники есть, можно модернизировать, как Бог на душу положит. А сама идея использовать монстра с модификациями мне очень нравится.

Но имейте в виду — в монструозном программном обеспечении USB работает по опросу. Если вы пишете какое-то свое расширение и оно работает не с DMA и прерываниями — остальные порты во время работы программатора или чего уж там добавили, работать нормально вряд ли будут. Особенно в моем варианте — там очень много тупых задержек. А многозадачную операционную систему тоже не поставишь по той же причине — USB работает по опросу. А по своему прямому предназначению монстру работа по опросу ни разу не мешает.
Добавить в избранное +104 +142
+
avatar
  • vismyk
  • 01 сентября 2023, 11:46
+2
Как всегда, снимаю панаму и плюсую!
Такой дисплей вы можете сделать сами — нужно просто нарисовать на печатной платке нужные сегменты, а сверху положить пленку от сломанного дисплея из электронной книжки, просто оторвав ее от стекляшки
Где ты был, donBaton, когда я эти битые экраны выкидывал?! ;) Штуки три уже выкинул. :( Но с другой стороны, штуки три и щас в закромах найдётся (родителям спасибо;). Буду хоть знать теперь, что это ценный ресурс… ;)
+
avatar
  • sgmct
  • 01 сентября 2023, 11:59
+2


Шикарный материал! Огромное благодарю за доставленное удовольствие.
+
avatar
  • Heinrich
  • 01 сентября 2023, 12:00
0
Вернулся через пару часов, чтобы почерпнуть мудрости в комментариях, а комментариев-то и нет. Но это не потому, что неинтересно, а потому что тема непростая. А так-то мы этого автора читаем от корки до корки.
+
avatar
  • sgmct
  • 01 сентября 2023, 12:03
+2
Еще не все отвлеклись от работы просто.
А автор вообще большой умница.

Каждый пост — это кладезь информации для рукодельника.
+
avatar
  • donBaton
  • 01 сентября 2023, 12:15
+2
Спасибо, я было подумал, что это просто никому не интересно.
+
avatar
  • sgmct
  • 01 сентября 2023, 12:17
+4
Это вот вы зря так думали! Мы вас любим и ждем посты!

P.S. В EasyEDA проектируете?
+
avatar
  • donBaton
  • 01 сентября 2023, 12:24
+4
Kicad — после многих лет развития, он очень хорош. Ну и абсолютно бесплатен, исходники доступны, свои расширения можно писать — как-то об этом уже писал тут: habr.com/ru/articles/594873/
+
avatar
  • sgmct
  • 01 сентября 2023, 12:47
+2
Надо пробовать перейти на него с EasyEDA.
Я прочел на одном дыхании вашу статью на хабре, LabView: былое и думы.

Это прекрасно. Я так и подозревал что вы сверхчеловек, мегамозг или рептилоид.

Скажите, а какого цвета закат на вашей планете?
+
avatar
  • sav1812
  • 02 сентября 2023, 05:32
0
Спасибо за информацию, надо будет посмотреть. :)
В KiCAD не заглядывал много лет и не знал, что он стал вполне применимым. Последние N лет использовал DipTrace, но в связи с известными событиями он как-то «под вопросом»…

В общем, спасибо за наводку!.. И за на пиво… ;)
+
avatar
  • GIPER
  • 01 сентября 2023, 12:34
+8
Спасибо, я было подумал, что это просто никому не интересно.
Еще как интересно. Просто уровень поста явно превышает стандартное «посмотрите как я режу помидорки». Потому собственно и сказать особо нечего, только пот рукавом утираем от образцового мэдскиллза.
+
avatar
  • lomator
  • 01 сентября 2023, 16:33
+5
Даже не представляете насколько это интересно. Подобный реверс инжениринг вообще исчезает как вид. Практическую реализацию подменили на тонны «воды» и копипасту. Без ёрничества, Вас смело можно заносить в Красную книгу Практики и здравого смысла (жаль нет таковой). Думаю не я один благодарен за то что Вы делитесь знаниями. Очень слежу за вашими статьями. Искренне всех благ Вам. Прошу, не бросайте эту тему.
+
avatar
  • sgmct
  • 01 сентября 2023, 20:51
0
Вот да, в Красную Книгу!

Пишет вроде бы просто, но текст чуть ли не в песню складывается.

Надеюсь автор не оскорбится, я бы сравнил его творчество, с творчеством А. Покровский «Расстрелять».

Читается на одном духу!
+
avatar
  • tirarex
  • 01 сентября 2023, 22:02
0
что неинтересно, а потому что тема непростая.
А что писать? тема интересная но девайс чисто локальный и в снг я таких не видел, от чего смысл множится на ноль.

На али есть дешевые ценники с готовым софтом которые настраиваются со смартфона или их станции. Cмысла чет писать нет.

В мвидео есть EPaper ценники но там ничего писать не надо ибо есть готовые либы под ардуину для таких экранов.
+
avatar
  • AlZa
  • 01 сентября 2023, 13:09
0
Спасибо, что делитесь своими находками и исследованиями.
Для меня, кончено, это немного «оверскилс». Хотя, может быть и просто — не было сильной нужды и практического интереса. Воспроизвести смогу, а продумать — вряд-ли.
Но, очень всё интересно вашего авторства читать. :)
+
avatar
  • kven
  • 01 сентября 2023, 13:09
0
фигасе, а что, так можно было?