Вводная — есть некий девайс из категории Open-Source Hardware. В сравнении с коммерческими аналогами — недорогой (500$), для своих задач вполне пригодный — но, как водится, «open source в плохом смысле», отягощенный ардуиной головного мозга у разработчиков.
Теперь переходим к этим двум процентам. Разработан прототип нового устройства под кодовым названием «ровно в два раза круче» — во всех смыслах, если прототип имел, скажем, 8 каналов АЦП — то здесь будет 16, и так далее, а затем — заказано изготовление плат (4 слоя по «продвинутым» технологическим нормам) и монтаж в «Резоните», причем в режиме «мы вам деньги и документацию, а вы нам готовые устройства с курьерской доставкой». «Резонит» сам по себе — не самая дешевая фирма, да и за монтаж они берут выше среднего, и, подозреваю, немного «накручивают» и на закупке компонентов — но весь заказ «опытной партии» из трех устройств, с подготовкой производства, обошелся всего около 70 000 рублей (на «срочном производстве», с повышающим коэффициентом) — это по сегодняшнему курсу чуть меньше 1200$.
Из этого делаем вывод, что себестоимость «прототипа», о котором речь идет в первом абзаце, не превосходит 200$ (делим на 6 — так как наше изделие, хоть и заказано тиражом в 3 экземпляра, ровно в 2 раза круче по всем параметрам) — а продается он за 500$. Собственно, это все, что хочется сказать об Open-Source Hardware и его покупателях.
В фейсбуке Руслана Тихонова лозунгом этой пятницы объявлено: «От 555 таймера — к 777 портвейну!» Надо соответствовать:
Обратите внимание, что в отличие от популярного 555 таймера, таймер на 777 портвейне требует минимальной внешней обвязки, а времязадающие емкости встроены в устройство.
Разбираюсь сейчас с одним проектом с использованием Keil MDK. Первым делом, конечно же, нашел старую, но местами актуальную (особенно в моем случае, где используется довольно старая версия MDK) книжку Тревора Мартина «Микроконтроллеры ARM7 семейств LPC2300/2400». Некоторую ценность представляет 6 глава, где довольно подробно рассказывается о возможностях ОС Keil RTX.
Но вот сегодня я решил все-таки обратиться к фирменной документации (ну, помимо встроенной справки) — благо книжка Getting Started: Building Applications with RL-ARM доступна совершенно бесплатно — и просматривая раздел про RTOS, испытал ощущение, что где-то я это все уже видел. И действительно — эти две публикации практически дословно повторяют друг друга.
Конечно, русское издание книжки Мартина — очевидный бестселлер, особенно несколько лет назад. Далеко не все отечественные «эмбеддеры» владеют английским языком в достаточной степени, чтобы читать документацию на языке оригинала (некоторые и русским не владеют, но это уже совсем печально) — так что достаточно хороший перевод официального руководства не помешает.
Но вот для кого предназначено оригинальное английское издание, представляющее собой компиляцию свободно доступных даташитов и справочных руководств?
Нарвался на грабли при использовании этого чуда околопаяльной химии. А ведь предупреждали!
Симптомы — довольно странные, на первый взгляд. Есть кучка девайсов на микроконтроллере LPC1768. Устройства иногда выходят из строя и кустарным способом ремонтируются, причем монтажник очень любит этот самый флюс ТТ. Очередной отремонтированный (замена МК) прибор попал мне в руки — и довольно быстро вновь «превратился в тыкву». Оказалось, что оставшиеся под микроконтроллером продукты распада этого самого ТТ — проводящие, и сопротивление между выводом nRESET и «землей» составляет что-то от нескольких килоом до нескольких сотен Ом (в зависимости от температуры и цены на бананы в Гондурасе). При небольшом нагреве (от работы МК) они нагревались, «сажали» вывод сброса на землю — со всеми отсюда вытекающими последствиями.
Лечение — промыть плату от остатков этого дерьмища 646 растворителем.
Засмотрел (в виде прямой трансляции на ютубе) некоторые доклады с конференции 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 тысяч. Выложить такие деньги исключительно за технофетишизм не велит все та же жаба.
Но удалось обнаружить корень моих представлений о «правильной клавиатуре» — среди всякого домашнего хлама была найдена клавиатура от первого моего компьютера, купленная вместе с ним в далеком 1996 году. Почему-то я думал, что это была какая-то модель Cherry — но воспоминания оказались ложными. На корпусе клавиатуры не нашлось ни одного упоминания производителя, а FCC ID (KM988KKB88) на наклейке оказался совершенно «левым» — поиск по нему выдает 88-клавишные клавиатуры производства Тайваня, а не Малайзии. Раскладка «азиатская», с большим Г-образным Enter и коротким Backspace. Русские буквы нанесены странным шрифтом (обратите внимание на вычурные формы К и Ж), раскладка напоминает «машинописную», со знаками препинания на цифровом ряду, но довольно сильно от нее отличается.
В общем, страшный noname — хотя нередко встречающийся в России, как показывают разные форумы клавиатурных маньяков:
Логично было бы ожидать, что в этой клавиатуре сэкономили на всем, чем можно — но… Для начала — это действительно механическая клавиатура, пусть даже и с совершенно безымянными переключателями (выяснилось, что произведены они тайваньской фирмой Tai-Hao).
Да, в середине 90-х «мембранные» клавиатуры еще не получили широкого распространения, и даже безымянные тайваньские производители использовали механические переключатели, не превратившиеся тогда еще в предмет своеобразного культа (скажем, никому тогда даже в голову не пришло бы сравнивать характеристики переключателей разных типов, работает — и ладно).
Но это еще не все! Обратите внимание на характерный двухцветный рисунок на обратной стороне клавиши:
Это означает, что латинские буквы и надписи на клавишах выполнены методом «двойного литья», или double-shot injection moulding. Метод довольно сложный и дорогой — сначала отливаются надписи из пластика черного цвета, затем эти отливки устанавливаются в пресс-форму для клавиши и заливаются пластиком серого цвета. Надписи получаются практически «вечными», не стирающимися даже при интенсивном использовании. Сложности очевидны — надо иметь комплект из сотни литьевых форм (для каждой клавиши) и специальное оборудование. В современных материалах на тему механических клавиатур так и пишут — «из-за цены только считанные производители делают такие клавиши». Здесь же, напомню, мы имеем дело с ширпотребным ноунеймом. Русские символы, правда, нанесены краской — скорее всего, сублимационным методом.
Ну и в качестве маленького дополнения — обратите внимание на конструкцию клавиши Enter:
У нее — аж два «стабилизатора», поперечной и продольной устойчивости. В какое бы место клавиши вы не нажали, она нажмется без каких-либо перекосов. Между прочим, установка ее — отдельное приключение, в основном — из-за этой пары стабилизаторов.
Любая современная клавиатура, хотя бы близко стоящая по характеристикам к этой, будет стоить от 100$ и выше, что автоматически переводит ее в категорию нишевых товаров «не для всех». Здесь же мы имеем дело с совершенно безымянным девайсом, но при этом с точки зрения качества стоящим намного выше любой «просто клавиатуры» в магазине.
В общем, остается заняться изготовлением переходника с пятиконтактного разъема DIN на что-то посовременнее.
UPD В процессе использования обнаружились некоторые нюансы, о которых стоило бы упомянуть. Из приятного — клавиатура заработала совместно с вот таким переходником (разъем клавиатуры я заменил на DIN):
Из менее приятного — оказалось, что клавиши «удвоенного» размера не снабжены стабилизаторами, и, к примеру, левый Shift при нажатии мизинцем иногда подклинивает. Посадочные места для стабилизаторов предусмотрены, остается только купить и поставить.
Приехала на днях демоплата от 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 она устроена похожим образом, и буферизацию чтения необходимо включать «вручную».
Скажите, желание перерисовать все стандартные библиотеки компонентов — оно нормальное, или надо душить в зародыше внезапно разыгравшийся перфекционизм?
Заказал недавно с 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 — благо китайский модуль с распаянной на нем микросхемой и обвязкой стоит смешных денег. Но что самое важное — это габариты устройства. Я прикинул, что используя даже обычный китайский модуль, можно запихнуть его внутрь корпуса «проходного датчика скорости» от ВАЗ — который легко устанавливается на большинство отечественных янг- и олдтаймеров. Естественно, что здесь можно предусмотреть и всю необходимую обвязку — какой-нибудь преобразователь питания и датчик Холла. Если не заморачиваться с установкой датчика на трос спидометра, а, скажем, прицепить его в районе болтов кардана или на тормозной щит — то можно побаловаться и с другими вариантами корпуса.
В общем, в будущем сезоне можно будет поиграть в увлекательную игру «надури техинспекцию» :)
Возникла у меня необходимость купить десяток вот таких разъемов:
Разъем «ходовой», обычно стоит копейки — 5-10 рублей даже в розницу — но не в этот раз. От цены на сайте я чуть не упал со стула — разъемы предлагали аж по 33 рубля штука! Над строчкой с ценой красовались надписи «Осталось более 100 штук» и «Ожидается поставка 100500 штук буквально завтра».
Логично предположить, что дело именно в том, что складские остатки выгребли практически подчистую, и подождать поставки большой партии — но ее так и не было, а сегодня, зайдя на сайт, я увидел эти же разъемы по 57 рублей с пометкой «Осталось более 80 штук».
Интересно, кому эти разъемы были нужны настолько, что он купил 20 штук за 660 рублей?
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? Что означает вот это страшилка?
Как вы думаете, что написано в разделе про цифровые выходы? «Если потыкать мультиметром в вывод с единичкой, то мультиметр покажит циферку 5; если в вывод с ноликом — то мультиметр покажет циферку 0. Это все, что можно рассказать о цифровых выходах».
Продолжаю изучать Texas Instruments CC3200. Хорошая штука, но… Я уже научился при взгляде на код определять, писали ли его настоящие 100% ковбои в перерывах между пальбой из Смит-Вессонов или низкооплачиваемые индусы, работающие по визе H1B, а при визитах на форум техподдержки — с недоверием относиться к ответам всяких Раджей и Кумаров.
Не могу не поприветствовать инициативы нового американского президента разобраться с погаными индусами, портящими имидж американской промышленности:
В одном прожекте возникла необходимость беспроводной передачи неприличного количества данных с АЦП. Даже в самых оптимистичных сценариях получалось, что придется гнать без проводов поток данных порядка 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). Хочется чего-то в таком духе:
Но все известные мне редакторы — чисто «векторные», и при экспорте в растровый формат результат смотрится не очень хорошо:
Видно, что линии менее четкие, толстые, да еще и переменной толщины — где в два, а где в три пикселя. Короче говоря, вопрос: как добиться вот такой же «пиксельной» картинки, как верхняя? Пока в голову приходит лишь вариант «взять Paint и рисовать самому», но может, есть какие-то более подходящие программы-рисовалки?
Практически довел до релиза свою программку для любительских ралли. Замутил сайт и уже радуюсь первым продажам. Есть, конечно, и огорчения — например, названием «Ралли-Навигатор» пользуются все, кому не лень — вплоть до всяких трофистов. Запомните — ралли — это когда на «девятках» гоняют по грунтовкам, а трофи — когда на УАЗах ползают по лесу. Это совершенно разные виды автоспорта и смешивать их не стоит (хотя после последних «1000 верст» возникли мысли об их взаимопроникновении).
Но в сравнении с «классикой» штурманских программ для любительского ралли у моей софтинки есть страшный недостаток — она работает на планшетах, где надо тыкать в экран пальцем — а попробуйте попасть в нужное место на экране трясущимися после вчерашнего руками, прыгая по кочкам так называемых «автодорог общего пользования»! Все «старые» программы предназначены для ноутбуков, где попасть по нужной кнопке несколько проще — но приходится решать проблемы типа питания ноутбука выпуска тыща девятьсот лохматого года с наглухо умершим аккумулятором.
Правда, нашелся один выход — использовать клавиатуру для планшета. Мне, например, очень понравился вот такой чехол:
На китайских сайтах подобные чехлы-клавиатуры стоят что-то около 10-12$. Напрягает другое — мне нужно порядка 10-12 часов непрерывной работы планшета с включенным Bluetooth, GPS, возможно, WiFi или сотовой связью. При питании от батареи такого не выдержит ни один из известных мне планшетов, то есть нужен постоянный доступ к зарядке. Но ни в одном из обзоров таких USB-клавиатур я не увидел порта USB, предназначенного для подзарядки подключенного планшета!
Вариант номер два — использовать Bluetooth-клавиатуру, но тут возникает еще несколько проблем. Во-первых, как китайский планшет отнесется к тому, что к нему по Bluetooth подключены два или три внешних устройства? Не будут ли они самопроизвольно отваливаться? Во-вторых, почему клавиатуры с Bluetooth так неприлично дорого стоят — до 30-40$?
В общем, не дайте пропасть, подскажите что-нибудь.
Цитату я взял из замечательного анекдота, прочитанного в комментариях у 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-адаптера. Практически, уже готов заплакать.