Архив июня 2019

Передовое штурманское оборудование сезона-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 минуту.