Skocz do zawartości

Potyczki z komunikacją UART pomiędzy Arduino i ESP


Wrona

Pomocna odpowiedź

Chciałem zrobić komunikacje Arduino i ESP poprzez „SoftwareSerial”. Problemem było że napięcie z Arduino to 5V (i to musi tak zostać) a ESP przyjmuje tylko 3,3V. Rozwiązaniem pierwszego wyboru był konwerter stanów logicznych. Trochę z tym zamieszania, bo z jednej strony trzeba podać 5V a z 3,3V czyli trochę zamieszania z napięciami. No ale się udało, ale raz działało a raz nie. Jak trochę podziałało to potem przestawało. Arduino podpięte do komputera komunikowało się bez problemu. Podobnie ESP podpięte do komputera poprzez PL2303 działało bez najmniejszego problemu. Jednak, gdy tylko oba te podzespoły spinałem poprzez konwerter to znowu robiło się dziadostwo. W mojej główce pojawił się pomysł, że ESP z Arduino połączę poprzez PL2303 zamiast zwykłego konwertera. W zasadzie użyłem dwóch PL2303 spiętych ze sobą beczką USB (docelowa będzie około metra kabla). Załatwia to problem zasilania, bo PL2303 od strony ESP ma zworkę n 3V i spokój. Dodatkowo diody pozwalają stwierdzić, czy są nadawane sygnały RX i TX. No ale układ nie działa, bo pewnie jest coś czego nie wiem i nie rozumiem. Kiedy Arduino nadaje to na PL2303 po jego stronie zapala mi się dioda RX, ale po drugiej stronie „beczki” na PL2303 od strony ESP ciszą i nie zapala się TX (i dane nie dochodzą do ESP). Podobnie w drugą stronę choć to nie jest problem, bo mimo że ESP czasami coś nadaje to i tak Arduino nie słucha.

Coś pominąłem w swej ignorancji i nie ma prawa to zadziałać?

 

Link do komentarza
Share on other sites

45 minut temu, ethanak napisał:

Pytanie kontrolne: czy jak zepniesz ze sobą dwie myszki taką "beczką", to jak jedną ruszysz to druga zacznie jeździć po stole?

Na pewno w twoim pytaniu jest głęboki sens i gdybym był inteligentnym gościem to bym od razu załapał ogrom wiedzy z w nim zawarty, ale ... nie jestem 😞

Ja sobie to wyobraziłem tak: Z Arduino idzie sygnał z TX i wchodzi na pin RX do PL2303 potem beczka zamienia M na F i podpinam kolejne PL2303 gdzie zmieniam napięcie z 5V na 3V by zasilać ESP a sygnał wychodzi z TX do RX ESP.

Generalnie układ zaczął reagować poprawnie tylko zamiast danych wysyła jakieś głupoty.

Może pokombinuje z dzielnikami napięcia. 

  • Lubię! 1
Link do komentarza
Share on other sites

No dobrze, a co Twoim zdaniem robi PL2303?

I nie zgrywaj uciśnionej dziewicy, bo masz prawie sto postów na Forum, co najmniej drugie tyle przeczytałeś i powinieneś przynajmniej zacząć rozumieć podstawy (np. co to jest USB Host a co nie jest)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Powinienem wiedzieć wiele rzeczy. Zapewne powinienem wiedzieć dlaczego dwa programatory połączone beczką nie zadziałają tak jak tego się spodziewałem. Ale nie rzucaj we mnie kredą ani nie bij linijką. Po prostu mnie zignoruj. 

 

Link do komentarza
Share on other sites

Kable w USB specjalnie są różne z obu końców, by nie łączyć ze sobą dwóch hostów lub dwóch klientów. Jesteś odważny omijając mechaniczne zabezpieczania by dopiąć swego, nie zadając sobie trudu przeczytania w Internecie, czy to ma jakiś sens. Jak jakieś urządzenie może być jednocześnie klientem i hostem to ma dwa rodzaje gniazd, kiedyś były takie dyski sieciowe, można było podłączyć go do sieci komputerowej, do niego ( jako hosta)  inny dysk USB, ale i  ten dysk sieciowy można było podłączyć jako dysk USB (klient)  do PC.

Zamiast pisać wypracowanie należy opisać problem, pokazać kod i schemat układu. Prawidłowy schemat dostałeś od @ethanak. Czy wszystko będzie działać prawidłowo zależy również od tego jak wygląda program, bo jak jest zajęty przez 100% czasu to nie ma kiedy zająć się komunikacją przez softserial. Wybór pinów też nie jest bez znaczenia, niektóre są lepsze niż inne, a czasami są najlepsze do różnych bloków programu i jest konflikt, bo wiele bibliotek chciałoby właśnie ten jeden.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

@kaczakat  Dzięki. Nie ma żadnego schematu. Ot Cztery kable idą od nadającego Arduino czyli RX, TX i zasilanie i cztery wchodzą do odbierającego ESP. Gdy po drodze stawiałem konwerter stanów logicznych to działało to w sposób nie przewidywalny (po jakiś czasie siadało) dlatego zacząłem kombinować czym by go zastąpić. Jednocześnie gdy na drodze tej komunikacji stawiałem komputer poprzez Pl2303 to wszystko działało bez zakłóceń. Dlatego zrezygnowałem z konwertera stanów logicznych i zacząłem kombinować z programatorem jako pośrednikiem. Kod programu tu jest bez znaczenia bo zarówno wysyłanie jak i odbieranie to określony moment rozdzielony wieloma sekundami. Odbiornik czeka sobie spokojnie na dane i niczym innym się nie zajmuje a dopiero gdy się doczeka to sobie z nimi robi co tam ma robić a potem znowu sobie czeka i nic więcej nie robi. Generalnie komunikacja to tylko kilka znaków wysyłanych co kilka minut. Pierwszy prototyp na płytce stykowej działał wiele dni bez problemu dopiero gdy chciałem ESP oddalić na jakimś kablu i zasilać za pośrednictwem Arduino to się zapędziłem w ten kozi róg. Raz jeszcze dzięki. Jakoś w końcu pogodzę te dwa napięcia w sposób odpowiedni dla mnie i urządzenia. 

Link do komentarza
Share on other sites

@kaczakat Skoro działa i z kompem się komunikuje a nawet cały układ w pewnych okolicznościach działa to tak jak mówiłem nie ma sensu otwierać pacjenta i omawiać jego bebechów i tworzyć poboczne wątki skoro problemem jest język i uszy :) Tak czy siak dzięki Ci bo sprawa się wyjaśniła. Gdy taki gamoń jak ja pyta o taką błahostkę jak ja zapytałem to wystarczy jednym zdaniem odpowiedzieć że

"Bo w komunikacji po USB mamy Device oraz Host (kontroler magistrali np. komputer), a twoje Arduino ani ESP nie są Hostami o bez doinwestowania w dodatkowe nakładki nie będą nimi, a poczytać o tym można np. tu https://forbot.pl/blog/kurs-stm32-f4-11-komunikacja-przez-usb-id13477"

Wtedy taki gamoń jak ja, umyje ręce po dojeniu krów i się cieszy że coś już więcej wie, a resztę doczyta.

Całe to moje kombinowanie wynikało z podstawowej mej cechy czyli "nie znoszę lutowania elektroniki". W całej tej zabawie lutowanie jest jak kożuch na mleku. No więc jak mam coś polutować to zaczynam kombinować czy nie dałoby się wykorzystać jakiegoś modułu. Teraz już wiem że tego nie ominę w tym przypadku, bo nawet gdybym się szarpnął na HostShield to by była za duża ingerencja w program, bo mam już wszystkie piny zajęte. 

Sprawa się dzięki Tobie wyjaśniła. 

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.