Товары из Китая

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


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

В предыдущей статье я описывал, как устроены цифровые ценники и как их можно использовать для своих нужд. Некоторое время тому назад именно таких ценников, с интерфейсом 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 работает по опросу. А по своему прямому предназначению монстру работа по опросу ни разу не мешает.


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *