commit 4925caa8e3769d8e72622e47fb2d96282471dcc5 Author: lemintare Date: Tue Jun 30 11:42:43 2026 +0300 first commit diff --git a/.cursor/rules/embedded-lab.mdc b/.cursor/rules/embedded-lab.mdc new file mode 100644 index 0000000..fb6f515 --- /dev/null +++ b/.cursor/rules/embedded-lab.mdc @@ -0,0 +1,46 @@ +--- +description: Embedded/electronics tutor, safety rules, lab notebook, and memory bank conventions +alwaysApply: true +--- + +# embedded-lab Agent Rules + +You are an embedded/electronics tutor and lab notebook maintainer for this repository. + +## Language And Teaching Style + +- Пиши на русском, если пользователь пишет на русском. +- Объясняй через практические эксперименты, измерения и debugging. +- Учитывай, что пользователь Middle ML Engineer с сильным software/Linux/backend background. +- Связывай embedded concepts с software engineering analogies, когда это помогает. +- Не раздувай файлы лишней теорией. +- Сохраняй только то, что полезно для будущего debugging и обучения. + +## Lab Notebook Behavior + +- После каждой учебной сессии обновляй `memory_bank` и relevant lab files. +- Явно отделяй `expected` от `actual`. +- Не придумывай результаты измерений. +- Не утверждай, что что-то проверено, если это не было проверено. +- Фиксируй ошибки, симптомы, debugging steps и выводы. +- Сохраняй next actions конкретными и выполнимыми. + +## Electronics Safety + +- Не считай, что схема собрана правильно. +- Всегда предлагай измерения мультиметром. +- Перед подачей питания предлагай проверить короткое замыкание. +- Всегда учитывай ограничения ESP32: GPIO строго 3.3V. +- Запрещай подключение 5V напрямую к GPIO ESP32. +- Напоминай про common ground для внешних модулей и ESP32. +- Избегай mains/220V проектов. +- При работе с БП всегда думай о current limit. + +## File Updates + +- Обновляй `memory_bank/01_current_state.md` после изменения текущей фазы, лабораторной или next actions. +- Добавляй новые понятия в `memory_bank/02_concepts.md` кратко и практически. +- Обновляй `memory_bank/03_components.md`, когда компонент реально использован или проверен. +- Записывай ошибки и симптомы в `memory_bank/04_mistakes_and_debugging.md`. +- Добавляй записи сессий в `memory_bank/08_learning_log.md`. +- Для лабораторных обновляй `measurements.md`, `notes.md`, `schematic.md` и `firmware.md` по факту выполненной работы. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fbc216 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# OS files +.DS_Store +Thumbs.db + +# Editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Python +__pycache__/ +*.py[cod] +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.venv/ +venv/ +env/ + +# PlatformIO +.pio/ +.pioenvs/ +.piolibdeps/ +libdeps/ + +# ESP-IDF / CMake build artifacts +build/ +cmake-build-*/ +sdkconfig.old + +# Arduino / generic build artifacts +*.elf +*.bin +*.hex +*.map +*.o +*.a + +# Logs and temporary files +*.log +*.tmp +*.bak +tmp/ +temp/ diff --git a/GLOSSARY.md b/GLOSSARY.md new file mode 100644 index 0000000..9713df3 --- /dev/null +++ b/GLOSSARY.md @@ -0,0 +1,18 @@ +# Glossary + +- **Напряжение (voltage):** разность электрических потенциалов. Практически: что показывает мультиметр между двумя точками. +- **Ток (current):** поток заряда через участок схемы. Практически: что может перегреть компонент, если не ограничено. +- **Сопротивление (resistance):** ограничение тока. Резистор в LED-схеме работает как safety guard. +- **Закон Ома (Ohm's law):** `V = I * R`. Используется для оценки тока через резистор. +- **Мощность (power):** `P = V * I`. Важна для нагрева компонентов. +- **Земля (ground, GND):** опорная точка напряжений в схеме. +- **Общая земля (common ground):** общий GND между устройствами, чтобы сигналы имели один reference. +- **Ограничение тока (current limiting):** режим БП, который не дает току превысить заданный лимит. +- **GPIO (general-purpose input/output):** цифровой пин микроконтроллера. Для ESP32 считать строго 3.3V. +- **Breadboard rails:** длинные линии питания на макетной плате. Могут быть разделены посередине. +- **Pull-up:** резистор, который подтягивает вход к логической единице. +- **Pull-down:** резистор, который подтягивает вход к логическому нулю. +- **PWM (pulse-width modulation):** быстрое переключение сигнала с разной долей включенного времени. +- **I2C:** двухпроводной интерфейс с линиями SDA и SCL. +- **UART:** последовательный интерфейс TX/RX. +- **Datasheet:** технический контракт компонента: пределы, режимы, pinout, electrical characteristics. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0bea817 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# embedded-lab + +`embedded-lab` — инженерный лабораторный репозиторий для изучения практической электроники и embedded-разработки. + +Это не конспект и не набор случайных заметок. Репозиторий ведется как embedded lab notebook: каждая сессия должна оставлять после себя проверяемый след — что собиралось, что ожидалось, что было измерено, какие ошибки возникли и какой вывод сделан. + +## Learning Philosophy + +Базовый цикл обучения: + +1. **Эксперимент** — собираем маленькую схему или firmware-пример. +2. **Схема** — явно фиксируем соединения и ограничения. +3. **Измерение** — проверяем напряжение, ток, сопротивление, питание, уровни сигналов. +4. **Ошибка** — не считаем схему правильной заранее; симптомы важнее предположений. +5. **Вывод** — коротко записываем, что стало понятнее и что делать дальше. + +Подход близок к software engineering: схема — это runtime-система, мультиметр — debugger, питание — production dependency, datasheet — API contract, smoke test — первое безопасное включение. + +## Быстрый Старт + +1. Прочитать `SAFETY.md`. +2. Прочитать `SESSION_PROTOCOL.md`. +3. Проверить текущее состояние в `memory_bank/01_current_state.md`. +4. Начать с лабораторной `labs/001_led_resistor_psu/README.md`. +5. Перед подачей питания использовать `snippets/psu_safety_checklist.md` и `snippets/multimeter_checklist.md`. + +Первая цель: безопасно собрать LED + resistor от лабораторного БП, выставить current limit, измерить напряжения и вычислить ток через резистор. + +## Как Вести Репозиторий + +После каждой учебной сессии обновляются: + +- `memory_bank/01_current_state.md` +- `memory_bank/02_concepts.md` +- `memory_bank/03_components.md` +- `memory_bank/04_mistakes_and_debugging.md` +- `memory_bank/08_learning_log.md` +- relevant files внутри `labs/` + +Не нужно писать длинную теорию. Важнее сохранить факты, измерения, симптомы, решения и следующие действия. diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..aed720f --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,99 @@ +# Roadmap + +## Stage 0: Safety, Tools, Measurements + +**Цель:** научиться безопасно включать простые схемы, пользоваться БП и мультиметром, проверять ошибки до подачи питания. + +**Ключевые понятия:** voltage, current, resistance, power, ground, current limit, continuity test, breadboard rails. + +**Лабораторные:** `001_led_resistor_psu`, `002_breadboard_and_multimeter`. + +**Готовность перейти дальше:** + +- БП включается через current limit, а не "на максимум". +- Мультиметром уверенно проверяются напряжение, сопротивление и короткое замыкание. +- LED + resistor работает предсказуемо, ток вычислен и измерения записаны. + +## Stage 1: Basic DC Electronics + +**Цель:** понять поведение базовых DC-схем через измерения. + +**Ключевые понятия:** Ohm's law, voltage divider, LED forward voltage, capacitor polarity, transistor as switch. + +**Лабораторные:** `001_led_resistor_psu`, `004_button_pullup_pulldown`, `007_transistor_switch`. + +**Готовность перейти дальше:** + +- Понятно, где в схеме течет ток и где измерять напряжение. +- Ошибки полярности и плохого контакта диагностируются мультиметром. +- Транзисторный ключ собран и объяснен как управляемый switch. + +## Stage 2: ESP32 Fundamentals + +**Цель:** перейти от пассивных схем к микроконтроллеру без нарушения электрических ограничений. + +**Ключевые понятия:** GPIO, 3.3V logic, digital output, digital input, boot pins, USB power, common ground. + +**Лабораторные:** `003_esp32_blink`, `004_button_pullup_pulldown`. + +**Готовность перейти дальше:** + +- ESP32 прошивается и выполняет blink. +- GPIO подключаются только к безопасным уровням 3.3V. +- Внешняя схема имеет common ground с ESP32. + +## Stage 3: Interfaces: GPIO, ADC, PWM, I2C, UART + +**Цель:** изучить базовые интерфейсы как контракты между firmware и железом. + +**Ключевые понятия:** input/output mode, pull-up, pull-down, PWM duty cycle, I2C address, SDA/SCL, UART TX/RX. + +**Лабораторные:** `004_button_pullup_pulldown`, `005_pwm_led_dimming`, `006_i2c_lcd_1602`. + +**Готовность перейти дальше:** + +- Кнопка читается стабильно. +- PWM изменяет яркость LED ожидаемым образом. +- LCD 1602 I2C обнаружен scanner-ом и выводит тестовый текст. + +## Stage 4: Embedded Software Patterns + +**Цель:** писать firmware как поддерживаемый software-проект, а не набор delay-based скетчей. + +**Ключевые понятия:** state machine, non-blocking loop, debouncing, configuration, logging, hardware abstraction. + +**Лабораторные:** расширения `003`-`006`. + +**Готовность перейти дальше:** + +- Firmware имеет понятную структуру и physical test procedure. +- Поведение проверяется через наблюдаемые состояния и измерения. +- Ошибки отделяются на hardware, wiring, power и software causes. + +## Stage 5: IoT Projects + +**Цель:** соединить ESP32, периферию и сеть в маленькие полезные проекты. + +**Ключевые понятия:** Wi-Fi, reconnect logic, MQTT, status display, telemetry, watchdog thinking. + +**Лабораторные:** `008_wifi_status_display`, будущие sensor node проекты. + +**Готовность перейти дальше:** + +- Устройство показывает сетевой статус на LCD. +- Есть понятная стратегия reconnect и индикации ошибок. +- Состояние проекта можно восстановить по lab notes. + +## Stage 6: Debugging, Reliability, Power, Architecture + +**Цель:** перейти от "работает на столе" к инженерному мышлению о надежности. + +**Ключевые понятия:** brownout, current budget, boot diagnostics, fault isolation, power domains, enclosure thinking. + +**Лабораторные:** повторное улучшение предыдущих проектов. + +**Готовность:** + +- Для проекта есть измеренный power budget. +- Известны failure modes и симптомы. +- Архитектура firmware и схемы объяснима через ограничения железа. diff --git a/SAFETY.md b/SAFETY.md new file mode 100644 index 0000000..4d0525c --- /dev/null +++ b/SAFETY.md @@ -0,0 +1,38 @@ +# Safety + +Этот файл читается перед первыми лабораторными и перед любым новым типом подключения. + +## Лабораторный БП + +- Перед подключением схемы выставить нужное напряжение без нагрузки. +- Всегда выставлять **current limit** до подключения схемы. +- Не начинать с высокого тока. Для первых LED-схем использовать малый лимит и повышать только если понятно, почему это нужно. +- После изменения схемы выключить выход БП, проверить соединения, затем включать снова. +- Если БП ушел в current limit, не "добавлять ток" автоматически. Сначала искать короткое замыкание, перепутанную полярность или неверный номинал резистора. + +## ESP32 + +- **ESP32 GPIO is 3.3V only.** +- Нельзя подключать 5V напрямую к GPIO ESP32. +- Внешние модули и ESP32 должны иметь **common ground**, если между ними есть сигнальные соединения. +- Не питать ESP32 от нескольких источников без понимания схемы питания dev board. +- Перед подключением к GPIO проверять мультиметром, какое напряжение реально приходит на провод. + +## Breadboard И Проверки + +- Перед подачей питания проверить схему мультиметром на короткое замыкание между `+` и `GND`. +- Проверить, не разделены ли power rails на breadboard посередине. +- Не считать цвет провода доказательством сигнала. Цвет помогает читать схему, но проверяет только мультиметр. + +## Пайка + +- Паять только с вентиляцией. +- Держать горячий паяльник на подставке. +- Не трогать жало и свежие соединения. +- После пайки проверять мостики и короткие замыкания. + +## Запрет На Старте + +- Никаких mains/220V проектов на начальном этапе. +- Не разбирать сетевые блоки питания, зарядки и устройства, подключенные к розетке. +- Работать только с низковольтными DC-схемами. diff --git a/SESSION_PROTOCOL.md b/SESSION_PROTOCOL.md new file mode 100644 index 0000000..14d5355 --- /dev/null +++ b/SESSION_PROTOCOL.md @@ -0,0 +1,51 @@ +# Session Protocol + +Каждая учебная сессия должна оставлять короткую инженерную запись. Цель — не написать лекцию, а сохранить состояние, измерения, ошибки и следующий шаг. + +## Формат Сессии + +### Goal + +Что хотим проверить или собрать. + +### Hypothesis + +Что ожидаем увидеть и почему. + +### Circuit + +Какие компоненты используются и как соединены. + +### Expected Behavior + +Как схема или firmware должны вести себя при правильной сборке. + +### Expected Measurements + +Какие напряжения, токи, сопротивления или логические уровни ожидаются. + +### Actual Measurements + +Фактические измерения. Не придумывать значения, если они не измерены. + +### Bugs / Surprises + +Симптомы, ошибки, странное поведение, запах, нагрев, current limit, нестабильность контакта. + +### Explanation + +Короткое объяснение результата через схему, измерения и ограничения компонентов. + +### Files To Update + +Какие файлы memory bank и lab notes нужно обновить. + +### Next Step + +Один или несколько конкретных следующих шагов. + +## Команда Для AI-Агента После Сессии + +```text +Update the embedded-lab memory bank and lab notes based on this session. Update current state, concepts, components, mistakes/debugging, learning log, and next actions. Keep it concise but specific. +``` diff --git a/datasheets/README.md b/datasheets/README.md new file mode 100644 index 0000000..ce9045b --- /dev/null +++ b/datasheets/README.md @@ -0,0 +1,16 @@ +# Datasheets + +Здесь хранить ссылки или локальные заметки по datasheets компонентов. + +## Rules + +- Datasheet — это API contract компонента. +- Для ESP32 dev board фиксировать pinout и electrical limits. +- Для транзисторов фиксировать тип, pinout и допустимый ток. +- Для LCD I2C фиксировать address, питание и pull-up voltage. + +## TODO + +- Добавить datasheet/pinout конкретной ESP32 dev board. +- Добавить datasheet или маркировку транзисторов из набора. +- Добавить заметку по LCD 1602 I2C backpack. diff --git a/diagrams/README.md b/diagrams/README.md new file mode 100644 index 0000000..e6d6c33 --- /dev/null +++ b/diagrams/README.md @@ -0,0 +1,14 @@ +# Diagrams + +Здесь хранить схемы, pinout snapshots, wiring diagrams и иллюстрации лабораторных. + +## Rules + +- Диаграмма должна соответствовать фактической сборке или явно быть marked as expected. +- Если схема менялась во время debugging, полезно сохранить final actual version. +- Не заменять измерения красивой схемой: diagram помогает читать, мультиметр подтверждает. + +## TODO + +- Добавить diagram для `001_led_resistor_psu` после первой сборки. +- Добавить breadboard rail map после Lab 002. diff --git a/firmware/README.md b/firmware/README.md new file mode 100644 index 0000000..566f2e7 --- /dev/null +++ b/firmware/README.md @@ -0,0 +1,25 @@ +# Firmware + +Firmware хранится отдельно от lab notes, чтобы код, физическая схема и измерения не смешивались. + +Каждый firmware example должен иметь: + +- ссылку на relevant lab; +- выбранный board/workflow; +- physical test procedure; +- ожидаемое поведение; +- known limitations; +- способ не commit-ить secrets. + +## Preferred Initial Workflow + +- Начать с Arduino Core или PlatformIO. +- ESP-IDF оставить на более поздний этап, когда базовые GPIO/I2C/PWM и debugging уже понятны. +- Для каждого примера сначала описывать, что должно быть видно физически: LED blink, serial log, LCD text, measured GPIO level. + +## Structure + +- `esp32/` — общие заметки по ESP32. +- `arduino/` — Arduino Core examples and notes. +- `platformio/` — PlatformIO projects and notes. +- `esp-idf/` — future ESP-IDF experiments. diff --git a/firmware/arduino/README.md b/firmware/arduino/README.md new file mode 100644 index 0000000..85fc413 --- /dev/null +++ b/firmware/arduino/README.md @@ -0,0 +1,17 @@ +# Arduino Core + +Arduino Core подходит для первых labs, потому что быстро дает feedback loop: write, flash, observe, measure. + +## Use For + +- Blink +- Button input +- PWM LED dimming +- I2C scanner +- LCD test + +## Notes + +- Board selection must match actual ESP32 dev board. +- Serial logs are part of debugging, but physical measurements still matter. +- Secrets must not be committed. diff --git a/firmware/esp-idf/README.md b/firmware/esp-idf/README.md new file mode 100644 index 0000000..785a444 --- /dev/null +++ b/firmware/esp-idf/README.md @@ -0,0 +1,14 @@ +# ESP-IDF + +ESP-IDF is planned for later stages. + +## Use Later For + +- Deeper ESP32 architecture. +- Tasks, timers and FreeRTOS concepts. +- More production-like firmware structure. +- Wi-Fi reliability and power management. + +## Current Decision + +Do not start here. First build confidence with safety, measurements, GPIO, PWM and I2C using Arduino Core or PlatformIO. diff --git a/firmware/esp32/README.md b/firmware/esp32/README.md new file mode 100644 index 0000000..996a57c --- /dev/null +++ b/firmware/esp32/README.md @@ -0,0 +1,15 @@ +# ESP32 Firmware Notes + +## Rules + +- GPIO считать strictly 3.3V. +- Перед использованием GPIO проверить pinout конкретной dev board. +- Избегать boot strap pins на первых лабораторных, пока не понятны ограничения. +- Для внешних схем нужен common ground. +- Сначала проверять простую physical behavior, затем усложнять firmware. + +## TODO + +- Записать точную модель ESP32 dev board. +- Выбрать безопасные GPIO для первых labs. +- Зафиксировать upload workflow. diff --git a/firmware/platformio/README.md b/firmware/platformio/README.md new file mode 100644 index 0000000..193014a --- /dev/null +++ b/firmware/platformio/README.md @@ -0,0 +1,15 @@ +# PlatformIO + +PlatformIO is a good default once the first Arduino-style examples work. + +## Why Use It + +- Reproducible project configuration. +- Clear dependency management. +- Better structure for multiple examples. + +## Initial Rules + +- Each project should reference its lab. +- `platformio.ini` should document board and framework. +- Physical test procedure belongs in lab `firmware.md`, not only in code comments. diff --git a/labs/001_led_resistor_psu/README.md b/labs/001_led_resistor_psu/README.md new file mode 100644 index 0000000..9695dc3 --- /dev/null +++ b/labs/001_led_resistor_psu/README.md @@ -0,0 +1,54 @@ +# Lab 001: LED + Resistor + Bench PSU + +## Goal + +Безопасно зажечь LED от лабораторного БП через последовательный резистор, выставить current limit и измерить напряжения. + +## Required Components + +- Bench power supply +- Multimeter +- Breadboard MB-102 +- LED +- Resistor, начать с безопасного номинала после проверки набора +- Dupont wires + +## Expected Behavior + +LED светится при правильной полярности и ограниченном токе. БП не должен уходить в current limit при исправной схеме и разумном резисторе. + +## Pre-Flight Checklist + +- Определить номинал резистора. +- Выставить напряжение БП до подключения схемы. +- Выставить малый current limit. +- Проверить LED polarity. +- Проверить мультиметром отсутствие короткого замыкания между `+` и `GND`. + +## Safety Notes + +- Не подключать LED без резистора. +- Не начинать с высокого current limit. +- Выключать выход БП перед изменением схемы. + +## Expected Measurements + +- Напряжение БП: TBD before run. +- Падение напряжения на LED: expected depends on LED color. +- Падение напряжения на резисторе: `Vres = Vpsu - Vled`. +- Ток через LED: `I = Vres / R`. + +## Actual Measurements + +TODO: записать только реальные измерения. + +## Debugging Checklist + +- LED не светится: проверить полярность. +- LED не светится: проверить rail continuity. +- БП в current limit: искать short или слишком малый резистор. +- Измерить напряжение на LED и резисторе отдельно. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/001_led_resistor_psu/measurements.md b/labs/001_led_resistor_psu/measurements.md new file mode 100644 index 0000000..57f2c78 --- /dev/null +++ b/labs/001_led_resistor_psu/measurements.md @@ -0,0 +1,27 @@ +# Measurements + +## Expected Measurements + +| Point | Expected | +| --- | --- | +| PSU output voltage | TBD | +| PSU current limit | Low, set before connecting | +| LED voltage drop | Depends on LED color | +| Resistor voltage drop | `Vpsu - Vled` | +| LED current | `Vres / R` | + +## Actual Measurements + +TODO: добавить реальные значения после выполнения. + +| Point | Actual | +| --- | --- | +| PSU output voltage | TBD | +| PSU current limit | TBD | +| LED voltage drop | TBD | +| Resistor voltage drop | TBD | +| Calculated current | TBD | + +## Observations + +TODO: светимость, нагрев, current limit, странные симптомы. diff --git a/labs/001_led_resistor_psu/notes.md b/labs/001_led_resistor_psu/notes.md new file mode 100644 index 0000000..e482113 --- /dev/null +++ b/labs/001_led_resistor_psu/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать симптомы и debugging steps. + +## Explanation + +TODO: объяснить результат через Ohm's law, падения напряжения и current limit. + +## Conclusion + +TODO: что теперь понятно и что проверить дальше. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/001_led_resistor_psu/schematic.md b/labs/001_led_resistor_psu/schematic.md new file mode 100644 index 0000000..4a963b5 --- /dev/null +++ b/labs/001_led_resistor_psu/schematic.md @@ -0,0 +1,18 @@ +# Schematic + +## Expected Circuit + +```text +PSU + -> resistor -> LED anode +LED cathode -> PSU - +``` + +## Notes + +- Резистор должен быть последовательно с LED. +- Направление LED проверить перед включением. +- Breadboard rails проверить мультиметром, не полагаться на маркировку. + +## Actual Circuit + +TODO: записать фактическое соединение после сборки. diff --git a/labs/002_breadboard_and_multimeter/README.md b/labs/002_breadboard_and_multimeter/README.md new file mode 100644 index 0000000..c2d8209 --- /dev/null +++ b/labs/002_breadboard_and_multimeter/README.md @@ -0,0 +1,49 @@ +# Lab 002: Breadboard And Multimeter + +## Goal + +Понять соединения breadboard MB-102 и научиться проверять rails, continuity, voltage и resistance мультиметром. + +## Required Components + +- Breadboard MB-102 +- Multimeter +- Dupont wires +- Resistors +- Bench power supply, только после dry checks + +## Expected Behavior + +Мультиметр показывает continuity только там, где точки breadboard реально соединены. Power rails могут быть разделены посередине. + +## Pre-Flight Checklist + +- Проверить режим continuity. +- Проверить сопротивление известного резистора. +- Проверить, какие точки в одном ряду соединены. +- Проверить rails вдоль всей длины breadboard. + +## Safety Notes + +- Не подавать питание, пока не понятна topology breadboard. +- Перед включением БП проверить короткое замыкание между rails. + +## Expected Measurements + +- Continuity внутри одного connected row. +- No continuity между разными rows. +- Rails: TBD, зависит от конкретной breadboard. + +## Actual Measurements + +TODO: записать реальные continuity и rail checks. + +## Debugging Checklist + +- Если схема не питается, проверить split rails. +- Если измерение странное, проверить режим мультиметра и положение щупов. +- Если контакт нестабильный, заменить jumper или точку breadboard. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/002_breadboard_and_multimeter/measurements.md b/labs/002_breadboard_and_multimeter/measurements.md new file mode 100644 index 0000000..d925679 --- /dev/null +++ b/labs/002_breadboard_and_multimeter/measurements.md @@ -0,0 +1,27 @@ +# Measurements + +## Expected Measurements + +| Check | Expected | +| --- | --- | +| Same row continuity | Continuity | +| Different rows continuity | No continuity | +| Positive rail full length | TBD | +| Negative rail full length | TBD | +| Resistance of known resistor | Near nominal value | + +## Actual Measurements + +TODO: добавить реальные значения. + +| Check | Actual | +| --- | --- | +| Same row continuity | TBD | +| Different rows continuity | TBD | +| Positive rail full length | TBD | +| Negative rail full length | TBD | +| Known resistor value | TBD | + +## Observations + +TODO: особенности конкретной breadboard. diff --git a/labs/002_breadboard_and_multimeter/notes.md b/labs/002_breadboard_and_multimeter/notes.md new file mode 100644 index 0000000..c1d9a5e --- /dev/null +++ b/labs/002_breadboard_and_multimeter/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать неожиданные continuity results или плохие контакты. + +## Explanation + +TODO: объяснить реальную topology breadboard. + +## Conclusion + +TODO: что теперь известно о breadboard и мультиметре. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/002_breadboard_and_multimeter/schematic.md b/labs/002_breadboard_and_multimeter/schematic.md new file mode 100644 index 0000000..d5e66d5 --- /dev/null +++ b/labs/002_breadboard_and_multimeter/schematic.md @@ -0,0 +1,13 @@ +# Schematic + +## Expected Checks + +```text +Breadboard row continuity: probe A <-> probe B +Power rail continuity: rail start <-> rail middle <-> rail end +Short check: + rail <-> - rail +``` + +## Actual Breadboard Map + +TODO: записать, какие rails разделены и где нужны jumpers. diff --git a/labs/003_esp32_blink/README.md b/labs/003_esp32_blink/README.md new file mode 100644 index 0000000..fe51dc1 --- /dev/null +++ b/labs/003_esp32_blink/README.md @@ -0,0 +1,52 @@ +# Lab 003: ESP32 Blink + +## Goal + +Прошить ESP32 и выполнить простой blink на безопасном GPIO или встроенном LED, если он есть на конкретной dev board. + +## Required Components + +- ESP32 dev board +- USB cable +- Computer with Arduino Core or PlatformIO +- Optional external LED + resistor +- Multimeter + +## Expected Behavior + +ESP32 прошивается, запускает firmware, LED мигает с заданным периодом. + +## Pre-Flight Checklist + +- Определить точную модель ESP32 dev board. +- Найти pinout и безопасные GPIO. +- Не подключать 5V к GPIO. +- Если используется external LED, поставить резистор последовательно. +- Проверить, что питание идет только понятным способом. + +## Safety Notes + +- ESP32 GPIO strictly 3.3V. +- External LED должен иметь резистор. +- Не использовать boot strap pins без проверки pinout. + +## Expected Measurements + +- USB 5V на входе dev board: expected near 5V. +- 3.3V rail на ESP32: expected near 3.3V. +- GPIO blink level: low около 0V, high около 3.3V. + +## Actual Measurements + +TODO: записать реальные измерения. + +## Debugging Checklist + +- Если прошивка не загружается, проверить board/port/boot mode. +- Если LED не мигает, проверить правильный GPIO. +- Если external LED не светится, проверить полярность и резистор. +- Измерить 3.3V rail и GPIO level мультиметром. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/003_esp32_blink/firmware.md b/labs/003_esp32_blink/firmware.md new file mode 100644 index 0000000..48e614a --- /dev/null +++ b/labs/003_esp32_blink/firmware.md @@ -0,0 +1,26 @@ +# Firmware + +## Preferred Starting Workflow + +Start with Arduino Core or PlatformIO. ESP-IDF оставить на более поздний этап. + +## Expected Behavior + +- Configure selected GPIO as output. +- Toggle GPIO with visible delay. +- If using built-in LED, confirm whether active HIGH or active LOW. + +## Physical Test Procedure + +1. Прошить firmware. +2. Наблюдать blink. +3. Измерить GPIO low/high мультиметром. +4. Записать board model, GPIO и actual behavior. + +## Code + +TODO: добавить минимальный blink sketch после выбора board/workflow. + +## Actual Result + +TODO: записать результат прошивки и наблюдения. diff --git a/labs/003_esp32_blink/measurements.md b/labs/003_esp32_blink/measurements.md new file mode 100644 index 0000000..7fd41b4 --- /dev/null +++ b/labs/003_esp32_blink/measurements.md @@ -0,0 +1,25 @@ +# Measurements + +## Expected Measurements + +| Point | Expected | +| --- | --- | +| USB input | Near 5V | +| ESP32 3.3V rail | Near 3.3V | +| GPIO LOW | Near 0V | +| GPIO HIGH | Near 3.3V | + +## Actual Measurements + +TODO: добавить реальные значения. + +| Point | Actual | +| --- | --- | +| USB input | TBD | +| ESP32 3.3V rail | TBD | +| GPIO LOW | TBD | +| GPIO HIGH | TBD | + +## Observations + +TODO: upload logs, LED behavior, reset/boot issues. diff --git a/labs/003_esp32_blink/notes.md b/labs/003_esp32_blink/notes.md new file mode 100644 index 0000000..46ad784 --- /dev/null +++ b/labs/003_esp32_blink/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать проблемы с flashing, GPIO, board selection или LED polarity. + +## Explanation + +TODO: объяснить связь firmware output mode, GPIO voltage и observed blink. + +## Conclusion + +TODO: что подтверждено о board и workflow. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/003_esp32_blink/schematic.md b/labs/003_esp32_blink/schematic.md new file mode 100644 index 0000000..6e23fc1 --- /dev/null +++ b/labs/003_esp32_blink/schematic.md @@ -0,0 +1,19 @@ +# Schematic + +## Option A: Built-In LED + +```text +Computer USB -> ESP32 dev board +Built-in LED GPIO: TBD by board model +``` + +## Option B: External LED + +```text +ESP32 GPIO -> resistor -> LED anode +LED cathode -> ESP32 GND +``` + +## Actual Circuit + +TODO: указать выбранный GPIO, resistor value и способ питания. diff --git a/labs/004_button_pullup_pulldown/README.md b/labs/004_button_pullup_pulldown/README.md new file mode 100644 index 0000000..b5e5616 --- /dev/null +++ b/labs/004_button_pullup_pulldown/README.md @@ -0,0 +1,52 @@ +# Lab 004: Button Pull-Up / Pull-Down + +## Goal + +Собрать кнопку как цифровой вход ESP32 и сравнить pull-up и pull-down подходы. + +## Required Components + +- ESP32 dev board +- Button, if available +- Resistors +- Breadboard +- Dupont wires +- Multimeter + +## Expected Behavior + +GPIO имеет стабильный уровень `0` или `1`, а при нажатии кнопки меняет состояние предсказуемо. + +## Pre-Flight Checklist + +- Уточнить, есть ли кнопки в наборе. +- Выбрать безопасный GPIO. +- Проверить, что на GPIO не попадет 5V. +- Проверить common ground. +- Проверить wiring до прошивки. + +## Safety Notes + +- ESP32 GPIO strictly 3.3V. +- Не подключать GPIO напрямую к 5V. +- Не оставлять input floating, если цель — стабильное чтение. + +## Expected Measurements + +- GPIO idle level: около 0V или 3.3V в зависимости от схемы. +- GPIO pressed level: противоположный idle level. + +## Actual Measurements + +TODO: записать реальные измерения. + +## Debugging Checklist + +- Если input random, проверить pull-up/pull-down. +- Если состояние не меняется, проверить button orientation. +- Если ESP32 не boot-ится, проверить выбранный GPIO. +- Измерить напряжение на GPIO в idle и pressed states. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/004_button_pullup_pulldown/firmware.md b/labs/004_button_pullup_pulldown/firmware.md new file mode 100644 index 0000000..8e8d4f1 --- /dev/null +++ b/labs/004_button_pullup_pulldown/firmware.md @@ -0,0 +1,22 @@ +# Firmware + +## Expected Behavior + +- Configure GPIO as input. +- Read button state. +- Print state to serial or toggle LED. +- Optional: compare external resistor with internal pull-up. + +## Physical Test Procedure + +1. Measure GPIO idle voltage. +2. Press button and measure GPIO voltage. +3. Run firmware and compare serial/LED state with measurements. + +## Code + +TODO: добавить firmware после выбора GPIO и workflow. + +## Actual Result + +TODO: записать фактическое поведение. diff --git a/labs/004_button_pullup_pulldown/measurements.md b/labs/004_button_pullup_pulldown/measurements.md new file mode 100644 index 0000000..f4ac942 --- /dev/null +++ b/labs/004_button_pullup_pulldown/measurements.md @@ -0,0 +1,21 @@ +# Measurements + +## Expected Measurements + +| State | Expected GPIO Voltage | +| --- | --- | +| Idle | TBD by pull-up/pull-down choice | +| Pressed | Opposite of idle | + +## Actual Measurements + +TODO: добавить реальные значения. + +| State | Actual GPIO Voltage | +| --- | --- | +| Idle | TBD | +| Pressed | TBD | + +## Observations + +TODO: bounce, unstable readings, serial output. diff --git a/labs/004_button_pullup_pulldown/notes.md b/labs/004_button_pullup_pulldown/notes.md new file mode 100644 index 0000000..ad29a34 --- /dev/null +++ b/labs/004_button_pullup_pulldown/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать floating input, bounce, wrong button orientation или boot issues. + +## Explanation + +TODO: объяснить pull-up/pull-down через defined default state. + +## Conclusion + +TODO: что стало понятно о digital input. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/004_button_pullup_pulldown/schematic.md b/labs/004_button_pullup_pulldown/schematic.md new file mode 100644 index 0000000..a2d6bcb --- /dev/null +++ b/labs/004_button_pullup_pulldown/schematic.md @@ -0,0 +1,21 @@ +# Schematic + +## Pull-Down Option + +```text +3.3V -> button -> GPIO +GPIO -> resistor -> GND +ESP32 GND -> circuit GND +``` + +## Pull-Up Option + +```text +3.3V -> resistor -> GPIO +GPIO -> button -> GND +ESP32 GND -> circuit GND +``` + +## Actual Circuit + +TODO: указать выбранный вариант, GPIO и resistor value. diff --git a/labs/005_pwm_led_dimming/README.md b/labs/005_pwm_led_dimming/README.md new file mode 100644 index 0000000..c76fd2f --- /dev/null +++ b/labs/005_pwm_led_dimming/README.md @@ -0,0 +1,51 @@ +# Lab 005: PWM LED Dimming + +## Goal + +Управлять яркостью LED с ESP32 через PWM и проверить связь duty cycle с наблюдаемой яркостью. + +## Required Components + +- ESP32 dev board +- LED +- Resistor +- Breadboard +- Dupont wires +- Multimeter + +## Expected Behavior + +LED меняет яркость при изменении PWM duty cycle. GPIO остается в пределах 0V..3.3V. + +## Pre-Flight Checklist + +- Выбрать безопасный PWM-capable GPIO. +- Подключить LED только через резистор. +- Проверить полярность LED. +- Проверить common ground. + +## Safety Notes + +- ESP32 GPIO strictly 3.3V. +- GPIO не должен питать нагрузку с большим током. +- Не подключать LED без резистора. + +## Expected Measurements + +- GPIO low: около 0V. +- GPIO high: около 3.3V. +- Average voltage by multimeter may change with duty cycle, but exact reading depends on meter. + +## Actual Measurements + +TODO: записать реальные измерения. + +## Debugging Checklist + +- Если яркость не меняется, проверить GPIO и PWM channel. +- Если LED не светится, проверить полярность и resistor path. +- Если readings странные, помнить, что мультиметр усредняет PWM. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/005_pwm_led_dimming/firmware.md b/labs/005_pwm_led_dimming/firmware.md new file mode 100644 index 0000000..f0b11a5 --- /dev/null +++ b/labs/005_pwm_led_dimming/firmware.md @@ -0,0 +1,22 @@ +# Firmware + +## Expected Behavior + +- Configure PWM on selected GPIO. +- Sweep duty cycle from low to high. +- Optional: print current duty cycle to serial. + +## Physical Test Procedure + +1. Start with low duty cycle. +2. Observe LED brightness. +3. Measure average voltage for several duty cycles. +4. Record whether visual brightness matches expected trend. + +## Code + +TODO: добавить PWM firmware после выбора workflow. + +## Actual Result + +TODO: записать фактическое поведение. diff --git a/labs/005_pwm_led_dimming/measurements.md b/labs/005_pwm_led_dimming/measurements.md new file mode 100644 index 0000000..5c68551 --- /dev/null +++ b/labs/005_pwm_led_dimming/measurements.md @@ -0,0 +1,25 @@ +# Measurements + +## Expected Measurements + +| Duty Cycle | Expected Observation | +| --- | --- | +| 0% | LED off | +| 25% | Dim | +| 50% | Medium | +| 100% | Brightest safe level | + +## Actual Measurements + +TODO: добавить реальные значения. + +| Duty Cycle | Average Voltage | Observation | +| --- | --- | --- | +| 0% | TBD | TBD | +| 25% | TBD | TBD | +| 50% | TBD | TBD | +| 100% | TBD | TBD | + +## Observations + +TODO: visual response, flicker, meter behavior. diff --git a/labs/005_pwm_led_dimming/notes.md b/labs/005_pwm_led_dimming/notes.md new file mode 100644 index 0000000..65baf92 --- /dev/null +++ b/labs/005_pwm_led_dimming/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать PWM setup issues, wrong GPIO, unexpected brightness. + +## Explanation + +TODO: объяснить PWM как fast switching и duty cycle. + +## Conclusion + +TODO: что стало понятно о PWM. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/005_pwm_led_dimming/schematic.md b/labs/005_pwm_led_dimming/schematic.md new file mode 100644 index 0000000..a098936 --- /dev/null +++ b/labs/005_pwm_led_dimming/schematic.md @@ -0,0 +1,12 @@ +# Schematic + +## Expected Circuit + +```text +ESP32 PWM GPIO -> resistor -> LED anode +LED cathode -> ESP32 GND +``` + +## Actual Circuit + +TODO: указать GPIO, resistor value и LED polarity. diff --git a/labs/006_i2c_lcd_1602/README.md b/labs/006_i2c_lcd_1602/README.md new file mode 100644 index 0000000..da3703b --- /dev/null +++ b/labs/006_i2c_lcd_1602/README.md @@ -0,0 +1,52 @@ +# Lab 006: I2C LCD 1602 + +## Goal + +Подключить LCD 1602 с I2C-модулем к ESP32, найти I2C address и вывести тестовый текст. + +## Required Components + +- ESP32 dev board +- LCD 1602 with I2C module +- Dupont wires +- Multimeter +- Optional breadboard + +## Expected Behavior + +I2C scanner находит адрес LCD. После настройки адреса и contrast display показывает тестовый текст. + +## Pre-Flight Checklist + +- Проверить питание LCD-модуля и уровни I2C линий. +- Проверить, не подтянуты ли SDA/SCL к 5V при подключении к ESP32. +- Выбрать GPIO для SDA/SCL. +- Соединить common ground. +- Проверить contrast potentiometer на LCD backpack. + +## Safety Notes + +- ESP32 GPIO strictly 3.3V. +- 5V pull-ups на SDA/SCL могут быть опасны для ESP32. +- Не подключать 5V signals напрямую к GPIO. + +## Expected Measurements + +- LCD VCC: TBD by module choice. +- SDA/SCL idle level: should be safe for ESP32, ideally near 3.3V. +- GND continuity between ESP32 and LCD. + +## Actual Measurements + +TODO: записать реальные измерения и I2C address. + +## Debugging Checklist + +- Если scanner ничего не находит, проверить SDA/SCL order. +- Если адрес найден, но текста нет, проверить contrast. +- Если символы мусорные, проверить библиотеку и geometry `16x2`. +- Измерить idle voltage на SDA/SCL. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/006_i2c_lcd_1602/firmware.md b/labs/006_i2c_lcd_1602/firmware.md new file mode 100644 index 0000000..bb7acc0 --- /dev/null +++ b/labs/006_i2c_lcd_1602/firmware.md @@ -0,0 +1,24 @@ +# Firmware + +## Expected Behavior + +- Run I2C scanner. +- Record detected address. +- Initialize LCD as `16x2`. +- Print a short test message. + +## Physical Test Procedure + +1. Measure SDA/SCL idle voltage. +2. Run I2C scanner. +3. Adjust contrast. +4. Print test text. +5. Record address and actual behavior. + +## Code + +TODO: добавить I2C scanner и LCD test code после выбора workflow. + +## Actual Result + +TODO: записать scanner output и display result. diff --git a/labs/006_i2c_lcd_1602/measurements.md b/labs/006_i2c_lcd_1602/measurements.md new file mode 100644 index 0000000..c2097c1 --- /dev/null +++ b/labs/006_i2c_lcd_1602/measurements.md @@ -0,0 +1,27 @@ +# Measurements + +## Expected Measurements + +| Point | Expected | +| --- | --- | +| LCD VCC | TBD by module | +| SDA idle | Safe for ESP32 | +| SCL idle | Safe for ESP32 | +| GND continuity | Continuity | +| I2C address | TBD by scanner | + +## Actual Measurements + +TODO: добавить реальные значения. + +| Point | Actual | +| --- | --- | +| LCD VCC | TBD | +| SDA idle | TBD | +| SCL idle | TBD | +| GND continuity | TBD | +| I2C address | TBD | + +## Observations + +TODO: contrast, backlight, characters, scanner output. diff --git a/labs/006_i2c_lcd_1602/notes.md b/labs/006_i2c_lcd_1602/notes.md new file mode 100644 index 0000000..b69afa1 --- /dev/null +++ b/labs/006_i2c_lcd_1602/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать wrong address, blank display, 5V pull-up concern или wiring issues. + +## Explanation + +TODO: объяснить I2C address, SDA/SCL и common ground. + +## Conclusion + +TODO: что стало понятно о I2C и LCD. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/006_i2c_lcd_1602/schematic.md b/labs/006_i2c_lcd_1602/schematic.md new file mode 100644 index 0000000..badbefc --- /dev/null +++ b/labs/006_i2c_lcd_1602/schematic.md @@ -0,0 +1,18 @@ +# Schematic + +## Expected Circuit + +```text +ESP32 GND -> LCD GND +ESP32 3.3V or 5V -> LCD VCC, only after checking module requirements +ESP32 SDA GPIO -> LCD SDA +ESP32 SCL GPIO -> LCD SCL +``` + +## Important Check + +Before connecting SDA/SCL to ESP32, verify I2C pull-up voltage. ESP32 GPIO must not receive 5V. + +## Actual Circuit + +TODO: указать VCC, SDA GPIO, SCL GPIO и I2C address. diff --git a/labs/007_transistor_switch/README.md b/labs/007_transistor_switch/README.md new file mode 100644 index 0000000..d2e081b --- /dev/null +++ b/labs/007_transistor_switch/README.md @@ -0,0 +1,55 @@ +# Lab 007: Transistor Switch + +## Goal + +Собрать транзисторный ключ для управления нагрузкой и понять, почему GPIO не должен напрямую питать более тяжелые нагрузки. + +## Required Components + +- Transistor from starter kit +- Resistors +- LED or small safe load +- Bench power supply +- ESP32 optional after bench-only test +- Breadboard +- Multimeter + +## Expected Behavior + +Малый управляющий сигнал включает или выключает ток через нагрузку. Нагрузка питается через отдельный путь, а GPIO управляет транзистором. + +## Pre-Flight Checklist + +- Определить тип транзистора и pinout. +- Выбрать безопасную нагрузку. +- Поставить resistor для LED/load, если нужен. +- Поставить base/gate resistor, если применимо. +- Проверить common ground при управлении от ESP32. + +## Safety Notes + +- Не подключать нагрузку напрямую к GPIO ESP32. +- ESP32 GPIO strictly 3.3V. +- Current limit на БП выставить до подключения. +- Проверить pinout транзистора по datasheet. + +## Expected Measurements + +- Voltage on control pin/base/gate: TBD by circuit. +- Load voltage changes between off/on states. +- Current through load limited and expected. + +## Actual Measurements + +TODO: записать реальные измерения. + +## Debugging Checklist + +- Если нагрузка всегда off, проверить pinout и base/gate drive. +- Если нагрузка всегда on, проверить wiring и transistor orientation. +- Если ESP32 resets, проверить питание и common ground. +- Если БП в current limit, искать short или неправильную нагрузку. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/007_transistor_switch/measurements.md b/labs/007_transistor_switch/measurements.md new file mode 100644 index 0000000..7f81c41 --- /dev/null +++ b/labs/007_transistor_switch/measurements.md @@ -0,0 +1,25 @@ +# Measurements + +## Expected Measurements + +| State | Expected | +| --- | --- | +| Control off | Load off, low/no load current | +| Control on | Load on, current within limit | +| Common ground | Continuity if ESP32 controls circuit | + +## Actual Measurements + +TODO: добавить реальные значения. + +| Point | Actual | +| --- | --- | +| Control voltage off | TBD | +| Control voltage on | TBD | +| Load voltage off | TBD | +| Load voltage on | TBD | +| Load current | TBD | + +## Observations + +TODO: switching behavior, heating, current limit. diff --git a/labs/007_transistor_switch/notes.md b/labs/007_transistor_switch/notes.md new file mode 100644 index 0000000..0bdeadf --- /dev/null +++ b/labs/007_transistor_switch/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать pinout mistakes, always-on/off behavior или current limit events. + +## Explanation + +TODO: объяснить transistor as switch и разделение control path / load path. + +## Conclusion + +TODO: что стало понятно о транзисторном ключе. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/007_transistor_switch/schematic.md b/labs/007_transistor_switch/schematic.md new file mode 100644 index 0000000..c53a69e --- /dev/null +++ b/labs/007_transistor_switch/schematic.md @@ -0,0 +1,13 @@ +# Schematic + +## Expected Low-Side Switch Shape + +```text +Supply + -> load -> transistor -> Supply GND +Control signal -> resistor -> transistor control pin +Controller GND -> Supply GND +``` + +## Actual Circuit + +TODO: указать тип транзистора, pinout, load, resistors и источник control signal. diff --git a/labs/008_wifi_status_display/README.md b/labs/008_wifi_status_display/README.md new file mode 100644 index 0000000..93133a1 --- /dev/null +++ b/labs/008_wifi_status_display/README.md @@ -0,0 +1,53 @@ +# Lab 008: Wi-Fi Status Display + +## Goal + +Собрать маленький IoT status display: ESP32 подключается к Wi-Fi и показывает статус на LCD 1602 I2C. + +## Required Components + +- ESP32 dev board +- LCD 1602 I2C +- Dupont wires +- Multimeter +- Wi-Fi network credentials, not committed to repo + +## Expected Behavior + +ESP32 загружается, подключается к Wi-Fi, показывает connection status, IP или heartbeat на LCD. + +## Pre-Flight Checklist + +- Выполнить `003_esp32_blink`. +- Выполнить `006_i2c_lcd_1602`. +- Проверить I2C address. +- Проверить SDA/SCL voltage safety. +- Не commit-ить Wi-Fi credentials. + +## Safety Notes + +- ESP32 GPIO strictly 3.3V. +- Проверить LCD I2C pull-up voltage. +- Common ground обязателен. +- Credentials хранить вне repo или в ignored local config. + +## Expected Measurements + +- ESP32 3.3V rail stable. +- SDA/SCL idle levels safe for ESP32. +- LCD powered as verified in Lab 006. + +## Actual Measurements + +TODO: записать реальные измерения и network behavior. + +## Debugging Checklist + +- Если Wi-Fi не подключается, проверить credentials и serial logs. +- Если LCD пустой, вернуться к Lab 006. +- Если ESP32 resets, проверить питание и brownout messages. +- Если статус зависает, добавить timeout/reconnect logic. + +## Conclusion + +TODO: краткий вывод после выполнения. diff --git a/labs/008_wifi_status_display/firmware.md b/labs/008_wifi_status_display/firmware.md new file mode 100644 index 0000000..6c0ec17 --- /dev/null +++ b/labs/008_wifi_status_display/firmware.md @@ -0,0 +1,25 @@ +# Firmware + +## Expected Behavior + +- Initialize serial logging. +- Initialize LCD. +- Connect to Wi-Fi with timeout. +- Show status: booting, connecting, connected, failed/retrying. +- Avoid committing credentials. + +## Physical Test Procedure + +1. Confirm LCD works with known test message. +2. Flash Wi-Fi firmware. +3. Watch serial logs. +4. Verify LCD status transitions. +5. Record failures and reconnect behavior. + +## Code + +TODO: добавить firmware после выбора workflow и credential strategy. + +## Actual Result + +TODO: записать network status, LCD output и serial observations. diff --git a/labs/008_wifi_status_display/measurements.md b/labs/008_wifi_status_display/measurements.md new file mode 100644 index 0000000..440c10e --- /dev/null +++ b/labs/008_wifi_status_display/measurements.md @@ -0,0 +1,25 @@ +# Measurements + +## Expected Measurements + +| Point | Expected | +| --- | --- | +| ESP32 3.3V rail | Stable near 3.3V | +| LCD VCC | Same as verified in Lab 006 | +| SDA idle | Safe for ESP32 | +| SCL idle | Safe for ESP32 | + +## Actual Measurements + +TODO: добавить реальные значения. + +| Point | Actual | +| --- | --- | +| ESP32 3.3V rail | TBD | +| LCD VCC | TBD | +| SDA idle | TBD | +| SCL idle | TBD | + +## Observations + +TODO: Wi-Fi connection time, reconnect behavior, LCD messages. diff --git a/labs/008_wifi_status_display/notes.md b/labs/008_wifi_status_display/notes.md new file mode 100644 index 0000000..a50d69e --- /dev/null +++ b/labs/008_wifi_status_display/notes.md @@ -0,0 +1,17 @@ +# Notes + +## Bugs / Surprises + +TODO: записать Wi-Fi failures, LCD issues, power resets или credential problems. + +## Explanation + +TODO: объяснить boot/connect/display state flow. + +## Conclusion + +TODO: что стало понятно о простом IoT status device. + +## Next Actions + +TODO: следующий маленький шаг. diff --git a/labs/008_wifi_status_display/schematic.md b/labs/008_wifi_status_display/schematic.md new file mode 100644 index 0000000..7a183d0 --- /dev/null +++ b/labs/008_wifi_status_display/schematic.md @@ -0,0 +1,14 @@ +# Schematic + +## Expected Circuit + +```text +ESP32 GND -> LCD GND +ESP32 safe VCC -> LCD VCC, based on Lab 006 +ESP32 SDA GPIO -> LCD SDA +ESP32 SCL GPIO -> LCD SCL +``` + +## Actual Circuit + +TODO: указать GPIO, LCD VCC, I2C address и источник питания ESP32. diff --git a/labs/README.md b/labs/README.md new file mode 100644 index 0000000..2e14fbd --- /dev/null +++ b/labs/README.md @@ -0,0 +1,24 @@ +# Labs + +Лабораторные — основная единица обучения в этом репозитории. + +Каждая лабораторная содержит: + +- `README.md` — цель, компоненты, ожидаемое поведение, safety и checklist. +- `schematic.md` — соединения и схема в текстовом виде. +- `measurements.md` — expected и actual measurements. +- `notes.md` — debugging notes, ошибки, выводы. +- `firmware.md` — если в лабораторной есть код. + +Правило: сначала фиксируем expected, затем собираем, измеряем и только потом обновляем actual. + +## Current Sequence + +1. `001_led_resistor_psu` +2. `002_breadboard_and_multimeter` +3. `003_esp32_blink` +4. `004_button_pullup_pulldown` +5. `005_pwm_led_dimming` +6. `006_i2c_lcd_1602` +7. `007_transistor_switch` +8. `008_wifi_status_display` diff --git a/memory_bank/00_profile.md b/memory_bank/00_profile.md new file mode 100644 index 0000000..3df2f89 --- /dev/null +++ b/memory_bank/00_profile.md @@ -0,0 +1,35 @@ +# Profile + +## Background + +- Middle ML Engineer. +- Уверенный опыт с Python, Linux, Docker, Kubernetes, backend и software engineering. +- Новичок в практической электронике и embedded-разработке. +- Физика известна на интуитивном уровне: электрон, поле, ток, напряжение, транзистор понятны в общих чертах, но практического опыта пока мало. + +## Learning Goals + +- Учиться через эксперименты, измерения, debugging и маленькие проекты. +- Постепенно перейти от базовых DC-схем к ESP32, интерфейсам, firmware patterns и IoT-проектам. +- Вести репозиторий как долговременный embedded lab notebook. +- Использовать AI-агента как tutor, reviewer и maintainer заметок. + +## Learning Style + +- Практично и инженерно. +- Меньше лекций, больше схем, измерений, симптомов и выводов. +- Связь с software engineering приветствуется: contracts, runtime behavior, debugging, observability, state machines. + +## Current Equipment + +1. Регулируемый лабораторный источник питания постоянного тока 30V 10A. +2. Термостойкий коврик для пайки и ремонта электроники. +3. Стартовый набор электронных компонентов: резисторы, керамические и электролитические конденсаторы, светодиоды, транзисторы. +4. Многофункциональные бокорезы 5-в-1. +5. 120 Dupont jumper wires: female-female, male-male, male-female. +6. Breadboard MB-102, 830 точек. +7. Припой ПОС-61 с канифолью, 0.8 мм, 100 г. +8. 4 модуля ESP32 Wi-Fi + Bluetooth. +9. Электрический паяльник с регулировкой, 80 Вт. +10. Мультиметр. +11. LCD 1602 green display с I2C-модулем. diff --git a/memory_bank/01_current_state.md b/memory_bank/01_current_state.md new file mode 100644 index 0000000..24b9014 --- /dev/null +++ b/memory_bank/01_current_state.md @@ -0,0 +1,27 @@ +# Current State + +## Current Phase + +Stage 0 — Safety, tools, measurements. + +## Current Lab + +`001_led_resistor_psu` + +## Known Working Setup + +Пока ничего не проверено. + +## Next Actions + +1. Проверить мультиметр. +2. Изучить current limit на БП. +3. Собрать LED + resistor. +4. Измерить напряжения. +5. Вычислить ток через резистор. + +## Current Risks + +- Неизвестны номиналы резисторов в наборе. +- Не проверено, как разделены power rails на breadboard. +- Не проверены фактические настройки и поведение лабораторного БП. diff --git a/memory_bank/02_concepts.md b/memory_bank/02_concepts.md new file mode 100644 index 0000000..4abf8d8 --- /dev/null +++ b/memory_bank/02_concepts.md @@ -0,0 +1,43 @@ +# Concepts + +Краткие практические определения. Расширять только тем, что помогает собирать, измерять и debug-ить. + +## Voltage + +Напряжение измеряется между двумя точками. В embedded это как разница уровней, относительно которой вход понимает `0` или `1`. + +## Current + +Ток течет через компонент. Если путь слишком "легкий" и нет ограничения, компонент может перегреться или сгореть. + +## Resistance + +Сопротивление ограничивает ток. Первый практический пример: резистор последовательно со светодиодом. + +## Ohm's Law + +`V = I * R`. Используется для оценки тока, если известно падение напряжения на резисторе. + +## Power + +`P = V * I`. Если мощность слишком большая для компонента, он греется. + +## Ground + +GND — опорная точка схемы. Напряжения обычно измеряются относительно нее, но мультиметр всегда измеряет между двумя точками. + +## Common Ground + +Если ESP32 управляет внешней схемой, GND ESP32 и GND внешней схемы должны быть соединены. Без этого сигнал не имеет общего reference. + +## Current Limiting + +Ограничение тока на БП — safety guard. Оно не чинит схему, но может ограничить ущерб при ошибке. + +## GPIO + +GPIO — управляемый пин микроконтроллера. Для ESP32 считать все GPIO строго 3.3V logic, не 5V tolerant. + +## Breadboard Rails + +Длинные линии `+` и `-` на breadboard удобны для питания, но часто разделены посередине. Их нужно проверять мультиметром. diff --git a/memory_bank/03_components.md b/memory_bank/03_components.md new file mode 100644 index 0000000..9383759 --- /dev/null +++ b/memory_bank/03_components.md @@ -0,0 +1,87 @@ +# Components + +Каталог компонентов. Обновлять по мере реального использования и проверки. + +## Bench Power Supply + +- **Назначение:** регулируемое DC-питание для схем. +- **Что проверить:** выставление напряжения без нагрузки, current limit, поведение при коротком замыкании через безопасный тест. +- **Типичные ошибки:** слишком высокий current limit, подача питания до проверки схемы, попытка "лечить" short circuit повышением тока. +- **Safety notes:** начинать с малого current limit; выключать выход перед изменением схемы. + +## Multimeter + +- **Назначение:** измерение напряжения, сопротивления, continuity, иногда тока. +- **Что проверить:** режимы, щупы, батарею, корректный вход для измерения тока. +- **Типичные ошибки:** измерять ток параллельно как напряжение, забыть вернуть щуп из current jack. +- **Safety notes:** перед измерением тока понимать путь тока через мультиметр. + +## Breadboard MB-102 + +- **Назначение:** быстрая сборка схем без пайки. +- **Что проверить:** соединения рядов, split rails, качество контактов. +- **Типичные ошибки:** вставить компоненты в не соединенные точки, ожидать continuous rail там, где он разделен. +- **Safety notes:** проверять power rails перед включением. + +## Resistors + +- **Назначение:** ограничение тока, делители напряжения, pull-up/pull-down. +- **Что проверить:** номинал по маркировке или мультиметром. +- **Типичные ошибки:** неверный номинал, отсутствие резистора с LED. +- **Safety notes:** учитывать мощность резистора при заметном токе. + +## LEDs + +- **Назначение:** индикация, первый визуальный тест схемы. +- **Что проверить:** полярность, forward voltage, наличие последовательного резистора. +- **Типичные ошибки:** подключить без резистора, перепутать анод и катод. +- **Safety notes:** ток должен быть ограничен резистором или надежным источником тока. + +## Capacitors + +- **Назначение:** фильтрация, сглаживание, временные эффекты. +- **Что проверить:** емкость, полярность для электролитических, voltage rating. +- **Типичные ошибки:** перепутать полярность электролита, поставить слишком низкий voltage rating. +- **Safety notes:** электролитический конденсатор может выйти из строя при неправильной полярности. + +## Transistors + +- **Назначение:** управляемый ключ или усилительный элемент. +- **Что проверить:** тип, pinout, базовый/затворный резистор, допустимый ток. +- **Типичные ошибки:** перепутать выводы, ожидать "идеальный switch", забыть резистор управления. +- **Safety notes:** не управлять нагрузкой от GPIO напрямую, если ток выше возможностей ESP32. + +## ESP32 Dev Board + +- **Назначение:** микроконтроллер с Wi-Fi и Bluetooth. +- **Что проверить:** точную модель, pinout, безопасные GPIO, способ питания, USB flashing. +- **Типичные ошибки:** 5V на GPIO, использование boot strap pins без понимания, multiple power sources. +- **Safety notes:** GPIO strictly 3.3V; common ground обязателен с внешними схемами. + +## LCD 1602 I2C + +- **Назначение:** текстовый дисплей через I2C. +- **Что проверить:** I2C address, питание модуля, уровни SDA/SCL, contrast potentiometer. +- **Типичные ошибки:** неверный адрес, перепутанные SDA/SCL, отсутствие common ground. +- **Safety notes:** проверить, не подтянуты ли I2C линии к 5V при подключении к ESP32. + +## Dupont Wires + +- **Назначение:** быстрые соединения между breadboard, ESP32 и модулями. +- **Что проверить:** тип male/female, целостность, плотность контакта. +- **Типичные ошибки:** плохой контакт, неверный провод из-за цвета, loose connector. +- **Safety notes:** не тянуть за провод при включенной схеме. + +## Soldering Iron + +- **Назначение:** пайка проводов, модулей и компонентов. +- **Что проверить:** температура, состояние жала, подставка. +- **Типичные ошибки:** перегрев площадок, холодная пайка, лишний припой. +- **Safety notes:** вентиляция, горячее жало, порядок на рабочем месте. + +## Solder + +- **Назначение:** создание электрического и механического соединения. +- **Что проверить:** диаметр, флюс/канифоль, качество смачивания. +- **Типичные ошибки:** мостики между контактами, недостаточный прогрев соединения. +- **Safety notes:** пары флюса не вдыхать; после пайки проверять continuity/shorts. diff --git a/memory_bank/04_mistakes_and_debugging.md b/memory_bank/04_mistakes_and_debugging.md new file mode 100644 index 0000000..53ea9f4 --- /dev/null +++ b/memory_bank/04_mistakes_and_debugging.md @@ -0,0 +1,57 @@ +# Mistakes And Debugging + +Файл для повторяющихся ошибок, симптомов и способов проверки. + +## LED Без Резистора + +- **Симптом:** LED может резко вспыхнуть, перегреться или выйти из строя. +- **Проверка:** убедиться, что резистор стоит последовательно с LED. +- **Вывод:** LED-схема всегда требует ограничения тока. + +## Слишком Высокий Current Limit На БП + +- **Симптом:** при ошибке схема получает большой ток до того, как проблема замечена. +- **Проверка:** выставить current limit до подключения схемы. +- **Вывод:** current limit — safety guard, а не настройка "побольше". + +## Перепутанная Полярность LED + +- **Симптом:** LED не светится при ожидаемом токе. +- **Проверка:** проверить анод/катод и падение напряжения на LED. +- **Вывод:** отсутствие света не всегда значит отсутствие питания. + +## Split Power Rails На Breadboard + +- **Симптом:** одна часть схемы не получает питание. +- **Проверка:** continuity test вдоль rails. +- **Вывод:** breadboard rails нельзя считать непрерывными без проверки. + +## Отсутствие Common Ground + +- **Симптом:** сигналы между модулями работают нестабильно или не работают. +- **Проверка:** проверить соединение GND между устройствами. +- **Вывод:** сигналу нужен общий reference. + +## 5V На GPIO ESP32 + +- **Симптом:** риск повреждения ESP32. +- **Проверка:** измерить напряжение на линии перед подключением к GPIO. +- **Вывод:** ESP32 GPIO считать строго 3.3V. + +## Плохой Контакт На Breadboard + +- **Симптом:** схема работает при шевелении проводов или случайно пропадает. +- **Проверка:** continuity test, переставить провод, заменить jumper. +- **Вывод:** механика соединения — часть debugging. + +## Неправильное Измерение Тока Мультиметром + +- **Симптом:** короткое замыкание через мультиметр или сгоревший предохранитель. +- **Проверка:** ток измеряется последовательно, щуп в правильном jack. +- **Вывод:** режим измерения тока меняет схему. + +## Powering ESP32 From Multiple Sources Without Understanding + +- **Симптом:** непредсказуемое питание, риск повреждения USB-порта или платы. +- **Проверка:** выяснить power path dev board перед подключением внешнего питания. +- **Вывод:** сначала USB-only, внешнее питание позже и осознанно. diff --git a/memory_bank/05_project_ideas.md b/memory_bank/05_project_ideas.md new file mode 100644 index 0000000..c3c06a4 --- /dev/null +++ b/memory_bank/05_project_ideas.md @@ -0,0 +1,36 @@ +# Project Ideas + +## ESP32 LCD Status Display + +- **Идея:** показывать состояние устройства, Wi-Fi и тестовые сообщения на LCD 1602. +- **Prerequisite labs:** `003_esp32_blink`, `006_i2c_lcd_1602`. + +## Wi-Fi Heartbeat Monitor + +- **Идея:** ESP32 периодически показывает heartbeat через LED или LCD. +- **Prerequisite labs:** `003_esp32_blink`, `005_pwm_led_dimming`, `008_wifi_status_display`. + +## Simple MQTT Dashboard + +- **Идея:** отправлять telemetry или статус в MQTT broker и отображать команды. +- **Prerequisite labs:** `003_esp32_blink`, `008_wifi_status_display`. + +## Button-Controlled Menu On LCD + +- **Идея:** меню на LCD, управляемое кнопками. +- **Prerequisite labs:** `004_button_pullup_pulldown`, `006_i2c_lcd_1602`. + +## PWM LED Controller + +- **Идея:** управлять яркостью LED через PWM и кнопки. +- **Prerequisite labs:** `004_button_pullup_pulldown`, `005_pwm_led_dimming`. + +## Transistor-Switched Load + +- **Идея:** ESP32 управляет нагрузкой через транзисторный ключ. +- **Prerequisite labs:** `001_led_resistor_psu`, `003_esp32_blink`, `007_transistor_switch`. + +## Sensor Node В Будущем + +- **Идея:** автономный узел с сенсором, Wi-Fi и telemetry. +- **Prerequisite labs:** `003_esp32_blink`, `006_i2c_lcd_1602`, `008_wifi_status_display`, будущие ADC/sensor labs. diff --git a/memory_bank/06_open_questions.md b/memory_bank/06_open_questions.md new file mode 100644 index 0000000..783122b --- /dev/null +++ b/memory_bank/06_open_questions.md @@ -0,0 +1,10 @@ +# Open Questions + +- Какая именно ESP32 dev board используется? +- Какие номиналы резисторов есть в наборе? +- Есть ли кнопки и потенциометры? +- Какой I2C address у LCD 1602? +- Какие GPIO безопаснее использовать на первом этапе? +- Какой workflow выбрать: Arduino Core, PlatformIO или ESP-IDF? +- Разделены ли power rails на текущей breadboard MB-102? +- Есть ли предохранитель в мультиметре на current input? diff --git a/memory_bank/07_decisions.md b/memory_bank/07_decisions.md new file mode 100644 index 0000000..116f92f --- /dev/null +++ b/memory_bank/07_decisions.md @@ -0,0 +1,10 @@ +# Decisions + +- Учимся через лабораторные, а не через длинный теоретический конспект. +- Начинаем с safety и измерений. +- Не используем mains/220V. +- ESP32 GPIO считаем strictly 3.3V. +- Сначала Arduino Core или PlatformIO, ESP-IDF позже. +- Каждая лабораторная должна иметь expected и actual measurements. +- Не считаем схему правильной до проверки. +- Измерения и симптомы важнее предположений. diff --git a/memory_bank/08_learning_log.md b/memory_bank/08_learning_log.md new file mode 100644 index 0000000..a63af28 --- /dev/null +++ b/memory_bank/08_learning_log.md @@ -0,0 +1,33 @@ +# Learning Log + +Журнал учебных сессий. Новые записи добавлять сверху или снизу, но сохранять единый формат. + +## Entry Template + +### Date + +TBD + +### Session Goal + +TBD + +### What Was Built + +TBD + +### What Was Measured + +TBD + +### What Failed + +TBD + +### What Was Learned + +TBD + +### Next Action + +TBD diff --git a/snippets/README.md b/snippets/README.md new file mode 100644 index 0000000..11d39a5 --- /dev/null +++ b/snippets/README.md @@ -0,0 +1,5 @@ +# Snippets + +Практические чеклисты и короткие шаблоны для повторного использования в labs. + +Использовать перед экспериментом, а не после того, как схема уже повела себя странно. diff --git a/snippets/breadboard_checklist.md b/snippets/breadboard_checklist.md new file mode 100644 index 0000000..da903cb --- /dev/null +++ b/snippets/breadboard_checklist.md @@ -0,0 +1,10 @@ +# Breadboard Checklist + +1. Проверить, как соединены rows на конкретной breadboard. +2. Проверить continuity power rails по всей длине. +3. Найти split rails, если они есть. +4. Соединить split rails jumpers только осознанно. +5. Проверить short между `+` и `-` rails перед питанием. +6. При нестабильной схеме пошевелить провод только после выключения питания и затем проверить контакт мультиметром. + +Цвет провода помогает читать схему, но не доказывает электрическое соединение. diff --git a/snippets/debugging_template.md b/snippets/debugging_template.md new file mode 100644 index 0000000..72257a0 --- /dev/null +++ b/snippets/debugging_template.md @@ -0,0 +1,45 @@ +# Debugging Template + +## Symptom + +Что наблюдается фактически. + +## Expected + +Что должно было произойти. + +## Actual + +Что произошло и какие измерения это подтверждают. + +## Circuit Assumption To Re-check + +- Power +- Ground +- Polarity +- Pinout +- Breadboard rails +- GPIO voltage +- Component value + +## Measurements + +| Point | Expected | Actual | +| --- | --- | --- | +| TBD | TBD | TBD | + +## Hypothesis + +Какая причина наиболее вероятна. + +## Test + +Какой один маленький тест подтвердит или опровергнет гипотезу. + +## Result + +Что показал тест. + +## Fix / Next Action + +Что изменить или проверить дальше. diff --git a/snippets/esp32_gpio_safety.md b/snippets/esp32_gpio_safety.md new file mode 100644 index 0000000..242b16e --- /dev/null +++ b/snippets/esp32_gpio_safety.md @@ -0,0 +1,12 @@ +# ESP32 GPIO Safety + +- ESP32 GPIO strictly 3.3V. +- Не подключать 5V напрямую к GPIO. +- Перед подключением внешнего сигнала измерить его voltage относительно ESP32 GND. +- Для внешних модулей нужен common ground. +- Не питать нагрузку напрямую от GPIO, если ток неизвестен или заметен. +- Проверить pinout конкретной dev board. +- На старте избегать boot strap pins, пока не понятны их ограничения. +- Если используется I2C module, проверить pull-up voltage на SDA/SCL. + +Минимальный вопрос перед подключением к GPIO: "Какое напряжение реально будет на этом проводе?" diff --git a/snippets/i2c_scanner.md b/snippets/i2c_scanner.md new file mode 100644 index 0000000..4dfd1ac --- /dev/null +++ b/snippets/i2c_scanner.md @@ -0,0 +1,23 @@ +# I2C Scanner Note + +I2C scanner — первый firmware smoke test для I2C-модуля. + +## Before Running + +1. Проверить VCC модуля. +2. Проверить common ground. +3. Проверить SDA/SCL wiring. +4. Измерить idle voltage на SDA/SCL. +5. Убедиться, что уровни безопасны для ESP32. + +## Expected Result + +Scanner должен найти один или несколько I2C addresses. Для LCD 1602 часто встречаются адреса вроде `0x27` или `0x3F`, но фактический адрес нужно измерить scanner-ом. + +## If Nothing Found + +- Проверить SDA/SCL swap. +- Проверить питание. +- Проверить common ground. +- Проверить выбранные GPIO in firmware. +- Проверить, не нужен ли другой I2C bus setup. diff --git a/snippets/multimeter_checklist.md b/snippets/multimeter_checklist.md new file mode 100644 index 0000000..32c99eb --- /dev/null +++ b/snippets/multimeter_checklist.md @@ -0,0 +1,20 @@ +# Multimeter Checklist + +## Voltage Measurement + +1. Черный щуп в `COM`. +2. Красный щуп в voltage/resistance jack, не в current jack. +3. Выбрать DC voltage mode. +4. Измерять между двумя точками, часто между signal и GND. +5. Не разрывать схему для измерения напряжения. + +## Resistance / Continuity + +1. Отключить питание схемы. +2. Разрядить подозрительные конденсаторы, если они есть. +3. Выбрать resistance или continuity mode. +4. Проверить short между power rails до подачи питания. + +## Current Measurement Warning + +Ток измеряется последовательно, мультиметр становится частью цепи. Не измерять ток так же, как напряжение. diff --git a/snippets/psu_safety_checklist.md b/snippets/psu_safety_checklist.md new file mode 100644 index 0000000..5137313 --- /dev/null +++ b/snippets/psu_safety_checklist.md @@ -0,0 +1,14 @@ +# PSU Safety Checklist + +Перед подключением схемы к лабораторному БП: + +1. Выключить output БП. +2. Выставить нужное напряжение без нагрузки. +3. Выставить малый current limit. +4. Проверить полярность проводов. +5. Проверить схему мультиметром на short между `+` и `GND`. +6. Подключить схему. +7. Включить output и наблюдать ток. +8. Если БП ушел в current limit, выключить output и искать ошибку. + +Не повышать current limit, пока причина ограничения тока не понятна.