Маршрут самостоятельного изучения
Что читать дальше и какой опыт сделать после чтения?
Учебный материал полезен, когда после него можно объяснить или проверить конкретную часть Koobique.
Не нужно сначала изучать всю электронику, теорию управления и машинное обучение целиком. Двигайтесь от вопроса на стенде к соответствующему источнику: фронт I²C — к шине и подтяжкам, поздняя запись — к времени и буферам, колебания лампы — к обратной связи.
Для каждой темы полезно сделать маленький опыт, записать результат и только затем усложнить систему. Так документация превращается из длинного списка ссылок в инструмент, которым можно пользоваться при реальной сборке.
Ниже — маршрут погружения. Не требуется прочитать все документы до первого измерения, но переход к более рискованному этапу должен сопровождаться пониманием его основы. Ссылки ведут к первичным руководствам и учебным материалам, а не к пересказам без схем.
Электрические цепи и измерения#
MIT 6.002, Circuits and Electronics помогает разобраться в законах цепей, транзисторах, динамике и измерении. Практическое упражнение: рассчитать ток лампы, потери в проводе и шунте, затем измерить их. Объяснить, почему порог MOSFET не равен гарантированному открыванию. [68][80]
NXP UM10204 нужен для понимания открытого стока, адресации и временны́ х параметров I²C. Упражнение: найти подтяжки на двух breakout, рассчитать эквивалентное сопротивление и сравнить фронт с осциллограммой. [26]
Datasheets SHT45, VEML7700, INA226 учат отличать диапазон, точность, разрешение и условия измерения. Упражнение: составить одностраничную карточку каждого сенсора с питанием, адресом, задержкой и флагами ошибки. [15][17][79]
Конструкция и материалы#
FreeCAD — основа параметрической модели. Упражнение: сделать раму с параметром внешней грани, затем изменить 320 на 340 мм и проверить, какие размеры должны измениться автоматически, а какие остаются привязаны к реальной плате. [13]
Документация вентиляторов и Prusa помогает отделить геометрию, электрический интерфейс и свойства печати. Упражнение: изготовить купон вставок и кассету фильтра, измерить посадку и сравнить открытый/закрытый корпус. [4][6][11][12]
Механические файлы производителей нужны для посадок. Упражнение: импортировать реальный габарит платы, добавить объёмы штекеров и траекторию извлечения фильтра. Красивый вид модели не считается проверкой обслуживаемости. [3][88]
PCB и embedded Rust#
KiCad Getting Started показывает полный путь от схемы к производственным файлам. Упражнение: маленький носитель датчика с разъёмом, подтяжками, тестовыми точками и собственным footprint, сверенным по чертежу. Перед заказом распечатать 1:1. [27]
The Embedded Rust Book объясняет периферию, владение, прерывания и no_std. The Rust on ESP Book связывает эти идеи с конкретными ESP-инструментами. Упражнение: драйвер сенсора с тайм-аутом и ошибками, затем имитация отсутствующего устройства. [44][31]
ESP-IDF OTA / Secure Boot / Provisioning изучаются до записи необратимых защитных настроек. Упражнение: прервать обновление тестовой платы и восстановиться по документированной процедуре. [35][36][70]
Rust-сервер и протокол#
The Rust Programming Language и Tokio Tutorial дают основу владения и асинхронности. Упражнение: ограниченная очередь событий с измерением возраста и политики переполнения. Объяснить, почему async не делает блокирующую операцию неблокирующей. [43][45][82]
RFC 8949 и документация Rustls нужны для wire-профиля. Упражнение: закодировать один Observation, сравнить байты на хосте и MCU, затем отклонить пакет с повторяющимся ключом и чрезмерной длиной. [48][47]
Rust Fuzz Book и Loom помогают проверять парсеры и небольшие конкурентные участки. Упражнение: сформулировать свойство, которое должно сохраняться при любом порядке событий, прежде чем писать тест. [95][86]
Физические модели и данные#
MIT 6.302, Feedback Systems объясняет обратную связь, устойчивость и динамику. Упражнение: смоделировать комнату первого порядка, добавить задержку датчика и увидеть влияние шага и усиления. Начинать на симуляторе, не на реальном нагревателе. [69]
SQLite WAL / Backup нужны для сохранности, а не только запросов. Упражнение: команда с outbox в одной транзакции, аварийная остановка и продолжение с тем же ID. [51][52][93]
KMP и голос#
Kotlin Multiplatform, UniFFI и платформенные разрешения помогают построить границы приложения. Упражнение: подключиться к локальному тестовому API на Android и iOS, отозвать разрешение и показать пользователю понятный путь восстановления. [54][55][56][57]
whisper.cpp, sherpa-onnx и Vosk изучаются сравнением одного аудиокорпуса. Упражнение: измерить не только текстовую ошибку, но и ошибку объекта, ложное выполнение и задержку после конца фразы. [61][62][99]
Silero, openWakeWord и документация массива изучаются после эталонного микрофона. Упражнение: шум вентилятора, собственный ответ динамика и обычная речь без команды не должны вызывать действие. [63][64][67]
Как вести инженерный дневник#
Каждый опыт занимает небольшую карточку: цель, схема, версии, условия, ожидаемый результат, измерение, вывод и следующий шаг. Сохраняются исходные файлы, а не только скриншот графика. Отрицательный результат тоже полезен, если понятно, что именно проверялось.
После этого маршрута подготовка первого экземпляра становится последовательностью проверяемых решений. Сначала доказывается цепочка кабинета, затем выбирается автономное железо, затем изготавливается корпус, и только потом уменьшаются детали, потребление и стоимость.
Каждый блок материалов заканчивается небольшим результатом, который можно получить на своём ПК или безопасном стенде.
Маршрут A. Измерить и не обмануть себя#
Изучить: вводный GUM и VIM, SOSA/SSN, Industrial I/O, документацию ADC выбранного микроконтроллера. [100] [101] [105] [141]
Сделать: паспорт одного канала; записать 15 минут наблюдений с пропуском питания; построить бюджет неопределённости без смешения стандартной ошибки и предельного допуска. Отдельно объяснить, что случится после перестановки сенсора.
Маршрут B. Построить малую модель#
Изучить: MIT System Identification и Robust/Stochastic Control; затем do-mpc и OSQP только в объёме своей задачи. [111] [110] [112] [113]
Сделать: определить вклад лампы, сравнить одноступенчатый и многократный прогноз, найти режим, где модель перестаёт подходить. В симуляции проверить бинарный план и невозможную цель. Не применять случайные исследовательские действия к опасным нагрузкам.
Маршрут C. Понять AI без смешения задач#
Изучить: формы решений Jev и опубликованные ограничения; статьи V-JEPA 2/2.1; для дальнейшего исследования — DreamerV3, TD-MPC2, PETS. [115] [118] [121] [122] [124] [125] [126]
Сделать: для каждой технологии написать один абзац: вход, выход, данные обучения, что она не доказывает. Спроектировать локальный интерфейс выбора намерения с вариантами «уточнить» и «не поддерживается». Не оценивать модель только на красивых положительных примерах.
Маршрут D. Проверить вероятность и перенос#
Изучить: Guo и соавторы о калибровке, адаптивном конформном прогнозировании, работы об информационно-ориентированном выборе действий. [128] [129] [130] [131]
Сделать: разделить эпизоды по дням; построить таблицу ошибок по сценариям и сравнить две модели при одной цене ошибок. Показать, почему хороший средний процент скрывает плохой режим неподвижного присутствия.
Маршрут E. Встроить модель в систему#
Изучить: Tokio и блокирующие операции, cgroups v2, выбранный Rust ML-runtime, TUF и формат тензорных артефактов. [82] [132] [73] [134] [135] [136] [84] [138]
Сделать: описать контракт worker и полный манифест модели; задать лимит памяти; воспроизвести отказ worker, не меняя состояния лампы. Фактическая разработка следует отдельному этапу после согласования контрактов.
Короткий словарь#
| Термин | Практический смысл |
|---|---|
| Наблюдаемость | Можно ли различить нужные состояния по доступным данным |
| Идентификация | Определение модели или её параметров из измерений и действий |
| Латентное состояние | Внутреннее представление модели, не прямое измерение |
| Калибровка вероятностей | Соответствие численных прогнозов частотам исходов в проверенной постановке |
| Область применимости | Условия, в которых модель проверена и допущена |
| MPC | Повторное планирование на ограниченном горизонте по модели |
| Инвариант | Условие, которое исполнитель обязан сохранять |
| Идемпотентность | Повтор операции не меняет её логический итог после первого успеха |
| Теневой режим | Модель предлагает, но не получает право физического действия |
| Происхождение данных | Связь записи с источниками, преобразованиями и версиями |
| Версии / boot / fence | Отдельные шкалы; назначение контроллера не смешивается с ручным режимом |
| Контрфактический исход | Что произошло бы при другом действии; не наблюдается прямо в старом журнале |
Полные названия материалов и ссылки приведены в едином списке источников. Этот маршрут дополняет практические задания по электронике, механике, Linux, KMP и протоколу: сначала воспроизводится небольшой опыт, затем читается документация к тому механизму, который в нём встретился.
Учебный маршрут для закрытия рисков, а не только чтения#
| Тема | Первичный материал | Практика перед следующим этапом |
|---|---|---|
| Время и распределённые события | Linux clock_gettime, ESP System Time, RFC 5905 | Смоделировать асимметрию, поздний пакет и reboot |
| PKI и локальный pin | RFC 5280/7250; Rustls verifier | Чужой ключ всегда отвергается; дата не даёт доверия |
| MCU и защита | ESP-IDF NVS, security workflow, OTA | Запасная плата; версии и recovery до eFuse |
| Linux-службы | systemd network и service | Старт без роутера; зависание критической задачи |
| KMP и сеть | UniFFI, Gobley, Android NSD, Apple TN3179 | Реальные Android/iOS; отказ разрешения; cancellation |
| Происхождение ПО | RustSec, cargo-deny, манифест | Чистая машина воспроизводит артефакты и хеши |
Результат чтения — небольшой опыт с ожидаемым исходом. До пайки нужно уметь проверить полярность, отсутствие короткого замыкания, токовое ограничение и безопасное снятие питания; при отсутствии этого опыта электрическая часть выполняется с квалифицированной помощью. Ни ссылка, ни книга не заменяют методику работы с конкретным прибором.
Первичные документы, симуляции и референсные тесты используются для разных проверок. Сохранённый журнал решений связывает изменения с их основаниями; исходные материалы остаются доступными для сравнения редакций. Результат программной проверки не является аппаратным испытанием или внешним аудитом. История подготовки редакций и границы проведённого ревью вынесены на страницу доказательств.