Skocz do zawartości

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


Pomocna odpowiedź

Napisano (edytowany)

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
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?

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.

Gość es2
(edytowany)
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
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...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...