first commit

This commit is contained in:
2026-06-30 11:42:43 +03:00
commit 4925caa8e3
68 changed files with 1948 additions and 0 deletions

View File

@@ -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` по факту выполненной работы.

46
.gitignore vendored Normal file
View File

@@ -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/

18
GLOSSARY.md Normal file
View File

@@ -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.

40
README.md Normal file
View File

@@ -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/`
Не нужно писать длинную теорию. Важнее сохранить факты, измерения, симптомы, решения и следующие действия.

99
ROADMAP.md Normal file
View File

@@ -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 и схемы объяснима через ограничения железа.

38
SAFETY.md Normal file
View File

@@ -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-схемами.

51
SESSION_PROTOCOL.md Normal file
View File

@@ -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.
```

16
datasheets/README.md Normal file
View File

@@ -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.

14
diagrams/README.md Normal file
View File

@@ -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.

25
firmware/README.md Normal file
View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

15
firmware/esp32/README.md Normal file
View File

@@ -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.

View File

@@ -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.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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, странные симптомы.

View File

@@ -0,0 +1,17 @@
# Notes
## Bugs / Surprises
TODO: записать симптомы и debugging steps.
## Explanation
TODO: объяснить результат через Ohm's law, падения напряжения и current limit.
## Conclusion
TODO: что теперь понятно и что проверить дальше.
## Next Actions
TODO: следующий маленький шаг.

View File

@@ -0,0 +1,18 @@
# Schematic
## Expected Circuit
```text
PSU + -> resistor -> LED anode
LED cathode -> PSU -
```
## Notes
- Резистор должен быть последовательно с LED.
- Направление LED проверить перед включением.
- Breadboard rails проверить мультиметром, не полагаться на маркировку.
## Actual Circuit
TODO: записать фактическое соединение после сборки.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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.

View File

@@ -0,0 +1,17 @@
# Notes
## Bugs / Surprises
TODO: записать неожиданные continuity results или плохие контакты.
## Explanation
TODO: объяснить реальную topology breadboard.
## Conclusion
TODO: что теперь известно о breadboard и мультиметре.
## Next Actions
TODO: следующий маленький шаг.

View File

@@ -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.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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: записать результат прошивки и наблюдения.

View File

@@ -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.

View File

@@ -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: следующий маленький шаг.

View File

@@ -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 и способ питания.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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: записать фактическое поведение.

View File

@@ -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.

View File

@@ -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: следующий маленький шаг.

View File

@@ -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.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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: записать фактическое поведение.

View File

@@ -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.

View File

@@ -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: следующий маленький шаг.

View File

@@ -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.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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: следующий маленький шаг.

View File

@@ -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.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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.

View File

@@ -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: следующий маленький шаг.

View File

@@ -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.

View File

@@ -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: краткий вывод после выполнения.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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: следующий маленький шаг.

View File

@@ -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.

24
labs/README.md Normal file
View File

@@ -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`

35
memory_bank/00_profile.md Normal file
View File

@@ -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-модулем.

View File

@@ -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.
- Не проверены фактические настройки и поведение лабораторного БП.

View File

@@ -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 удобны для питания, но часто разделены посередине. Их нужно проверять мультиметром.

View File

@@ -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.

View File

@@ -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, внешнее питание позже и осознанно.

View File

@@ -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.

View File

@@ -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?

View File

@@ -0,0 +1,10 @@
# Decisions
- Учимся через лабораторные, а не через длинный теоретический конспект.
- Начинаем с safety и измерений.
- Не используем mains/220V.
- ESP32 GPIO считаем strictly 3.3V.
- Сначала Arduino Core или PlatformIO, ESP-IDF позже.
- Каждая лабораторная должна иметь expected и actual measurements.
- Не считаем схему правильной до проверки.
- Измерения и симптомы важнее предположений.

View File

@@ -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

5
snippets/README.md Normal file
View File

@@ -0,0 +1,5 @@
# Snippets
Практические чеклисты и короткие шаблоны для повторного использования в labs.
Использовать перед экспериментом, а не после того, как схема уже повела себя странно.

View File

@@ -0,0 +1,10 @@
# Breadboard Checklist
1. Проверить, как соединены rows на конкретной breadboard.
2. Проверить continuity power rails по всей длине.
3. Найти split rails, если они есть.
4. Соединить split rails jumpers только осознанно.
5. Проверить short между `+` и `-` rails перед питанием.
6. При нестабильной схеме пошевелить провод только после выключения питания и затем проверить контакт мультиметром.
Цвет провода помогает читать схему, но не доказывает электрическое соединение.

View File

@@ -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
Что изменить или проверить дальше.

View File

@@ -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: "Какое напряжение реально будет на этом проводе?"

23
snippets/i2c_scanner.md Normal file
View File

@@ -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.

View File

@@ -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
Ток измеряется последовательно, мультиметр становится частью цепи. Не измерять ток так же, как напряжение.

View File

@@ -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, пока причина ограничения тока не понятна.