Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ESP8266 - komunikacja działa tylko w jedna stronę

foneotek 19 Maj 2018 11:30 258 12
  • #1 19 Maj 2018 11:30
    foneotek
    Poziom 8  

    Witam,
    Posiadam moduł ESP8266 NodeMCU Amica (NodeMCU v2) taki jak na zdjęciu:
    ESP8266 - komunikacja działa tylko w jedna stronę
    Moduł ten posiada wbudowany konwerter USB->UART. Komunikacja za pomocą komend AT z wykorzystaniem wbudowanego konwertera odbywa się poprawnie. Problem zaczyna się wtedy kiedy chcę nawiązać komunikacje za pomocą wyprowadzeń Rx oraz Tx modułu. Wykorzystuje do tego zewnętrzny konwerter USB->UART. Po nawiązaniu połączenia i po resecie moduły odbieram na terminalu trochę "śmieci" i komendę "ready" co oznacza że moduł jest gotowy do działania, natomiast próba wysłania jakiejkolwiek komendy na ESP8266 kończy się niepowodzeniem. Wygląda to tak jakby układ tych komend nie otrzymywał. Zacząłem więc od sprawdzenia napięć na płytce i doszedłem do wniosku że wszystko jest dobrze a mianowicie:
    GPIO15 ->0V
    GPIO2 ->3,3V
    GPIO0->3,3V
    Ponadto sprawdziłem jakie występują stany na każdym z pinów ESP w chwili kiedy płytka zasilana jest tylko z kabla USB a komunikacja odbywa się poprzez wbudowany konwerter USB->UART. Napięcia na tych pinach pokrywają się z tymi jakie mam gdy moduł zasilam zewnętrznym zasilaniem a do płytki podłączony jest zewnętrzny konwerter USB->UART. Spróbowałem nawet jednocześnie nawiązać komunikacje z ESP za pomocą wbudowanego i zewnętrznego konwertera. Efekt taki jak poprzednio, zewnętrzny konwerter tylko odbiera dane ale nic nie może do modułu wysłać. "Przedzwoniłem" połączenia Rx oraz Tx aby się upewnić czy na pewno piny z płytki ESP8266 łącza się z odpowiadającymi im wyprowadzeniami na module i wszystko jest OK. Sprawdziłem napięcia na pinach Rx oraz Tx i domyślnie są one wysterowane do poziomu 3,3V.
    Po wielu próbach, różnych kombinacjach skończyły mi się pomysły co może być przyczyną problemów z komunikacją. Dodam jeszcze że docelowo moduł ma się komunikować poprzez UART z STM32. Już taką komunikacje kiedyś nawiązywałem i nie było z nią problemów ale wtedy wykorzystywałem moduły ESP takie jak poniżej:
    ESP8266 - komunikacja działa tylko w jedna stronę
    moduł taki nie ma wbudowanego konwertera USB->UART.
    Dodam jeszcze że wbudowany konwerter to układ: SILICON CP2102, z pomiarów wynika że nóżka RX modułu łączy się z tym układem za pomocą rezystora 470 Ohm i połączona jest z wyprowadzeniem TX. Natomiast nóżka TX modułu łączy się bezpośrednio z wyprowadzeniem RX układu CP2102.
    Ma ktoś pomysł jak rozwiązać ten problem, żeby komunikacja odbywała się w obu kierunkach?
    Pozdrawiam :)

    0 12
  • #2 19 Maj 2018 13:50
    MIR_TECH
    Uczeń

    A one czasem są niekompatybilne? Raczej z tego co czytałem nie da się tego zrobić

    0
  • #3 19 Maj 2018 13:55
    foneotek
    Poziom 8  

    Ale ESP niekompatybilne z zewnętrznym konwerterem USB->UART?

    0
  • #4 19 Maj 2018 14:02
    tronics
    Poziom 36  

    Moduły nodemcu mają wgrany soft nodemcu po to by można pisać program na samym ESP w Lua, oczywiste jest, że takie moduły nie akceptują komend AT jak fabryczne...

    0
  • #5 19 Maj 2018 15:21
    foneotek
    Poziom 8  

    Tak się jeszcze zastanawiam czy wbudowany konwerter USB->UART nie zakłóca transmisji danych pomiędzy ESP a zewnętrznym konwerterem. Znalazłem schemat podłączenia:
    ESP8266 - komunikacja działa tylko w jedna stronę
    Widać na nim że na jedne z linii UART nie ma rezystora.
    Ponadto własnie nie jestem do końca przekonany czy ESP8266 umieszczone na tej płytce nie ma możliwości komunikacji przez AT. Wgrałem flash z komendami AT, poza tym komendy AT działają jeśli wykorzystuje wbudowany konwerter USB->UART.

    0
  • #6 19 Maj 2018 16:06
    krzysiek_krm
    Poziom 34  

    Spróbuj wymontować ten nieszczęsny rezystor szeregowy, może zaburzać transmisję.

    0
  • Pomocny post
    #7 19 Maj 2018 17:05
    tronics
    Poziom 36  

    Cytat:
    Tak się jeszcze zastanawiam czy wbudowany konwerter USB->UART nie zakłóca transmisji danych pomiędzy ESP a zewnętrznym konwerterem

    Oczywiście, że może w zależności od tego jak mocno jeden podciąga do Vcc, a drugi do GND. Tutaj wyjaśni sprawę oscyloskop. U mnie FT232RL jako zewnętrzny konwerter gada z NodeMCU (Amica) normalnie - w każdym razie nie ma problemu z wgraniem wsadu (pamiętając o wciśnięciu FLASH) a że soft do wgrywania sprawdza odpowiedź od ESP to zakładam, że działa w obu kierunkach transmisja ok. Nie sprawdzałem AT, jak kolega podrzuci wsad mogę sprawdzić.

    0
  • #8 19 Maj 2018 18:52
    foneotek
    Poziom 8  

    tronics napisał:
    Oczywiście, że może w zależności od tego jak mocno jeden podciąga do Vcc, a drugi do GND.
    Z racji tego że obie linie są przez wbudowany konwerter podciągnięte do Vcc, to usunę ten konwerter i zobaczę jakie będą efekty :)

    0
  • #9 21 Maj 2018 09:37
    zster

    Poziom 28  

    Jeśli moduł ESP zasilasz przez USB to z komunikacji przez UART osobnym konwerterem nici. Zasil ten moduł przez pin VIN ( jest to wejście na stabilizator napięcia ) i będziesz mógł komunikować się z nim bez przeszkód i bez żadnych modyfikacji.

    0
  • #10 21 Maj 2018 10:27
    foneotek
    Poziom 8  

    zster napisał:
    Jeśli moduł ESP zasilasz przez USB to z komunikacji przez UART osobnym konwerterem nici. Zasil ten moduł przez pin VIN ( jest to wejście na stabilizator napięcia ) i będziesz mógł komunikować się z nim bez przeszkód i bez żadnych modyfikacji.

    Próbowałem już taką opcje z zasilaniem, podłączyłem 5V do pinu Vin i problem z wysłaniem czegoś do modułu dalej wystąpił. Spróbowałem jeszcze innej opcji: podłączyłem do pinu 3,3 napięcie 3,3V z zewnętrznej przetworniczki. Sytuacja była taka sama.. odbierałem dane z modułu lecz nie mogłem ich do modułu wysłać. Wydaje mi się że problem może być związany z tym o czym wspominał użytkownik tronics, a mianowicie zbyt moce jest podciąganie do Vcc i zewnętrzny konwerter ani STM32F407 nie radzi sobie z wysterowaniem lini UART do GND. Nie posiadam oscyloskopu ale wykorzystując analizator stanów logicznych w multimetrze sprawdzałem czy stany na liniach RX i TX sie zmieniaja. Gdy nawiązywałem komunikacje za pomocą wbudowanego konwertera pojawiały się "zera" na lini Rx oraz Tx natomiast gdy podłączyłem zewnętrzny konwerter stany niskie pojawiały sie gdy moduł coś wysyłał (przy resecie moduł wysyła trochę śmieci i komendę "ready"), natomist gdy ja chciałem coś wysłać to nie działo się nic. Konwerter działa, zresztą mam 5 konwerterów z czego trzy inne a dwa inne i też nici z komunikacji.

    0
  • #11 21 Maj 2018 15:01
    tronics
    Poziom 36  

    Jak pisałem podłączałem dokładnie jak zster sugerował 5V do VIN, GND do GND i FT232RL do TX, RX (z I/O na 3V3) i Silabs CP2102 na płytce zupełnie nic nie bruździł, a płytka bez jakichkolwiek przeróbek sprzętowych (w ramach testu wgrałem blynk z arduino i moduł się łączy co widać w serial debug w konsoli - czyt. na zewnętrznym konwerterze działa transmisja w obu kierunkach). Jeśli kolega ma jakiś konwerter z FTDI to radzę wypróbować.

    0
  • Pomocny post
    #12 21 Maj 2018 15:12
    krzysiek_krm
    Poziom 34  

    foneotek napisał:
    problem może być związany z tym o czym wspominał użytkownik tronics, a mianowicie zbyt moce jest podciąganie do Vcc i zewnętrzny konwerter ani STM32F407 nie radzi sobie z wysterowaniem lini UART do GND

    To jest dość oczywiste. Możesz spróbować doświadczalnie zwiększać rezystancję tego szeregowego opornika, który oryginalnie ma 470 Ω, w pewnym momencie zacznie działać nawet z driverem o cienkiej wydajności prądowej. Nie należy szaleć z tą rezystancją, wraz z pojemnością wejściową stanowi ona dolnoprzepustowy filtr RC, przy nienormalnie dużej rezystancji mogą pojawić się problemy przy dużych szybkościach transmisji z wykorzystaniem oryginalnego konwertera.
    Zakładam, rzecz jasna, że sygnał podłączasz "od strony ESP8266".

    0
  • #13 06 Cze 2018 17:32
    foneotek
    Poziom 8  

    Problem komunikacji rozwiązałem usuwając układ konwertera USB->UART. Jeszcze przed usunięciem układu wyczytałem że istnieje możliwość konfiguracji samego konwertera za pomocą programu: Simplicity Studio. Zainstalowałem ten program i poprzez USB połączyłem konwerter z komputerem, wszystko przebiegało dobrze do czasu gdy zorientowałem się że układ SILICON CP2102 będący konwerterem nie można skonfigurować tak by linie RX oraz TX nie były podciągniete ani do Vcc ani do GND. Przy innych, bardziej rozbudowanych konwerterach istnieje możliwość konfiguracji, przy moim niestety nie.
    Dziękuje wszystkim za pomoc i Pozdrawiam :)

    0