Wpis z mikrobloga

Hej Mireczki :)
Mam do was pytanko dt. obsługi mostka UART w płytce deweloperskiej ESP32 (DOIT aka Geekcreit).
Potrzebowałabym wykorzystać tąże płytkę jako najzwyklejszy interfejs USB-TTL, tzn. po jednej stronie urządzonko z 3 pinami RX, TX i GND, po drugiej ta płytka podłączona do komputera przez USB.
Wrzucony 'blink', zainstalowane sterowniki do modułu CP2102 zintegrowanego na płytce, natomiast przy próbie podłączenia dedykowanym programem do tegoż sterowniczka płytka się zawiesza (testowy blink przestaje migać) nawet, gdy żaden pin do płytki nie jest podłączony, wystarczy sam program na Win 10 który próbuje uzyskać połączenie po porcie COM.
Gdy użycie portu zwalnia się (timeout), płytka uruchamia się ponownie (wraca blink wbudowanego LED).
Ktoś coś może podpowiedzieć? Czy jest potrzebne coś dodatkowego po stronie programowej albo jakiś rezystor po stronie sprzętowej?
PS: CP2102 na tej płytce widoczny jest jako jeden port COM bridge, nie 2 niezależne jak w przypadku mostków na FT232RL.
Z góry dzięki za pomoc :(

#arduino #esp32 #geekcreit #esp8266 #programowanie
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@shakar: Idź leczyć stulejkę gdzieś indziej :/
@Lucy666: Dziwne że płytka zawiesza się przy odpaleniu programu, bo UART nie ma żadnego protokołu "łączenia się", nie ma czegoś takiego jak "połączenie się z urządzeniem". Gdy podepniemy się pod port COM to nic nie powinno się dziać, nic nie powinno być wysyłane. Spróbuj podpiąć się pod port COM za pomocą Putty.
  • Odpowiedz
@Lucy666: no nie rozumiem do końca, ale czy chcesz puszczać po esp32 komendy wysyłane uartem z kompa? Może masz skopaną inicjalizację modułu (piny spi są źle zmapowane i libka kręci się na while'u czekając na odpowiedź).

Wrzucisz ten kod?
  • Odpowiedz
@skew @Fitoplankton
wszystko gra dopóty, dopóki nie odpalę programu AC STAG, który ma za zadanie połączyć się ze sterownikiem LPG po porcie COM
to nie dzieje się zawsze, gdy próbuję uzyskać połączenie do portu COM, ale tylko gdy chcę wykorzystać devkit jako zwyczajny mostek USB-TTL do innego mikrokontolera (zwyczajne USB-TTL na FT232RL, CP2102 i inne do wyboru już do mnie jadą, ale potrzebuję chwilowo podłączyć się do sterownika LPG, a
  • Odpowiedz
@Fitoplankton
próbowałam zrobić mirror Serial na Serial1 (zrobionym za pomocą HardwareSerial(2), który daje połączenie na porty 16 i 17) i vice versa na wypadek gdyby dioda żyła swoim życiem, a brak komunikacji wynikał z braku przenikania pakietów między USB a pinami 16,17 ale jest to samo

dodatkowo próbowałam robić cuda z mostkiem UART<>telnet i emulowaniem COM na Windowsie, ale program AC Stag coś się chyba z nim nie lubi, bo zwyczajnie
  • Odpowiedz
@Lucy666: wygląda jak jakaś sprzętowa sprawa:
1. Podłącz masę konwertera USB-TTL (po stronie UART) z masą ESP
2. Nie podłączaj zasilania +3.3V (po stronie UARTa) z zasilaniem ESP
3. Sprawdź czy UART działa w trybie +3.3V a nie +5V, to jest ważne!!! ESP chodzi w logice +3.3V, nie wiem na ile jest odporny na +5V, podanie +5 może być przyczyną zawieszania się (jeżeli dobrze rozumiem Twój opis)

Postaraj się, żeby nie było żadnych różnic potencjałów pomiędzy zasilaniem ESP i komputerem który jest podłączony do konwertera USB-TTL, najlepiej żeby wszystko było zasilane z tego samego gniazdka (jeżeli jest z dwóch różnych albo jeden przez UPS to mogą być jakieś różnice w potencjale i to też może
  • Odpowiedz
@kwanty
ojojoj, zagmatwałam :_:

sprostuję, aby nie było nieporozumień i niepotrzebnych zagwozdek

sama płytka jako tako w pełni działa, działa programowanie ESPa, Serial Monitor i reszta
  • Odpowiedz
@Lucy666: Czyli uściślając: masz PC na którym chodzi program AC STAGE, na PC jest emulator portu szeregowego po USB. PC przez USB łączysz z ESP. Chcesz, żeby AC STAGE przez USB na którym jest emulowany UART połączył się z ESP. Czy tak?

Jeżeli tak, to na ESP jest jeszcze jakiś konwerter USB<->UART. Ten konwerter ma różne ciekawe możliwości - może zresetować ESP, może go wprowadzić w tryb programowania, etc... Więc
  • Odpowiedz
@kwanty @Fitoplankton @skew

co do 1 akapitu, dokładnie, jak najbardziej tak
spróbuję dziś podłączyć jakiś leciwy router który umożliwia komunikację po TTL i wrzucenie OpenWRT, chociaż zapewne po złości zadziała i wyjdzie na to. że to AC Stag wysyła jakieś dziwne polecenia które unieruchamiają ESPa, w końcu używa się go aby aktualizować sterownik LPG, modyfikować pamięć, więc kto wie, co on tam robi aby się dogadać...

myślałam jednak, że komuś ten temat jest znany i wymuszenie trybu transparentnego jest możliwe dzięki konfiguracji bootloadera, wysłania jakichś komend AT, z pomocą esptool.py albo konfiguracją via ESP32 Download Tool, niby w tym drugim jest jeszcze możliwość konfiguracji
  • Odpowiedz
myślałam jednak, że komuś ten temat jest znany i wymuszenie trybu transparentnego jest możliwe dzięki konfiguracji bootloadera


@Lucy666: poszukaj jakiegoś forum, wszystkie "rzeczy" mają profesjonalne fora, nie wyobrażasz sobie jak małe, nawet głupie latarki czołówki mają swoje fora, kiedyś chciałem kupić zwykłą czołówkę... ;-)
  • Odpowiedz
@kwanty

Znalazłam taką informację: https://github.com/espressif/esptool/wiki/ESP32-Boot-Mode-Selection
"Note that some serial terminal programs (not esptool.py) will assert both RTS and DTR when opening the serial port, pulling them low together and holding the ESP32 in reset. If you've wired RTS to the ESP32 then you should disable RTS/CTS "hardware flow control" in the program. Development boards (including all Espressif boards) usually use additional circuitry to avoid this problem - if both RTS and DTR are asserted together, this doesn't reset the chip. "

W samym programie AC Stag tychże ustawień nie da się edytować, są one odgórne, zaś jak widać program ustawień domyślnych COM nie uznaje i nadpisuje je, a wiem, że na pewno używa on Flow Control, pytanie, czy ten devkit posiada owy 'additional
  • Odpowiedz
@Lucy666: Jakiego konkretnie modelu ESP32 używasz? Jeżeli podłączasz przez USB to znaczy, że jest tam konwerter USB<->UART i linie RTS, DTR są podłączone do ESP32. Być może da się je zablokować (może są jakieś zworki na płytce) albo może da się wymusić stan wysoki za pomocą GPIO (do których powinny być podpięte) ale to zależy od schematu i układu UART.

W każdym razie od strony sprzętowej szukał bym możliwości zablokowania
  • Odpowiedz