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

А вот посоветуйте книжек

Насоветовал тут в фейсбуке кучку книжек по программированию микроконтроллеров:

https://www.facebook.com/tikhonovruslan/posts/2193043937400492

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

  • Что такое микроконтроллер? (опционально – что такое ARM, Cortex, STM32 и так далее)
  • Устанавливаем среду разработки (без нее вот просто никуда, даже светодиодом не поморгать без Keil)
  • Пишем простейшую программу (тут половина читателей отваливается, потому что даже “простейшая” программа требует шаманства в виде настройки тактирования, и идет делать сайты на PHP)
  • Работаем с GPIO
  • Работаем с таймерами
  • Работаем со всякой остальной периферией
  • Тема для продвинутых – что такое DMA и как с ним жить
  • Тема для очень продвинутых – как в CubeMX накликать в проект FreeRTOS

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

В общем, что есть хорошего на эту тему “для продолжающих”, с описанием принятых “лучших практик”?

Чип-и-Дип обрадовал

Заказывал я в их интернет-магазине полтора года назад какие-то детальки. Не помню уже, под какой проект – но с трудом наскреб на 300 рублей (минимальный заказ в интернет-магазине). Помню зато, что они слегка облажались – положили пустую ленточку с какими-то резисторами (видимо, отрезали от заправочного конца в катушке). Ну написал я им тогда, пожаловался и забил – ну не поеду я туда второй раз ради двух десятков резисторов распространенного номинала.

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

Интересные представления о разработке для встраиваемых систем

embedded-developers

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

Про автомобильную (и скорее даже автоспортивную) электропроводку

Много умных слов и красивых картинок про выбор проводов, разъемов, термоусадки, инструмента, ну и так далее:

https://www.rbracing-rsr.com/wiring_ecu.html

На выходе получается вот такая красота:

wire-harness

Вот люди электросчетчик сделали

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

energymon

Разумеется, это “не только счетчик” – раз уж тут стоит микроконтроллер, то его стоит “загрузить” дополнительными задачами, так что здесь есть еще “мост” USB-UART и совместимый с CMSIS-DAP отладчик (а заодно можно использовать устройство в качестве электросчетчика в домике Барби, по масштабу подходит идеально). Это все крутится под управлением довольно нетривиальной прошивки – тут вам и срабатывающий раз в 3 микросекунды АЦП, и выдаваемые с периодичностью в 10-100 миллисекунд данные об энергопотреблении, и обновляемый раз в секунду экранчик – в общем, от написанной в стиле “бесконечный цикл” прошивки DAP42 здесь получается практически настоящая, но очень маленькая RTOS.

Да, не все пока работает идеально гладко (тем более, что основной упор при разработке делался на мониторинг энергопотребления, а мост USB-UART и отладчик – это “бонусы”) – но исходники открыты и выложены на гитхаб, так что при желании в них можно покопаться (чем я и занимаюсь сейчас, пытаясь добиться работы этого всего в полном объеме с некоторыми микроконтроллерами TI):

https://github.com/unwireddevices/dap42

Больше всего мне интересно, конечно, другое – рано или поздно в любом проекте на микроконтроллере “вырастает” несложная RTOS (собственно, с UMDK-ENERGYMON это уже случилось). А вот в какой момент там появится “заново написанная, неспецифицированная, глючная и медленная реализация половины языка Common Lisp”? Впрочем, парсер консольных команд уже есть.

Радиоприемник купил

Вот такой примерно:

rtlsdr

Internet of Shit

internet-of-shit

Тем временем на хабре – новая волна срача “UNB vs LoRa”.

Пара околотехнических мыслей

Ковыряясь тут с 3D-принтером, между делом осознал, что прогрессу в фотополимерной 3D-печати мы обязаны моде на мобильники-лопаты. Экранчик в том же Wanhao D7 – это же чистой воды экран от мобильника-переростка или небольшого планшета, а его разрешение – 2560×1440 – кажется большим по “компьютерным” меркам (да, не до всех еще дошли 4k-дисплеи), но в мире мобильных устройств 5,5-дюймовый экран с таким разрешением вполне себе обычен. Яндекс.Маркет прямо сейчас показывает мне пару десятков вариантов стоимостью от 9990 до 149000 рублей – впрочем, в последнем случае деньги явно берут за буковки Lamborghini, а стоимость более адекватных телефонов заканчивается на отметке около 36000.

И второй момент – осознал, что существует некая категория техники, где проще/дешевле/etc собрать электронную начинку из готовых модулей (как аппаратных, так и программных), обильно залив их термоклеем. Собственно, этот самый Wanhao так и сделан. Что там внутри? Ардуйня плата на AtMega 2560, управляющая шаговым двигателем и светодиодом подсветки (прошивка – что-то от энтузиастов 3D-печати, незначительно доработанное), да еще и преобразователь HDMI в интерфейс дисплея (который, кажется, называется MIPI). Что особенно забавно – на плате преобразователя стоит STM32F103, уделывающий ту атмегу если не по всем параметрам, то по большинству, и что-то мне подсказывает, что он тупо большую часть времени ничего не делает. Все это соединено тучей кабелей, обильно политых термоклеем – чтобы не вываливались. Судя по обсуждениям в интернетах, случайные отваливания проводов при транспортировке – обычное дело.

В модели Plus к этому всему добавляется микрокомпьютер (китайское поделие по мотивам Raspberry Pi), который в свою очередь может управлять ардуйней и выводить картинку по HDMI. Все опять же собрано на соплях из термоклея. Смешно? И я тоже было подумал, что гораздо проще было бы собрать это все на каком-нибудь мобильном чипсете, в качестве бонуса получив снижение числа компонентов. Не надо было бы возни с преобразователем из HDMI в MIPI – любой MTKшный мобильный чипсет будет управлять дисплеем напрямую. Не надо городить дополнительный контролер для дисплея с тачскрином на передней панели. Наконец, не нужна гора отваливающихся кабелей. Но если подумать еще немного – то тираж даже такого популярного 3D-принтера, как Duplicator 7, вряд ли сравнится с тиражом даже самого простенького мобильника – а еще не забываем затраты на слегка экзотический софт (сомневаюсь, что кто-то в здравом уме управлял шаговыми двигателями из-под Android).

Если брать шире – то масса китайской “околохоббийной” техники – те же 3D-принтеры, механические клавиатуры, всякая вот такая ерунда – мало чем отличаются от творчества кружка “умелые руки”. Встроенная в них электроника недалеко ушла от тех же ардуин, на которых сделаны прототипы – поэтому и возникают такие шедевры, как, скажем, клавиатура на дорогущем микроконтролере стоимостью от 5$ (ребята явно не заморачивались вопросами себестоимости и попытались сделать что-то по мотивам Teensy). Впрочем, при цене в 275$ за клавиатуру обычные представления об экономике не действуют.

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

А кто в продукции Техасского инструментального завода разбирается?

У нас был ARM Cortex M4F с частотой 120 МГц, 256 килобайт SRAM, мегабайт флеша, 6 килобайт EEPROM, а еще восемь UART, четыре QSSI, десять I2C, USB 2.0, встроенный Ethernet и два контролера CAN. Не то, чтобы все это было нужно в готовом устройстве, но раз начал коллекционировать Launchpad’ы, то иди в своем увлечении до конца. Единственное, что меня беспокоило – это Ethernet. В мире нет ничего более беспомощного, безответственного и безнравственного, чем Ethernet на микроконтролере. И я знал, что довольно скоро мы в это окунёмся.

А если серьезно – чем отличаются TM4C1294NCPDT и MSP432E401Y?

Контекстная реклама

Очень хорошо выглядят комиксы про Дилберта, перемежаемые контекстной рекламой Texas Instruments.

Про кнопачки

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

arcade-button

Внутреннее устройство переключателя – почти стандартное для китайских и тайваньских клонов Alps, разве что подвижный контакт тут почему-то состоит из двух деталей (на Deskthority такой вариант не встречается):

alps-clone-internals

Очень похожие кнопки продаются на Aliexpress по цене что-то около 30-50 рублей за штуку (в зависимости от количества): https://ru.aliexpress.com/item/30/32886768751.html. Если вам зачем-то могут понадобиться китайские “клоны Alps” – то вроде бы годный вариант.

Да, стоит, наверное, предупредить, что надписи 16А/250V в прайсе ЧиДа верить не надо.

ЭЭГ на Ардуине

Что-то мне в последнее время полюбился тег “запретите им” – так что продолжу.

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

Мнение нормального человека об этой вашей ардуине

Хочу заметить – пишет не “электронщик” ни разу:

Arduino тупиковая ветвь учёбы. Счётные палочки мейкерства. Есть чуваки, умудряющиеся этими палочками пейзажи рисовать, зажав коленом, но такой фанатизм не для всех.

https://felixit.blog/2018/10/02/pro-arduino/

Быдлоэлектронщики

make-me-unsee-it

Истратив законный выходной на борьбу с “творчеством” (на картинке – если что, я не прикасался к этой плате, ко мне она уже попала в таком виде) одного такого товарища – задумался, а какие признаки просто кричат о том, что связываться не стоит? Навскидку родил такой вот список:

- использование модулей типа Arduino, Blue Pill и им подобных в качестве составных частей изделия;
- закупка компонентов на Aliexpress;
- нежелание пользоваться системами “сквозного” проектирования схемы и печатной платы;
- кустарно изготовленные печатные платы;
- монтаж с применением припоя ПОС-61 и флюса ЛТИ-120.

Что еще добавить?

Про хранение радиодеталей вопрос

Вот предположим, что хочется мне удобно хранить небольшой запас выводных резисторов – допустим, по 10-15 штук каждого номинала из ряда Е12 (всего около 60 разных номиналов – за основу взят давным-давно купленный набор Velleman). Правильно ли я понимаю, что человечество не придумало для этого ничего дешевле и удобнее спичечных коробков?

Электротехника по-чешски

cz-electric

Понятно без перевода.

Идея для стартапа

Как продать китайский модуль на ESP8266 (500 рублей в Москве, 100 – на Алиэкспрессе) за 150$:

https://shop.openbci.com/collections/frontpage/products/wifi-shield

Себестоимость устройства по ссылке – что-то около 10$. Ребята перекрыли свое предыдущее достижение.

Быстрый старт ардуиносрача с ARM Mbed для начинающих

https://habr.com/post/420435/

Комменты – огонь!

Интернет вещей, комменты

iot-comments

Поддерживает ли ваша система умного дома непринужденное общение между экономичной лампочкой и унитазом с замашками тролля?

Таймеры здорового человека (не на ардуине)

Если вы еще не видели очередного ардуиносрача на хабре – читать тут:

https://habr.com/post/413779/

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

Вот, скажем, в комментариях автор с гордостью заявляет – мол,

типовое время задержки в системе составляет 10 мс (но пиковые задержки могут быть значительно больше и не нормируются)

- и более того,

на реальных задачах это особой роли не играет потому, что 99,(9) процентов времени в системе остаются типовые задержки

Вы примерно представляете себе, что такое 10 мс? Это примерно до хрена, если речь идет о несложной, в общем-то (но абсолютно реальной) задаче типа управления инжекторным двигателем – целый оборот коленвала при 6000 оборотах в минуту. За это время надо:

- открыть форсунки;
- закрыть форсунки (выдержав требуемое время впрыска);
- в нужный (с точностью до десятков микросекунд) момент жахнуть искрой в нужную пару цилиндров;
- прикрыть или приоткрыть регулятор холостого хода;
- сделать еще кучку полезных дел – например, считать показания десятка аналоговых датчиков (ну ладно, в конкретном цикле – можно обойтись и двумя, ДМРВ и ДПДЗ) и пересчитать параметры работы двигателя (время впрыска, опережение зажигания и так далее);

И это не какие-то там нереальные космические нанотехнологии, это в каждом сраном Жигуле стоит и надежно работает (на убогом SAF C509). Не знаю, конечно, как оно сделано в том же Январе или Микасе, а вот исходники MegaSquirtAVR вполне доступны для изучения (после минимальной гуглежки) и там ничего ужасного нет – в общих чертах, кстати говоря, это повторяет материал обсуждаемой лекции (где-то с 1:16:46). В системе поддерживается очередь событий (типа “открыть группу форсунок такую-то”, “закрыть группу форсунок такую-то” и так далее), в нужный момент (скажем, в верхней мертвой точке – она определяется по датчику положения коленвала, или при определенном угле поворота того же коленвала) очередная пачка событий со временами их срабатывания добавляется в очередь. Один из таймеров, “тикающий” с периодом в 4 микросекунды, начинает отсчет до ближайшего события, а при срабатывании прерывания, во-первых, выполняется связанный с событием код (довольно элементарный – “дернуть” одной из ножек микроконтролера), и во-вторых – начинается отсчет времени до следующего события из очереди. Все это работает на AtMega128 – и по отзывам, работает вполне неплохо.

Скажете, не всем надо управлять инжекторными двигателями? Хорошо, расскажу тогда про мой первый проект на микроконтролере – идейно, кстати говоря, очень похожий. Сделан он был, правда, не на AVR, а вовсе на PIC, и представлял собой PPM-кодер для аппаратуры радиоуправления. PPM – или Pulse Position Modulation – это распространенный стандарт, позволяющий “упаковать” сигналы для нескольких (до 8) сервомашинок в одну “посылку” длительностью около 20 мс. Принцип формирования (точнее, декодирования) PPM-сигнала показан на рисунке:

ppm-decode

Декодер, кстати говоря, делается на одной микросхеме CD4017 – схема есть тут (оттуда же я уволок и картинку выше):

http://rconline.ru/modules/smartsection/item.php?itemid=49

Длительность “посылки” составляет 20 мс, пауза между импульсами каждого из каналов – 0,3 мс, а длина каждого из “канальных” импульсов – от 1 до 2 мс (считая вместе с паузой). Для восьмиканальной (максимально доступное количество каналов в PPM-аппаратуре) длина синхроимпульса составит 4 мс. Кстати, теперь понятно, почему сервомашинки управляются таким, на первый взгляд, странным образом?

Так вот, имея “в активе” PIC16F72 с АЦП и прочитанные пару глав из самоучителя Корабельникова (не смейтесь – но 11 лет назад в жанре “введение в микроконтролеры для чайников” выбор был между слегка упоротым Корабельниковым и полностью шизофреническим 123avr) я соорудил вполне приличный кодер для PPM-сигнала, поддерживающий до 8 каналов с 8-битным разрешением (для аппаратуры радиоуправления 8 бит – уже неплохая разрядность, в самой дорогой аппаратуре можно встретить 10-битные АЦП). Опять же, все очень просто – запускаем таймер с частотой 10 МГц (для удобства счета), и радостно пользуемся тем фактом, что один отсчет этого таймера – это в точности 0,1 микросекунды. При срабатывании прерывания таймера – просто загружаем в него либо значение, соответствующее длительности паузы, либо заранее вычисленную длительность “сигнального” импульса. Немного сложнее, чем генерация обычного ШИМ на том же таймере – но принцип примерно тот же.

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

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