← Schemat montażuPlik .md ↓

Przewodnik MVP: węzeł kamery z zasilaniem z USB i z akumulatora

Ten przewodnik prowadzi od pierwszego testu na biurku do węzła na akumulatorze w wydrukach. Priorytetem jest test MVP: kamera śledzi obiekt, a serwa obracają kamerę.

Powiązane pliki:

Zasady zapisu: krótkie zdania, jedna czynność w kroku. OSTRZEŻENIE oznacza ryzyko obrażeń, pożaru lub uszkodzenia. UWAGA oznacza ryzyko uszkodzenia sprzętu. Złota rada to wskazówka, która oszczędza czas lub sprzęt.


0. Dziesięć zasad (przeczytaj najpierw)

  1. Zmieniaj połączenia tylko bez zasilania. Wyjmij też kabel USB.
  2. Nigdy nie łącz plusów dwóch zasilaczy. USB z Maca i zasilacz serw to dwa źródła. Ich plusy muszą być rozdzielone. Masy (GND) łącz zawsze.
  3. Wspólna masa. GND XIAO musi być połączone z GND serw. Bez tego serwo nie „rozumie” sygnału.
  4. Piny GPIO przyjmują maksymalnie 3,3 V. Nigdy nie podawaj 5 V na pin.
  5. Akumulator nigdy bezpośrednio do odbiornika. 12,6 V uszkodzi serwo, czujnik, kamerę i XIAO.
  6. Czerwona sonda w gnieździe VΩ. Sprawdź to przed każdym pomiarem.
  7. Najpierw zmierz zasilacz bez obciążenia. Podłącz odbiornik dopiero po poprawnym pomiarze.
  8. Jedna zmiana naraz. Po każdej zmianie: pomiar i krótki test.
  9. Prąd MG996R nie płynie przez płytkę stykową. Wyjątek: małe SG90 z USB w wariancie A.
  10. Fizyczny stop to odłączenie zasilania serw. Komenda programu to nie jest zabezpieczenie.

1. Plan MVP

Etap Co działa Zasilanie Części Zaliczone, gdy
A — MVP biurkowy Kamera śledzi telefon Tylko USB z MacBooka Air XIAO ESP32-S3, 2× SG90, XIAO ESP32-S3 Sense (kamera), płytka stykowa Kamera podąża za telefonem przez 10 min bez resetu
B — MVP stołowy To samo z MG996R XIAO z USB, serwa z B6 (5 V) lub z UBEC + 2× MG996R, szyna serw na płytce uniwersalnej Jak A, a napięcie serw w ruchu ≥ 4,8 V
C — MVP na akumulatorze Węzeł bez kabli LiPo 3S → UBEC (serwa) + LM2596 (logika) + bezpiecznik, dioda, wiązka 15 min pracy, ogniwa ≥ 3,7 V po teście
D — wersja produkcyjna Węzeł w wydrukach Jak C + płytka lutowana, adaptery do serw Wszystkie pomiary z sekcji 12 od nowa
E — opcja po MVP Wykrywanie w węźle, bez Maca Jak C + Grove Vision AI V2 z kamerą CSI Węzeł śledzi bez Pythona (sekcja 9.8)

Złota rada: Etap A sprawdza cały łańcuch (kamera → Python → Wi-Fi → XIAO → serwo) prawie bez ryzyka. Jeśli coś nie działa w A, przyczyna nie leży w zasilaniu ani w mechanice. Nie pomijaj A.

Czujniki (MPU-6050, GY-271, GPS) nie są potrzebne do MVP. Firmware liczy kąt kamery z pozycji serw. Dodasz czujniki po MVP (sekcja 9.6).

1.1 Które płytki do czego

Płytka Rola Kiedy Dlaczego
XIAO ESP32-S3 Sterownik serw, węzeł 0 Etap A Na nim jest opisany cały przewodnik
XIAO ESP32-S3 Sense (kamera OV3660) Kamera, węzeł 0 Etap A Programujesz go kablem USB-C, bez podstawki MB. Na Macu działa od razu.
XIAO ESP32-C3 Sterownik serw, węzeł 1 Po MVP Ten sam rozmiar i układ pinów co S3. ServoTracker sam wybiera piny (sekcja 9.7).
ESP32-CAM (OV2640) Kamera, węzeł 1 Po MVP Potrzebuje podstawki ESP32-CAM-MB do programowania
Grove Vision AI V2 Wykrywanie obiektu w węźle, bez Maca Etap E, po MVP Opcja na później (sekcja 9.8). Nie zmieniaj dwóch rzeczy naraz.
ESP32 z zestawu startowego Zapas, ćwiczenia — XIAO C3 pasuje lepiej do tej samej płytki i tego samego firmware
ReSpeaker Lite (z przylutowanym XIAO ESP32-S3) Nie używasz w tym projekcie — Nie wylutowuj XIAO. Małe pola lutownicze łatwo zerwać.
XIAO RP2350 / RP2040 Nie używasz w tym projekcie — Nie ma Wi-Fi. Węzeł dostaje komendy przez Wi-Fi (UDP).

Złota rada: Sense jako kamera usuwa najtrudniejszy krok dla początkującego: wgrywanie programu do ESP32-CAM przez podstawkę MB. Do testu MVP nie musisz już nic kupować, oprócz kabli USB-C do danych.

Dlaczego nie jedna płytka Sense do kamery i serw? To możliwe, bo piny D0–D7 są wolne. Ale wymaga nowego, połączonego firmware, Sense mocniej się grzeje, a przewody serw muszą iść do ruchomej głowicy. Do MVP użyj dwóch płytek i gotowych programów.


2. Bezpieczeństwo

2.1 Mac i USB

2.2 Akumulator LiPo

2.3 Lutowanie

2.4 Mechanika

2.5 Ciepło XIAO Sense

2.6 Czego unikać

Błąd Skutek Zamiast tego
Serwo zasilane z pinu 3V3 XIAO Reset XIAO, przegrzany stabilizator Serwo z 5 V (USB 5V, B6, UBEC)
Zasilacz zewnętrzny na pin 5V przy podłączonym USB Prąd wsteczny do Maca Tylko jedno źródło na pinie 5V; dioda w wariancie C
Czerwona sonda w gnieździe A/mA przy pomiarze napięcia Zwarcie przez miernik, spalony bezpiecznik, przy LiPo pożar Czerwona sonda zawsze w VΩ
Kondensator odwrotnie Grzeje się, puchnie, może pęknąć Pasek „−” na obudowie do GND
Moduł czujnika wpięty wzdłuż jednego rzędu płytki Wszystkie piny zwarte Każdy pin w innym rzędzie
Długie, cienkie przewody do MG996R Spadki napięcia, drgania Krótkie przewody 20–22 AWG
Ruch 0–180° w zamontowanym mechanizmie Serwo uderza w ogranicznik, zablokowanie, maksymalny prąd Wąskie limity, poszerzaj co 50 µs
Wyłączony detektor brownout (ID0.txt, linia 102) Ukryte problemy z zasilaniem Napraw zasilanie; detektor zostaw włączony
Hasło Wi-Fi w repozytorium Hasło publicznie na GitHubie Plik secrets.h (git go ignoruje)
Serwo lub rezystor 10 kΩ do GND na D0, D8 lub D9 XIAO ESP32-C3 To piny startowe. Płytka nie uruchamia programu albo nie przyjmuje wgrywania. Serwa na D2 i D3 (sekcja 9.7)
Zasilacz zewnętrzny na pin 5V Sense bez diody Prąd wsteczny do Maca, gdy podłączysz USB Dioda D1' jak dla XIAO (sekcja 7.5)
Wyginanie taśmy kamery Sense Pęknięta taśma, błąd Camera init failed Kamera i płytka rozszerzeń jako jedna całość, mocowana sztywno
Dwie zmiany naraz Nie wiesz, co pomogło Jedna zmiana, test, zapis

3. Multimetr: jak mierzyć w tym projekcie

3.1 Ustawienie

Masz dwa mierniki: Aneng AN870 i FNIRSI S1. Używaj jednego, żeby wyniki były porównywalne.

  1. Włóż czarną sondę do gniazda COM.
  2. Włóż czerwoną sondę do gniazda VΩ. Nie używaj gniazd A, mA ani 10A.
  3. Wybierz funkcję ręcznie. Nie używaj automatycznego wykrywania funkcji. - Napięcie stałe: symbol V z linią prostą (⎓). - Rezystancja: Ω. - Ciągłość: symbol głośnika lub diody. Miernik piszczy przy połączeniu.
  4. Sprawdź miernik: w trybie ciągłości zetknij sondy. Miernik musi zapiszczeć.

Złota rada: Kup końcówki krokodylkowe do sond. Przypnij czarną sondę na stałe do GND. Wtedy mierzysz jedną ręką i nie zwierasz sąsiednich pinów.

3.2 Zasady pomiaru

3.3 Czego miernik nie pokaże

Miernik pokazuje średnią z kilkuset milisekund. Spadek napięcia trwający kilka milisekund jest dla niego niewidoczny. Taki spadek wystarczy do resetu ESP32. Objawy krótkich spadków to: reset, drgania serwa, przerwy w obrazie. Gdy je widzisz, a miernik pokazuje 5 V, i tak szukaj problemu z zasilaniem.

3.4 Punkty pomiarowe

Kody używane w całym przewodniku. Zapisuj wyniki w karcie pomiarów (sekcja 12).

Kod Czarna sonda Czerwona sonda Stan Wynik poprawny Jeśli źle
M-USB GND XIAO Pin 5V XIAO XIAO na USB 4,75–5,25 V Inny kabel lub port
M-3V3 GND XIAO Pin 3V3 XIAO XIAO na USB 3,2–3,4 V Odłącz wszystko od XIAO, sprawdź ponownie
M-SIG GND Rząd e22 (pan) lub e28 (tilt) Przed i po active 0 V przed; ok. 0,2–0,3 V po (orientacyjnie, średnia z impulsów) 3,3 V stale: błąd programu lub pinu
M-SERWO GND serwa przy złączu + serwa przy złączu Spoczynek / ruch A: 4,75–5,25 V, w ruchu ≥ 4,6 V. B, C: 4,9–5,1 V, w ruchu ≥ 4,8 V Krótsze przewody, kondensator, mocniejsze zasilanie
M-ZASIL Wyjście − zasilacza Wyjście + zasilacza Bez obciążenia B6/UBEC: 4,9–5,1 V. LM2596 logiki: 5,1–5,3 V Ustaw ponownie, nie podłączaj odbiornika
M-BAT GND (gwiazda) TP-B za bezpiecznikiem Akumulator podłączony Start testu ≥ 11,1 V. Koniec przy 10,5 V Naładuj
M-OGNIWA — P309 na złączu balansera Akumulator podłączony Każde 3,5–4,2 V, różnica ≤ 0,1 V Ładowanie z balansem; pakiet z dużą różnicą wycofaj
M-XIAO-BAT GND XIAO Pin 5V XIAO Wariant C, USB odłączone 4,7–5,0 V (za diodą) Sprawdź diodę i LM2596
M-CAM GND kamery Pin 5V kamery Wariant C ESP32-CAM: 5,1–5,3 V. Sense (za diodą D1'): 4,7–5,0 V Sprawdź LM2596 logiki i diodę D1'
M-I2C GND SDA (rząd 14) i SCL (rząd 16) Czujniki podłączone, USB 3,2–3,4 V Powyżej 3,4 V: odłącz czujnik natychmiast
M-OFF GND szyny + szyny Po wyłączeniu < 0,1 V Poczekaj; sprawdź rezystor rozładowujący
O-ZWARCIE − szyny + szyny Bez zasilania, Ω Odczyt rośnie lub > 100 Ω Stałe ~0 Ω: szukaj zwarcia
O-MASA GND serw GND XIAO Bez zasilania, ciągłość Pisk Brak wspólnej masy
O-REG IN− OUT− (UBEC i LM2596) Bez zasilania, ciągłość Pisk Zapytaj sprzedawcę; nie zakładaj wspólnej masy

4. Stabilny układ: po co rezystory i kondensatory

4.1 Skąd biorą się problemy

Przyczyna Co się dzieje Analogia dla programisty
Spadek napięcia Serwo rusza i na kilka ms pobiera dużo prądu. Napięcie spada. ESP32 się resetuje. Skok obciążenia, który wywala proces bez logów
Pływające wejście Pin bez sygnału łapie zakłócenia. Serwo drga przy starcie. Niezainicjalizowana zmienna
Brak wspólnej masy Sygnał nie ma punktu odniesienia Dwa układy współrzędnych bez wspólnego początku
Luźny styk Opór styku zmienia się przy drganiach Niestabilne połączenie sieciowe
Zakłócenia Długie przewody silnika działają jak antena Szum w danych wejściowych

4.2 Elementy stabilizujące

Element Wartość Gdzie dokładnie Po co (analogia) Bez niego Uwagi
C1 kondensator elektrolityczny 470 µF (1 serwo) lub 1000 µF (2× MG996R) Między + a − serw, maks. 2 cm od złączy serw Lokalny bufor energii na szczyty prądu, jak bufor zapisu Spadki napięcia, drgania, resety Pasek „−” do GND. Napięcie 25 V jest ponad 2× większe od 5 V: dobrze.
C2 kondensator elektrolityczny 470 µF Wariant C. ESP32-CAM: między jej 5V a GND. Sense: przed diodą D1' (po stronie LM2596), blisko kamery Bufor na szczyty prądu nadajnika Wi-Fi kamery Komunikat „Brownout” i przerwy obrazu Jak C1
R1 rezystor szeregowy 220 Ω Między pinem XIAO a przewodem sygnałowym serwa Ogranicza prąd, gdy serwo ma zasilanie, a XIAO nie (lub odwrotnie); tłumi odbicia na przewodzie. Jak limiter. Ryzyko uszkodzenia pinu przy złej kolejności zasilania Sygnał nadal ok. 3,2 V: serwa zwykle to akceptują
R2 rezystor ściągający (pull-down) 10 kΩ Między sygnałem serwa (za R1) a GND Ustala domyślny stan LOW, gdy ESP32 się uruchamia. Jak wartość domyślna zmiennej. Serwo może drgnąć przy starcie Nie gwarantuje, że każde serwo stoi przy włączeniu
R3 rezystor rozładowujący 1 kΩ Równolegle do C1 Rozładowuje C1 po wyłączeniu, jak destruktor Szyna trzyma napięcie po wyłączeniu 5 mA, 0,025 W: zwykły rezystor 0,25 W wystarczy
D1 dioda Schottky 1N5819 (lub SS34, SB540) Między LM2596 logiki (anoda) a pinem 5V XIAO (katoda, pasek) Zawór jednokierunkowy: USB nie zasila LM2596, a LM2596 nie zasila Maca. Wymaga tego Seeed. Prąd wsteczny przy podłączeniu USB Spadek ok. 0,3–0,4 V, dlatego LM2596 ustaw na 5,2 V. Kamera Sense to też XIAO: dostaje własną diodę D1' w ten sam sposób.
F1 bezpiecznik 5 A, mini samochodowy Na przewodzie + akumulatora, maks. 5 cm od XT60 Przerywa obwód przy zwarciu, jak circuit breaker Zwarcie = rozgrzane przewody i pożar Nie chroni przed nadmiernym rozładowaniem
R5/R6 dzielnik (opcja) 47 kΩ / 10 kΩ + akumulatora → R5 → punkt → R6 → GND; punkt do XIAO D3 (C3: D1) Pozwala XIAO mierzyć napięcie akumulatora i zatrzymać serwa Tylko alarm P309 12,6 V → 2,21 V na pinie: bezpieczne
Rezystory podciągające I²C Już na modułach — Moduły GY-521 i GY-271 mają je na płytce — Nie dodawaj kolejnych

4.3 Masa w układzie gwiazdy

Połącz wszystkie masy w jednym punkcie: przy minusie akumulatora lub zasilacza. Prąd serw wraca własnym przewodem prosto do zasilacza serw. Przewód masy XIAO służy tylko jako odniesienie dla sygnału. Prąd silnika nie może płynąć przez XIAO ani przez płytkę stykową.

4.4 Przewody

Zastosowanie Przekrój Długość
Sygnały, czujniki Przewody połączeniowe z zestawu Do 20 cm
Zasilanie serw 20–22 AWG, silikonowy Jak najkrócej
Akumulator → bezpiecznik → przetwornice 18–20 AWG, silikonowy Jak najkrócej

Złota rada: Skręć każdą parę + i − (2–3 skręty na 5 cm). Mniej zakłóceń i słabsze pole magnetyczne przy kompasie.

4.5 Stabilność w firmware

ServoTracker już to robi:


5. Wariant A: wszystko z USB Maca (MVP biurkowy)

5.1 Bilans prądu

Wartości orientacyjne:

Odbiornik Port Maca Typowo Chwilowo
XIAO ESP32-S3 z Wi-Fi 1 ok. 100 mA (dane Seeed) do ok. 350 mA przy nadawaniu
2× SG90 bez obciążenia 1 (przez pin 5V XIAO) 10 mA w spoczynku, 100–300 mA każde w ruchu do ok. 700 mA każde przy zablokowaniu
XIAO ESP32-S3 Sense, obraz przez Wi-Fi 2 ok. 140 mA (dane Seeed) ok. 350 mA (dane Seeed)

Plan: port 1 ok. 1 A, port 2 ok. 0,5 A. To dlatego MG996R nie są w wariancie A.

5.2 Porty i kable

5.3 Schemat

MacBook Air
 ├─ port 1 ── USB-C ── XIAO ESP32-S3
 │                      ├─ 5V ── szyna + (czerwona) ──┬── SG90 pan (+) i SG90 tilt (+)
 │                      │                             └── C1 470 µF (+)
 │                      ├─ GND ─ szyna − (niebieska) ─┬── SG90 (−) ×2, C1 (−)
 │                      │                             └── R2 i R2' (do GND)
 │                      ├─ D0 ── R1 220 Ω ──┬── sygnał SG90 pan
 │                      │                   └── R2 10 kΩ ── GND
 │                      └─ D1 ── R1' 220 Ω ─┬── sygnał SG90 tilt
 │                                          └── R2' 10 kΩ ── GND
 └─ port 2 ── USB-C ── XIAO ESP32-S3 Sense (kamera, obraz przez Wi-Fi)

Jedynym źródłem zasilania w wariancie A jest USB z Maca. Nie podłączaj tu B6, UBEC ani LM2596.

5.4 Rozmieszczenie na płytce stykowej (830 pól)

Najpierw poznaj płytkę (bez zasilania, tryb ciągłości):

  1. Sprawdź, że a10–e10 są połączone, a e10–f10 nie.
  2. Sprawdź szyny zasilania wzdłuż całej długości. Szyny w wielu płytkach mają przerwę w połowie.
  3. Opisz markerem prawe szyny (po stronie f–j): czerwona „+5V USB”, niebieska „GND”. Lewa niebieska szyna też będzie masą (most, przewód nr 3).

Ułożenie XIAO: włóż XIAO w poprzek środkowego rowka w rzędach 1–7, złączem USB-C na zewnątrz płytki. Lewe piny wchodzą w kolumnę c, prawe w kolumnę g. Wolne zostają otwory a–b po lewej i h–j po prawej. Patrząc z góry (USB-C u góry):

Rząd Lewa strona (a–e) Prawa strona (f–j)
1 D0 (GPIO1) — serwo pan 5V
2 D1 (GPIO2) — serwo tilt GND
3 D2 3V3
4 D3 (GPIO4) — opcja: pomiar akumulatora D10
5 D4 (GPIO5) — SDA D9
6 D5 (GPIO6) — SCL D8
7 D6 (GPIO43) D7 (GPIO44) — wejście z GPS TX (później)

Jeśli XIAO nie ma goldpinów, przylutuj je. Złota rada: Włóż goldpiny w płytkę stykową, połóż na nich XIAO i dopiero lutuj. Piny będą proste. Najpierw poćwicz na kawałku płytki uniwersalnej.

Połączenia (bez zasilania):

Nr Od Do Kolor
1 i2 (GND XIAO) Prawa szyna niebieska Czarny
2 i1 (5V XIAO) Prawa szyna czerwona Czerwony
3 Prawa szyna niebieska (dół płytki) Lewa szyna niebieska (most masy) Czarny
4 a1 (D0) a20 Pomarańczowy
5 R1 220 Ω b20 → b22 —
6 R2 10 kΩ c22 → c24 —
7 a24 Lewa szyna niebieska Czarny
8 a2 (D1) a26 Żółty
9 R1' 220 Ω b26 → b28 —
10 R2' 10 kΩ c28 → c30 —
11 a30 Lewa szyna niebieska Czarny
12 C1 470 µF: nóżka „+” Prawa szyna czerwona, rząd 15 —
13 C1: nóżka z paskiem „−” Prawa szyna niebieska, rząd 15 —
14 e22 Sygnał SG90 pan (pomarańczowy) Pomarańczowy
15 e28 Sygnał SG90 tilt (pomarańczowy) Żółty
16 Prawa szyna czerwona + obu SG90 (czerwone) Czerwony
17 Prawa szyna niebieska − obu SG90 (brązowe) Czarny

Ten sam układ krok po kroku: schemat montażu, rozdział 02. Zasilanie po prawej stronie płytki, sygnały po lewej.

Rzędy 10, 12, 14 i 16 zostaw na czujniki (GND, 3V3, SDA, SCL), tak jak w BOM.md. Ten układ zgadza się z rzędami 20–24 w BATTERY-MVP.md.

Wtyk serwa przyjmuje przewód męsko-męski. Kolejność przewodów SG90: brązowy = GND, czerwony = +5 V, pomarańczowy = sygnał. Dokumentacja serwa ma pierwszeństwo przed kolorem.

UWAGA: Kondensator 470 µF na szynie USB daje krótki udar prądu przy wkładaniu kabla. Jeśli macOS wyłączy port przy podłączaniu, wyjmij C1. Spowolnienie ruchu w firmware wystarczy dla SG90.

5.5 Mechanika biurkowego pan-tilt z 2× SG90

  1. Przyklej korpus SG90 „pan” taśmą piankową do ciężkiej podstawy (klocek, książka). Wał do góry.
  2. Nie montuj jeszcze orczyków. Najpierw ustaw środek (krok A5).
  3. Po ustawieniu środka przyklej korpus SG90 „tilt” do orczyka serwa pan. Wał poziomo.
  4. Przymocuj XIAO Sense z radiatorem do orczyka serwa tilt. Użyj taśmy piankowej na tylnej części płytki XIAO, nie na kamerze. Obiektyw do przodu, złącze USB-C do tyłu. Nie zginaj taśmy kamery.
  5. Użyj miękkiego kabla USB-C. Zostaw luźną pętlę. Przymocuj kabel do podpórki nad kamerą, żeby serwo go nie dźwigało.

5.6 Krok po kroku

A1. Przygotuj Maca. Zainstaluj oprogramowanie z sekcji 9.1.

A2. XIAO bez niczego.

  1. Podłącz tylko XIAO do portu 1. Wpisz sieć w secrets.h i uruchom make servo-s3 (9.3). Nic nie jest podłączone do pinów, a sygnały serw są wyłączone do komendy active.
  2. Uruchom make monitor. Zobaczysz adres IP. Zapisz go.
  3. Zmierz M-USB i M-3V3.
  4. Odłącz USB.

A3. Kamera.

  1. Wgraj kamerę do Sense: make camera-sense (sekcja 9.2).
  2. Otwórz w przeglądarce adres z make monitor. Zobacz obraz.
  3. Zamknij kartę przeglądarki. Strumień obsługuje tylko jednego klienta.

A4. Sygnały bez serw.

  1. Bez zasilania połącz XIAO, R1, R2, R1', R2' według tabeli 5.4. Nie podłączaj serw.
  2. Zmierz O-ZWARCIE między szyną czerwoną a niebieską.
  3. Podłącz XIAO do portu 1. ServoTracker jest już wgrany (A2). Uruchom make monitor.
  4. Zmierz M-SIG na e22: ok. 0 V.
  5. Wyślij active. Zmierz M-SIG na e22 i e28: ok. 0,2–0,3 V.
  6. Wyślij release. M-SIG wraca do 0 V. Sygnały działają bez ryzyka dla serw.

A5. Jedno SG90 (pan) i ustawienie środka.

  1. Odłącz USB. Podłącz SG90 pan (sygnał e22, + i − z szyn) oraz C1.
  2. Podłącz USB. Wyślij active. Serwo idzie do środka (1500 µs).
  3. Zmierz M-SERWO przy wtyku serwa.
  4. Wyślij 0.3,0. Serwo rusza przez 0,5 s i staje.
  5. Wyślij release. Odłącz USB. Załóż orczyk tak, żeby kamera patrzyła prosto do przodu.

A6. Drugie SG90 (tilt). Powtórz A5 dla e28. Do testu wyślij 0,0.3. Załóż orczyk tak, żeby kamera patrzyła poziomo.

A7. Kierunki i Python. Wykonaj test kierunków (sekcja 9.4), potem uruchom Pythona (sekcja 9.5).

5.7 Test MVP-A (zaliczony, gdy wszystko jest prawdą)


6. Wariant B: XIAO z USB, MG996R z zewnętrznego zasilania

6.1 Schemat

MacBook Air ── USB ── XIAO ── D0 → R1/R2 → sygnał pan
                         │    D1 → R1'/R2' → sygnał tilt
                         └─ GND ── przewód odniesienia ──┐
                                                        │
B6 (DC 5,0 V, limit 2–3 A)  lub  UBEC (zworka 5 V, wejście z B6 12 V)
   (+) ─────────────── SZYNA SERW + ── C1 + R3 ── MG996R pan (+), MG996R tilt (+)
   (−) ─────────────── SZYNA SERW − ──────────────┴── MG996R (−) ×2, przewód odniesienia

Pin 5V XIAO nie łączy się z szyną serw. Wspólna jest tylko masa.

6.2 Szyna serw na płytce uniwersalnej

To pierwsze prawdziwe lutowanie. Użyj kawałka płytki 7×9 cm.

  1. Sprawdź w trybie ciągłości, jak połączone są pola płytki. Płytka z pojedynczymi polami nie ma połączeń jak płytka stykowa.
  2. Wlutuj złącze ARK4: zacisk 1 = +5 V wejście, zacisk 2 = GND wejście, zacisk 3 = GND odniesienia do XIAO.
  3. Wlutuj dwie listwy goldpin 3-pin na wtyki serw. Kolejność pinów: GND, +5 V, sygnał (jak w wtyku: brązowy, czerwony, pomarańczowy).
  4. Połącz wszystkie piny +5 V ze sobą i z zaciskiem 1. Połącz wszystkie GND ze sobą i z zaciskami 2 i 3. Na prąd serw użyj przewodu 20–22 AWG albo grubej ścieżki z cyny.
  5. Wlutuj C1 1000 µF najwyżej 2 cm od goldpinów. Pasek „−” do GND.
  6. Wlutuj R3 1 kΩ równolegle do C1.
  7. Opisz płytkę: „SERWA 5 V”.
  8. Bez zasilania zmierz O-ZWARCIE i sprawdź ciągłość każdego pinu.

6.3 Źródło zasilania serw

Opcja 1 (najbezpieczniejsza): B6 w trybie wyjścia DC.

  1. Odłącz wszystkie akumulatory od B6.
  2. Podłącz zasilacz 12 V do wejścia B6.
  3. Wybierz wyjście DC. Ustaw 5,0 V i 2 A.
  4. Zmierz M-ZASIL bez obciążenia.
  5. Zatrzymaj wyjście. Podłącz szynę serw. Włącz wyjście.
  6. Jeśli serwa drgają lub stają w ruchu, ustaw 3 A.

Opcja 2: UBEC zasilany z B6. Tak testujesz UBEC, który trafi do węzła.

  1. Ustaw zworkę UBEC na 5 V.
  2. Ustaw wyjście DC w B6 na 12 V i 2 A. Podłącz wejście UBEC.
  3. Zmierz M-ZASIL na wyjściu UBEC bez obciążenia.
  4. Wyłącz. Podłącz szynę serw.

6.4 Krok po kroku

  1. Zdejmij orczyk z MG996R. Zamocuj korpus (imadło, zacisk, taśma).
  2. Bez zasilania: XIAO na płytce stykowej jak w 5.4, ale bez przewodu nr 2 (5V XIAO → szyna czerwona), bez C1 i bez SG90. Pin 5V XIAO zostaje niepodłączony. Schemat montażu, rozdział 05, pokazuje każdy przewód.
  3. Przewody: e22 → sygnał pan na szynie serw. Zacisk 3 (GND odniesienia) → prawa szyna niebieska płytki stykowej.
  4. Zmierz O-MASA.
  5. Podłącz XIAO do Maca. Włącz zasilanie serw.
  6. Wyślij active. Zmierz M-SERWO w spoczynku.
  7. Wyślij 0.3,0 kilka razy. Zmierz M-SERWO w ruchu: ≥ 4,8 V.
  8. Wyślij release. Wyłącz zasilanie serw. Odłącz USB. Zmierz M-OFF.
  9. Dodaj drugie MG996R (e28). Powtórz.

6.5 Test MVP-B

Uruchom Pythona i śledź telefon przez 10 minut, oba serwa w ruchu. Zaliczone, gdy:

Dopiero potem montuj serwa w wydrukach (sekcja 8) i poszerzaj limity (sekcja 9.4).


7. Wariant C: akumulator

7.1 Schemat zasilania węzła

                    ┌────────── P309 na złączu balansera (alarm 3,5 V/ogniwo)
LiPo 3S 2200 mAh ───┤
  XT60 (+) ── F1 5 A ── TP-B ──┬── UBEC IN+  → UBEC OUT 5,0 V → SZYNA SERW (C1, R3) → pan, tilt
                               ├── LM2596 IN+ → OUT 5,2 V → SZYNA LOGIKI (C2 470 µF)
                               │                             ├── kamera: ESP32-CAM 5V
                               │                             │   albo D1' 1N5819 (pasek do Sense) → Sense 5V
                               │                             └── D1 1N5819 (pasek do XIAO) → XIAO 5V
                               └── (opcja) R5 47 kΩ ─┬─ R6 10 kΩ ── GND
                                                     └── XIAO D3
  XT60 (−) ──────────────── GND, punkt gwiazdy ──┬── UBEC IN−
                                                 ├── LM2596 IN−
                                                 └── R6

Każdy węzeł ma dwa zasilania: UBEC (lub LM2596 z radiatorem) dla serw i LM2596 dla logiki. Serwa nie mogą resetować XIAO.

Opcja z BATTERY-MVP.md (schemat montażu, rozdział 08): za F1 wyłącznik DC S1 (min. 5 A, 24 V DC) i dioda D2 SB540 (pasek w stronę przetwornic) chroniąca przed odwrotną polaryzacją. D2 to inna dioda niż D1 (1N5819 przed pinem 5V XIAO).

7.2 Wiązka bez akumulatora

OSTRZEŻENIE: Akumulator leży w torbie LiPo, daleko od stołu, przez cały czas budowy wiązki.

  1. Porównaj wzrokiem pigtail XT60 z wtykiem akumulatora. Upewnij się, że pasują (męski/żeński). Nie wkładaj ich do siebie.
  2. Nasuń koszulki termokurczliwe na przewody przed lutowaniem.
  3. Wlutuj oprawkę bezpiecznika w przewód +, najwyżej 5 cm od XT60. Bezpiecznik 5 A.
  4. Zrób punkt rozdziału (płytka uniwersalna z ARK albo lutowane połączenia): +BAT do UBEC IN+ i LM2596 IN+, −BAT do UBEC IN− i LM2596 IN−.
  5. Opisz punkt pomiarowy TP-B (za bezpiecznikiem).
  6. Zmierz O-REG na UBEC i na LM2596.
  7. Zmierz O-ZWARCIE między +BAT a −BAT: odczyt rośnie (kondensatory przetwornic), nie stałe 0 Ω.
  8. Sprawdź ciągłość: pin + XT60 ↔ IN+ UBEC (pisk), pin − XT60 ↔ IN− UBEC (pisk), + ↔ − (brak pisku).

7.3 Ustaw LM2596 logiki przed akumulatorem

  1. Zasil LM2596 z wyjścia DC B6 (12 V, 1 A). Bez obciążenia.
  2. Kręć śrubką i patrz na miernik. Ustaw 5,2 V. Nowa przetwornica może być ustawiona dużo wyżej.
  3. Wyłącz i włącz. Zmierz ponownie.
  4. Zaklej śrubkę taśmą kaptonową. Opisz: „5,2 V LOGIKA”.

7.4 Pierwsze podłączenie akumulatora

  1. Odłącz obie szyny (serw i logiki) od przetwornic.
  2. Podłącz P309 do złącza balansera. Sprawdź M-OGNIWA.
  3. Podłącz XT60. Zmierz M-BAT na TP-B.
  4. Zmierz M-ZASIL na wyjściu UBEC (4,9–5,1 V) i LM2596 (5,1–5,3 V).
  5. Odłącz XT60. Zmierz M-OFF.

7.5 XIAO i kamera z akumulatora

OSTRZEŻENIE: Gdy XIAO (sterownik lub kamera Sense) ma zasilanie z akumulatora, nie podłączaj USB, chyba że między LM2596 a pinem 5V tej płytki jest dioda (D1 lub D1'). Najprościej: do wgrywania programu odłącz XT60, potem podłącz USB.

  1. Bez zasilania wykonaj połączenia kamery. Kamera Sense (węzeł 0): - LM2596 OUT+ → D1' anoda. D1' katoda (pasek) → pin 5V Sense. - LM2596 OUT− → GND Sense. - C2 470 µF równolegle przed diodą: nóżka „+” do anody D1', nóżka z paskiem do GND. Nie w szereg.

Albo ESP32-CAM (węzeł 1): - LM2596 OUT+ → pin 5V ESP32-CAM. - LM2596 OUT− → pin GND ESP32-CAM. - C2 470 µF równolegle: nóżka „+” do 5V kamery, nóżka z paskiem do GND kamery. Nie w szereg. 2. Połączenia sterownika: - LM2596 OUT+ → D1 anoda. D1 katoda (pasek) → pin 5V XIAO. - LM2596 OUT− → GND XIAO. 3. Podłącz XT60. Zmierz M-XIAO-BAT (4,7–5,0 V), M-3V3, M-CAM. 4. XIAO łączy się z Wi-Fi. Kamera nadaje obraz. 5. Odłącz XT60.

7.6 Serwa z akumulatora i test MVP-C

  1. Bez zasilania podłącz szynę serw do UBEC. Sprawdź O-MASA.
  2. Podłącz XT60. Uruchom Pythona. Naciśnij a.
  3. Śledź telefon przez 15 minut. Co 5 minut sprawdź M-BAT i M-OGNIWA.
  4. Naciśnij d. Odłącz XT60. Odłącz P309.

Zaliczone, gdy: brak resetów, M-SERWO w ruchu ≥ 4,8 V, ogniwa ≥ 3,7 V po teście, UBEC i LM2596 da się dotknąć przez 5 sekund.

Czas pracy (szacunek): akumulator ma ok. 24 Wh. Do 3,5 V na ogniwo zużyjesz ok. 20 Wh. Węzeł pobiera ok. 3,5–7 W. To daje ok. 3 godziny lub więcej. Zmierz i zapisz rzeczywisty czas.

7.7 Monitor akumulatora w firmware (opcja)

  1. Wlutuj R5 47 kΩ od TP-B do punktu P i R6 10 kΩ od P do GND.
  2. Podłącz P do XIAO D3 (GPIO4). XIAO C3: do D1 (GPIO3). Zmierz napięcie P: M-BAT × 10/57.
  3. W ServoTracker ustaw BATTERY_ADC_PIN = 4 (XIAO C3: 3).
  4. Po 3 sekundach poniżej 10,5 V firmware zatrzymuje ruch i odrzuca active.

Jeśli zestaw rezystorów nie ma 47 kΩ, użyj 10 kΩ / 2,2 kΩ i zmień BATTERY_DIVIDER na (10.0f + 2.2f) / 2.2f.

7.8 Po pracy

  1. Naciśnij d, potem odłącz XT60.
  2. Odłącz P309.
  3. Zmierz M-OFF.
  4. Przechowuj pakiet w torbie LiPo. Po kilku dniach bez używania użyj programu STORAGE.

8. Wersja produkcyjna na wydrukach

8.1 Adaptery do MG996R

Twoje wydruki mają gniazda pod silniki krokowe 28BYJ-48. MG996R ma prostokątny korpus i inne otwory. Zaprojektuj adaptery w CameraNode.f3d.

  1. Zmierz swoje serwo suwmiarką: korpus, rozstaw otworów w uszach, położenie wału.
  2. Zaprojektuj płytkę adaptera mocowaną do istniejących otworów po 28BYJ-48.
  3. Ustaw oś wału serwa dokładnie w osi starego wału.
  4. Przykręć drukowane koło zębate do okrągłego orczyka. Nie drukuj otworu z wielowypustem.
  5. Drukuj koła zębate z podstawowego PLA, nie z PLA silk.
  6. Sprawdź zazębienie i luz bez zasilania. Obróć mechanizm ręką (bez serwa w środku).

8.2 Płytka lutowana

  1. Przed rozbiórką płytki stykowej zrób zdjęcia i opisz każdy przewód.
  2. Najpierw przenieś szyny zasilania, potem sygnały.
  3. XIAO i kamerę osadź w gniazdach goldpin żeńskich. Moduły będą wymienne.
  4. Serwa podłączaj przez goldpiny męskie, akumulator przez XT60, zasilanie przez ARK.
  5. Sprawdź każde połączenie w trybie ciągłości. Sprawdź też brak połączenia między sąsiednimi ścieżkami.

8.3 Montaż w wydrukach

Złota rada: Po przeniesieniu do wydruków wykonaj wszystkie pomiary z sekcji 12 od nowa. Działająca płytka stykowa nie dowodzi, że lutowana wersja jest poprawna.

Złota rada: W wersji produkcyjnej dodaj później aktualizację firmware przez Wi-Fi (ArduinoOTA). Nie będziesz wtedy podłączać USB do obracającego się węzła z akumulatorem.


9. Oprogramowanie MVP

9.1 Narzędzia na Macu: terminal i make

Na tym Macu wszystko jest już zainstalowane: arduino-cli 1.5.1, pakiet esp32 3.3.12 i biblioteka ESP32Servo 3.2.1. Wersje są zapisane w pliku Makefile w głównym folderze projektu. Każdy build używa tych samych wersji, a GitHub sprawdza kompilację po każdym pushu.

Na innym Macu: brew install arduino-cli, potem make setup. Pakiet zajmuje ok. 6 GB.

Wszystkie komendy uruchamiasz w głównym folderze projektu:

cd ~/AI_Project/Distributed-Camera-Node-Tracking-System
Komenda Co robi
make help Lista komend
make build Kompiluje wszystkie programy. Płytka niepotrzebna.
make camera-sense Wgrywa kamerę do XIAO Sense (węzeł 0)
make servo-s3 Wgrywa ServoTracker do XIAO S3 (węzeł 0)
make servo-c3 Wgrywa ServoTracker do XIAO C3 (węzeł 1)
make camera-esp32cam Wgrywa kamerę do ESP32-CAM na podstawce MB (węzeł 1)
make monitor Monitor portu szeregowego. Wyjście: Ctrl+C.
make ports Pokazuje podłączone płytki
make run Uruchamia program w Pythonie

Ustawienia płytek (PSRAM dla Sense, USB CDC On Boot, partycje) są w Makefile. Nie ustawiasz ich ręcznie.

Złota rada: przy wgrywaniu podłącz tylko jedną płytkę. XIAO S3 i XIAO Sense wyglądają dla komputera tak samo. Jeśli podłączone są dwie płytki, make zatrzymuje się i prosi o port: make servo-s3 PORT=/dev/cu.usbmodemXXXX. make odmawia też wgrania, gdy w secrets.h jest jeszcze przykładowe hasło.

Inne zasady:

9.2 Kamera XIAO ESP32-S3 Sense — MVP

Program kamery jest w repozytorium: Hardware/Assembly/Sketches/CameraWebServer/. To przykład Espressif z dwiema zmianami: dane Wi-Fi są w secrets.h, a model kamery wybiera się sam według płytki.

  1. Bez zasilania załóż płytkę rozszerzeń z kamerą na XIAO Sense. Dopasuj złącze B2B i dociśnij do kliknięcia. Załóż antenę.
  2. W Hardware/Assembly/Sketches/CameraWebServer/secrets.h wpisz nazwę i hasło sieci 2,4 GHz. Git ignoruje ten plik, a strona go nie publikuje.
  3. Podłącz tylko Sense. Uruchom make camera-sense.
  4. Uruchom make monitor. Zobaczysz: Camera Ready! Use 'http://<IP>' to connect. Strumień: http://<IP>:81/stream.
  5. W panelu kamery (http://<IP>) ustaw rozdzielczość QVGA lub VGA. Większa rozdzielczość = większe opóźnienie i więcej ciepła.

Program obsługuje czujnik OV3660 i sam ustawia dla niego odwrócenie obrazu. Jeśli obraz w Pythonie jest do góry nogami, użyj V-Flip w panelu kamery albo FLIP_VERTICAL w Pythonie (9.5).

Złota rada: Nie używaj pinów D8, D9 i D10 płytki Sense. Dzieli je gniazdo karty SD.

9.2b ESP32-CAM — węzeł 1, po MVP

  1. Wpisz sieć w secrets.h (ten sam plik co w 9.2).
  2. Włóż ESP32-CAM w podstawkę MB. Podłącz tylko ją.
  3. Uruchom make camera-esp32cam. Podstawka MB zwykle sama włącza tryb wgrywania.
  4. Naciśnij RST. Uruchom make monitor: zobaczysz adres. Strumień: http://<IP>:81/stream.
  5. W panelu kamery ustaw rozdzielczość QVGA lub VGA i jasność diody LED na 0.

Komunikat Failed to connect lub Timed out waiting for packet header oznacza, że kamera nie weszła w tryb wgrywania. Przytrzymaj IO0 na MB, naciśnij i puść RST, puść IO0. Uruchom komendę ponownie.

9.3 ServoTracker (XIAO)

  1. W Hardware/Assembly/Sketches/ServoTracker/secrets.h wpisz nazwę i hasło sieci 2,4 GHz. Jeśli pliku nie ma, uruchom make secrets.
  2. Podłącz tylko XIAO S3. Uruchom make servo-s3.
  3. Uruchom make monitor. Firmware pokaże: IP: ..., UDP port 3333.
  4. W monitorze wpisz komendę i naciśnij Enter. Odpowiedź (np. Mode: ACTIVE) pojawi się w logu.
  5. Komendy (Serial lub UDP 3333):
Komenda Działanie
active Serwa startują po kolei w środku, potem śledzenie
disabled Stop, serwa trzymają pozycję
release Brak sygnału serw. Ramię tilt MG996R może opaść.
x,y Błąd celu od −1 do 1. Ruch trwa 0,5 s, potem stop.

Ustawienia na górze pliku:

Ustawienie Domyślnie Kiedy zmienić
minUs / maxUs pan 1200–1800, tilt 1300–1700 Po teście limitów (9.4)
direction +1 Gdy kamera rusza w złą stronę
gearRatio 1,0 2,0, jeśli koło 20-zębne napędza 40-zębne
TRACK_GAIN_DEG_PER_S 40 Zmniejsz do 25, gdy kamera oscyluje
SEARCH_ENABLED false Na true po pierwszym udanym śledzeniu
BATTERY_ADC_PIN −1 (wyłączony) Wariant C z dzielnikiem: 4 (XIAO S3), 3 (XIAO C3)
NODE_ID, NODE_LAT, NODE_LON, BASE_HEADING_DEG 0 Dla Unity i drugiego węzła

Ten firmware kompiluje się bez ostrzeżeń dla XIAO S3 i XIAO C3 (esp32 3.3.12, ESP32Servo 3.2.1). Nie był jeszcze testowany na płytce. Dlatego krok A4 sprawdza sygnały bez serw.

9.4 Test kierunków i limitów

Złota rada: Zły kierunek to najczęstszy błąd śledzenia. Kamera „ucieka” od celu z maksymalną prędkością. Sprawdź kierunki przed uruchomieniem Pythona.

  1. Wyślij active.
  2. Wyślij 0.3,0. Kamera (patrząc zza kamery) musi obrócić się w prawo. Jeśli w lewo: w pan zmień direction na −1.
  3. Wyślij 0,0.3. Kamera musi pochylić się w górę. Jeśli w dół: w tilt zmień direction na −1.
  4. Limity: wysyłaj 1,0 kilka razy, aż serwo dojdzie do maxUs. Patrz, czy nic nie dotyka. Potem -1,0. Tak samo dla tilt (0,1, 0,-1).
  5. Poszerzaj minUs / maxUs co 50 µs. Zostaw ok. 5° zapasu przed miejscem, gdzie coś dotyka.
  6. Wyślij release.

9.5 Python na Macu

Na tym Macu są już zainstalowane ultralytics i opencv. Na innym Macu: pip install ultralytics opencv-python.

  1. W Software/Python/YOLOProcessing.py w SYSTEM_CONFIG wpisz: - cam_url: http://<IP kamery>:81/stream - motor_ip: IP XIAO z make monitor
  2. Na czas MVP usuń drugi wpis (węzeł 1).
  3. TARGET_CLASSES = [67] śledzi telefon. [0] śledzi osobę.
  4. Jeśli obraz jest odwrócony: obróć kamerę albo ustaw FLIP_VERTICAL = True.
  5. Uruchom: make run (albo cd Software/Python && python3 YOLOProcessing.py). Pierwsze uruchomienie pobiera model yolov8n.pt (potrzebny internet).
  6. Kliknij okno obrazu. Klawisze działają tylko w aktywnym oknie: - a — uzbrój serwa (active) - d — stop (disabled) - q — wyjście (najpierw wysyła disabled)

Złota rada: Zarezerwuj w routerze stałe adresy IP (rezerwacja DHCP) dla XIAO i kamery. Inaczej po restarcie routera adresy w Pythonie przestaną działać.

9.6 Po MVP

9.7 Drugi węzeł: XIAO ESP32-C3

XIAO C3 ma ten sam rozmiar i układ pinów co XIAO S3. Inne są tylko numery GPIO i piny startowe.

Pin XIAO GPIO C3 Użycie w węźle 1 Uwagi
D0 GPIO2 Nie używaj Pin startowy. Rezystor 10 kΩ do GND blokuje start.
D1 GPIO3 Pomiar akumulatora (opcja) ADC1. BATTERY_ADC_PIN = 3
D2 GPIO4 Serwo pan
D3 GPIO5 Serwo tilt ADC2: nie mierz tu napięcia
D4 / D5 GPIO6 / GPIO7 SDA / SCL Jak w S3
D6 / D7 GPIO21 / GPIO20 GPS (TX / RX) Jak w S3
D8 / D9 GPIO8 / GPIO9 Nie używaj Piny startowe. D9 to przycisk BOOT.
  1. Załóż antenę z zestawu.
  2. W ServoTracker ustaw NODE_ID = 1. Piny zmieniać nie trzeba: firmware rozpoznaje C3 i używa D2 (pan) i D3 (tilt).
  3. Podłącz tylko XIAO C3. Uruchom make servo-c3, potem make monitor.
  4. Płytka stykowa jak w 5.4, z dwiema zmianami: przewód nr 4 idzie z a3 (D2), a przewód nr 8 z a4 (D3). Rzędy 1 i 2 (D0, D1) zostają bez przewodów.
  5. Zmierz M-SIG jak w kroku A4. Zasilanie i diody jak dla XIAO S3.

Firmware dla C3 kompiluje się bez ostrzeżeń. Na płytce nie był jeszcze testowany.

9.8 Grove Vision AI V2 (etap E, po MVP)

Moduł sam wykrywa obiekt w obrazie i podaje środek ramki (x, y) do XIAO przez I²C. Wtedy węzeł śledzi bez Maca i bez strumienia obrazu. Unity dalej dostaje te same dane z portu 4444, bo do triangulacji potrzebne są tylko kąty.

Zanim zaczniesz:

Kroki:

  1. Wgraj model i sprawdź wykrywanie na stronie SenseCraft AI, z modułem na USB, bez XIAO.
  2. Połącz moduł z XIAO według wiki Seeed. Przed połączeniem zmierz M-I2C na SDA i SCL modułu: maksymalnie 3,4 V.
  3. Zainstaluj bibliotekę Seeed_Arduino_SSCMA. Uruchom przykład, który drukuje AI.boxes(). x i y to środek ramki.
  4. Przesuń obiekt do lewej, prawej, górnej i dolnej krawędzi obrazu. Zapisz minimalne i maksymalne x i y. Z nich policzysz błąd −1..1 dla ServoTracker.

To nowy firmware. Zacznij dopiero, gdy MVP-A i MVP-B są zaliczone.


10. Diagnostyka

Objaw Najczęstsza przyczyna Co zrobić
make ports nie pokazuje płytki Kabel tylko do ładowania Inny kabel. XIAO: przytrzymaj B, podłącz USB, puść B
Found 2 USB boards Podłączone dwie płytki Odłącz jedną albo dodaj PORT=...
Enter your 2.4 GHz Wi-Fi in ... secrets.h W secrets.h jest przykładowe hasło Wpisz swoją sieć
Failed to connect przy wgrywaniu Płytka nie weszła w tryb wgrywania XIAO: B + USB. ESP32-CAM: IO0 + RST (9.2b)
Pusty monitor Płytka wypisała IP przed otwarciem monitora Naciśnij R (RESET) przy otwartym monitorze
secrets.h: No such file Brak pliku make secrets
XIAO nie łączy się z Wi-Fi Sieć 5 GHz lub tylko WPA3; brak anteny Sieć 2,4 GHz, WPA2; załóż antenę
Serwo nie reaguje Brak active, brak wspólnej masy, zła kolejność przewodów Wyślij active; O-MASA; M-SIG
Serwo drga w miejscu Spadki napięcia, luźny styk M-SERWO w ruchu; C1; krótsze przewody
XIAO resetuje się przy ruchu Serwa i XIAO na jednym zasilaniu; przeciążony USB Wariant B; osobne szyny
macOS wyłącza urządzenia USB Za duży prąd z portu Mniej odbiorników na USB; MG996R nie z USB; wyjmij C1 przy podłączaniu
Kamera ucieka od celu Zły kierunek lub lustrzany obraz Test 9.4; wyłącz H-Mirror w kamerze
Kamera oscyluje wokół celu Za duże wzmocnienie TRACK_GAIN_DEG_PER_S 40 → 25
Python: „Connecting...” Zły IP; otwarta karta przeglądarki Zamknij przeglądarkę; sprawdź IP
Python nic nie wykrywa Zła klasa; słabe światło TARGET_CLASSES; więcej światła
Camera init failed lub Camera probe failed (Sense) PSRAM wyłączone; płytka kamery źle osadzona Tools → PSRAM: OPI PSRAM; bez zasilania dociśnij złącze B2B
XIAO C3 nie startuje lub nie przyjmuje programu po podłączeniu serw Serwo lub rezystor na D0, D8 albo D9 Serwa na D2 i D3 (9.7)
Sense bardzo gorący Długie nadawanie, wysoka rozdzielczość, brak radiatora Radiator, QVGA, szczelina powietrza (2.5)
„Brownout detector was triggered” (kamera) Słabe zasilanie kamery Inny port lub kabel; C2 w wariancie C
Przetwornica gorąca Przeciążenie lub zwarcie Odłącz; O-ZWARCIE; test z sekcji 1.12 w BOM.pl.md
Ujemny odczyt napięcia Odwrócone sondy lub przewody Stop; sprawdź polaryzację
P309 piszczy 3,5 V na ogniwo d, odłącz XT60, naładuj

11. Zakupy do MVP

Do etapu Część Uwagi
A 2× kabel USB-C ↔ USB-C do danych XIAO i XIAO Sense. Jeden długi (1 m) i miękki.
A Listwy goldpin męskie 2,54 mm XIAO (jeśli bez pinów), szyna serw
A (opcja) Tester USB-C z pomiarem prądu Widzisz prąd z portu Maca
A (opcja) Końcówki krokodylkowe do sond Pomiar jedną ręką
B Zasilacz 12 V, min. 5 A, z wtykiem do B6 Ładowanie i zasilacz warsztatowy
B Przewód silikonowy 20 AWG, czerwony i czarny Zasilanie serw
C Oprawka bezpiecznika mini + bezpieczniki 5 A Jedna na węzeł
C Dioda Schottky 1N5819, kilka sztuk D1 dla XIAO, D1' dla Sense
C LM2596, 1 szt. (2 dla dwóch węzłów) Zasilanie logiki
C Torba ognioodporna LiPo Przed pierwszym ładowaniem
C Przewód silikonowy 18 AWG Akumulator → bezpiecznik → przetwornice
D Topnik bezmyciowy; goldpin żeńskie; dystanse M3 Lutowanie i montaż
Węzeł 1 Podstawka ESP32-CAM-MB + kabel USB-C → micro-USB do danych Tylko dla ESP32-CAM. Do MVP niepotrzebna (kamera Sense).
E Kamera CSI do Grove Vision AI V2 (np. OV5647), jeśli jej nie masz Moduł nie ma własnej kamery

12. Karta pomiarów

Puste pole = jeszcze nie zmierzone. Po każdej zmianie w układzie mierz ponownie.

Kod Wariant Data Wynik Uwagi
M-USB A
M-3V3 A
M-SIG przed / po active A
O-ZWARCIE szyny 5V USB A
M-SERWO spoczynek / ruch (SG90) A
Kierunki pan / tilt A
Limity pan (min / max µs) B
Limity tilt (min / max µs) B
M-ZASIL (B6 lub UBEC) B
O-MASA B
M-SERWO spoczynek / ruch (MG996R) B
Test 10 min: resety / temperatura B
O-REG UBEC / LM2596 C
M-OGNIWA 1 / 2 / 3 C
M-BAT start / po 15 min C
M-ZASIL UBEC / LM2596 C
M-XIAO-BAT C
M-CAM C
M-OFF wszystkie
Czas pracy na akumulatorze C