Передовое штурманское оборудование сезона-2019, часть 2

Тем временем приехал трафарет из OSH Stencils, а это значит, что платы для нового Bluetooth-адаптера я теперь могу собирать быстро и без особого геморроя.

bletrip

Смешного вот напишу

На прошлой неделе три дня промучился с отладкой вроде бы простейшей прошивки для очередного девайса. Если просто – приборчик должен был делать что-то несложное по прерыванию на одном из входов CC2541 и одновременно работать Bluetooth-beacon’ом – казалось бы, что может быть проще? Но я допустил совершенно идиотскую ошибку – перепутал номер порта в обработчике прерывания, написав вместо

HAL_ISR_FUNCTION( drdyHandler, P0INT_VECTOR )

вот такую штуку:

HAL_ISR_FUNCTION( drdyHandler, P1INT_VECTOR )

Что забавно – обработчик прерывания работал (и поэтому был вне подозрений), а вот Bluetooth порой валился с совершенно невнятными ошибками. Все дело в том, что векторы прерываний портов идут подряд, просто “по умолчанию” на месте вектора прерывания оказывается вполне себе допустимая инструкция

MOV R7,A

Она выполняется, выбирается следующая за ней – это инструкция перехода к обработчику другого прерывания, и все почти хорошо – если бы при этом не портился регистр R7. Именно это и приводило к непредсказуемым глюкам.

dаVи по dS

На прошедших выходных прошло ралли “На 7 холмах” – второй этап кубка РАФ по ретро-ралли. Среди прочих развлечений участников ждало дополнительное соревнование на регулярность движения, где средняя скорость задавалась не привычным способом в виде “процентов от ПДД”, а была пропорциональна пройденному на секторе расстоянию.

dk

Например, здесь сразу от старта задана средняя скорость, равная 6,67*5=33,35 км/ч, и при проезде каждых 200 метров дистанции она возрастает на 1 км/ч. Название дополнительного соревнования как бы подсказывает, что для точного расчета норматива штурману придется решить несложное дифференциальное уравнение – перепишем формулу из дорожной книги, учитывая, что скорость – это производная от пути:

f

Как известно, решением этого уравнения будет экспоненциальная функция:

f1

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

f2

Пусть мы проезжаем точку с расстоянием s1 в момент времени t1, а точку с расстоянием s2 – в момент времени t2. Запишем для них предыдущую формулу, немного ее изменив:

f3

f4

И вычтем одно из второго, при этом t0 в левой части сократится, а разность логарифмов в правой части заменим на логарифм частного:

f5

f6

Тут стоит обратить внимание на то, что время при расчетах выражено в часах, расстояния – в километрах, а скорости – в километрах в час. Если с расстояниями и скоростями все в порядке, то оперировать при расчете норматива часами немного затруднительно – поэтому последнюю формулу можно переписать для расчета норматива, выраженного в секундах:

f7

Приведу пример расчета по этой формуле – пусть точка старта у нас находится на расстоянии 1,5 км от начала сектора, точка финиша – 5 км от начала сектора, а коэффициент k равен 10 (то есть заданная скорость в момент старта равна 15 км/ч, а к финишу возрастает до 50).

f8

Получается, что весь этот участок надо проехать за 7 минут 13 секунд.

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

Если штурман едет, используя для расчетов табличку в Excel – то в этом случае не составит труда ввести в нее расчетную формулу с логарифмом. Главная трудность здесь – это переносить расстояние с одометра в компьютер.

Можно ехать в духе “соревнований по кнопкодавству”, часто меняя заданную скорость в штурманской программе (типа “Чайного навигатора” или TSD Navigator, с которым и ездят сейчас все призеры ретро-ралли). Например, если на этом же РД менять скорость с шагом 10 км/ч каждый километр, то норматив получится таким:

1km

Вместо 7 минут 13 секунд получилось 8 минут 30 секунд – не очень хорошо, но что, если штурман может жать на кнопки быстрее и меняет заданную скорость каждые 500 метров?

500m

478 секунд, уже лучше – и поверьте мне на слово (ну или можете самостоятельно посчитать в том же Excel), что если штурман – истинный виртуоз своего дела и жмет на кнопки каждые 100 метров, то норматив будет равен 441 секунде, что отличается от идеального времени на 8 секунд.

Ну и наконец – лучше всего найти штурмана, закончившего мехмат, ВМК или физтех, например – так как возможны и новые шутки от организаторов.

Выборы-выборы, кандидаты-пидоры!

Я за выборами в Мосгордуму не слежу, тем более за округом Хамовники – но было бы интересно узнать мнение читателей блога, кто круче – флюгегехаймен или “Соболь” (не животное)?

sobol-vs-flugegeheimen

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

А вот чего-нибудь более приземленное напишу

Что-то у меня третья запись подряд про Bluetooth, так что напишу-ка я лучше о том, как самому в домашних условиях сделать недорогой BLE-маячок из деталей с алиэкспресса :) Действуя в режиме максимальной экономии, за основу возьмем модули на чипах CC2540/CC2541 (нормальные люди тут скажут, что надо брать Nordic Semiconductor, это все-таки ARM, а не убогий 8051, на что мы, как идейные нищеброды, им возразим – CC254* на две копейки дешевле!).

Итак, в качестве основы для маячка (или что вы там делаете, включая вибратор с Bluetooth) предлагаю взять китайские модули, известные под названием HM-10 или HM-11. Их (и совместимых) есть несколько версий, выглядят они примерно так, ищутся на али поиском по слову CC2541 и стоят где-то 1,5-2$:

modules

Некоторые из этих модулей уже распаяны на переходной плате для ардуинщиков, штука это довольно бессмысленная и в целом не нужная. А вот на другой момент стоит обратить внимание – стоит ли на плате “часовой” кварц на 32768 Гц? Если нет – то сделать на этом модуле без доработок (надо установить кварц и пару конденсаторов по 15 пФ) устройство, живущее в “спящем” режиме и “просыпающееся”, скажем, раз в несколько секунд для того, чтобы плюнуть в эфир пакет со своим advertisement (собственно, так работают все эти “маячки”) не получится.

Для прошивки можно использовать любой микроконтролер, переписав для него digitalWrite() и прочие sleep() из вот этого ардуиновского проекта:

https://github.com/RedBearLab/CCLoader

- но очень рекомендую купить на том же алиэкспрессе “настоящий” отладчик – точнее, его клон, правильный CC-Debugger стоит 49$, и при этом ничем не отличается от своего аналога с алиэкспресса (8-10$) – благо схема и прошивка находятся в свободном доступе:

ccdebugger

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

Для написания своих прошивок понадобится IAR Embedded Workbench для микроконтроллеров с ядром 8051 – и здесь надо посоветовать дождаться прихода с алиэкспресса всего барахла, так как “оценочная” лицензия (free trial) привязана к железу ПК и действует лишь 30 дней. Нет, есть, конечно, довольно известный эмулятор штуки баксов – но где он лежит, я и сам не знаю.

Кроме того, нужен будет BLE Stack версии 1.5.0, вместе с ним идет кучка примеров – фактически, заготовки для прошивок, реализующих стандартные BLE-профили. Если вам нужна HID-клавиатура, пульсометр или велосипедный датчик пробега – то они готовы и ждут вас в составе SDK. Впрочем, и более нестандартные устройства делаются буквально по пошаговой инструкции “делай раз, делай два”, приведенной в Software Developer’s Guide.

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

PS Реальные пацаны используют, разумеется, Nordic Semiconductor и на все эти пляски с бубном смотрят с презрением.

Bluetooth и приватность

Вот New York Times пишет:

https://www.nytimes.com/interactive/2019/06/14/opinion/bluetooth-wireless-tracking-privacy.html

Если коротко – несколько рекламных компаний занимаются отслеживанием местоположения пользователей мобильных приложений с помощью Bluetooth-маячков. Скажем, встроенный в “фирменное” приложение какого-нибудь там Walmart модуль может определить, в каком отделе какого магазина находится пользователь, прислать подходящую рекламу, ну и так далее.

В статье написано, правда, что точность определения местоположения через Bluetooth составляет единицы сантиметров – честно говоря, не уверен в этом (хотя кое-какие наработки на эту тему есть в стандарте Bluetooth 5.1, и производители уже заявляют о поддержке этих нововведений – раз, два, три). Но в любом случае, даже обычный Bluetooth 4.0 позволяет определять расстояние до, скажем, мобильного телефона пользователя с точностью до метров (просто по RSSI – то есть мощности принимаемого сигнала). В общем, прогресс в рекламном деле впечатляет.

Заодно – немного о стоимости этих “маячков”. Простой “маячок” на дешевом чипе типа CC2541 (Texas Instruments) обойдется в 2$, более сложный на чем-то типа CC2640 (Texas Instruments) или nRF52811 (Nordic Semiconductor) – в 5$, работать на батарейке типа CR2032 они смогут в течение довольно длительного времени – год-два выглядит вполне реалистичной оценкой. Закидать ими территорию, к примеру, большого ТРЦ – довольно несложное и недорогое мероприятие.

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

Формирование учебных компетенций по программе критериального оценивания через дескрипторы

descriptor

Кто найдет знакомое слово – пишите в комменты.

О – Оптимизм

osal_isr_register

Комментарию про “when functionality is complete” – уже семь лет. Впрочем, не первый раз замечаю за Texas Instruments такой подход – выкинуть “в окружающую среду” какие-то элементарные примеры работы с их микроконтроллерами, а на развитие и поддержку этого всего забить.

Новости суверенного интернета

Ну что, чуваки, кто тут орал, что закон об устойчивости Рунета/о суверенном Рунете (в зависимости от политических предпочтений) мешает ему жить? Кушайте, не обляпайтесь:

трафик с сети Вымпелком на ВКонтакте и МэйлРу распространяется через европейские стыки

https://habr.com/ru/post/456078/

Желаю всем участникам конфликта ощутить в очке большой мозолистый хуй Роскомнадзора.

Про стартапы

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

http://flashsafe.ru/

Глаза вытекли уже на “предисловии”.

PS О содержании отдельный разговор, там каждая фраза – готовый facepalm.

UPD Пост на пикабу, показывающий ситуацию с другой стороны: https://pikabu.ru/story/beskonechnaya_fleshka__startap_porusski_5783248.

Передовое штурманское оборудование сезона-2019

Картинка как бы намекает, что в ближайшем будущем всем известная “серая коробочка” слегка выйдет из моды.

ble-trip-early-preview

Из плюсов:

- совместимость как с датчиками “от десятки”, так и с индуктивными датчиками “от терратрипа”;
- компактные размеры;
- удобный для монтажа силами автомехаников разъем (практика показала, что шлейф с IDC вызывает у этих мужественных людей некие затруднения);
- энергоэффективный протокол Bluetooth Low Energy.

Следите за обновлениями.

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

Русский перевод The Art of Electronics

Зашел тут на днях в книжный магазин и увидел красивое свежее издание Хоровица и Хилла. Взял полистать – на первый взгляд ничего, но наткнулся глазом на фразочку – “подробнее мы рассмотрим это в 12-й главе” – а было написано это уже в конце книги. Посмотрел оглавление – опа, а 12 главы нет, есть только 9 или 10! Решил уточнить вопрос – и оказалось, что “Бином” уже давно печатает “так называемое 7 русское издание” – урезанный вариант того, что переводилось еще издательством “Мир”. Хорошо, что не купил!

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

Как просрать 30 килобаксов на Firebase

Замечательную историю про программистов-недоучек нашел:

https://medium.com/@PurpleGreenLemon/how-not-to-get-a-30k-bill-from-firebase-37a6cb3abaca

Ребята знают модные слова Angular и Firebase, но не привыкли задумываться об алгоритмической сложности – пока не столкнулись с задачей, где буковки O(n2) превращаются во вполне реальные доллары.

Парадокс

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

Дарю идею

Сервис “Яндекс.Елда”.

Атлас новых профессий 3.0

Пишут, что готовится новая версия “Атласа новых профессий”. Более того,

Мы изменили стиль повествования – материал подается через короткие увлекательные истории про путешествие девочки-подростка в мир будущего.

Я так чувствую, что в одной из “коротких увлекательных историй” героиню ждет встреча со специалистом-сквиртологом. А если нет – мы допишем :)

Еще про 3D-печать

Было:

3dprint-before

Рисуем:

3dprint-paint

Стало:

3dprint-after

Всего – час рисования, два часа печати, и 3,5 кубических сантиметра полимера. Можете прикинуть себестоимость детали.

А я вот что-то за санкциями не слежу

Тут с удивлением обнаружил, что в Компэле/Терраэлектронике/Электронщике куда-то внезапно пропали почти все MSP432, да и вообще, для многих деталей TI показывается “товар отсутствует на складах”. Трамп что-то отжег или чего?

Посадил на бутылку

chicken-on-the-bottle

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

Забанили в инстаграме

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

skolkovo-luntik

Побывал, например, в Сколково. Обратил внимание на фиолетового уродца – кто это такой и почему здесь стоит? А потом понял – это же Лунтик! Действительно, почему бы не поставить в “Инновационном центре Сколково” памятник основателю?