Skocz do zawartości

Kontrola Arduino przez WIFI, nie przez moduł WIFI


corvuscorax

Pomocna odpowiedź

Cześć.
Od niedawna mam Arduino Uno i udało mi się wyprodukować układ, który załącza przekaźnik 230V. Działa bez problemu. Chciałbym teraz móc kontrolować przekaźnik drogą bezprzewodową, przez WIFI (sieć lokalną). Dużo czytałem o tym, ale wydaje mi się, że jest coś czego nie mogę zrozumieć. Jeśli chodzi o wszelkie poradniki, autorzy mówią / piszą o wykorzystaniu samego kontrolera WIFI i jego pinów. Ja natomiast chciałbym sterować samym Arduino, tak jakbym robił to za pośrednictwem przewodu USB.

Jeśli powyższe założenie ma sens działania, podejrzewam, że muszę zakupić jakiś układ WIFI i zapisać w nim program, który będzie odbierał sygnały. Następnie moduł będzie przekazywał je do Arduino a tam one będą interpretowane (w analogiczny sposób jak podawanie komend do terminala wykorzystując IF "warunek" { komenda_do_wykonania} ). Program ten będzie mały i będzie jedynie "przekaźnikiem" komend, które już Arduino będzie wykonywał. Idać dalej tą drogą, wówczas komunikacja mojego komputera TX/RX (w celu wgrywanie kodu) nie będzie możliwa, bo będzie wykorzystywana do komunikacji z modułem WIFI. Zatem, jak sądzę, będzie potrzebne inne rozwiązanie komunikacji pomiędzy układami WIFI a Arduino, takie jak np. wykorzystanie innych pinów. Ogólnie rzecz ujmując, chciałbym w dowolnym momencie móc programować Arduino bez rozmontowywania całości zestawu.
Schematycznie, chciałbym coś takiego:

Sieć LAN na WIFI -> Moduł WIFI -> Arduino -> przekaźnik
                                                                         \<- komputer połączony USB

Pomóżcie proszę, jak się do tego zabrać i czy moje myślenie, tudzież wywody, są prawidłowe.
PS. Dodam, że wolałbym używać modułów z pinami niż lutowanych, aby nie poświęcać na początku za dużo czasu na stronę hardware'u.
 

Link do komentarza
Share on other sites

Wydaje mi się, że mylisz dwie kwestie. Kiedy piszesz

1 godzinę temu, corvuscorax napisał:

Jeśli chodzi o wszelkie poradniki, autorzy mówią / piszą o wykorzystaniu samego kontrolera WIFI i jego pinów.

prawdopodobnie masz na myśli układy oparte na ESP8266 np:

https://botland.com.pl/pl/moduly-wifi/5463-modul-wifi-esp-12e-esp8266-black-11-gpio-adc-pcb-antena.html?search_query=esp8266&amp;results=66

lub 

https://botland.com.pl/pl/moduly-wifi/8241-modul-wifi-esp8266-nodemcu-v3.html?search_query=nodemcu&amp;results=22

Są to układy, które "same" bez dodatkowych akcesoriów potrafią połączyć się z siecią  wi-fi. Możesz je programować identycznie lub nawet łatwiej jak arduino.

Ciebie jednak prawdopodobnie chodzi o:

https://botland.com.pl/pl/arduino-shield-komunikacja/3779-ethernet-shield-dla-arduino-z-czytnikiem-kart-microsd.html

jest to shield, czyli takie akcesorium, które wpinasz w piny arduino i wtedy łączysz swoje arduino z internetem (przewodem). 

Możesz też kupić arduino z już wbudowanym wi-fi np:

https://botland.com.pl/pl/arduino-team-oryginalne-plytki/12315-arduino-yun-rev2-abx00020-wifi-ethernet.html

Zastosowanie któregokolwiek z wyżej wymienionych sposobów, w żaden sposób nie koliduje z możliwością połączenia z komputerem i zaprogramowania układu, nic nie będzie trzeba rozłączać.

Link do komentarza
Share on other sites

Czyli ten shield to mógłby być taki: link ? Czy ja dobrze rozumiem: Łącze taki shield z moim arduino i wówczas całość kodu piszę w samym arduino?
Jak taki układ komunikuje się z Arduino? Widzę, że ten z linka powyżej (ten moduł D1) ma USB. Pewnie można go również programować jako samodzielny układ. Widzę, że ma też piny własne. Więc schematycznie, moduł łączy się z siecią, dostaje jakiś sygnał, np. "1" i wtedy on za pośrednictwem swoich pinów (których, TX/RX czy wyjść?) przekazuje sygnał do Arduino, który reaguje na owy komunikat "1", np. poprzez podanie napięcia na jakiś swój pin. Czy w taki sposób mam to rozumować?

Jeśli nie wyjaśnij mi proszę w jaki sposób te modułu miałyby się dogadać. Bo to jest chyba kwestia, której nie mogę pojąć.
Jeśli wprowadzam zbędny chaos, jeszcze raz określę swój cel: arduino ma wykonywać działania na podstawie sygnałów, które moduł WIFI otrzyma z sieci. Tak jak opisałem wyżej, moduł powinien przechwycić w dowolny sposób jakiegoś stringa, np. "1" i przekazać to do Arduino, który już w swoim programie ma go rozpoznać i wykonać jakąś operację.

 

Link do komentarza
Share on other sites

Jeśli ma się łączyć z siecią bezprzewodowo to najlepszy, najtańszy będzie sposób oparty na ESP8266, programujesz jak arduino. Robi co chcesz jak arduino. To te dwa pierwsze przykłady z mojego poprzedniego posta. 

Nie wiem czym chcesz dokładnie sterować przez internet, ale możesz zajrzeć do mojego tematu, gdzie również używam arduino i ethernet shielda do podobnych zadań:

 

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

(edytowany)

No wlasnie: Ja nie chcę sterować przez moduł WIFI. Chcę, aby robiło to Arduino. Pomijam kwestię, czy przez internet czy nie, ponieważ to bez znaczenia.

Sprawa wygląda następująco:
1. moduł WIFI odbiera string "1" 
2. Moduł WIFI przekazuje go do Arduino
3. Arduino odczytuje "1"
4. Arduino wykonuje polecenie.

To tutaj mam problem nr 1, pomiędzy punktami 1 a 2. W jaki sposób nadać taki sygnał i wysłać go do Arduino?
Później problem nr 2, pomiędzy punktami 2 a 3. W jaki sposób odczytać taki sygnał?

Sensem tego wszystkiego jest nie wiem, włączenie światła przy pomocy przekaźnika, ale na tą chwilę nie ma to znaczenia,
ponieważ ja mam problem z inną kwestią.


 

Edytowano przez corvuscorax
Link do komentarza
Share on other sites

55 minut temu, corvuscorax napisał:

całość kodu piszę w samym arduino

Jeśli masz na myśli środowisko programistyczne Arduino IDE to tak - obydwa programy: dla Arduino i dla ESP napiszesz za pomocą tego edytora. Tylko musisz pamiętać, ze masz nie 1 lecz 2 mikrokontrolery. Arduino UNO robi swoje realizując swój program, a ESP realizuje drugi program.

1 minutę temu, corvuscorax napisał:

To tutaj mam problem nr 1, pomiędzy punktami 1 a 2. W jaki sposób nadać taki sygnał i wysłać go do Arduino?

 

Nie ma problemu - obydwa mikrokontrolery posiadają port szeregowy. Wystarczy je połączyć za pomocą tego interfejsu i oprogramować komunikację (patrz przykłady do Serial)

Link do komentarza
Share on other sites

@corvuscorax - poczytaj o module ESP-01 (https://botland.com.pl/pl/moduly-wifi/4527-modul-wifi-esp-01-esp8266-black-3-gpio-1mb-pcb-antena.html). Na stronie znajdziesz link do prawie-gotowca: https://botland.com.pl/pl/content/125-sterowanie-ledami-przez-wifi-z-wykorzystaniem-esp8266

Zwróć tylko uwagę na napięcia: Arduino 5V, ESP - 3.3V, cała reszta powinna być prosta.

Link do komentarza
Share on other sites

(edytowany)

Dzieki Elvis, czytałem ten poradnik, ale nie mogę zrozumieć pewnych rzeczy.
Soyer, Przez moduł WIFI rozumiem abstrakcyjne urządzenie, które jest moim wyjściem na świat.

Mam w arduino kod, który rozpoznaje w terminalu string "wlacz_przekaznik" i włącza przekaźnik 🙂 Chcę zrobić dokładnie to samo, ale bez użycia komputera (kabla USB). Moim kablem miałby być moduł WIFI. Jak doprowadzić do sytuacji, w której Moduł WIFI (już pomijając całą procedurę łączenia z siecią, bo to ogarnę) odczyta polecenie pochodzące z zewnątrz (np. odbierze sygnał "wlacz_przekaznik") i przekaże to samo polecenie do Arduino, które wykona już właściwą operację. Cały problem polega na tym, jak te dwa elementy mają się komunikować ze sobą.

Sygnały będą puszczane z aplikacji napisanej w języku wysokiego poziomu, aplikacji na windowsa, gdzie kliknę na przycisk i wówczas aplikacja wyśle polecenie "wlacz_przekaznik" przez sieć do Arduino.


Załóżmy, że program chciałbym rozbudować później, podłączam Arduino pod USB, wgrywam nowy program i już mam nowy warunek, np. "wlacz_przekaznik_2" i od razu kiedy przez sieć wyśle tą komendę wykona się inna operacja.

11 minut temu, Elvis napisał:

@corvuscorax - poczytaj o module ESP-01 (https://botland.com.pl/pl/moduly-wifi/4527-modul-wifi-esp-01-esp8266-black-3-gpio-1mb-pcb-antena.html). Na stronie znajdziesz link do prawie-gotowca: https://botland.com.pl/pl/content/125-sterowanie-ledami-przez-wifi-z-wykorzystaniem-esp8266

Zwróć tylko uwagę na napięcia: Arduino 5V, ESP - 3.3V, cała reszta powinna być prosta.

O napięciach wiem, o podłączeniu też, o konwerterach także. Wiem wszystko już z dziedziny podłączenia, ale (patrzy wyżej) nie mogę zrozumieć jak doprowadzić do komunikacji sieć -> arduino

https://botland.com.pl/pl/content/125-sterowanie-ledami-przez-wifi-z-wykorzystaniem-esp8266

Chyba zaczynam rozumieć. ESP komunikuje się z Arduino w taki sposób jak opisałem. (chyba)
A czy w takiej konfiguracji (ESP + Arduino) będę w stanie w każdym momencie podłączyć usb do kompa i wgrać nowy program?

 

Edytowano przez corvuscorax
Link do komentarza
Share on other sites

ESP to "taki sam" mikro kontroler jak arduino, żeby sterować "czymś" przez sieć. Po prostu do arduino musisz mieć dodatkowy moduł żeby nim sterować przez sieć, a do ESP już nie potrzebujesz nic dodatkowego. Do obu tych rozwiązań w każdej chwili możesz wgrać nowy program. Możesz też mieć i ESP i arduino, wtedy będziesz miał dwa mikro kontrolery, w tym jeden z możliwością połączenia z wi-fi. Mogą się komunikować ze sobą, ale żeby sterować np. diodą przez sieć wystarczy samo ESP.

Jaśniej nie umiem.;-)

Link do komentarza
Share on other sites

1 godzinę temu, corvuscorax napisał:

nie mogę zrozumieć jak doprowadzić do komunikacji sieć -> arduino

wpinasz internet shield, grywasz biblioteki, piszesz program i się komunikują... Jeśli chcesz znać szczegóły tej komunikacji to pewnie ktoś tu podeśle jakiś link, będziesz mial na tydzień czytania;-)

 

Link do komentarza
Share on other sites

Po głębszych przemyśleniach, zakupiłem ESP8266 nodeMCU v3. Zaprogramuje, podłącze przekaźnik i w sumie załatwię zdalne włączanie obwodu 230V.
Do Arduino natomiast zakupię ESP8266 i podłączę i będę miał w zasadzie odpowiednik tego nodeMCU.
 

Link do komentarza
Share on other sites

6 minut temu, corvuscorax napisał:

Do Arduino natomiast zakupię ESP8266 i podłączę i będę miał w zasadzie odpowiednik tego nodeMCU.
 

Nie do końca, nodeMCU podłączyć i zaprogramować na jeden przekaźnik to moment, powiedzmy;), a połączenie arduino z esp w jeden organizm to już nie taki moment:)

Link do komentarza
Share on other sites

1 minutę temu, SOYER napisał:

Nie do końca, nodeMCU podłączyć i zaprogramować na jeden przekaźnik to moment, powiedzmy;), a połączenie arduino z esp w jeden organizm to już nie taki moment:) 

Nie upieram się, że to najlepszy pomysł - ale podłączenie esp8266 jako "modemu" wifi dla Arduino jest bardzo proste. Dostępny jest gotowy firmware realizujący komendy AT - więc po stronie esp nie trzeba nic robić. Natomiast na Arduino wystarczy napisać program, który będzie te nieszczęsne komendy wysyłał przez port szeregowy. Wcześniej wklejałem link do Botlandu z gotowym przykładem. Wydaje mi się że to jednak moment 😉

  • Lubię! 1
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.