Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'Początkujący'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

  1. Witam, założyłem wcześniej wątek, o tym. Dziękuję @farmaceuta @ethanak @SOYER i innym za tłumaczenie, o co chodziło z else/if'ami, ale nadal nie wiem, kiedy ich użyć. Czy ktoś dałby mi jakieś przykłady, czy coś innego. Nadal nie wiem, w jakich przypadkach ich użyć. Bardzo proszę o wytłumaczenie.
  2. import cv2 import pytesseract import time from pytesseract import Output def extract_license_plate(image_path): image = cv2.imread(image_path) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) blur = cv2.GaussianBlur(gray, (5, 5), 0) edges = cv2.Canny(blur, 100, 200) contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) contours = sorted(contours, key=cv2.contourArea, reverse=True)[:10] plate_text = None for contour in contours: peri = cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, 0.018 * peri, True) if len(approx) == 4: x, y, w, h = cv2.boundingRect(approx) roi = image[y:y + h, x:x + w] plate_text = pytesseract.image_to_string(roi, config='--psm 8 --oem 3 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') return ''.join(filter(str.isalnum, plate_text)) return "no text detected" cap=cv2.VideoCapture(0) try: while True: ret, frame = cap.read() if ret: cv2.imwrite('/home/marek/tablica.png',frame) print("Image saved") text = extract_license_plate('/home/marek/tablica.png') else: print("fail") if text is not None: print(f"Extracted Text: {text}") time.sleep(5) except Exception as e: print(f"An error occurred: {e}") finally: cap.release() print("Camera released.") Pracuję nad projektem systemu służącego do automatycznego otwierania bramy, w momencie rozpoznania przez kamerę z Raspberry Pi, numerów tablic rejestracyjnych zapisanych w pliku tekstowym. Jestem dość zielony w jakiekolwiek programy związane z systemami wizyjnymi i mocno posiłkowałem się ChatemGPT 4, wrzuciłem do chatu zdjęcia przypominające docelowy obraz z kamery i kazałem mu pod to napisać program. Program działa prawie idealnie kiedy zczytuje tablice z gotowych zdjęć, jednak gdy zdjęcia pochodzą z kamery i pokazuje przed nią dokładnie to samo zdjęcie tylko wydrukowane, program nie rozpoznaje żadnych znaków. Pytanie gdzie może leżeć problem, czy wpływ na to ma zbyt niska jakość obrazu z kamerki (używam kamery ZeroCam z przejściówka do Raspberry PI 3A+) , potencjalnie zły kąt zdjęcia przed kamerka czy może jakiś błąd w kodzie? Testuje działanie na załączonym obrazku Z góry dziękuje za pomoc, ewentualny namiar do kogoś kto mógłby pomóc :))
  3. Dzień dobry. Mam takie zadanko z tranzystorem i trochę nie mam pewności co do rozwiązania. Czy wystarczy policzyć napięcie na R2 za pomocą dzielnika napięcia i wtedy U=5V - UR2? Za wszystkie wskazówki i pomoc z góry dziękuję.
  4. Witajcie 🙂 Chciałbym nauczyć się lutować - w tym celu zamierzam kupić zestaw do nauki lutowania (oczywiście od Forbota). I mam 3 pytania. 1. Stacja lutownicza czy lutownica kolbowa? Widzę, że kurs jest robiony raczej pod stacje, mimo to w polecanych lutownicach znajduje się zwykła lutownica kolbowa. Nie zamierzam się tym jakoś mocniej zajmować - traktuje to jako hobby. Chciałbym, oprócz lutowania elementów elektronicznych, nauczyć się lutować przewody i umieć np. przylutować oderwany kabel do klawiatury czy myszki. Czy naprawdę potrzebuje regulacji temperatury? Nie mam raczej miejsca na ustawienie stacji i też nie chciałbym wydawać tyle kasy na wypadek, jakby lutowanie okazało się nie dla mnie. I musi być to coś dostępnego w Botlandzie. Co myślicie o tej lutownicy? Jest w polecanych i mało kosztuje. 🙂 2. Czy do hobbystycznego lutowania potrzeba odpowiedniego wentylatora z filtrem czy wystarczy otwarte okno i zwykły, niewielki "wiatraczek"? 🙂 3. Jak już mówiłem, chciałbym umieć lutować kable. Zastanawiam się, czy oprócz topnika znajdującego się w zestawie nie powinienem kupić też kalafonii? Widziałem, że ktoś na forum napisał, że łatwo na niej lutować przewody. Wydaje mi się to logiczne, bo w końcu chyba topnik jest płynny, a kalafonia bardziej żelowata, przez co można na niej położyć taki kabelek, ale jak mówiłem, jestem zielony w temacie i nie jestem tego pewien. 🙂 To wszystko. Będę wdzięczny za odpowiedzi i przepraszam, jeśli to zły dział, ale nie znalazłem działu "lutowanie". 🙂
  5. gaza

    Stara Prusa i3

    Cześć. Od kilku lat ( pewnie 5 ) stała u mnie złożona, ale nie uruchomiona Prusa i3. Podczas uruchamiania źle pokonfigurowałem stepsticki i do tego pewnie źle to jeszcze podłączyłem i padło mi Arduino 2560. Dzisiaj mam już inne Arduino i chciałbym to uruchomić, niestety mam problem z pozyskaniem oprogramowania. Nie wiem jakie powinno być właściwe i skąd je pobrać. Do tego kiedyś ( pamiętam ) widziałem na jakimś blogu już pre-konfigurowany plik z ustawieniami, a teraz nie mogę tego znaleźć. Jako elektronikę to mam Ramps ( chyba 1.4) no i soft to chyba Marlin Soft to chyba powinien być MK2S, ale nie jestem pewien. Mógłby ktoś podesłać jakiś link do jakiegoś blogu ( najlepiej po polsku ), gdzie to fajnie jest opisane ? Ewentualnie poproszę o link do softu ( marlin ) do odpowiedniej wersji. Hotend to E3D v6 - 1,75 Z góry dziękuję i pozdrawiam
  6. Budowałem ten układ wiele razy na wiele sposobów i nie udało mi się go zbudować. Diody po odłączeniu przewodu pomarańczowego (od bazy tranzystora do masy układu) przestawały świecić.
  7. Cześć, Jestem nawy na forum i zupełnie zielony jeśli chodzi o programowanie. Jak w temacie potrzebuję wykonac przycisk na USB, który po naciśnięciu "zgłosi się" w ubuntu 22.04 oraz odtworzy mp3 z folderu Music. Znalazłem podobny projekt w linku poniżej: https://www.pjrc.com/teensy/td_digital.html Podłaczyłem jak poniżej: ale nie wiem jak go przeprogramować by po naciśnieciu przycisku urządzenie zgłosiło na ttyUSB i wyrzuciło komunikat "pishbutton" w Ubuntu i zagrało mp3 z folderu Music. Wyczytałem jeszcze że można to zrobić na adapterze USB/UATR, nie ma dla mnie większego znaczenia, który to będzie adapter ważne by zadziałało, jeśli zrobienie tego na UART bezie łatwiejsze to mogę go dokupić. Proszę o pomoc w przeprogramowaniu i napisaniu kodu pod Ubuntu.
  8. Cześć, zaczynam dopiero z STM32, mam teraz wstęp na studiach, ale postanowiłem nauczyć się czegoś więcej. Na razie jestem po #3 części kursu i zabrałem się za zadania domowe. Co do pierwszego (Wróć do przykładu, w którym dioda włączała się na 200 ms i gasła na 800 ms. Zastanów się, jak odwrócić działanie tego programu bez zmieniania jego kodu. ), HAL_GPIO_WritePin(LED[1].port, LED[0].pin, GPIO_PIN_SET); HAL_Delay(200); HAL_GPIO_WritePin(LED[1].port, LED[0].pin, GPIO_PIN_RESET); HAL_Delay(800); mam pomysł, żeby zmienić wyjście na aktywne stanem niskim, ale nie mogę znaleźć tej opcji. Zadanie 3. Dodaj do programu kolejny przycisk, który będzie resetował linijkę. Podpięcie przycisku bez problemów, dodanie go do pinu na płytkę też, ale prosiłbym o pomoc z samym kodem - gdzie szukać w jaki sposób napisać funkcję, która zresetuje. Dzięki za pomoc!
  9. Witam, jestem nowy na forum więc liczę na wyrozumiałość 🙂 Ogólnie chciałbym zacząć swoją przygodę z Arduino i mam następujace pytanie: Czy to co mam w koszyku (załącznik) jest zgodne z pierwszą częścią kursu (tzn. czy zawiera wszystko co potrzebne i pasuje to wszystko do siebie). Wiem, że pytanie należy do tych bardziej głupich no ale po prostu się nie znam (jeszcze) Pozdrawiam 😄
  10. Cześć, mam ambitny pomysł odbudowy starego kontrolera do gier, z którego została mi tylko obudowa i przyciski. Myślę, że projekt jest na tyle prosty, że można od niego zacząć naukę mikrokontrolerów. Do tej pory robiłem jedynie proste projekty na Arduino uno/nano, który jednak ma tą wadę, że nie potrafi udawać HID. Mój pierwszy plan był, by kupić Arduino micro, który może bezpośrednio rozmawiać z USB ale niestety po pierwsze oryginalne Arduino przekracza mój budżet, po drugie ma za mało wejść (szczególnie ADC). I tu wpadł mi w oko STM32 a konkretniej "blue pill". Nigdy na nim nie programowałem więc mam parę pytań zanim zacznę, żeby oszczędzić sobie przyszłej frustracji: Jak wygląda kompilowanie i wgrywanie programu? Z tego co się już dowiedziałem, nie mogę po prostu wpiąć go do usb jak Arduino i wgrać program. Czy potrzebuję oficjalnego programatora? A może wystarczy chiński konwerter "USB to UART" na bazie CH340 lub PL2303? Czy mógłbym użyć Arduino jako programatora STM32? Jaki software polecacie na początek by pisać i wgrywać programy na kontroler? Który mikrokontroler wziąć na początek? F103C8T6 wydaje się być dość popularny. Czy bez zaawansowanego hackowania można sprawić by ten mikrokontroler przestawiał się komputerowi jako "game pad (HID)" i rozmawiał z komputerem? Czy jest coś o czym nie wiem a powinienem wiedzieć zanim zacznę? Częste błędy i trudności początkujących? Z góry dzięki za wszelkie porady i podpowiedzi
  11. Ostatnio zacząłem projektowanie miotacza ognia zasilanego pompą do paliwa, nie znam zbytnio się na elektryce ale to by było najlepsze dla mnie rozwiązanie
  12. Witam , Gdy zacząłem robić zestaw ,, Kurs techniki cyfrowej" zobaczyłem że coś jest nie tak z płytką stykową (przynajmniej mi się tak wydaje) . Chodzi o to że boki (+) i (-) są na odwrót wsadzone niż jest pokazane na schemacie projektu. Czy gdyby obrócił płytkę o 180 stopni stało by się coś w projekcie (np. spalenie diody) Poniżej wrzucam zdjęcia. Tu jest link do schematu: https://forbot.pl/blog/technika-cyfrowa-sterowanie-wyswietlaczem-7-segmetnowym-id16152 (Tam z przodu na płytce jest (+) a później (-). )
  13. Witam, mam mały problem z programem na arduino z wzmacniaczem. Chciałem zrobić układ wyjściowy 0-10V proporcjonalny do temperatury o zakresie 17 do 22 stopni celsjusza. Napięcie na układzie wyjściowym miało być proporcjonalne do temperatury czyli, temperatura 17 stopni to napięcie na wyjściu 10V i odwrotnie. Problem polega na tym, że po podłączeniu wzmacniacza i dopisaniu dla niego programu wyświetlana na LCD (z konwerterem I2C) temperatura zaczęła wariować. Bez wzmacniacza wszystko było w porządku. przesyłam program oraz na szybko schemat. Z góry dziękuje za pomoc.
  14. Witajcie. Mam pytanie. Czy wejście żeńskie tych przewodów (https://botland.com.pl/przewody-polaczeniowe/6174-przewody-polaczeniowe-zensko-meskie-10cm-40szt-5904422304423.html) pasuje do wyjść GPIO RPi 4B (4GB RAM)? Będę wdzięczny za odpowiedź. 🙂
  15. Cześć! Mam pytanie co robię źle. Próbuję podłączyć silniczek DC do układu. Kiedy łączę go bezpośrednio z baterią tak jak na obrazku 1 to silnik ładne działa. Minus baterii specjalnie jest wypięty, aby ułatwić zrobienie zdjęcia. Natomiast kiedy dodam rezystor 100Ω i czerwoną diodę LED (obrazek 2) to silniczek już nie działa. Dlaczego? Specjalnie dodałem tam diodę, aby być pewny, że prąd płynie w układzie. Bardzo proszę o podpowiedź co jest nie tak.
  16. Cześć! Znowu przychodzę z podstawowym pytaniem. Ucząc się elektroniki spotkałem się ze stwierdzeniem, że każdy komponent stawia jakiś opór dla prądu. Idąc tym tokiem rozumowania, dla mnie sama dioda LED też musi stawiać jakiś opór. Nie mogę tego zmierzyć moim multimetrem (dla każdej wartości jaką wybiorę na pokrętle pokazuje mi wynik równy 0). Czy dobrze myślę, że jestem to w stanie obliczyć z prawa Ohma? W TinkerCadzie dodałem baterię 9V i połączyłem ją bezpośrednio z diodą. Program pokazał mi, że natężenie jest zbyt wysokie (wiem i zrobiłem to specjalnie bez żadnego rezystora) i wynosi ono 915 mA. Używając wzoru R=U/I wyszło mi, że rezystancja wynosi około 9,8. Czy jest to dobry tok myślenia? Wiem, że to są kompletne podstawy, ale proszę o podpowiedź.
  17. Cześć! Na początku powiem, że dopiero zaczynam moją przygodę z elektroniką i mam pytanie odnośnie pomiaru natężenia prądu używając multimetru. Dlaczego multimetr nie pokazuje jakiejś stałej wartości przy pomiarze natężenia tylko liczby cały czas spadają. Spadają one zawsze od tej samej wartości, ale nie zatrzymują się tak jak na przykład przy pomiarze napięcia. Wydaje mi się, że nie robię żadnego zwarcia ani czegoś podobnego. W załącznikach dodałem zdjęcie układu który zrobiłem i w jaki sposób połączyłem go z multimetrem.
  18. Witam. mam problem z moją płytką Arduino UNO R3. Gdy staram się wgrać kod do płytki to mi sprawdza kod i pokazuje "Uploadnig...", ale nic się nie dzieje. Cały czas się wgrywa. Płytka była sprawna i dopiero po napisaniu tego kodu i próbie wgrania wystąpił ten problem. Podłączony mam wyświetlacz lcd 2x16 dalmierz ultradźwiękowy i brzęczyk #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); int CM; int CZAS; // TRIG = 1 // ECHO = 0 void pomiar() { digitalWrite(1, LOW); delayMicroseconds(2); digitalWrite(1, HIGH); delayMicroseconds(10); digitalWrite(1, LOW); digitalWrite(0, HIGH); CZAS = pulseIn(0, HIGH); CM = CZAS / 58; } void alarm() { digitalWrite(8, HIGH); lcd.setCursor(0,2); lcd.print("UWAGA ZA BLISKO"); } void bezpiecznie() { digitalWrite(8, LOW); lcd.setCursor(0,1); lcd.clear(); } void setup() { pinMode(8, OUTPUT); pinMode(1, OUTPUT); pinMode(0, INPUT); lcd.begin(16, 2); lcd.setCursor(0,1); lcd.print("pokaze ci naj-"); lcd.setCursor(0,2); lcd.print("blizsza odleglosc"); delay(3000); lcd.setCursor(0,1); lcd.clear(); lcd.print("od dalmieza"); lcd.setCursor(0,2); lcd.print("ultradzwienkowego"); delay(3000); } void loop() { if(CM <= 4) { pomiar(); lcd.setCursor(0,1); lcd.clear(); lcd.print("Odleglosc: "); lcd.setCursor(12,1); lcd.print(CM); lcd.setCursor(13,1); lcd.print("cm"); alarm(); delay(20); } if(CM > 4) { bezpiecznie(); pomiar(); delay(20); } }
  19. Cześć! Przerabiam materiał z podstaw elektroniki, mam multimetr dpm DT33D - próbuję zmierzyć natężenie - podpinam baterię 9V (zmierzone ok 8.9V), do - podpinam przewód com, do + podpinam rezystor 10k i później czerwony kabel od multimetra, ustawiam pokrętło na pozycję 20m i ekran jest pusty, po przekręceniu na 200m, na ekranie mam 1., po wyłączeniu i włączeniu jeszcze raz zaczynaja wyskakiwać wartości rzędu 50 (pozycja 200m). Sprawdzałem bezpiecznik - jest cały - co robie źle?
  20. Cześć, czołem 🙂 Gdy czytam tematy, jakie znajdują się w dziale "Zupełnie zieloni" zastanawiam się, czy nie powinienem zatytułować posta z użyciem koloru określającego jeszcze większą niedojrzałość 😄 Dopiero zaczynam. Zabawa elektroniką sprawia mi przyjemność. Potrzebowałem czegoś takiego. Czegoś, co oderwie mnie od rzeczywistości i da trochę dziecięcej radości. Umarłem na kilka dni próbując zrozumieć projekt pod nazwą "Multiwibrator astabilny". Zastanawiałem się, w jaki sposób do tego podejść. Znalazłem wyjaśnienie na Wikipedii i wydaje mi się, że mniej więcej go już rozumiem. No i przestraszyłem się trochę, bo elektronicznych projektów jest wiele. Rozumiem, jak działają poszczególne elementy elektroniczne (a może tak mi się tylko wydaje), a gdy próbuję pojąć ich działanie w komplecie z innymi, nie daję rady. W związku z tym mam kilka pytań. 1. Czy są jakieś podstawowe układy elektroniczne (jak wyżej wspomniany multiwibrator astabilny), które trzeba poznać dogłębnie, żeby zrozumieć więcej? Tak jak gotowe formuły w językach programowania. Takie proste układy, których znajomość działania pozwoli na zrozumienie tych bardziej skomplikowanych i budowę swoich. Albo na diagnozę zepsutych urządzeń. 2. Jeżeli tak, to czy jesteście mi w stanie polecić takie podstawowe układy? 3. Jak podejść do czytania schematów? Istnieją zasady, które mówią jak to robić? Mając zaawansowany schemat dzielimy go na jakieś mniejsze schematy odpowiadające za konkretne zadania? 4. Jeśli chodzi o proste schematy. Jak je czytać? Idąc "z prądem" po kolei jak płynie? Czy może są podzespoły elektroniczne, na które w pierwszej kolejności trzeba zwrócić uwagę próbując zrozumieć działanie układu? Jak to robicie? Jak doszliście do zrozumienia działania układów? Jestem zafascynowany, gdy oglądam na YT np. De-kompozytora i to, jak diagnozuje i naprawia sprzęty. Albo gdy patrząc na układ, wie jakie elementy za co opowiadają. Będę wdzięczny za perspektywę każdego z Was. Może któraś z nich trafi do mnie szczególnie. Nie pogardzę również przykładami i dodatkowymi źródłami informacji, z których być może korzystaliście, gdy mieliście podobny problem do mojego. Pozdrawiam serdecznie ❤️
  21. Witam serdecznie jest to mój pierwszy wpis na tym forum 🙂 oraz pierwszy krok do stworzenia mojego projektu. Moim projektem jaki chciałbym stworzyć jako pierwszy, jest stoper z czujnikiem wstrząsu/drgań. Polegał by on na tym że mierzony czas zatrzymał by się w momencie wykrycia wstrząsu. I na początek chciał bym prosić o pomoc, osoby która by chętnie pomogła mi w tym projekcie, ponieważ jestem kompletnie zielony. Dziękuję i pozdrawiam liczę na dobrą współpracę 🙂
  22. Witam, chciałbym zrobić sterownik do mojego paska rgb za pomocą atmegi8, pasek działa w taki sposób że jest jeden pin + oraz są 3 piny które po podłączeniu do masy zapalają dany kolor. I mój pomysł jest taki aby podać napięcie 12 V na pasek, za pomocą przetwornicy 5 V zasilić atmege, oraz podłączyć pozostałe 3 piny do pinów atmegi i ustawić je w kodzie jako piny masy. Tylko nie wiem czy przypadkiem nie uszkodzę w ten sposób mikrokontrolera, czy podłączenie tej masy może być niebezpieczne, z jednej strony to tylko masa ale z drugiej to dalej 12 V. Jeśli znasz lepszy sposób na stworzenie sterownika paska RGB będę wdzięczny jeśli się nim podzielisz.
  23. Dzień dobry, załączyłem tutaj pewien schemat, który samodzielnie stworzyłem i nie wiem, czy jest on poprawnie zrobiony. Mam silniczek i baterię 9V - chcę stworzyć układ, w którym potencjometr będzie regulował prędkość obrotów silniczka. Dodatkowo chcę dołożyć rezystor oraz zieloną diodę LED, pokazyjącą z jaką mocą pracuje silnik (jasność diody). Nie wiem, czy taki układ zadziała prawidłowo. Czy dioda nie zabierze napięcia silniczkowi, który nie będzie pracował z najwyższą mocą? Z góry dziękuję.
  24. #include<avr/io.h> #include<util/delay.h> #define LED_PIN (1<<PB2) #define LED_ON PORTB &= ~LED_PIN #define LED_OFF PORTB |= LED_PIN #define LED_TOG PORTB ^= LED_PIN int main (void) { DDRC |= LED_PIN; while(1){ LED_TOG; _delay_ms(1000); } } Witam, dzisiaj chciałem wgrać prosty kod do mojej atmegi8, niestety po wgraniu kodu nic się nie działo, mimo że powinna migać dioda. Procesor jest normalnie wykrywany przez program MkAVRcalculator, oraz przez Eclipsa. Myślę że problemem może być środowisko Eclips i coś źle skonfigurowałem. Połączenia sprawdziłem.
  25. Witam, Posiadam dwa mikrokontrolery z rodziny STM32. Pierwszy na płytce Nucleo-64 STM32F103RB, drugi na płytce Waveshare CoreH7XXI STM32H743IIT6. Postawiłem sobie za cel zbudować przetwornik cyfrowo analogowy R2R w oparciu o mikrokontroler. Wiem, że można wykorzystać do tego FPGA, ale ja postanowiłem całość oprzeć o mikrokontroler - cele naukowe i rozwojowe. IDE z którego korzystam, to STM32CubeIde. Z racji tego, że nie mam na co dzień do czynienia z mikrokontrolerami, a traktuję to jako hobby, to z góry przepraszam, jeśli popełniam jakieś rażące błędy, lub posiadam braki w wiedzy, ale dopiero się uczę. Skonfigurowałem USB na płytce Nucleo, jako USB Device, przyłączyłem middleware USB_DEVICE, klasa Audio Device Class, ustawiłem parametr częstotliwości na 48000 sampli/s, RCC HSE ustawiony na Crystal/Ceramic Resonator. Zegary skonfigurowane na korzystanie z kwarcu i PLL, USB taktowane 48MHz. Wlutowałem kwarc 8MHz i dwa kondensatory 30pF (takie akurat miałem pod ręką), wlutowałem rezystor 1k5 (1448Ω) pomiędzy 3.3V a pin USB D+ skompilowałem projekt, wgrałem na płytkę. Zrobiłem sobie około 40cm przewód z taśmy 4 żyłowej z jednej strony zakończony wtykiem USB, z drugiej wtykami goldpin. Podłączyłem D+, D- i GND, zasilanie pobieram z USB od programatora (przy czym przestawiałem też zworkę na E5V i całość zachowuje się tak samo). Podłączam mikrokontroler pod USB - urządzenie znalezione, poprawnie zainstalowane, widnieje jako STM32 Audio Class https://imgur.com/nBjyhkV. Inicjalizacja urządzenia się powiodła, wszystko wygląda dobrze - https://imgur.com/1LDmdm7. Na oscyloskopie kwarc pokazuje stabilne 8.00MHz. I teraz się zaczynają schody. Uruchamiam audacity, częstotliwość projektu ustawiam na 48KHz (choć to bez znaczenia, na każdej jest ten sam problem), generuję falę prostokątną 1KHz, wybieram moje urządzenie i klikam play. Oto, co się dzieje w snifferze - https://imgur.com/JjXmSkf. Proszę zwrócić uwagę na czasy - pierwsze dwa pakiety URB_FUNCTION_SELECT_INTERFACE wykonują się bardzo szybko. PC wysyła do uC żądanie i otrzymuje odpowiedź w ciągu 2ms - to jest moment kliknięcia play. Następnie mamy pakiety transferu danych, których jest mało, ze względu na to, że bardzo szybko kliknąłem stop. I tutaj zaczyna się sedno problemu. Kliknięcie stop ponownie powoduje żądanie URB_FUNCTION_SELECT_INTERFACE, które od PC do uC idzie od razu, ale w drugą stronę całość się zamraża na równo 5 sekund (+czasami kilka-kilkanaście ms, co widać w różnicach czasowych). Kliknięcie play i ponownie 5 sekund zwłoki i później lecą dane. Stop - znów 5 sekund i tak w kółko. Odpięcie USB i ponowne jego podpięcie daje jednorazowy szybki play, a potem sytuacja się powtarza. Wygląda to tak, jakby mikrokontroler przez 5 sekund próbował coś robić (tylko co?) a potem przechodził do właściwej pracy. Dodatkowo nie jestem w stanie poprawnie debugować pracy USB na tym mikrokontrolerze. Debuger poprawnie zatrzymuje się na pierwszej linii kodu, następnie klikam resume, urządzenie się pojawia. Gdy natomiast klikam play w audacity, dostaję komunikat "Błąd otwierania urządzenia dźwiękowego". Pakiet URB_FUNCTION_SELECT_INTERFACE (odpowiedź od uC) zwraca status 0xc0000011 https://imgur.com/EzQhRPh. I teraz, żeby było ciekawiej, powtarzam dokładnie tą samą procedurę na płytce z STM32H743IIT6 i wszystko działa tak, jak powinno, play i stop działa zawsze i od razu. Dlaczego zatem nie użyję H7 do USB? Ponieważ chcę zrzucić operacje pobierania danych z komputera i wstępną obróbkę na jeden cpu, a odtwarzanie, precyzyjny timer 48KHz i kierowanie danych na GPIO na drugi procesor (tutaj też są cele naukowe i rozwojowe - chcę spróbować różnych podejść i zrobić to na dwóch procesorach, mogąc jednocześnie obserwować komunikację między nimi). Czy ktoś się spotkał z takim problemem? Być może jest to kwestia tego, że CubeMX coś źle generuje, ale niestety nie jestem jeszcze aż tak biegły, żeby ogarnąć całą bibliotekę USB i potrzebuję wsparcia od osób bardziej doświadczonych :) Pozdrawiam, Mateusz
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.