RTV forum PL | NewsGroups PL

Stabilność modułów ESP8266: Czy wersja 01 radzi sobie w projektach NTP?

Stabilność ESP8266

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Stabilność modułów ESP8266: Czy wersja 01 radzi sobie w projektach NTP?

Goto page Previous  1, 2, 3  Next

Marek
Guest

Thu Jan 29, 2015 2:13 pm   



On Thu, 29 Jan 2015 08:36:13 +0100, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
Hmm... Czyli krótko mówią mogę zrobić to np. za pomocą tablicy, w
której
będę trzymał typ strukturalny złożony z łańcucha tekstowego
(wszystkie
możliwe komendy zmieniające stan) oraz jakiejś zmiennej (np. enum)
określającej ten stan.

Przykład szkieletu stanów i ich obsługi z moich wypocin:

typedef enum
{
SM_INITIALIZE=0,
SM_WAIT_FOR_INIT,
SM_EVENT_WAIT_INIT,
SM_EVENT_WAIT,
SM_RETR_SMS_R,
SM_RETR_SMS_W1,
SM_RETR_SMS_W2,
SM_SEND_INIT,
SM_SEND_WAIT1,
SM_SEND_P2, SM_SEND_WAIT2, SM_SEND_NETWORKQ_INIT,
SM_SEND_NETWORKQ_WAIT, SM_STATUS_GET,
SM_STATUS_WAIT,
SM_CALLOUT_SET,
SM_CALLOUT_WAIT,
SM_HANGUP_SET,
SM_HANGUP_WAIT
}SM_STATE;

static SM_STATE gsm_state;

void gsm_task()
{

switch (gsm_state)
{
case SM_INITIALIZE:
//
break;

case SM_WAIT_FOR_INIT:
//
break;
.....

}
}

W pętli głównej w main () wywołujesz tylko gsm_task();. Zajrzyj do
pdfa do którego podawałem link w poprzednim poście, do źródła ppp.c,
cały ppp jest zrobiony na maszynie stanów.

--
Marek

Atlantis
Guest

Thu Jan 29, 2015 5:55 pm   



No cóż... Dwie kolejne obserwacje:

1) Należy BARDZO uważać ze stosowaniem komendy AT+CIUPDATE, która ma
rzekomo przeprowadzać internetową aktualizację firmware'u modułu. Tak
naprawdę jednak (w zależności od wersji posiadanego FW) albo generuje
błędy, albo brickuje moduł - na szczęście odwracalnie.
2) W najnowszej wersji firmware'u AT
(http://www.electrodragon.com/w/ESP8266#Firmware) ciągle występuje błąd
z wysyłaniem danych UDP, jeśli korzystamy przy tym z DNS-a. Może
Chińczycy jeszcze go nie zauważyli? Wink

Marek
Guest

Thu Jan 29, 2015 6:27 pm   



On Thu, 29 Jan 2015 17:55:42 +0100, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
No cóż... Dwie kolejne obserwacje:


Quote:
1) Należy BARDZO uważać ze stosowaniem komendy AT+CIUPDATE, która ma
rzekomo przeprowadzać internetową aktualizację firmware'u modułu.
Tak
naprawdę jednak (w zależności od wersji posiadanego FW) albo
generuje
błędy, albo brickuje moduł - na szczęście odwracalnie.
2) W najnowszej wersji firmware'u AT
(http://www.electrodragon.com/w/ESP8266#Firmware) ciągle występuje błąd
z wysyłaniem danych UDP, jeśli korzystamy przy tym z DNS-a. Może
Chińczycy jeszcze go nie zauważyli? Wink

Wcale się nie śmiej, w chińskiej dokumentacji do prostych
urządzeń/modułów używających tcp/up przykłady z adresami ip zamiast
nazw to standard, wcale bym się nie zdziwił, że nie przetestowali z
nazwami hosta.
Nawę hosta na pewno prawidłowo podajesz w argumencie polecenia
(cytowanie stringa)?

--
Marek

Atlantis
Guest

Thu Jan 29, 2015 6:37 pm   



W dniu 2015-01-29 o 18:27, Marek pisze:

Quote:
Wcale się nie śmiej, w chińskiej dokumentacji do prostych
urządzeń/modułów używających tcp/up przykłady z adresami ip zamiast nazw
to standard, wcale bym się nie zdziwił, że nie przetestowali z nazwami
hosta.

Będę musiał sprawdzić, czy da się do kogoś w tej sprawie napisać...


Quote:
Nawę hosta na pewno prawidłowo podajesz w argumencie polecenia
(cytowanie stringa)?

Testuję pod terminalem, zapis wygląda następująco:
AT+CIPSTART=4,"UDP","time.windows.com",123\r\n
Gdzie \r" to znak powrotu, a "\n" to znak nowej linii.

Atlantis
Guest

Fri Jan 30, 2015 9:33 am   



Hmm... Wgranie poniższego softu usunęło problem.
W dodatku znacząco zmniejszył się czas odpowiedzi na pinga.

http://bbs.espressif.com/viewtopic.php?f=5&t=154

Atlantis
Guest

Fri Jan 30, 2015 11:22 am   



W dniu 2015-01-29 o 14:13, Marek pisze:

Quote:
W pętli głównej w main () wywołujesz tylko gsm_task();. Zajrzyj do pdfa
do którego podawałem link w poprzednim poście, do źródła ppp.c, cały ppp
jest zrobiony na maszynie stanów.

Hmm... W takim razie coś takiego z grubsza już kiedyś robiłem. W jednym
z projektów zachodziła konieczność cyklicznego wysyłania żądania
aktualizacji NTP oraz uploadowania paru danych na serwer. Układ
wykorzystywał ENC28J60 wraz ze stosem Tuxgraphics, a więc nie było
możliwości przeprowadzenia większości operacji automatycznie, w tle.

Trzeba było przy tym sprawdzić kilka warunków:
- Czy w konfiguracji podano numer IP celu, czy też nazwę hosta do
rozwiązania przez DNS.
- Czy cel znajduje się w naszej sieci, czy gdzieś w Internecie (od tego
zależało jakiego adresu MAC użyjemy w kolejnym etapie).
Oznaczało to konieczność odpytywania stosu o różne rzeczy, w dodatku
trzeba było pilnować, aby kolejne wywołanie nie szło przed zakończeniem
poprzedniego.

Zrobiłem to właśnie przez dwie zmienne (jedna dla NTP, druga dla klienta
TCP), które pilnowały na jakim etapie obecnie znajduje się operacja. W
pętli głównej podejmowana była odpowiednia akcja, stosowanie do stanu
zmiennej.

Marek
Guest

Fri Jan 30, 2015 1:50 pm   



On Fri, 30 Jan 2015 09:33:26 +0100, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
W dodatku znacząco zmniejszył się czas odpowiedzi na pinga.
http://bbs.espressif.com/viewtopic.php?f=5&t=154

To jest nowa wersja softu, który był oryginalnie czy to jakaś
alternatywa?

--
Marek

Atlantis
Guest

Fri Jan 30, 2015 3:34 pm   



W dniu 2015-01-30 o 13:50, Marek pisze:

Quote:
To jest nowa wersja softu, który był oryginalnie czy to jakaś alternatywa?

Zdaniem ludzi z elektroda.pl to oficjalny soft.
Niemniej trudno powiedzieć - w tej materii z tego co widzę panuje spory
bałagan, a lepszej dokumentacji brak...

jacek pozniak
Guest

Fri Jan 30, 2015 3:57 pm   



Chciałbym sie przy okazji podczepiś do wątku o tym module i zadać pytanie.

Interesuje czy ten moduł ma takie właściwości, że może być serwerem z
ustalonym IP i się łączymy się do niego po telnecie i to co on odbierze
przez sieć to wypluwa na rs232 i odwrotnie, taki konwerter sieć<->rs232?


jp

Atlantis wrote:

Quote:
Ktoś z was miał może już jakieś większe doświadczenia z tym popularnym
modułem? Ja dopiero zaczynam eksperymenty - pobawiłem się połączeniami
pod terminalem, ale jeszcze nie złożyłem na nim żadnego większego
projektu z MCU. Powoli projektuję jednak płytkę zegara nixie z
synchronizacją czasu po NTP.
Czy moduł można uznać za stabilny? To znaczy raz włączony będzie działał
bez samodzielnego zawieszania się? Nie liczę tutaj oczywiście sytuacji,
do których może dojść z winy użytkownika.

Pytam, ponieważ rozpoczynając eksperymenty z ENC28J60 (a później także
W5100) natknąłem się na kilka mitów dotyczących ich stabilności. Układy
miały się rzekomo nie nadawać do zastosowań takich jak automatyka domowa
czy telemetria, ze względu na tendencję do samodzielnego wieszania się i
zrywania połączeń. Tymczasem praktyka pokazała coś zupełnie innego -
zaprojektowane przeze mnie płytki z tymi układami działają już dobre pół
roku i przez ten czas udawało im się nabijać uptime liczony w
tygodniach, jeśli nie miesiącach.

Czy istnieje jakaś różnica w stabilności pomiędzy poszczególnymi
wersjami modułów? Bo na rynku dostępnych jest kilkanaście różnych odmian
- zaczynając od najpopularniejszej "01" (antena PCB i goldpiny) kończąc
na znacznie bardziej profesjonalnie wyglądających modułach z anteną
ceramiczną i metalowym ekranem nad elektroniką.

Może mity biorą się od początkujących użytkowników Arduino, którzy nie
wiedzą, że taki moduł potrzebuje jednak odpowiednio wydajnego źródła
zasilania i kondensatorów filtrujących w pobliżu pinu VCC?


Atlantis
Guest

Fri Jan 30, 2015 4:07 pm   



W dniu 2015-01-30 o 15:57, jacek pozniak pisze:

Quote:
Interesuje czy ten moduł ma takie właściwości, że może być serwerem z
ustalonym IP i się łączymy się do niego po telnecie i to co on odbierze
przez sieć to wypluwa na rs232 i odwrotnie, taki konwerter sieć<->rs232?

Nie do końca. To znaczy o ile mi wiadomo moduł nie ma trybu
"przezroczystości", tak jak w najpopularniejszych modemach GSM -
zestawiasz połączenie między urządzeniami i od tego czasu modem
zachowuje się jak "kawałek kabla", po prostu przerzucając bajty z jednej
strony na drugą.

Wszystkie przychodzące dane pojawiają się w terminalu wraz z komendą do
sparsowania:

+IPD=<x>,<y>:<dane>

Gdzie x to numer socketa, y oznacza ilość odebranych danych, a dane to
odebrany ciąg. Możesz też ustawić tryb, w którym obsługiwane jest tylko
jedno połączenie w danym czasie - wówczas rezygnujesz z pierwszego
parametru.

Moduł może pracować jako serwer i nawet całkiem wygodnie stawia się na
nim telnet - uruchamiasz serwer, a każdy kolejny klient zajmuje sobie
kolejny wolny socket. Każda wysłana linijka przylatuje do ciecie jako IPD.

Atlantis
Guest

Fri Jan 30, 2015 4:08 pm   



No i oczywiście moduł niczego nie wypluwa po RS232, ale po UART z
poziomami logicznymi 3,3V. Podłączając go do RS232 bez konwertera
zniszczysz go natychmiast.

jacek pozniak
Guest

Fri Jan 30, 2015 4:43 pm   



Atlantis wrote:

Quote:
W dniu 2015-01-30 o 15:57, jacek pozniak pisze:

Interesuje czy ten moduł ma takie właściwości, że może być serwerem z
ustalonym IP i się łączymy się do niego po telnecie i to co on odbierze
przez sieć to wypluwa na rs232 i odwrotnie, taki konwerter sieć<->rs232?

Nie do końca. To znaczy o ile mi wiadomo moduł nie ma trybu
"przezroczystości", tak jak w najpopularniejszych modemach GSM -
zestawiasz połączenie między urządzeniami i od tego czasu modem
zachowuje się jak "kawałek kabla", po prostu przerzucając bajty z jednej
strony na drugą.

Wszystkie przychodzące dane pojawiają się w terminalu wraz z komendą do
sparsowania:

+IPD=<x>,<y>:<dane

Gdzie x to numer socketa, y oznacza ilość odebranych danych, a dane to
odebrany ciąg. Możesz też ustawić tryb, w którym obsługiwane jest tylko
jedno połączenie w danym czasie - wówczas rezygnujesz z pierwszego
parametru.
Dzięki, tak mogłoby być, dane to ja sobie poobieram z tych nagłówków.


Dzięki
jp

Quote:

Moduł może pracować jako serwer i nawet całkiem wygodnie stawia się na
nim telnet - uruchamiasz serwer, a każdy kolejny klient zajmuje sobie
kolejny wolny socket. Każda wysłana linijka przylatuje do ciecie jako IPD.


Atlantis
Guest

Fri Jan 30, 2015 5:43 pm   



W dniu 2015-01-30 o 16:43, jacek pozniak pisze:

Quote:
Dzięki, tak mogłoby być, dane to ja sobie poobieram z tych nagłówków.

Jak robisz prostą komunikację w rodzaju telnetu, gdzie pojedyncze
polecenie zamyka się w jednej linijce, to nie ma problemu. Możesz sobie
nawet odpuścić liczenie napływających znaków i porównywanie tej liczby z
parametrem po IPD. W miarę bezpiecznie można założyć, że \r\n kończy nam
całą ramkę. Trochę gorzej z bardziej skomplikowanymi protokołami, jak HTTP.

jacek pozniak
Guest

Fri Jan 30, 2015 8:22 pm   



Atlantis wrote:

Quote:
W dniu 2015-01-30 o 16:43, jacek pozniak pisze:

Dzięki, tak mogłoby być, dane to ja sobie poobieram z tych nagłówków.

Jak robisz prostą komunikację w rodzaju telnetu, gdzie pojedyncze
polecenie zamyka się w jednej linijce, to nie ma problemu. Możesz sobie
nawet odpuścić liczenie napływających znaków i porównywanie tej liczby z
parametrem po IPD. W miarę bezpiecznie można założyć, że \r\n kończy nam
całą ramkę. Trochę gorzej z bardziej skomplikowanymi protokołami, jak
HTTP.
Nie, tylko trochę danych; zapytanie z komputera 6 bajtów i odpowiedź z

urządzenia z podłączonym tym modułem, max 256 bajtów.
To chyba powinien dać radę?

jp

jacek pozniak
Guest

Fri Jan 30, 2015 8:53 pm   



jacek pozniak wrote:

Quote:
Atlantis wrote:

W dniu 2015-01-30 o 16:43, jacek pozniak pisze:

Dzięki, tak mogłoby być, dane to ja sobie poobieram z tych nagłówków.

Jak robisz prostą komunikację w rodzaju telnetu, gdzie pojedyncze
polecenie zamyka się w jednej linijce, to nie ma problemu. Możesz sobie
nawet odpuścić liczenie napływających znaków i porównywanie tej liczby z
parametrem po IPD. W miarę bezpiecznie można założyć, że \r\n kończy nam
całą ramkę. Trochę gorzej z bardziej skomplikowanymi protokołami, jak
HTTP.
Nie, tylko trochę danych; zapytanie z komputera 6 bajtów i odpowiedź z
urządzenia z podłączonym tym modułem, max 256 bajtów.
To chyba powinien dać radę?
Tylko, że to dane binarne.

jp
Quote:

jp


Goto page Previous  1, 2, 3  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Stabilność modułów ESP8266: Czy wersja 01 radzi sobie w projektach NTP?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map