Skocz do zawartości

Śmieci w danych wysyłanych po UART pomiędzy Arduino i ESP8266


Diabloo24

Pomocna odpowiedź

Witam, połączyłem sobie moduł ESP8266-12E z Arduino Uno poprzez programowy UART na pinach 10 i 11 przy wykorzystaniu bibliotek SoftwareSerial. Problem polega na tym, że gdy wysyłam komendę z Arduino do ESP8266 to w odpowiedzi zwrotnej często dostaje np. OK i jakieś śmiecie typu strzałka albo prostokąt. W załączniku dodaje screen jak to wygląda. Prędkość transmisji mam ustawioną na 115200. Dodam, że podczas komunikacji z ESP8266 przez konwerter UART FT232 nie ma tego problemu i przychodzą "czyste odpowiedzi". Co może być powodem tego, że otrzymywane odpowiedzi z ESP8266 na Arduino są "zakrzaczone" ? Jak widać na poniższym screenie komenda AT+GMR  nie zwraca całej informacji o wersji firmware ESP8266..

Edit. Po obniżeniu prędkości transmisji do 9600 wszystko działa dobrze. Maksymalna prędkość, przy której wszystko działa stabilnie to 38400 , wszystkie wyższe prędkości już wprowadzają "krzaki". Czym to może być spowodowane, bo na internecie znalazłem przykłady gdzie ludziom działa wszystko dobrze przy prędkości 115200 😐

 

 image.thumb.png.c0ce0fea3a6ac284b9351e8382f6471c.png

Edytowano przez Diabloo24
Link do komentarza
Share on other sites

Gość es2
16 godzin temu, Diabloo24 napisał:

bo na internecie znalazłem przykłady gdzie ludziom działa wszystko dobrze przy prędkości 115200

Na USART w uC czy programowym? Jak programowy to jaka biblioteka?

Link do komentarza
Share on other sites

Soft serial z Arduino działa OK na 9600, im wyżej tym gorzej i jest to często zgłaszane, więc jak nie wystarcza 9600 to weź procesor z większą liczbą sprzętowych UART - Arduino MICRO (jego uart właściwy jest pod Serial1, ten Serial jest z USB, tak samo Leonardo), Arduino MEGA ma 4 lub własne wynalazki z Atmega644P (2), Atmega328PB (2), Atmega1284. Jak koniecznie chcesz używać UNO/NANO to lepiej jest wysyłać na monitor portu softserialem niż softserialem coś odbierać - podłącz ESP8266 do sprzętowego po wgraniu szkicu i konwerter do PC na pinach softerial.

Link do komentarza
Share on other sites

Gość es2
2 godziny temu, kaczakat napisał:

Soft serial z Arduino działa OK na 9600, im wyżej tym gorze

Z powodu nagminnego zawieszania przerwań przez biblioteki Arduino. Często wystarcza zawieszanie przerwań z jednego źródła, niestety, biblioteki w praktycznie 100% przypadków globalnie zawieszają przerwania. Czasem przerwania są zawieszane bez potrzeby.

Edytowano przez es2
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

Dnia 17.12.2018 o 13:23, es2 napisał:

Na USART w uC czy programowym? Jak programowy to jaka biblioteka?

Na programowym, biblioteka SoftwareSerial

23 godziny temu, kaczakat napisał:

Soft serial z Arduino działa OK na 9600, im wyżej tym gorzej i jest to często zgłaszane, więc jak nie wystarcza 9600 to weź procesor z większą liczbą sprzętowych UART - Arduino MICRO (jego uart właściwy jest pod Serial1, ten Serial jest z USB, tak samo Leonardo), Arduino MEGA ma 4 lub własne wynalazki z Atmega644P (2), Atmega328PB (2), Atmega1284. Jak koniecznie chcesz używać UNO/NANO to lepiej jest wysyłać na monitor portu softserialem niż softserialem coś odbierać - podłącz ESP8266 do sprzętowego po wgraniu szkicu i konwerter do PC na pinach softerial.

Tak właśnie zrobiłem wczoraj i jest lepiej, ale też zdarzają się błędy. Zastanawiam się czy to nie wina Arduino, bo kiedyś jak realizowałem na nim inny projekt z wykorzystaniem UART to doszło do czegoś takiego, że nie mogłem zaprogramować Arduino przez UART tylko wyrzucało błąd w komunikacji, a program który był wgrany nie działał i nic nie dało się zrobić. Próbowałem wgrywać przez SPI i wtedy atmega się programowała, ale nadal nie mogłem zaprogramować Arduino przez UART. Potem wgrywałem od nowa bootloader też nie pomogło, więc stwierdziłem, że pewnie padł uC od komunikacji USB-UART, ale gdy wyjąłem Arduino po kilku miesiącach magicznie ożyło i znowu działa normalnie.. Chociaż teraz się zastanawiam czy to nie przez to te błędy z UARTem...

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.