Тег ‘паяльный бред’

Так и живу на эти два процента

Вводная – есть некий девайс из категории Open-Source Hardware. В сравнении с коммерческими аналогами – недорогой (500$), для своих задач вполне пригодный – но, как водится, “open source в плохом смысле”, отягощенный ардуиной головного мозга у разработчиков.

Теперь переходим к этим двум процентам. Разработан прототип нового устройства под кодовым названием “ровно в два раза круче” – во всех смыслах, если прототип имел, скажем, 8 каналов АЦП – то здесь будет 16, и так далее, а затем – заказано изготовление плат (4 слоя по “продвинутым” технологическим нормам) и монтаж в “Резоните”, причем в режиме “мы вам деньги и документацию, а вы нам готовые устройства с курьерской доставкой”. “Резонит” сам по себе – не самая дешевая фирма, да и за монтаж они берут выше среднего, и, подозреваю, немного “накручивают” и на закупке компонентов – но весь заказ “опытной партии” из трех устройств, с подготовкой производства, обошелся всего около 70 000 рублей (на “срочном производстве”, с повышающим коэффициентом) – это по сегодняшнему курсу чуть меньше 1200$.

Из этого делаем вывод, что себестоимость “прототипа”, о котором речь идет в первом абзаце, не превосходит 200$ (делим на 6 – так как наше изделие, хоть и заказано тиражом в 3 экземпляра, ровно в 2 раза круче по всем параметрам) – а продается он за 500$. Собственно, это все, что хочется сказать об Open-Source Hardware и его покупателях.

777 таймер

В фейсбуке Руслана Тихонова лозунгом этой пятницы объявлено: “От 555 таймера – к 777 портвейну!” Надо соответствовать:

777-timer

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

Про книжки вопрос

Разбираюсь сейчас с одним проектом с использованием Keil MDK. Первым делом, конечно же, нашел старую, но местами актуальную (особенно в моем случае, где используется довольно старая версия MDK) книжку Тревора Мартина “Микроконтроллеры ARM7 семейств LPC2300/2400″. Некоторую ценность представляет 6 глава, где довольно подробно рассказывается о возможностях ОС Keil RTX.

Но вот сегодня я решил все-таки обратиться к фирменной документации (ну, помимо встроенной справки) – благо книжка Getting Started: Building Applications with RL-ARM доступна совершенно бесплатно – и просматривая раздел про RTOS, испытал ощущение, что где-то я это все уже видел. И действительно – эти две публикации практически дословно повторяют друг друга.

Конечно, русское издание книжки Мартина – очевидный бестселлер, особенно несколько лет назад. Далеко не все отечественные “эмбеддеры” владеют английским языком в достаточной степени, чтобы читать документацию на языке оригинала (некоторые и русским не владеют, но это уже совсем печально) – так что достаточно хороший перевод официального руководства не помешает.

Но вот для кого предназначено оригинальное английское издание, представляющее собой компиляцию свободно доступных даташитов и справочных руководств?

Флюс ТТ или осторожно, говно

Нарвался на грабли при использовании этого чуда околопаяльной химии. А ведь предупреждали!

Симптомы – довольно странные, на первый взгляд. Есть кучка девайсов на микроконтроллере LPC1768. Устройства иногда выходят из строя и кустарным способом ремонтируются, причем монтажник очень любит этот самый флюс ТТ. Очередной отремонтированный (замена МК) прибор попал мне в руки – и довольно быстро вновь “превратился в тыкву”. Оказалось, что оставшиеся под микроконтроллером продукты распада этого самого ТТ – проводящие, и сопротивление между выводом nRESET и “землей” составляет что-то от нескольких килоом до нескольких сотен Ом (в зависимости от температуры и цены на бананы в Гондурасе). При небольшом нагреве (от работы МК) они нагревались, “сажали” вывод сброса на землю – со всеми отсюда вытекающими последствиями.

Лечение – промыть плату от остатков этого дерьмища 646 растворителем.

Конференция Inothings-2018

Засмотрел (в виде прямой трансляции на ютубе) некоторые доклады с конференции Inothings-2018. Хотелось бы поделиться впечатлениями.

Честно говоря, я немного не понимаю сам термин “Интернет вещей”. Судя по коммментариям в ютубовском чате – это общая непонятка, правда, некоторые своего непонимания стесняются и подменяют его какими-то дикими “определениями”, а затем – яростно спорят с теми, кто с этим существующим лишь в голове автора “определением” не согласен. В общем, будем считать “интернетом вещей” область человеческих знаний, включающую в себя промышленную автоматизацию, разработку “встраиваемых систем”, системы сбора данных, беспроводные сети – ну и наверное, еще что-нибудь.

Первый доклад – “Разработка устройств IoT – то, о чем не написано в книгах” технического директора фирмы “Стриж” Андрея Цислава произвел довольно странное впечатление. Бесспорно, докладчик в теме разбирается отлично – но по сути все сводилось к словам “Смотрите, как у нас все правильно сделано”. Нет, все удовлетворяло главному условию конференции – “отсутствие маркетинговых и рекламных докладов”, но хотелось все-таки чего-то другого, какого-то неоднозначного и быть может, даже не всегда “правильного” опыта. Впрочем, для незнакомых с продукцией и технологиями “Стрижа” могло бы быть и интересно.

Выступление Антона Сысоева под заголовком “IIoT: проектирование систем промышленного интернета вещей. Учет времени” оказалось неожиданно интересным. Может быть, кому-то показалось скучным и длинным вступление – но это ровно до тех пор, пока вы самостоятельно не столкнетесь с проблемой синхронизации времени на куче устройств. Я, конечно, немного представлял себе суть проблемы и возможные методы решения – но на практике все оказалось намного интереснее. Скажем, я никогда особо не задумывался над различиями между установкой и коррекцией часов – а это, между прочим, две очень разные вещи! К концу выступления докладчик очень оживился, обругал GPS, назвав его “ненадежной системой” – в общем, посмотреть стоит.

Интересный набор примеров “как не надо делать” – в докладе Максима Крентовского “Боль разработки программно-аппаратных проектов“. Собственно, чего-то нового или незнакомого здесь не было – просто набор из нескольких жизненных примеров, с которыми сталкивались, наверное, почти все разработчики “встраиваемых систем” в любом виде – от кривых, но популярных опенсорсных проектов (и да, здесь прозвучало слово “Ардуино”) до собственного “забега по граблям” при разработке даже простейших устройств.

Еще один доклад представителя “Стрижа” Сергея Аксенова – “Антипаттерны разработки программных комплексов для интернета вещей” – касался в основном “бекэнда”, то есть в случае “Стрижа” – систем сбора и хранения данных. В основном, конечно, все опять сводилось к тому, как все сделано у “Стрижа” и почему это правильно – но показалось интереснее первого доклада – наверное, из-за того, что “правильного” ответа на вопрос, как хранить многие миллионы измерений, я до этого не знал (спойлер – не используйте для этого реляционные базы данных).

Надо сказать, что на конференции было два зала, и доклады шли параллельно – поэтому часть из них я просто не мог посмотреть. Тут я виртуально переместился во второй зал, послушать Олега Артамонова из Unwired Devices и Евгения Белова из МТС – про “Цифровое животноводство“. Вроде бы выступления в малом зале были предназначены для представителей “бизнеса” – но вот в этом выступлении, правда, о пользе разрабатываемой системы для бизнеса были сказаны лишь общие слова – да, можно представить, что мониторинг бычков и телочек животноводам интересен, понятно, что внедрить его проще в крупных хозяйствах – но вот о конкретном экономическом эффекте никто ничего так и не сказал. С “технической” же точки зрения коровы, обвешанные беспроводными датчиками, выглядят весьма футуристично.

Вот следующий доклад – “Точное позиционирование персонала на примере особо опасного производства” Константина Нехаева из Гейзер-Телекома – мне показался более ориентированным на потенциальных заказчиков. Да, тема очень интересная, и даже отсылающая к фильмам про “Терминатора”, где киборга-убийцу из будущего непременно побеждают на металлургическом заводе – но доклад был в основном посвящен возможностям систем локального позиционирования, без особых отсылок к их техническим нюансам, а каждую из аббревиатур, изредка проскакивавших на слайдах, проще было загуглить и понять, о чем, собственно, речь. Гейзер-Телеком такие системы внедрять умеет, так и запишите.

В это же самое время (и вот тут-то я оценил прелесть просмотра ютубовских трансляций со скоростью в полтора раза выше нормальной) в большом зале выступал Станислав Елизаров из “Стрижа”, рассказывавший о “Почти надежных решениях“. Наконец-то можно было догадаться, где в “Стриже” все-таки смогли ошибиться! Доклад сводился к нескольким советам на уровне здравого смысла – а это, как известно любому, означает, что все эти советы знают, но никто им не следует. Заодно удалось узнать, что шуточка про рекорд по скорости передачи данных, поставленный КамАЗом с пиратскими дисками – вовсе не шуточка, а реальность в исполнении Amazon и даже Disney.

Конкурирующие технологии сетей LPWAN” в исполнении Олега Артамонова – короткий обзор множества разнообразных технологий построения радиосетей и некоторых неочевидных ограничений. Вывод простой – у всех типов сетей есть свои плюсы и минусы, и можно привести примеры реальных проектов, где выбор будет обусловлен именно этим. Впрочем, именно из-за этих примеров это выступление и надо посмотреть.

Очередной доклад про “операторские” сети я пропустил – хотя его автор должен был доказать аудитории, что обруганный в предыдущем выступлении NB-IoT – это то, что всем нужно. На это может, и стоило бы взглянуть – но я выбрал в качестве некоторой разрядки выступление юриста, партнера компании “Nevsky IP Law” Кирилла Митягина на тему “Как IoT взломает нашу правовую систему: разбираем переворот вековых юридических устоев на трех кейсах“. Признаюсь сразу – немного пожалел. После выступлений “технарей” доклад юриста выглядел слабовато. Пусть даже Nevsky IP Law и специализируется на “околокомпьютерных” спорах – но в терминологии докладчик немного “плавал” (ему явно местами требовался переводчик “с технического на юридический”), приведенные им примеры мне показались чуть ли не очевидными – впрочем, все в данном случае зависит почти исключительно от предварительной подготовки. Скажем, я как-то на досуге полистал 4 часть ГК и имею мнение, что на любые EULA на софт в определенных случаях можно плевать – для части аудитории это, несомненно, было сюрпризом. Довольно забавный и показательный диалог был по поводу “несакционированного” доступа к данным – кто-то из зала считал, что любые “зашифрованные” им данные – на что получил отлуп от такого же слушателя “из зала”, причем совершенно шикарный, попробую его кратенько пересказать:

- У нас есть статья, по-моему, Уголовного кодекса о незаконном доступе к защищенной информации!
- У вас какой режим? Коммерческая тайна?
- Ну… Коммерческая тайна, да!
(быстро, на одном дыхании)
- Вы выполнили пять условий десятой статьи 98-ФЗ?
(первый обтекает)

В общем, аудитория подобралась очень и очень разная.

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

Ну и наконец, последний доклад – выступление Владислава Зайцева из Unwired Devices (итого у них со “Стрижом” паритет – по три выступления) про ячеистые сети “от Адама до Саддама”. Доклад действительно всеобъемлющий – от определения mesh network вообще до конкретных примеров (6LoWPAN, ZigBee, ZWave) и какие железки с каким софтом взять, чтобы поиграться с такими сетями.

В общем, получилось вполне себе насыщенно В целом – понравилось, и надо было все же идти “вживую”.

Продолжим про устройства ввода

Разгребал накачанные давным-давно торренты, нашел древнюю игрушку “Ралли Трофи“. Попробовал поиграть на клавиатуре и осознал, что это, мягко говоря, не вариант – особенно с учетом того, что в игре имеется какая-никакая, но “физика” (хотя злые языки говорят, что “физика” в автосимуляторе – это просто сильно заниженный коэффициент сцепления колес с дорогой).

Понятно, что нормальные люди играют в симуляторы, пользуясь рулем и педалями, но вот глянул я цены на минимально приличные варианты и как-то они меня не обрадовали. Варианты же “неприличные” – типа “руля с педалями” тысячи за полторы выглядят совсем убого.

В общем, посетила меня мысль заняться “техническим творчеством”. Бюджет, затраты времени и так далее можно особо не учитывать – в конце концов, этим делом занимаются обычно вовсе не от тотального безденежья, а вовсе наоборот. Пока что придумалось купить самый дешевый игровой руль (чтобы особо не заморачиваться с “механикой”), рулевое колесо Sparco из отдела “все для любимого зубла” ближайшего автомагазина и, скажем, блок педалей от “Газели” – там две педали – сцепления и тормоза – висят на одном кронштейне, в самопальном манипуляторе из них можно сделать тормоз и газ соответственно).

Отговорите :)

Сейчас такого не делают

В поисках нормальной клавиатуры полностью разочаровался в ассортименте московских магазинов – включая и Geekboards. Мембранные клавиатуры по цене от 200 до 2000 рублей – всенепременно говно, “ножничные” в сравнении с ноутбучной вау-эффекта не вызывают, “геймерские” ИМХО совершенно отвратительны по дизайну, а покупать Leopold FC900M за 10 тысяч не велит жаба. Прикидывал варианты с покупкой клона IBM Model M производства Unicomp – все-таки это в какой-то степени “настоящий IBM”, есть даже варианты с красной пипкой – но в любом случае такая клавиатура обойдется с доставкой через какое-нибудь Шипито в те же 10 тысяч. Выложить такие деньги исключительно за технофетишизм не велит все та же жаба.

general

Но удалось обнаружить корень моих представлений о “правильной клавиатуре” – среди всякого домашнего хлама была найдена клавиатура от первого моего компьютера, купленная вместе с ним в далеком 1996 году. Почему-то я думал, что это была какая-то модель Cherry – но воспоминания оказались ложными. На корпусе клавиатуры не нашлось ни одного упоминания производителя, а FCC ID (KM988KKB88) на наклейке оказался совершенно “левым” – поиск по нему выдает 88-клавишные клавиатуры производства Тайваня, а не Малайзии. Раскладка “азиатская”, с большим Г-образным Enter и коротким Backspace. Русские буквы нанесены странным шрифтом (обратите внимание на вычурные формы К и Ж), раскладка напоминает “машинописную”, со знаками препинания на цифровом ряду, но довольно сильно от нее отличается.

В общем, страшный noname – хотя нередко встречающийся в России, как показывают разные форумы клавиатурных маньяков:

https://geekhack.org/index.php?topic=68475.0

Логично было бы ожидать, что в этой клавиатуре сэкономили на всем, чем можно – но… Для начала – это действительно механическая клавиатура, пусть даже и с совершенно безымянными переключателями (выяснилось, что произведены они тайваньской фирмой Tai-Hao).

switch

Да, в середине 90-х “мембранные” клавиатуры еще не получили широкого распространения, и даже безымянные тайваньские производители использовали механические переключатели, не превратившиеся тогда еще в предмет своеобразного культа (скажем, никому тогда даже в голову не пришло бы сравнивать характеристики переключателей разных типов, работает – и ладно).

Но это еще не все! Обратите внимание на характерный двухцветный рисунок на обратной стороне клавиши:

double-shot

Это означает, что латинские буквы и надписи на клавишах выполнены методом “двойного литья”, или double-shot injection moulding. Метод довольно сложный и дорогой – сначала отливаются надписи из пластика черного цвета, затем эти отливки устанавливаются в пресс-форму для клавиши и заливаются пластиком серого цвета. Надписи получаются практически “вечными”, не стирающимися даже при интенсивном использовании. Сложности очевидны – надо иметь комплект из сотни литьевых форм (для каждой клавиши) и специальное оборудование. В современных материалах на тему механических клавиатур так и пишут – “из-за цены только считанные производители делают такие клавиши”. Здесь же, напомню, мы имеем дело с ширпотребным ноунеймом. Русские символы, правда, нанесены краской – скорее всего, сублимационным методом.

Ну и в качестве маленького дополнения – обратите внимание на конструкцию клавиши Enter:

enter-stabilisers

У нее – аж два “стабилизатора”, поперечной и продольной устойчивости. В какое бы место клавиши вы не нажали, она нажмется без каких-либо перекосов. Между прочим, установка ее – отдельное приключение, в основном – из-за этой пары стабилизаторов.

Любая современная клавиатура, хотя бы близко стоящая по характеристикам к этой, будет стоить от 100$ и выше, что автоматически переводит ее в категорию нишевых товаров “не для всех”. Здесь же мы имеем дело с совершенно безымянным девайсом, но при этом с точки зрения качества стоящим намного выше любой “просто клавиатуры” в магазине.

В общем, остается заняться изготовлением переходника с пятиконтактного разъема DIN на что-то посовременнее.

UPD В процессе использования обнаружились некоторые нюансы, о которых стоило бы упомянуть. Из приятного – клавиатура заработала совместно с вот таким переходником (разъем клавиатуры я заменил на DIN):

ps2adapter

Из менее приятного – оказалось, что клавиши “удвоенного” размера не снабжены стабилизаторами, и, к примеру, левый Shift при нажатии мизинцем иногда подклинивает. Посадочные места для стабилизаторов предусмотрены, остается только купить и поставить.

Texas Instruments CC3220SF-LAUNCHXL

Приехала на днях демоплата от Texas Instruments. С микроконтроллером СС3200 я балуюсь достаточно давно, и узнав о появлении его новой версии CC3220 – практически при первой же возможности решил заказать отладочный набор. Но в апреле-мае это у меня не вышло – TI отказывался слать набор из своего магазина в Россию, ссылаясь на проблемы с таможенными органами, а в Чип-и-Дипе и Терраэлектронике эта же платка стоила неприлично дорого. Настолько неприлично, что я даже стал рассматривать варианты заказа в каком-нибудь Farnell или Mouser – по срокам то же, а по деньгам выходило дешевле. Останавливало одно – даже на коробке написаны слова WiFi и 256-bit encryption, на которые, по слухам, любят возбуждаться таможенники.

Но вот буквально на прошлой неделе я просматривал нотификации ФСБ и обнаружил многообещающий документ. Теперь можно было не пугаться надписей на коробке – так как согласно этому документу, этот отладочный набор средством шифрования не является. В общем, от “таможенных” проблем я был избавлен и со спокойной совестью заказал игрушку непосредственно у TI.

Кстати, обратите внимание на интернет-магазин Texas Instruments. Понятно, что заказывать оттуда отдельные детали – не совсем правильный путь, велик шанс, что посылку признают “коммерческой партией”, а вот отладочные наборы – почему бы и нет? Тот же CC3220SF-LAUNCHXL стоит у TI 49,99$ + 6,99$ доставка (а при заказе от 150$ – доставка бесплатна) – итого что-то около 3300 рублей. Для сравнения – в Терраэлектронике этот же набор предлагается за 5684 рубля со сроком поставки три недели, в Чип-и-Дипе – был примерно за 6000 с аналогичным сроком поставки (по-моему, раздел “Позиции на заказ” у них повторяет каталог Farnell). При этом TI store доставляет экспресс-почтой FedEx, у меня от момента заказа до вручения посылки прошла всего лишь неделя (пять рабочих дней – по идее, заказав в понедельник, теоретически можно получить свой заказ уже в пятницу).

Комплект поставки – сама плата в антистатическом пакетике, шнурочек с MicroUSB и пара бумажек с адресами сайтов TI и Terms and Conditions. В общем, ничего особенного. Что же мы получаем за 3300 рублей? На демоплате имеется:

- микроконтроллер CC3200SF со всей необходимой “обвязкой”;
- подключенные по I2C датчик температуры и акселерометр;
- повторитель на ОУ для аналоговых входов;
- две кнопки, три светодиода;
- “гребенки”, соединенные со свободными пинами МК;
- отладчик типа XDS110.

Разрабатывая демо-платы линейки LaunchPad, в TI явно посматривали в сторону ардуины. Во всяком случае, идея, что надо сделать универсальный разъем для дочерних плат с любой периферией (у TI они называются BoosterPack) – явно оттуда. В фирменном интернет-магазине встречаются такие платы со слотом для SD-карты, например, или с маленьким дисплейчиком, кнопками и джойстиком. Не знаю, кем надо быть, чтобы покупать BoosterPack со слотом для SD-карты, а затем героически дорабатывать его напильником, когда примерно то же самое можно сделать, имея в хозяйстве адаптер для MicroSD и разъем типа BLD-20 – но давайте не будем смеяться.

Главное здесь, конечно – это микроконтролер CC3220SF. Заявленные характеристики звучат весьма многообещающе:

- ядро Cortex-M4 с тактовой частотой 80 МГц;
- 256 кБ SRAM (в версиях без встроенной флеш-памяти пользователю доступно около 240 Кб);
- 1 МБ флеш-памяти процессора (в версии SF);
- 2xUART;
- SPI;
- I2C;
- SD-host;
- 4 таймера с ШИМ;
- watchdog;
- 4 канала АЦП с разрядностью 12 бит;
- McASP;
- интерфейс камеры (parallel camera interface module);
- до 27 линий ввода-вывода.

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

Естественно, нельзя забывать и об основной фишке серии CC32xx – встроенном отдельном процессорном ядре, отвечающем за работу с WiFi. Это вам не ESP8266 с китайской прошивкой, управляемой AT-командами, а полноценный сетевой процессор (еще одно ядро ARM Cortex-M, судя по тому, что встречаетсчя в других микроконтролерах этой серии – M0, под управлением специальной прошивки в ПЗУ). Он отвечает за подключение к WiFi, сетевые соединения (интерфейс в стиле BSD socket – так что никаких особых сложностей в программировании не возникает), а для полного счастья в нем реализованы еще и несколько сетевых приложений – HTTP-сервер, DHCP-сервер, ping и DNS-клиент. В новом семействе увеличено количество ресурсов, доступных сетевому процессору – теперь в режиме точки доступа к устройству может быть подключен не 1, а 4 клиента, а количество одновременно доступных сокетов увеличилось с 8 до 16.

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

Описание Цена розничная в TI Store, $ Цена оптовая (1 ku) в TI Store, $ Цена в Терраэлектронике, р
CC3200 Микроконтролер 9,07 4,90 923-727
CC3200MOD Модуль 13,50 7,99 1491-1258
CC3220R Микроконтролер 11,08 5,14
CC3220S Микроконтролер с защитой данных 12,41 5,76 1021-736
CC3220SF Микроконтролер с защитой данных и 1 Мб флеш-памяти 12,66 6,79 1204-868
CC3220MODS Модуль, МК с защитой данных 17,52 9,39 1498-1262
CC3220MODSF Модуль, МК с защитой данных и 1 Мб флеш-памяти 19,76 10,59
CC3220MODAS Модуль, МК с защитой данных, встроенная антенна 19,57 10,49
CC3220MODASF Модуль, МК с защитой данных и 1 Мб флеш-памяти, встроенная антенна 21,81 11,69

Сравнивать эти модули с какими-нибудь ESP стоимостью три копейки за пучок, конечно, в целом бессмысленно – но не стоит забывать, что тут у нас имеется вполне неплохой микропроцессор на ядре Cortex-M4 c офигенным объемом памяти, сравнимый с теми же STM32 F1 и F3.

Но… В случае с CC3200 поджидает довольно неприятная засада – ядро Cortex-M4 не очень эффективно работает, когда исполняемый код находится в SRAM, каждая команда выполняется не за один, а за два такта. Скажу сразу, что я возлагал довольно большие надежды на CC3220SF, увидев в даташите слова про “1-Mb XIP Flash” – так что первым делом, скачав SDK, я решил… нет, не поморгать светодиодиком, а прогнать парочку бенчмарков.

Для встраиваемых микропроцессоров принято использовать писькомерки Dhrystone и CoreMark. Первая – довольно древняя, но по ее поводу имеется Application Note от ARM, регламентирующий использование оптимизаций компилятора (если коротко – запрещено все). Второй бенчмарк местами превращается в соревнование “кто круче расставит флаги оптимизаций”, и его результаты крайне желательно приводить вместе с параметрами компилятора. Итак, первая табличка – Dhrystone и CoreMark на СС3200 и CC3220SF (код выполняется из флеш-памяти), компилятор IAR 8.10.1, параметры оптимизации для CoreMark приведены в заголовке.

Dhrystone, DMIPS CoreMark, -Ol CoreMark, -Om CoreMark, -Ohs
CC3200 46,8 71,05 87,95 135,69
CC3220SF, код в флеш-памяти 27,4 47,14 57,50 86,88

Ничего себе! – сказал я и офигел от результатов. Спрашивается, за что платили? Зачем мне огромная, по меркам младших Cortex, память, когда производительность процессора падает в три раза относительно “номинальной”? Cortex-M4 теоретически должен выдавать около 1,25 DMIPS/MHz и около 3 CoreMark/MHz (в зависимости от компилятора). Результаты CC3200 предсказуемые, но еще более-менее терпимые. Что же касается CC3220SF – то освободив SRAM для данных, мы получаем проигрыш в производительности в полтора раза. Зачем такая радость?

Я прогнал еще один вариант бенчмарка – на этот раз без использования флешки. Результат оказался аналогичен CC3200 – вот еще одна строчка в таблицу выше:

Dhrystone, DMIPS CoreMark, -Ol CoreMark, -Om CoreMark, -Ohs
CC3220SF, код в SRAM 46,5 71,02 87,76 135,50

В такой конфигурации, разумеется, CC3220SF теряет все преимущества перед своими “младшими” версиями без флеш-памяти. А теперь давайте вернемся к табличке с ценами и зададим себе вопрос – “А если нет разницы, зачем платить больше”? Мегабайт медленной флеш-памяти, в целом не особо нужной, стоит 1,5$.

Короче говоря, я ожидал большего.

UPD На данный момент придерживаюсь мнения, что флеш-память в CC3220SF неправильно сконфигурирована – так как в микроконтролерах серии MSP432 она устроена похожим образом, и буферизацию чтения необходимо включать “вручную”.

Адов колхоз

Вопрос к электронщикам: чем надо бить по голове монтажника?

trip-kolhoz

Прибор, если че, предназначен для использования в спортивных автомобилях, и стоит, мягко говоря, дохрена.

А вот кто пользуется EAGLE?

Скажите, желание перерисовать все стандартные библиотеки компонентов – оно нормальное, или надо душить в зародыше внезапно разыгравшийся перфекционизм?

Ретро-ралли и современная электроника

Заказал недавно с Aliexpress в очередной раз партию Bluetooth-модулей HC-05 (думаю, вы уже догадались, зачем). Приехали десять модулей – из них 8 те самые HC-05, а оставшиеся два – какие-то мне неизвестные, на TI CC2541.

Ну, с HC-05 все понятно – конфигурируем модуль десятком-другим AT-команд, прицепляем к нашему девайсу и пользуемся, как удлинителем UART. Все довольно просто и неприлично тупо. А вот модули на CC2541 – это что-то новое. Во-первых, у них другой набор команд – хотя кое-какая информация довольно быстро нагугливается. Самое неприятное – это то, что эти модули не поддерживают старый добрый Bluetooth 2.1, а, стало быть, для меня пока что совершенно бесполезны.

Но на кое-какие мысли меня эти модули натолкнули. На днях я почитал регламент ретро-ралли “ГУМ-авторалли Gorkyclassic 2017“, а точнее – пункт про использование “профессионального штурманского оборудования”. Формулировка – совершенно замечательная:

Использование профессионального штурманского оборудования, приборов и устройств, установленных на автомобиле, запрещено. «…» Использование любых навигационных программ в мобильных устройствах (смартфонах, планшетах и т. п.) не запрещается.

Что такое “профессиональное штурманское оборудование” – вопрос, конечно, интересный. По услышанной мной недавно версии, к таковому относятся приборы вроде Терратрипа – мол, наличие такого серьезного и недешевого девайса отпугивает новичков (равно как и висящие на лобовом стекле пара навигаторов, антирадар и еще какая-нибудь фигня), поэтому всех надо заставить ехать по штатному одометру. GPS на московских ретро-ралли – не помощник, два круга по Кремлевской набережной, заезд в Лефортовский тоннель – и любой счетчик расстояния покажет чушь.

Относится ли к запрещенному “профессиональному штурманскому оборудованию” или же к разрешенным “навигационным программам в мобильных устройствах” древний “Чайный навигатор” – вопрос, конечно, дискуссионный, и было бы очень интересно услышать мнение официальных лиц на эту тему – но меня заинтересовал другой вопрос. Моя программа TSD Navigator – безусловно, “навигационная программа в мобильном устройстве”. Но у нее есть важное отличие от банального “Навитела” – она умеет работать с беспроводным адаптером для датчика пробега, которому не страшны любые сбои в работе GPS.

Конечно, в нынешнем виде этот адаптер далеко не идеален – но по отзывам пользователей, со своими функциями справляется неплохо. Фактически, по точности измерения расстояний (а это основной показатель качества штурманского прибора в любительском ралли) TSD Navigator с адаптером не уступает тому же Терратрипу. Проблема одна – габариты. Пытливый техинспектор сможет обнаружить “серую коробочку” и потребовать, согласно регламента соревнования, обернуть ее непрозрачной тканью.

Несомненно, в следующем году в регламент добавят обертывание всяких подозрительных коробочек в фольгу – и я начал прикидывать варианты, как бы поглубже спрятать аналогичное по функциональности устройство. Для начала – хорошо бы отказаться от адаптеров типа HC-05. Если не писать к HC-05 свою прошивку – а это тот еще геморрой – то нужен как минимум еще один микроконтроллер, а это лишняя плата, кое-какая обвязка и вообще куча проблем. И вот тут мне на глаза попался этот китайский адаптер с CC2541.

Чем он отличается в лучшую сторону от HC-05? Чипы от Texas Instruments неплохо документированы, в отличие от микросхем Cambridge Silicon Radio в HC-05. Они поддерживается тем же IAR’ом, для них есть многочисленные примеры – так что, возможно, имеет смысл написать и собственную прошивку для CC2541 – благо китайский модуль с распаянной на нем микросхемой и обвязкой стоит смешных денег. Но что самое важное – это габариты устройства. Я прикинул, что используя даже обычный китайский модуль, можно запихнуть его внутрь корпуса “проходного датчика скорости” от ВАЗ – который легко устанавливается на большинство отечественных янг- и олдтаймеров. Естественно, что здесь можно предусмотреть и всю необходимую обвязку – какой-нибудь преобразователь питания и датчик Холла. Если не заморачиваться с установкой датчика на трос спидометра, а, скажем, прицепить его в районе болтов кардана или на тормозной щит – то можно побаловаться и с другими вариантами корпуса.

В общем, в будущем сезоне можно будет поиграть в увлекательную игру “надури техинспекцию” :)

Про ценообразование в Чип-и-Дипе

Возникла у меня необходимость купить десяток вот таких разъемов:

bh10r

Разъем “ходовой”, обычно стоит копейки – 5-10 рублей даже в розницу – но не в этот раз. От цены на сайте я чуть не упал со стула – разъемы предлагали аж по 33 рубля штука! Над строчкой с ценой красовались надписи “Осталось более 100 штук” и “Ожидается поставка 100500 штук буквально завтра”.

Логично предположить, что дело именно в том, что складские остатки выгребли практически подчистую, и подождать поставки большой партии – но ее так и не было, а сегодня, зайдя на сайт, я увидел эти же разъемы по 57 рублей с пометкой “Осталось более 80 штук”.

Интересно, кому эти разъемы были нужны настолько, что он купил 20 штук за 660 рублей?

Texas Instruments CC3220

TI официально объявил о выпуске “второго поколения” своих микроконтролеров с WiFi – был CC3200, стал СС3220, да еще и в трех вариантах – CC3220R, CC3220S и CC3220SF. Собственно, отдельные “контролируемые утечки” происходили и раньше, где-то в начале марта стала доступна для заказа демо-плата, а на прошлой неделе был выложен SDK.

Что хочется сказать? SDK построен по принципу “Fire and Motion” – он совершенно несовместим с CC3200 :) Не знаю, может, это и хорошо – но я уже немного ориентируюсь в библиотеках для CC3200, а тут придется учиться заново. По железу? Главная новинка, на мой взгляд – это CC3220SF, где до TI наконец-то дошло, что нехорошо помещать код и данные на ARM Cortex M4 в одну и ту же область памяти. Теперь помимо 256 Кб SDRAM имеется еще и флеш-память для кода объемом почему-то 1000 Кб (не 1024, а именно 1000 :) ). В теории, это должно увеличить производительность в 2-3 раза.

В наших отечественных магазинах демо-платы по понятным причинам еще нет, так что хочу поинтересоваться у общественности – а никто не заказывал всякое барахло из TI Store? Что означает вот это страшилка?

http://www.ti.com/lsds/ti/store/faq-russian-orders-info.page

Texas Instruments CC3220

А кто что слышал про сабж? Чем он лучше, чем CC3200?

http://www.ti.com/product/cc3220/description

Простите, но будет матом

Мне кажется, что это полный пиздец:

https://www.piter.com/collection/arduino/product/programmiruem-arduino-professionalnaya-rabota-so-sketchami

Если вы все еще сомневаетесь – полистайте главу под названием “Цифровая обработка сигналов“.

UPD Не менее шедевральна книга того же автора “для начинающих”:

https://www.piter.com/collection/arduino/product/programmiruem-arduino-osnovy-raboty-so-sketchami-2-e-izd

Как вы думаете, что написано в разделе про цифровые выходы? “Если потыкать мультиметром в вывод с единичкой, то мультиметр покажит циферку 5; если в вывод с ноликом – то мультиметр покажет циферку 0. Это все, что можно рассказать о цифровых выходах”.

Это все, что я хотел сказать о войне во Вьетнаме.

Гнать индусов поганой метлой!

Продолжаю изучать Texas Instruments CC3200. Хорошая штука, но… Я уже научился при взгляде на код определять, писали ли его настоящие 100% ковбои в перерывах между пальбой из Смит-Вессонов или низкооплачиваемые индусы, работающие по визе H1B, а при визитах на форум техподдержки – с недоверием относиться к ответам всяких Раджей и Кумаров.

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

http://www.cnews.ru/news/top/2017-01-30_tramp_nachinaet_zakryvat_ameriku_dlya_inostrannyh

Блядей (перечислены по ссылке) уже корежит:

http://www.zerohedge.com/news/2017-01-30/why-cold-war-between-tech-ceos-and-trump-about-go-nuclear

Вот еще бы Сатью Наделлу на мороз выгнали – было бы вообще зашибись.

Скажите, а с ARM все действительно так плохо?

В одном прожекте возникла необходимость беспроводной передачи неприличного количества данных с АЦП. Даже в самых оптимистичных сценариях получалось, что придется гнать без проводов поток данных порядка 150 кбит/с. Немного? Но при таком потоке “затыкаются” все легкодоступные радиоудлинители UART – неважно, какой там у них радиоинтерфейс – WiFi, Bluetooth, или что-то еще. Более того, большинству из них недоступна скорость выше 115200 бод, что “отсекает” их еще на этапе ознакомления с ТТХ.

В поисках какого-то более подходящего решения набрел на микроконтролер CC3200 производства Texas Instruments. Что мне понравилось? По пунктам:

- ядро Cortex-M4 (хотелось бы, конечно, Cortex-M4F, но и это сойдет);
- встроенный WiFi, по отзывам – действительно быстрый;
- встроенные раздельные модули SPI и SD-host (я сначала думал, изучая примеры, что обмен с SD-картой будет идти с использованием модуля SPI, судя по назначению выводов – но нет, они там никак не связаны);
- возможность переназначать выводы утилитой Pinmux – хочешь, заводи SD-карту на эту сторону микрухи, хочешь – на другую, в общем, все офигенно.

Ну, где у нас АЦП – там хорошо бы и обработать сигнал? Благо в ядре Cortex-M4, в отличие от распространенного Cortex-M3, присутствуют команды, упрощающие цифровую обработку сигналов – например, реализацию всевозможных цифровых фильтров. Но на этом этапе начались какие-то дикие танцы с бубнами :)

Для начала – есть библиотека CMSIS, унифицированная для всех ARM реализация некоторых часто используемых функций. Особенно мне была интересна CMSIS-DSP, часть библиотеки с реализацией функций для цифровой обработки сигнала. Да, я могу написать реализацию какого-нибудь там фильтра Баттерворта или быстрого преобразования Фурье – но оптимизировать его для ARM я вряд ли буду, да и зачем это делать, когда есть готовое общепринятое решение?

Но для использования этого готового решения требуется некоторая поддержка от производителя микроконтролера – и здесь все становится просто ужасно. У Texas Instruments используется своя среда разработки (на основе Eclipse) и свой же компилятор. Может, имей я больше опыта программирования под ARM, я бы настроил что-то более распространенное, но для начала я просто следовал пунктам из Quick Start Guide.

Так вот, основное преимущество Cortex-M4 над Cortex-M3 – поддержка “DSP instruction set” – вообще никак не афишируется производителем в случае CC3200. Да, есть “патч” для одной из относительно старых версий CMSIS, выпущенный Texas Instruments несколько лет назад – но применимость его в случае CC3200 не озвучивается (и действительно, если “втупую” применить этот “патч”, ничего не выйдет). На просторах ютуба нашлось вот такое видео:

Через 15 секунд просмотра уже хочется восславить Кришну, а через минуту так и ждешь, что все начнут петь и плясать. Если серьезно – пахнет индусятиной в худшем смысле этого слова. Из озвученных в видео шагов один – фундаментально неправильный, а еще нескольким я не смог найти внятного объяснения.

В конечном итоге CMSIS-DSP я собрал (откомпилированная библиотека из дистрибутива с компилятором TI не очень дружит) – хотя, конечно, некоторые вопросы остались. И главный из них – в заголовке. Неужели любой шаг в сторону от любовно подобранных примеров из SDK превращается в вот такой забег по граблям под руководством индусов?

А в чем можно вот так нарисовать электросхему?

Возникла необходимость нарисовать несколько электрических схем и поделиться результатом в виде графических файлов (каких-нибудь GIF или PNG). Хочется чего-то в таком духе:

pixelart-scheme

Но все известные мне редакторы – чисто “векторные”, и при экспорте в растровый формат результат смотрится не очень хорошо:

sch4

Видно, что линии менее четкие, толстые, да еще и переменной толщины – где в два, а где в три пикселя. Короче говоря, вопрос: как добиться вот такой же “пиксельной” картинки, как верхняя? Пока в голову приходит лишь вариант “взять Paint и рисовать самому”, но может, есть какие-то более подходящие программы-рисовалки?

Железячный вопрос

Практически довел до релиза свою программку для любительских ралли. Замутил сайт и уже радуюсь первым продажам. Есть, конечно, и огорчения – например, названием “Ралли-Навигатор” пользуются все, кому не лень – вплоть до всяких трофистов. Запомните – ралли – это когда на “девятках” гоняют по грунтовкам, а трофи – когда на УАЗах ползают по лесу. Это совершенно разные виды автоспорта и смешивать их не стоит (хотя после последних “1000 верст” возникли мысли об их взаимопроникновении).

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

Правда, нашелся один выход – использовать клавиатуру для планшета. Мне, например, очень понравился вот такой чехол:

pad-keyboard

На китайских сайтах подобные чехлы-клавиатуры стоят что-то около 10-12$. Напрягает другое – мне нужно порядка 10-12 часов непрерывной работы планшета с включенным Bluetooth, GPS, возможно, WiFi или сотовой связью. При питании от батареи такого не выдержит ни один из известных мне планшетов, то есть нужен постоянный доступ к зарядке. Но ни в одном из обзоров таких USB-клавиатур я не увидел порта USB, предназначенного для подзарядки подключенного планшета!

Вариант номер два – использовать Bluetooth-клавиатуру, но тут возникает еще несколько проблем. Во-первых, как китайский планшет отнесется к тому, что к нему по Bluetooth подключены два или три внешних устройства? Не будут ли они самопроизвольно отваливаться? Во-вторых, почему клавиатуры с Bluetooth так неприлично дорого стоят – до 30-40$?

В общем, не дайте пропасть, подскажите что-нибудь.

Что-то к хвостику прилипло

Цитату я взял из замечательного анекдота, прочитанного в комментариях у [info]ex0_planet. Но он прекрасно отражает сущность некоторых “шилдов для Ардуино”, по сложности порой превосходящих оную ардуину на пару порядков.

Не знаю, как у ардуинщиков, а у технически грамотного человека такая ситуация должна вызывать как минимум недоумение – зачем к полноценному одноплатному компьютеру, порой даже с Linux, пристыковывать еще и Ардуину – да еще и считать последнюю “главным” устройством. Но у меня схожие чувства возникли, когда я подключил к AtMega8 популярный Bluetooth-модуль HC-06.

Мой микроконтролер решал весьма примитивную задачу – тупо считал импульсы на одной из ножек, а раз в 600 миллисекунд выполнял itoa(counter) и кидал получившуюся текстовую строку в USART – чтобы “на том конце” передать ее по Bluetooth. Но ведь HC-06 сам содержит “настоящий” процессор (BC417143B) и имеет кучу ног, не говоря уже о “прошиваемости”! Возможность сделать “все то же самое”, не прибегая к еще одному МК, заставляла меня думать, что “мое” решение с инженерной точки зрения ужасно уродливо, а что самое главное – многократно увеличивает размеры устройства.

Попробуйте разместить на одной (желательно однослойной) плате “мегу” в DIP-корпусе, разъем для программатора, КРЕНку с полагающимися конденсаторами и модуль с распаянной HC-06 и “обвязкой”. Прикиньте, какой для этого нужен корпус и так далее – а теперь сравните это с “модулем” для HC-05/06, для которого и корпус, по большому счету, не нужен – затянул в термоусадку и радуйся. Понятно, что повторить китайскую платку для Bluetooth-модулей в “домашних” условиях вряд ли удастся – но ее “любительские” аналоги тоже скромны по габаритам.

Короче говоря, я сейчас смотрю на свой девайс и весьма опечален тем фактом, что сочетаю быдлячью Мегу в DIP-корпусе с современным BGA-шным чипом Bluetooth-адаптера. Практически, уже готов заплакать.