Category Archives: Python

Когда не хватает ног

Как часто у вас возникала проблема исчерпания ног у микроконтроллера?

Вот, вы стоите перед «чистым листом» нового грандиозного проекта и раздумываете какой корпус заложить в разработку:

— … сейчас мне надо раскидать 15 сигнальных цепей по ножкам (микроконтроллера). Хорошо. Заложим LQFP32. Ног вполне хватит и даже останется небольшой запас. Да, но ведь я, прожжёный (паяльником в нескольких местах) специалист, и я хорошо знаю, что потом, по мере развития проекта, ног всё равно не хватит. Поэтому заложу-ка я корпус побольше — LQFP48.

И, вот, проходит несколько месяцев, и тот же разработчик в задумчивости чешет над ухом пинцетом (или отвёрткой) и мысленно страдает:

— Эх! Надо было всё-таки заложить «кузов» на 64 ноги…

Читать далее

Делаем с удовольствием

Несколько лет назад в одной толстой книжке по Питону я прочитал весьма забавное утверждение — по какой причине следует использовать Python. Одной из причин было названо получение удовольствия. Ото ж!

Вот за что я всячески люблю и уважаю Линукс, так за то, что он доставляет массу удовольствия от работы с ним.

Вот смотрите, сейчас передо мной стоит задача — создать программно-аппаратную хрень, которая позволит дистанционно слушать эфир.

Ну, что значит «слушать эфир»? Ну, то есть слушать, что есть в эфире на частотах в диапазоне 2.4 ГГц. Для прослушивания этих частот был создан сниффер (такая коробочка с электроникой), который подключается к компу по USB. Сниффер работает на заданном канале и передает в комп «сырые» пакеты того, что он принял. Дальнейшей обработкой пакетов занимается комп.

А что значит «дистанционно»? Ну, это означает, что оператор может находиться не за тем компом, к которому подключен сниффер (где-нибудь в Воронеже), а где-нибудь далеко. Ну, скажем, в Лондоне. А ещё лучше наоборот! — Сидеть в Саратове и слушать что летает в эфире поблизости от штаб-квартиры М6. Не, ну это же прелестно, правда?

Ну, не важно! Шутки в сторону!

Читать далее

Коды резисторов по EIA-96. Прога на Питоне

Типичная ситуация: вы что-то делаете и внезапно вам встречается «закодированный» резистор. Нужно определить его номинал. Хотелось бы это сделать быстро, без лишних сложностей.

Вообще существует несколько способов решения этой задачи.

  1. Выучить эти таблицы Брадиса кодов и множителей
  2. Распечатать таблицы на листочке и приклеить его на стенку.
  3. Запустить на компе FireFox, наЯндексить сайт, которой позволит расшифровать код, зайти на сайт, ввести код.
  4. Дать компу команду на расшифровку, указав код резистора.

Здесь нет самого лучшего варианта. Лучший вариант определяется индивидуально каждым человеком на множестве его личных требований и предпочтений. Поэтому спорить о том, как это лучше делать, — не имеет смысла.

Читать далее

Python3. Байтовые последовательности

Питон в своём подходе к обработке данных ни разу не походит на классические языки программирования типа Си/C++, и этим объясняется одна из трудностей, почему Си-шники его не очень жалуют.

Тем, кто хочет сразу узнать суть, я рекомендую не читать всё, а сразу прокрутить в конец статьи.

Читать далее

Стартовый мини-проект. Последовательный порт

В практике разработчика микроконтроллерных систем периодически возникают ситуации, когда нужно начинать разработку нового проекта. Причем, зачастую бывает так, что новый проект на старте своего создания сильно совпадает с теми проектами, которые уже были когда-то реализованы. В таких случаях мне приходится поднимать архивы и пытаться въехать в то, что я когда сделал. Следует отметить, что чем сложнее (старый) проект, тем труднее в нём разобраться и «отрезать» всё ненужное, чтобы начать не совсем уж с чистого листа, а с какого-то проверенного работающего задела.

Таким образом, я пришел к необходимости иметь под руками набор стартовых мини-проектов. Сами по себе эти проекты никакой коммерческой ценности не представляют. Они годятся только в двух случаях — как стартовые проекты (для развития функционала в требуемую сторону) и для учебных целей (научиться или быстро вспомнить забытое).

В этой статье я описываю мини-проект, в котором микроконтроллер раз в секунду передаёт текстовое сообщение в компьютер по последовательному порту.

Читать далее

Кровать по фен-шую

Что делает разработчик, когда у него нет оплачиваемой работы, а просто так развлекаться — программировать микроконтроллеры и тыкать в плату паяльником — уже остопи… сильно надоело?

Правильно — он осваивает другие специальности, нанося непоправимый экономический ущерб в тех областях. Короче, я занялся разработкой и созданием деревянных кроватей из цельного дерева. Скажу сразу — по материалам получается раза в два дешевле, чем аналогичные магазинские. А что касается качества, то во всяком случае оно не ниже, так как задача «съэконмить на чём-то» не стоит. Наоборот, задача звучит примерно так «сделать на века, чтобы пользоваться могли не только дети, но и внуки». То есть качественно, надёжно и ремонтопригодно.

Прикол в том, что для расчёта кровати я применяю язык программирования Python. Это не шутка, это на самом деле так. На самом деле там очень простые расчёты.

Читать далее

Python на службе человека

Сижу, пишу проект. В проекте используется RS485 и протокол Modbus RTU.

Работа протокола Modbus RTU основывается на количественной оценке промежутков времени для того чтобы определять окончание посылки пакета. Если промежуток времени после приёма очередного байта в 3.5 раза превышает время передачи одного байта, то считается, что пакет принят полностью и теперь можно приступить к его обработке. Ничего сложного.

У меня в ТЗ прописано, что система должна работать с частотами 2400, 4800, 9600, 19200 и 38400 Бод. Требуется вычислить временной промежуток для всех этих скоростей. Всё просто.

Случись такая задача лет 10-20 назад, я бы взял бумагу, карандаш и калькулятор и быстренько бы нашёл эти времена. Но сейчас у меня под руками совершенно иные инструменты.

Читать далее

Зарядник Ni-Cd и Ni-MH аккумуляторов. 10.1

Это не есть отдельная тема, это — небольшой довесок к предыдущей статье.

Я уже сообщал, что я потерял ценные данные. Но, к счастью, на том нетбуке, к которому у меня подключен зарядник, я не успел почистить корзину. И на моё счастье там лежали нужные мне файлы. Ура!

В общем, вот графики разрядки-зарядки второго аккумулятора, который тоже, как и первый аккумулятор, динамил меня двое суток.

Читать далее

Ба, знакомые лица!

И ты, Брут, тут?

RFID-ридер на 13.56 МГц

 

Читать далее

Зарядник Ni-Cd и Ni-MH аккумуляторов. 1

В каком направлении двигаться?

За неделю я привел программы и схему зарядника в более-менее потребное состояние. Про изменения и найденные ошибки расписывать не буду — эта грязная кухня никому не интересна. А вот то, что начало получаться — уэлкам!

Читать далее