Wpis z mikrobloga

Mirki,
ma ktoś może doświadczenie w komunikacji host-host smartfona z Androidem oraz ESP8266? Chciałbym aby w tej komunikacji pośredniczył zwykły domowy router. Chcę się poradzić kogoś doświadczonego, czy w ogóle jest to w ten sposób wykonalne i czy w ogóle tędy droga.

Mam do zrealizowania projekt zdalnie sterowanego samochodu, ma on być sterowany przy użyciu smartfona. O co mi chodzi:
Najważniejszymi elementami aplikacji na smartfona mają być dwa suwaki. Jeden (pionowy) od sterowania prędkością obrotową kół, drugi (poziomy) od skrętu kół (silnik krokowy, przyłączony do belki). Coś jak sterowanie gałkami analogowymi w PlayStation albo Xboxie. Chcę przesyłać przez WiFi pozycję (aktualną wartość) tych suwaków. Cały czas trzymam palec na suwaku - 3-4 razy na sekundę jest wysyłany komunikat o jego pozycji. Palcem oczywiście mogę ruszać i wartość suwaka może się zmieniać, ale zakładam, że jak go będę trzymał w pozycji maksymalnej, nadal będą wysyłane komunikaty. Co będzie się działo jak puszczę palec jest do ustalenia. Samochodem sterować ma Arduino, ale tutaj raczej sobie poradzę. ESP ma się z nim komunikować za pomocą UART'u.

Przez ostatni tydzień uczyłem się JavaScriptu i tworzenia .apk na Androida z użyciem Cordovy (kurs z Elektroniki Praktycznej z 2015r.). Dzisiaj robiłem rozeznanie w tym jak działa ESP8266.

Meritum, moje pytania:
KOMUNIKACJA Wi-Fi #elektronika #arduino
1) telefon oraz ESP8266 podłączone do jednej sieci Wi-Fi (jakiś domowy router TP-LINK) i rozmawiają ze sobą za pośrednictwem routera, oba znają swoje IP. Żadnych interfejsów web'owych uruchamianych przez ESP. Czy jest to możliwe? Widział ktoś może jakiś podobny projekt, jakieś rady, jak to zrobić (da się w JavaScripcie [.apk]?, jak inaczej?)?
2) jeżeli 1) się nie da, to jak to zrobić z interfejsem web'owym. Chcę, aby ta komunikacja była ciągła/ze stałą częstotliwością, wstępnie zakładam wysłanie komunikatu ze smartfona jakieś 3-4 razy na sekundę.

APLIKACJA NA ANDROIDA #androiddev #webdev
3) czy coś takiego, czyli wysyłanie komunikatu ciągle/z pewną dużą (kilka razy na sekundę) częstotliwością jest do ogarnięcia w JavaScripcie? Z tego co zdążyłem się zorientować, obsługa zdarzeń za pomocą jednorazowej akcji nie jest problemem, ale ja tu chcę wykonywać coś "ciągle". Ciągle, mam na myśli zdroworozsądkowo, nie chcę robić tego non-stop, ile procesor z siebie da, tylko w sposób zoptymalizowany, z częstotliwością, nad którą panuję.
4) Czy pisanie aplikacji jako strony internetowej, kompilowanej później do .apk to dobra droga aby coś takiego zrobić? Jeśli nie, jak to zrobić inaczej?
5) czy za pomocą JavaScriptu mogę się komunikować z hostem, po prostu wysyłać jakieś komunikaty do jakiegoś adresu IP po protokole TCP/IP lub UDP? Czy można tylko z interfejsami web'owymi za pomocą np. komunikatów AJAX/JSON?

Moje dotychczasowe przemyślenia: Aplikacja, która steruje np. inteligentnym domem wydaje się być łatwiejsza do zrobienia w ten sposób, bo wystarczy nam jeden komunikat, alby zapalić lampkę, przełączyć przekaźnik albo zacząć opuszczać roletę.

Dodam tylko, że filmy ElektroPrzewodnika o zdalnie sterowanym pojeździe oraz 2 pierwsze o ESP8266 mam już za sobą. Parę innych też przejrzałem, ale nie znalazłem wielu podpowiedzi na moje problemy.
Jeżeli któreś pytania są trywialne to przepraszam, ale jestem przygnieciony ogromem rzeczy, które muszę pokojarzyć ze sobą aby to wszystko pospinać do kupy.

Pomóżcie, plox (,)
Pobierz
źródło: comment_OkP2oZMrO97uxRTWB5AemdCd6iBDKSdq.jpg
  • 5
@gftyhju: co do komunikacji to myślę że perfekcyjnie sprawdziłby się tu websocket postawiony na ESP. Komunikacja dwukierunkowa. Javascript obsługuje go na 100%, więc nie powinno być problemu.
3) powinno dać się ogarnąć w js za pomocą websocket
5) możesz, patrz websocket (po TCP)
@jaguar963 póki co mam jakiś stockowy od electrodragon'a. Obsługuje AT, ale nie wszystkie. Zamierzałem wgrać taki z komendami AT, np. od Espressif'a lub ten co podlinkował elektroprzewodnik w swoim filmie. No i komunikacja z Arduino po UART.
@gftyhju: Jeżeli chcesz mieć pewne połączenie, maksymalnie szybkie z minimalnym opóźnieniem to powinieneś to zrobić na socketach ale to jest strasznie dużo rzeźbienia po obu stronach. Po prostu p2p (ip do ip), otwierasz sesje i pchasz danymi.

Możesz to zrobić JS ze strony WWW ale mówiąc szczerze to mi się nie podoba - to raczej nie jest właściwa technologia. Rozumiem, że ją znasz i chciałbyś użyć :)

Proponował bym MQTT -