Как размножаются фрезеры, часть следующая

Собрал сегодня привод одной из осей будущего SMD-расстановщика, вроде ездит, и может ездить довольно шустро. Следующий этап — и похоже, только где-то ближе к майским — «голова».

Пока ко мне едет «доска для смузи» — точнее, Smoothieboard — погонял двигатели от того же фрезера (обычный китайский 3018 с GRBL), на котором пилил детальки.

Как же я люблю алиэкспресс

Вот, например, продают там некий SMD-расстановщик — конструкция уровня «продвинутый любитель», но нечто подобное многим интересно:

https://aliexpress.ru/item/1005002328161355.html

И все было бы, может быть, неплохо, если бы не одно «но» — все картиночки в описании товара утащены с краудфандингового сайта, на котором уже несколько лет доверчивую публику кормят завтраками:

https://www.crowdsupply.com/citrus-cnc/simplepnp

Есть полумертвый гитхаб проекта, но что-то мне подсказывает, что ни китайцы, ни разработчик «оригинала» особо не собираются выполнять свои обещания.

Вот еще вопрос про этот ваш embedded

Есть у нас в России довольно немалое количество контор, занимающихся серьезным программированием для встраиваемых систем всех видов, цветов и размеров — от мелких смешных фирмочек в два с половиной человека до гигантов с сотнями программистов типа Инкотекса или Ителмы. Так вот, глянул я на современных студентов — и малость офигел. Как бы не секрет, что можно закончить считавшийся в прошлом приличным ВУЗ, будучи закоренелым ардуинщиком — слышал о таких прецедентах в Бауманке и в МИЭМе (этим даже делился).

В чем беда? «Ардуинщик» от нормального программиста встраиваемых систем отличается тем, что его основные приемы работы сформированы убогим детским конструктором, а многие «полезные приемы» из мира Arduino — это попытки криво и косо эти ограничения обойти. Нет в Arduino нормальных таймеров (нет, не рассказывайте тут про TimerOne — он только на AVR поддерживается)? Не беда! Запихнем программу в loop и будем проверять значение, которое возвращает функция millis(). Совершенно отсутствует у «ардуинщиков» понимание того, что в любой приличной встраиваемой системе рано или поздно прорастает полноценная многозадачность (да, некоторые очень продвинутые притаскивают на Arduino FreeRTOS — но это уже первый шаг к пониманию того, что ардуина не нужна), полностью нет «многопоточного» мышления (а оно нужно даже в том случае, если вы активно используете прерывания — даже без RTOSа). Сама по себе убогость Arduino провоцирует написание кода, местами идущего «поперек» принятых в нормальном программировании для микроконтроллеров вещей. «Сообщество Arduino», которое так любят фанаты «платформы», превращается в этом случае в настоящее «ведро с крабами» — новичку быстро объясняют, что нечего и пытаться вылезти за пределы «платформы», так и надо жить с убогой IDE, примитивным hardware abstraction layer и китайским наколеночным конструктором.

Вот так, например, в мире Arduino принято бороться с дребезгом кнопки (ну есть еще библиотека GyverButton, но это еще более страшно) и передавать значения из прерывания:


char outputState = 0;
char lastState = 0;

void loop()
{
/* Skipped some code */
  // Now we can publish stuff!
  if (outputState != lastState) {
    lastState = outputState;
    Serial.print(F("\nSending state val "));
    Serial.print(outputState, BIN);
    Serial.print("...");
    if (! onoffset.publish(outputState)) {
      Serial.println(F("Failed"));
    } else {
      Serial.println(F("OK!"));
    }
  }
}

void handleInterrupt() {    //works when button pressed
  static unsigned long last_interrupt_time = 0;
  unsigned long interrupt_time = millis();
  if (interrupt_time - last_interrupt_time > 200)
  {
    if (outputState == 0) {
      outputState = 1;
      digitalWrite(LED, LOW);
    }
    else {
      outputState = 0;
      digitalWrite(LED, HIGH);
    }
  }
  last_interrupt_time = interrupt_time;
  delay(100);
}

Покажите это знакомым программистам встраиваемых систем, пусть они ужаснутся.

Собственно, вопросов два, первый простой: а как устроен «входной фильтр», отсекающий ардуинщиков, закинувших резюме в приличную контору? — а второй посложнее: как вообще такой «приличной конторе» жить, когда отечественное околоайти-образование превращается из подготовки специалистов в полную профанацию, подготовку профессионалов по сборке Лего из конструктора?

Дети, изучайте ардуину

С «умной теплицей» на ардуине вы можете сделать очень многое:

— получить дополнительные баллы к ЕГЭ и поступить в престижный ВУЗ на востребованную околоайтишную специальность;
— поучаствовать во всяких хакатонах и конкурсах для студентов;
— защитить в ВУЗе на отличную оценку «проект», курсовую и дипломную работы;
— и все это — с одной и той же поделкой из кружка «Юный ардуинщик!»

Хроники чипагеддона

Читаю на днях фейсбучную ленту. Крупный производитель аэронавигационного оборудования развлекается тем, что меняет в своей продукции один китайский модуль с модемом LoRa на другой — потому что первый с Алиэкспресса пропал, а второй нашелся в каких-то московских магазинах «для ардуинщиков«. Изобразил фейспалм, посоветовал покупать не китайские поделия, а SX1276 в Компэле (они там есть во вполне товарных количествах), и пошел читать твиттер.

В твиттере наоборот — восхищаются развитием китайской электронной промышленности. Развитие выражено в том, что на алиэкспрессе можно купить мелкими партиями микроконтроллеры Holtek и Dialog, да еще и по совершенно бросовым ценам. О том, что продавцы с али продают обычно неликвиды с производства или даже буквально мусор с разобранных плат (а сами Holtek и Dialog с розницей вообще не связываются, нахер им это надо) — китаелюбивые твиттерские предпочитают не думать.

И вот из всех этих проблем «продвинутых хоббистов» — а дальше такая околоэлектронная мелочь не вырастает — строится лютейшая конспирология про «дефицит полупроводников» (да, он есть — но выглядит совсем не так, как кажется посетителям Митинского радиорынка).

Low IQ

Пересказали прекрасный диалог, состоявшийся в одной из фирм, занимающейся контрактной разработкой и мелкосерийным производством электроники. Во многих их устройствах применяются стабилизаторы напряжения NCP512 — не знаю, почему (ничего особо выдающегося там нет), скорее всего — потому что когда-то купили бобину на 100500 штук.

Все шло хорошо, пока одному из заказчиков не потребовался BOM (bill of materials, перечень элементов), сделанный по его, заказчика, отраслевому стандарту — с описанием каждой поганой детальки. Ну напротив резисторов-конденсаторов его написать легко, а вот с микросхемами пришлось помучиться, банальные слова Integrated circuit заказчика не устроили. Где взять небанальное описание? Разумеется, из первой строчки даташита! Но после копирований-вставок из pdf в Excel и обратно прекрасная фраза

LDO Regulator, 80 mA, Low Dropout, Low Iq

превратилась сначала в

LDO Regulator, 80 mA, Low Dropout, Low Iq

а потом и вообще в

LDO Regulator, 80 mA, Low Dropout, Low IQ

— видимо, в последнем случае какая-то очередная автозамена что-то слышала про тест Айзенка.

Когда документы уже были готовы для отправки заказчику, кто-то засомневался — а стоит ли писать, что у нас компоненты такие, с низким IQ? Решили уточнить у инженеров, позвонили и спросили:

— А что такое NCP512?
— Да стабилизатор напряжения тупой, мы их везде ставим!

Сопоставив слова инженеров про «тупой» и low IQ, продажники крепко задумались — и решили от греха подальше упоминания про low IQ из отправляемых заказчику документов исключить.

Introduction to Embedded Systems — A Cyber-Physical Systems Approach

Прекрасная, просто замечательная книжка.

Во введении и первой главе наивного читателя заманивают рассказами про «интернет вещей», «киберфизические системы», «индустрию 4.0» и прочий набор стандартных баззвордов. Читатель уже ждет, когда же ему расскажут про то, как на Ардуине и Распберри сделать очередной умный дом — но тут же в главе 2 ему выкатывают второй закон Ньютона, на пальцах объясняют кусочки термеха, пишут всякие дифференциальные уравнения, а немногих выживших добивают преобразованием Лапласа. Дальше, конечно, становится немного полегче, всякая там дискретная математика и конечные автоматы особого полета фантазии не требуют, а местами даже предлагают написать немного кода на Си. Перевернуть свое представление о встраиваемых системах можно по ссылке:

https://ptolemy.berkeley.edu/books/leeseshia/

А если серьезно, без смехуечков — это прекрасный пример, чему надо учить магистров «околокомпьютерных» специальностей — не «рукоделию» (это бакалавр должен уметь собрать из двух ардуин и распберри подобие работающей системы), а тому, как обосновать, что эти две ардуины с засунутой туда FreeRTOS работают правильно.

Люблю таких дурачков

https://twitter.com/jnrUnderhood/status/1450412326776197126

Чувак рассуждает про отличия «энтерпрайза» и «стартапов» — мол, в первом завсегда есть деньги и ресурсы на любые хотелки, а у вторых денег нет. Так вот, это было бы не так смешно, если бы я буквально только что не обсуждал бы с коллегами по крупной международной корпорации, как купить на алиэкспрессе измерительный прибор, а к нему — б/у Thinkpad на авито.

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

Господа электронщики, а вот вопрос

STBB1-APUR — это же pin-to-pin замена для техасовского TPS63000? И на что заменить/где купить в 2021 году TPS63020?

Вытащу из фейсбука

А то скоро придется снова этот стенд собирать, а ответов на вопрос, кроме как «фронтендеры петухи», у меня как бы и нет.

В общем, есть дохлый по современным меркам Raspberry Pi, на нем крутится две или даже три СУБД (постгрес, монго и кажется, mosquitto еще что-то свое притаскивал), сетевой сервер LoRaWAN (ChirpStack, если это кому-то что-то говорит), Influx DB и Grafana, а рядом стоит ноутбук, на котором запущен SDR Sharp и браузер, а в браузере крутится веб-интерфейс этого чирпстека. Так вот, зоопарк (написанный в основном на няшной сишечке и модном голанг) на распберри работает прекрасно, написанный на С# SDR-приемник крутит какие-то адовы преобразования Фурье и показывает красивые картинки, отжирая всего-то несколько сот мегабайт памяти и 10-15% процессора, а вот веб-интерфейс, написанный на прекрасном современном языке Javascript, выполняющий важную задачу — показать в окошке браузера несколько плашечек вида «куда-кому-от кого», на сотне-другой этих плашечек начинает жрать буквально гигабайты памяти и так грузить процессор, что я даже не могу представить, куда идут эти бешеные FLOPSы (а это все-таки Core i5, не херня какая).

Короче, граждане, скажите, кто тут мудак? Почему для отображения простенького списочка из пары сотен элементов нужно вычислительных ресурсов больше, чем для работы всего остального, перечисленного здесь?

Панчулу не показывайте

На кикстартере собирают (точнее уже собрали) деньги на книжку-игрушку с демонстрацией работы логических элементов:

https://www.kickstarter.com/projects/babyengineering/computer-engineering-for-babies

Люблю Texas Instruments

Вот есть у них DC-DC преобразователь TPS63020, есть у него, как водится, даташит, а в том даташите написаны всякие интересные параметры, приведена рекомендованная схема и рекомендованная же печатная плата (для современных DC-DC производитель не отвечает ни за что, если вы не повторили рекомендованный layout). Честно срисовал и то и это, запаял — и вместо ожидаемого потребления в 25-50 микроампер без нагрузки огребаю все 10 миллиампер — то есть на два с половиной порядка больше! Поискал косяки в остальной части схемы, не нашел, полез смотреть даташит внимательнее — и только в секции с красивыми графиками (которую смотрят не то чтобы в предпоследнюю очередь, но особо интересного там немного) обнаружил вот такой намек на происходящее:

Разумеется, заявленный в даташите ток потребления без нагрузки (Iq) приведен для режима power save — но явно это нигде не написано, а в рекомендованной схеме power save отключен.

Какие честные люди

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

Меморандум «Элитана» просто охуительный

Читал и ржал местами:

https://www.elitan.ru/pravilanew/upd.html

Говорят, личное творчество их гендира Алексея Досова. В связи с этим — вопрос — а на electronix.ru под ником barkey адовы телеги иногда он же прогоняет?

Китайцы жгут

Мало нам двух вариантов ST-Link в формате USB-свистка (с несовместимым назначением выводов) — так они еще умудрились нарисовать картиночку, где левая часть полностью противоречит правой!

Ардуинщики встречаются с реальным миром

Прекрасный тред в твиттере — у американского ардуинщика полыхнул пукан, когда Fedex задал ему пару невинных вопросов по растаможке партии плат из Китая:

https://mobile.twitter.com/femtoduino/status/1379714280363159560

И эти люди еще что-то говорят о позициях России в рейтинге Doing Business или как его там! Кажется, [info]sanches выдал как-то прекрасную формулировку — «У нас самая свободная страна из цивилизованных и самая цивилизованная — из свободных». Да, у нас при желании можно протащить через таможню хоть черта лысого, да и система сертификации продукции позволяет выделывать смешные выкрутасы — но при этом в целом электрочайники пользователя не убивают, а к поставившим «супер-мощную дальнобойную ви-фи точку» обычно все же приходит Роскомнадзор.

В общем, любопытно посмотреть на страдания юных радиогубителей в странах с несколько более жесткой регуляцией и сравнить с тем, что волнует наших — «а можно ли на партии в 2000 штук Bluetooth-модулей с алиэкспресса написать Gift и поставить цену 20 баксов?»

Хорошо встретил день бекапа

Вообще-то его положено отмечать 31 марта, но так уж получилось, что бекапилка у меня настроена на четверг — точнее, ночь с четверга на пятницу. Просыпаюсь утром и обнаруживаю, что домашний роутер — что-то из старых Zyxel Keenetic, кажется, Keenetic 4G или как-то так, благополучно сдох. Он уже как-то странно себя вел при обмене большим количеством данных внутри домашней сети — но вот выключился полностью впервые.

В общем, не буду писать много, выложу ровно одну картинку:

Это конденсатор, что стоял на линии питания процессора в роутере, так распучило — что аж корпус слез на половину длины.

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

Чисто по приколу померил емкость и ESR трупика — от 470 мкФ осталось 18, ESR составляет впечатляющие 600 Ом. Удивительно даже, что до недавнего времени оно как-то работало.

PS Да, что касается странного выбора — дело в том, что раньше этот Zyxel работал «раздавалкой интернета» на даче, через 4G-модем, и перестал справляться с этой почетной обязанностью с началом ковидной самоизоляции, именно тогда захотелось большего.

Вот чтобы не забыть

Драйвер SX1276 из RIOT OS, кастомная плата с DC-DC-преобразователем и еще кучкой всякой фигни. Часть устройств работает нормально, на других — вообще нет никакого обмена с модемом на линии MISO — то есть, скажем, функция инициализации этот модем вовсе не обнаруживает (валится на check_version):

https://github.com/RIOT-OS/RIOT/blob/master/drivers/sx127x/sx127x.c#L129

Что интересно — если наплевать на возвращаемое при инициализации значение и продолжить «вслепую» писать что попало в регистры модема — то он что-то плюнет в эфир, то есть линию MOSI он воспринимает. Решение — сначала дернуть reset, а потом уже как-то с устройством общаться. Инициализация в стандартном драйвере написана криво, расчитывать на успешность power-on reset (вообще грешу на довольно медленный soft start) — ну такое…

Вот это я понимаю — хорошее рабочее место!

Кто угадает, что за девайс и для чего я делаю?