Witam wszystkich,
nazywam się Michał i chciałbym pokazać wam dzisiaj jak zrobić jednostronny komunikator za pomocą Arduino. Projekt znalazłem na zagranicznej stronie i wprowadziłem w nim obsługę modułu internetowego ENC28J60.
Arduino mam od niedawna i jest to mój pierwszy artykuł na Majsterkowo, także proszę o wyrozumiałość. Jeśli zauważycie jakieś błędy to proszę pisać w komentarzach, to poprawię artykuł jak najszybciej się da :)
Co nam będzie potrzebne?
– Arduino, w moim przypadku Leonardo
– Publiczne IP
– Wyświetlacz 2×16 zgodny z HD44780
Czyli wszystko co jest dostepne w Starter Kicie, plus ENC28J60.
Od czego zacząć?
Na początku trzeba wszystko poskładać, dlatego zacznę od schematu narysowanego w programie Fritzing, jest to mój pierwszy rysunek w tym programie, ale myślę, że każdy zobaczy co i jak podłączyć. :)
Następnym krokiem będzie wgranie programu do naszego Arduino. Przed wgraniem można zmienić numer IP naszego komunikatora na odpowiedni w naszej sieci. Np. adres IP mojego routera to 192.168.0.1, a komputera to 192.168.0.101, to ustawiam IP komunikatora na 192.168.0.115.
Podłączamy nasz komunikator do routera i możemy sprawdzić czy wszystko działa w sieci lokalnej. Aby to sprawdzić wpisujemy w pasek adresu naszej przeglądarki 192.168.0.115 i powinna nam się ukazać strona naszego komunikatora:
Jeśli strona się poprawnie wyświetla, to możemy wpisać coś w pole wiadomość i kliknąć wyślij. Nasza wiadomość powinna pokazać się na wyświetlaczu:
Publiczne IP i przekierowanie portów
Teraz pora na przekierowanie portów, aby z naszego komunikatora można było korzystać spoza sieci lokalnej tzn. z całego świata. Ja zrobię to na przykładzie routera TP-Link TL-WDR4300, w przypadku innych TP-Linków będzie identycznie, a w przypadku routerów innych firm powinno być podobnie.
Jeśli nie mamy publicznego IP to musielibyśmy skonfigurować nasz router do pracy z DDNS, czyli dynamicznym DNS, ale z tego można zrobić nowy artykuł, dlatego teraz tego nie opiszę :)
W pasek adresu wpisujemy adres IP naszego routera w moim przypadku to 192.168.0.1, wyświetla nam się panel logowanie:
Po wpisaniu loginu i hasła pojawi się strona główna naszego routera:
Teraz wchodzimy w zakładkę “Forwarding” w menu po lewej stronie:
U mnie wyświetla się kilka aktywnych już przekierowań. Teraz klikamy “Add New…” i wyświetla nam się takie menu:
Jeśli nie zmieniliśmy adresu IP naszego komunikatora to uzupełniamy identycznie jak w moim przykładzie i klikamy “Save”. :)
Zakończenie
Teraz wystarczy sprawdzić jaki mamy zawnętrzny adres IP np. na tej stronie. Jeśli chcemy sprawdzić czy nasz komunikator działa z zewnątrz to wystarczy skopiować adres IP i wysłać go jakiemuś znajomemu, który wyśle nam wiadomość. :)
I to by było na tyle. Przepraszam za ewentualne błędy, jest to mój pierwszy taki tekst. W razie sugestii i pytań proszę pisać w komentarzach. Dziękuje :)
Akurat od kilku dni bawię się ENC28J60 :D to będzie to co zrobię następne z Arduino :D
Fajnie, że się podoba :) Szczerze to ja od ok. miesiąca bawię się Arduino :D
Kolego, dzięki wielkie za to.
Nie ma za co ;)
Pomysłowe i przydatne ;) 5/5
Przydatne kiedy leżymy w łóżku chorzy a nasz opiekun ma to w zasięgu wzroku. Wchodzimy na stronkę np. na telefonie i wysyłamy mu wiadomość :D
W takim wypadku można pominąć część z przekierowaniem i publicznym IP. I niestety wiadomość musi być krótka bo w obecnej wersji nie ma przewijania tekstu :)
Wystarczy ‘Help’ xD
Skoro mam radiowy internet to niby w jaki sposob moge zrobic to przekierowanie z publicznego adresu ip?
Przekierowanie ustawiasz tak samo i dodatkowo musisz założyć konto w witrynie noip.com i wpisać dane twojego konta w routerze w zakładce “Dynamic DNS”, pod spodem masz wszystko opisane ;)
http://www.tp-link.com.pl/article/?faqid=419
Internet radiowy… Tzn.? Jeśli masz 3G, LTE itp. to musisz wykupić chyba jakiś pakiet u operatora.
Co do przewijania, w przykładach Arduino jest LCD scroll :) Można tego użyć.
Paweł, radiowy to znaczy, że firma wysyła internet w miasto po wifi ;) A co do przewijania to wymyśliłem to dopiero pisząć komentarz ;)
Dodam jeszcze coś ;)
Dla UNO piny od wyświetlacza (11, 12) podłączamy np. pod 6, 7, a ENC28J60 wg. tabelki :D
Obrazek się nie dodał :/ Link: http://obrazki.elektroda.pl/2222250100_1422185677.jpg :D
Obrazek:
Dzięki :)
Fajne , a jak zrobić to na większym wyświetlaczu – ekranie ?
Jeśli jest to wyświetlacz zgodny z HD44780 wystarczy zmienić rozmiar tutaj:
void setup()
{
lcd.begin(16, 2); // szerokośc i wysokość
A jeśli byłby to jakiś wyświetlacz graficzny to trzeba by było użyć innej biblioteki :)
Witam, mam taką prośbę podajcie link do biblioteki ENC28J60 która będzie działać z Arduino 1.5.8. Te co znalazłem jakoś nie chcą mi działać.
A czy istnieje możliwość dodania kodu na stronie przez która komunikujesz się z Arduino by np pokazywał nam stan przekazników (on/off) albo wyświetlał inne bieżące informacje np. temperatura?
Jasne, trzeba tylko odpowiednio zmodyfikować program :D
Hej, czy można coś zrobić żeby zamiast spacji nie wyświetlały się “+”?
Bo teraz np. wprowadzę tekst “Ala ma kota” to LCD wygląda tak “Ala+ma+kota”
PS Ardurino mam dopiero 2 dni dlatego nie wiem za bardzo czy można coś z tym zrobić :D
Witam,
Realizowałem ostatnio ten projekt, oto moje uwagi:
https://onedrive.live.com/redir?resid=B2694B96751353EF!106&authkey=!AM1dz9cIoTZG6Nc&ithint=file%2crar
Wszystkie pliki zawierają się w jednym folderze, dlatego z głównego programu należy usunąć linijkę #include “etherShield.h” (spokojnie, etherShield znajduje się w ETHER_28J60 i jest załączany do projektu)
Przepraszam, że odświeżam, ale wpadłem na pewien pomysł, który może się przydać zwłaszcza w urządzeniach automatyki domowej. Jest jakaśmożliwość, albo jak to zrobić, aby wartość zmiennej tekstowej bądź numerycznej odczytać z wywołania GET. Chodzi mi o takie coś, że podaje w pasku przeglądarki adres_mojego_arduino/a_to_chce_odebrac jako zmienną.