Arduino ve ENC28J60 Ethernet Modülü Uygulamaları-1: No-ip.com
İsmail // 29 Ağustos 2012 // 15 yorum // kategori: Arduino Eklentileri(Shield), Arduino ProgramlamaArduino için ucuz bir internet çözümü olan ENC28J60 Ethernet Modüllünden bahsetmiştim daha önceki bir yazımda. Bu yazımda ise webserver ve web otomasyon sistemleriyle uğraşanlar için büyük bir engel oluşturan sabit ip sorununa, no-ip.com aracılığıyla geliştirilen bir çözümü anlatmaya çalışacağım.
Arduino ve ENC28J60 ethernet modülü kullanarak kurduğumuz webservera sabit bir ip adresine sahip değilseniz yalnızca yerel ağ üzerinden ulaşılabilir. Bu da doğrudan internet üzerinden kontrol etmemizi engeller ve pratikteki kullanımı epey kısıtlar.
Öncelikle no-ip.com üzerinden ücretsiz bir hesap oluÅŸturacağız. Daha sonra hesabımız içerisinde oluÅŸturacağımız bir hostu kullanarak deÄŸiÅŸen ip adresimizi bu host, Arduino ve ENC28J60 ethernet modülü aracılığıyla her deÄŸiÅŸtiÄŸinde güncelleyip ücretsiz sabit ip’imize kavuÅŸacağız.
Ä°lk adım olarak bu baÄŸlantıyı kullanarak no-ip.com üzerinde ücretsiz bir hesap oluÅŸturuyoruz. Ãœye olup oturum açtıktan sonra da bu baÄŸlantıyı kullanarak host oluÅŸturma sayfasına geliyoruz. Kullanmak istediÄŸinz host ismini yazdıktan sonra diÄŸer seçimleri aÅŸağıdaki resimdeki gibi yapıp “Create Host” diyerek hostumuzu oluÅŸturuyoruz. (Ip Address kısmında sayfayı açtığınızda kendi ip adresiniz gelecek, sistemin çalışmasını test edebilmek için orayı aÅŸağıdaki gibi deÄŸiÅŸtiriyoruz.) Host ismimizi, no-ip.com‘a kayıt olurken belirlediÄŸimiz kullanıcı adımız ve ÅŸifremizi bir kenara not ediyoruz.
Güncelleme yapılacak hostumuzu oluşturduk. ENC28J60 Ethernet Modülü ve Arduino yazımdaki bağlantı şemasını kullanarak Arduino ve ENC28J60 Ethernet Modülü arası bağlantıları kuruyoruz. Daha sonra aşağıdaki bağlantılardan ulaşabileceğini EtherCard kütüphanesini yüklüyoruz. (EtherCard klasörünü Arduino>libraries klasörüne kopyalıyoruz.)
Arduino’ya yükleyeceÄŸimiz programda bize 2 parametre gerekiyor. Birincisi oluÅŸturduÄŸumuz host adresi, diÄŸeri ise no-ip.com‘a kayıt olurken kullandığımız kullanıcı adı ve ÅŸifrenin base64 ÅŸeklinde ÅŸifrelenmiÅŸ hali. Bu baÄŸlantıyı kullanarak ÅŸifrelemeyi yapıyoruz. (Kullanıcı adı ve ÅŸifre arasına : koymayı unutmayın!) Resut kısmındaki ÅŸifrelenmiÅŸ veriyi de bir kenara not ediyoruz.
Bu basamaktan sonra gerekli tüm verileri ve dosyaları edindik. Şimdi aşağıda paylaştığım programı kartımıza yüklüyoruz. Programdaki satırları elimden geldiğince anlatmaya çalıştım. Özetle program her dakika ip adresinizi ve no-ip.com hostunuzda kayıtlı ip adresini tespit ediyor. Güncel ip adresiniz no-ip.com hostundakinden farklıysa, no-ip üzerindeki ip adresini güncel ip adresinizle değiştiriyor. Böylelikle host adresimizi kullanarak modülün ip adresini internet üzerinden takip edebilir konuma geliyoruz.
Bu baÄŸlantıyı kullanarak örnek programı indirebilirsiniz. Sistemin çalışabilmesi için programda aÅŸağıdaki resimde kırmızı kutu içerisine alınmış kısmı bularak deÄŸiÅŸkenleri daha önce not aldığımız verilerle deÄŸiÅŸtirmemiz gerekiyor. Bir de serial monitörü açınca baud rate’i 57600 olarak seçmemiz gerekiyor yazıların görüntülenebilmesi için.
Daha sonraki bir yazımda, 192.168.1.2 gibi bir yerel ip adresini kullanarak webserver oluÅŸturacağız. Bu webserver ile bu yazıda anlattığım no-ip.com uygulamasını birleÅŸtireceÄŸiz. Modem ayarlarından yerel ip adresimizi HTTP WebServer olarak yönlendirip Arduino webserver‘ımıza sadece host adresimizi kullanarak her yerden eriÅŸebileceÄŸiz.
Tüm bunları yapınca ne işimize yarayacak diye düşünüyorsanız açıklayayım. Bu işlemler sonucunda analog ve dijital girişlerdeki değerleri internet üzerinden görebilir, programlarınızda akışı yönlendiren değişkenleri internet üzerinden değiştirebilir, dijital çıkışları doğrudan internet üzerinden kontrol edebilirsiniz. Arduino ile Röle Kontrolü yazısında anlattığım şekilde röle devreleri hazırlayıp sisteme ekleyerek kendi akıllı ev sisteminizi hazırlayabilirsiniz.
Ä°yi çalışmalar…
Gerekli Olabilecek Bağlantılar:
Etiketler: Akıllı Ev Sistemi > arduino > Arduino ile Akıllı Ev Sistemi > Arduino ile İnternet Üzerinden Kontrol > Arduino ile IP Adresi Güncelleme > Arduino ile No-ip Kullanımı > Arduino ile Web Otomasyon > arduino ile web server yapımı > Arduino ile Web Üzerinden Kontrol > Arduino No-ip Servisi > Arduino ve Sabit IP > arduino web > arduino web server > ENC28J60 > ENC28J60 Ethernet Module > ENC28J60 Ethernet Modülü > ENC28J60 Ethernet Modülü Sabit IP > ENC28J60 Sabit IP > HTTP WebServer > İnternet Üzerinden Kontrol > no-ip.com > Web Otomasyon > web server > Web Üzerinden Kontrol
Güzel bir yazı olmuş İsmail emeğine sağlık.
Teşekkür ederim Coşkun abi, umarım birilerinin işine yarar 🙂
Harika konu hocam webserver uygulamanızı sabırsızlıkla bekliyorum,hayırlı çalışmalar.
Teşekkür ederim. Hazır aslında webserver uygulaması, toparlayıp, test edip en kısa sürede yayınlayacağım.
Ellerine sağlık gerçekten çok güzzel çalışma yapmışsın. üniversite öğrencisi olarak bitirme projem internet üzerinden motor kontrolüydü. tamda ihtiyacım olan bilgiler burada 🙂
Elinize sağlık
ben programı derlediğimde aşağıdaki hataları aldım.Sorunun ne olduğu konusunda yardımcı olurmusunuz ?
Ethernet.h:39: error: ‘EthernetClass Ethernet’ redeclared as different kind of symbol
enc28j60.h:44: error: previous declaration of ‘typedef class ENC28J60 Ethernet’
Merhaba
Projeyi aynen sizin dediğiniz gibi uyguluyorum ancak aşağıdaki hataları alıyorum sürekli
no_ip_com_ornek_program:46: error: function definition does not declare parameters
no_ip_com_ornek_program:54: error: ‘Stash’ does not name a type
no_ip_com_ornek_program.ino: In function ‘void setup()’:
no_ip_com_ornek_program:71: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program:71: error: ‘Ethernet’ has not been declared
no_ip_com_ornek_program:80: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program:87: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program.ino: In function ‘void loop()’:
no_ip_com_ornek_program:121: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program.ino: In function ‘void checkPublicIP()’:
no_ip_com_ornek_program:146: error: ‘Stash’ has not been declared
no_ip_com_ornek_program:148: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program.ino: In function ‘void checkPublicIPResponse()’:
no_ip_com_ornek_program:164: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program.ino: In function ‘void updateNoIP()’:
no_ip_com_ornek_program:232: error: ‘Stash’ has not been declared
no_ip_com_ornek_program:237: error: ‘ether’ was not declared in this scope
no_ip_com_ornek_program.ino: In function ‘void checkNoIPResponse()’:
no_ip_com_ornek_program:249: error: ‘ether’ was not declared in this scope
selamlar.uygulamalarınızı takip ediyorum ne zamandır ilgilendiğim bir projeydi.sonuca ulaştırdım sizinde yazılarınızın yardımı ile.no-ip ile ip güncelleme işlemleri,modemden port yönlendirme işlemleri ve web serverıma uzaktan erişme işlemlerini yaptım.mega 2560 kullandıgım için verdiğiniz bağlantı ve kodda ufak değişiklikler gerekti.eğer siteye yazı ekleyebiliyorsam bu bilgiler ışığında bir yazı ekleyebilirim.selamlar.
toplamda arduino yazılarını 3 e tamamlarsanız mümkün olabilir 🙂 kolay gelsin
İsmail abi sen acaba marmarada mı okuyosun
Merhaba arkadaÅŸlar
@İsmail Buçgün yazı çok faydalı olmuş elinize sağlık . ama bazı hatalar vardı kodları denedinizmi acaba ?
hataları düzeltince sorunsuz derleme yaptı gerçi karta yükleyip denemedim ama büyük ihtimalle çalışır.
hata1: ether.printIp(“Netmask:\t”, ether.netmask); bu satır “ether.mymask” olarak yazılmış doÄŸrusu ether.netmask olacak
hata2. bazı deÄŸiÅŸkenlerin başına “const” eklenmemiÅŸ. eklerseniz hatalar düzelir.
Merhaba,
İşlemleri aynen uyguladım fakat şöyle bir hata aldım ve düzeltemiyorum. Yardımcı olursanız sevinirim.
variable ‘noIP_host’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
bu konuda forumda birileri çözüm yazmıştı bir bakarsınız.
merhabalar herşey doğru arduino ve ethernet modulu bağlı ancak ip adresini girince modemin arayüzüne giriş yapıyor . nasıl yapmalyım ki ethernet ile haberleşeceğim sayfa gelsin yardımcı olur musunuz
ethernete verdiğiniz ip idresi ile modemin adresi aynı olmuş