Arduino ve ENC28J60 Ethernet Modülü Uygulamaları-3: WebServer

Uzun bir aradan sonra ENC28J60 Ethernet Modülü uygulamalarına devam ediyoruz. Bu yazımda yerel ağ üzerinde Arduino ile nasıl Webserver oluşturulacağını anlatmaya çalışacağım.

Öncelikle modülümüzü bağladığımızda ağ tarafından ethernet modülümüze atanan yerel ip adresine ihtiyacımız var. Bunun için EtherCard kütüphanesinde bulunan örnek bir uygulamadan yararlanacağız.

ENC28J60 Ethernet Modülü ve Arduino yazımdaki bağlantı şemasını kullanarak Arduino ve ENC28J60 Ethernet Modülü arası bağlantıları kuruyoruz. 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 uygulamasında Files>Examples>EtherCard>getDHCPandDNS seçimlerini yaparak açılan örnek programı Arduino’muza yüklüyoruz. Daha sonra Serial Monitor’u açıp  My IP nin karşısında yazan yerel ip adresimizi not ediyoruz.

Bu yazıda paylaşacağım örnek program 3 tane dijital çıkışı yerel ağ üzerinden kontrol etmeye yarıyor. 4 dijital pini modül için kullandığımızdan, 2 dijital pin ise seri iletişim için ayrıldığından, toplamda 7 dijital çıkışa kadar arttırılabilir sayı. Fakat ben kodun daha anlaşılır olması için 3 tanesini kullandım, ihtiyaç halinde 7’ye kadar ek donanımsız arttırabilirsiniz. Ayrıca 74HC595 gibi bir shift register entegresi kullanarak sayıyı katlamanız mümkün. Çıkışların son durumları  eeprom belleğe yazdırarak enerji kesintilerinden sonra ayarların son haliyle devam etmesi sağlanıyor.

Örnek programda 2,3 ve 4. dijital çıkışları kontrol edeceğimiz için yukarıdaki gibi bir led bağlantısı yapabilirsiniz ilk etapta. Ya da bu çıkışlara daha önce anlattığım şekilde röle devreleri hazırlayıp bunları da bağlayabilirsiniz.

Daha sonra bu bağlantıda paylaştığım programı kartımıza yüklüyoruz. (Programda ?192,168,1,1? şeklinde belirttiğim yere daha önce örnek programla belirlediğimiz yerel ip adresimizi yazıyoruz, bunun dışında herhangi bir değişiklik yapmamız gerekmiyor.) Programdaki satırları elimden geldiğince anlatmaya çalıştım.

Kontrol sayfanıza tarayıcımızın adres çubuğuna yerel ip adresinizi yazarak ulaşabilirsiniz. İlk program olduğu için görsel açıdan pek bir düzenleme yapamadım. HTML ve CSS kullanarak görüntüyü daha da iyileştirebilirsiniz. Tabiki webserver uygulamamız bununla bitmiyor. Daha sonraki yazılarımda analog ve dijital girişlerden alınan değerlerin sayfada yazdırılması ve program içerisindeki değişkenlerin sayfa üzerinden değiştirilmesi konularını anlatmaya çalışacağım. Bütün bunları tamamladıktan sonra bu uygulamaları ve no-ip.com uygulamasını içeren final programı yayınlayacağım.

İyi çalışmalar…

Kaynaklar:

Gerekli Olabilecek Bağlantılar:

İsmail

Üniversite öğrencisi, Arduino meraklısı.

127 comments

  1. Mehmet dedi ki:

    Harikasın hocam ellerine sağlık,uzun zamandır bu yazınızı bekliyordum bende.Gelecekteki çalışmalarınız içinde şimdiden başarılar dilerim,hoşçakalın.

  2. Hasan dedi ki:

    ENC28J60 ile yapılan uygulamaları w5100 ile de yapabilir miyiz ?
    Teşekkürler beklediğim bir uygulamaydı…

  3. semih dedi ki:

    Elinize sağlık çok faydalı bir anlatım olmuş..ben bir konuda sizden yardım rica edeceğim.mekatronik mühendisliği son sınıf öğrencisiyim ve bitirme tezim web üzerinden motor kontrolü..bn işe led yakmayla başlayayım dedim arduino uno ve enc28j60 edindim ve tüm bağlantıları nizami yaptım fakat yukarıdaki getDHCP adlı örneği arduino ya yüklediğim zaman serial monitorde İP adresine ulaşamıyorum garip karakterler çıkıyor..sebebi ne olabilir fikir verirseniz sevinirim.
    İyi çalışmalar

  4. İsmail Buçgün dedi ki:

    Merhaba Semih bey,
    Geç cevap verdiğim için kusura bakmayın. Sorununuz hala devam ediyor mu? Serial monitorü açtığınızda sağ alt köşeden uygun baud ratei seçtiniz mi?

  5. semih dedi ki:

    İsmail bey çok teşekkür ederim.sorun halloldu.fakat aynı seyi Arduino nano ile gerçekleştiremiyorum sebebi ne olabilir ? son olarakta Arduino ya heryerden ulaşabilmek için yerel ip ile oluşturdugumuz webserver ile no-ip hostumuzu nasıl birleştirebilirz? yazınızı merakla bekliyorum.
    teşekkür ederim
    iyi çalışmalar dilerim..

  6. mahmut beşirli dedi ki:

    teşekkür ederim faydalı bir yazı olmuş. Arduino ile pwm uygulaması pot ile ayarlanarak yapılabiliyormu. Aynı pwm sinyalinin frekansını değiştirme imkanı oluyormu. başka bir pot ile.

  7. Ali dedi ki:

    Kolay gelsin İsmail bey. Webserver ile no-ip adresimizi nasıl birleştirebiliriz. Yardımcı olursanız sevinirim. Teşekkürler
    İyi çalışmalar…

  8. Ömer Koman dedi ki:

    merhaba ali bey, sitede “no-ip” arama yapıldığında enj28j60 ethernet eklentisi için örnek uygulama vardır aynı yöntemi diğer kartlarda da benzer şekilde kullanabilirsiniz http://arduinoturkiye.com/?s=no-ip . ayrıca şu yazıyı da http://arduinoturkiye.com/bilgiyi-kullanma-klavuzu/ sizin için yazdık.

  9. İsmail Buçgün dedi ki:

    Merhaba Ali bey,
    Evimde kablolu modem olmadığı için bir türlü fırsat olmadı deneyip birleştirilmiş halini paylaşmaya. Yapmanız gerekeni anlatayım kısaca. Öncelikle 2 örneği de ayrı ayrı deneyin, çalıştırın, bir miktar kurcalayın. No-ip örneğinde dhcp setup kullanılmış onun yerine static setup kullanacaksınız webserver örneğindeki gibi. Seçeceğiniz bir tanesinin üzerine diğerini uygun şekilde kopyalayın.(void setup içindekiler void setup içine, loop içindekiler loop içine, değişkenler ve fonksiyonlar orjinalinde neredeyse diğerinde de o aralığa kopyalayın. Aynı, ortak işi(hem static setup hem dhcp olmaz mesela, siz static olanı kullanacaksınız.) yapanlardan bir tanesini bırakacak şekilde temizleyin. Birkaç denemede çalışan bir kod elde edersiniz. Son olarak yerel ip adresiniz için (ör. 192.168.1.3) modem arayüzünden 80 numaralı portu açacaksınız. Bunları yaptığınızda no-ip hostunuzu adres çubuğuna yazarak her yerden ulaşabilirsiniz.

  10. Ali dedi ki:

    İyi günler İsmail Bey
    Web server ile no ip üzerinde çalıştım ayrı ayrı çalıştırdım ama ikisini aynı anda birleştirmekte biraz zorlanıyorum . Webserver örneği ile motor sürmeyi çalıştırdım ,yani internetten kontrol edilebilen bir gezgin robot neden olmasın. Önerilerini dikkate alıp tekrar çalışacağım.
    Teşekkür ederim yardımlarınız için
    hayırlı çalışmalar

  11. Mustafa dedi ki:

    Merhabalar. Yazınız için öncelikle teşekkür ederim. Sayenizde yazılanları yaptım ancak yeni bir giriş-çıkış (4. LED) eklendiğinde kod arduino ya yükleniyor ancak bilgisayardan web sayfasını göremiyorum.

  12. İsmail Buçgün dedi ki:

    Merhaba,
    Ben biraz önce 4. çıkışı ekleyip denedim ve herhangi bir sorunla karşılaşmadım, sorunsuz çalıştı. Şu bağlantıyı kullanarak indirebilirsiniz. http://arduinoturkiye.com/wp-content/uploads/arduinoturkiyecom_webserver_ornek_program_4lu.rar

  13. Ali dedi ki:

    ledlerin yerine motor bağladığımızda motorun gerçekten dönüp dönmediğini nasıl kontrol edebiliriz. Arduinodan nasıl geri bildirim alabiliriz?

  14. Ömer Koman dedi ki:

    bazı motor sürücüler çekilen akımı okumanızı sağlarlar bunu bir adc ile okuyacak motorun çalıştığını anlayabilirsiniz. bu sensor çıkışı yoksa da motorun (-) bacağına 2-5ohm direnç üzerinden (-) ye bağlayacaksın direncin ucunu bir opampla akım voltaj dönüşümü yapıp adc ye bağlarsan okursun bir şeyler. yada motor miline bir teker bağlarsın tekerede bir HAL / manyetik sensör bağlayıp motorun devir turunu ölçerek çalıştığını anlarsın. yada bir motor encoder bağlayıp motorun hem yönünü hem hızını da hemde açısını okursun.

  15. cem dedi ki:

    webserverdan 3 ledi yakmaya ekstradan arduinoya dışardan bağladığımız buton ile 4. led yakıp söndüreceğim. Butona basıldığında webserver ekranında 1 yazdırmak istiyorum. bunu hangi konutla nasıl yazdırabilirim?

  16. Ömer Koman dedi ki:

    merhaba dostum şurada 4.led için kod parçacıklarını koydum sen orjinal programda gerekli yerlere ekleyivereceksin o kadar, buton kodu basit kendin yazman gerekir eproma butonun durumunu güncellemeyi unutma sayfayı da her 5sn yede bir refresh yaptırırsan webden bağlanan kişi senin butona bastığını anlasın. kodlar http://arduinoturkiye.com/wp-content/uploads/arduinoturkiyecom_webserver_ornek_program_ek1.zip

  17. cem dedi ki:

    aşağıdaki kodda yaptığım webserver üzerinden 3 pinle(enable,input1,input2)motor sürmek 4.pine bağlı ledi 5. pine bağlı butonla yakıp söndürmek ve butona bastığımda ekranda led yanıyor yazmasını sağlamak fakat yapamadım. Yardımlarınızı bekliyorum. Hatamı söyleyin lütfen
    #include
    #include
    #define ENABLE 5
    #define INPUT1 6
    #define INPUT2 7
    #define ledPin 4
    #define buttonPin 3
    int deger=0;

    PROGMEM prog_char kapali[]= {
    0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0E,
    0x00, 0x00, 0x00, 0x0E, 0x08, 0x04, 0x00, 0x00, 0x00, 0xB5, 0x41, 0xE5, 0x5A, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47,
    0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x02, 0x62, 0x4B, 0x47, 0x44, 0x00, 0xFF, 0x87, 0x8F, 0xCC, 0xBF,
    0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01, 0xD2, 0xDD, 0x7E,
    0xFC, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xDC, 0x01, 0x1D, 0x14, 0x21, 0x10, 0xBC, 0x3C, 0xDE, 0x2D,
    0x00, 0x00, 0x00, 0xD2, 0x49, 0x44, 0x41, 0x54, 0x18, 0xD3, 0x75, 0xD0, 0xB1, 0x4A, 0x03, 0x51, 0x10, 0x05, 0xD0, 0xB3,
    0x21, 0x1F, 0x10, 0x04, 0x3B, 0x53, 0x89, 0x5A, 0x09, 0x9B, 0x58, 0xD9, 0x25, 0x5F, 0x60, 0x63, 0x9F, 0x87, 0x5F, 0xE0,
    0x27, 0x6D, 0x7A, 0x5B, 0xC1, 0x6E, 0xF3, 0x01, 0x92, 0x2C, 0x36, 0x56, 0x62, 0x61, 0x23, 0xA4, 0xB1, 0x12, 0xF2, 0x64,
    0xDF, 0x5A, 0xBC, 0x20, 0x5B, 0x98, 0x3B, 0xC5, 0xC0, 0xBD, 0x73, 0xEF, 0x30, 0x53, 0x74, 0x0E, 0x63, 0x48, 0x01, 0xC2,
    0xBD, 0x1B, 0x33, 0xAC, 0x2C, 0xAB, 0x0A, 0x3A, 0x45, 0xA7, 0x10, 0x46, 0xEA, 0x69, 0x39, 0x71, 0x21, 0xD9, 0x78, 0xF5,
    0xD2, 0x98, 0x57, 0x5F, 0x9D, 0x21, 0xA8, 0xEF, 0xCA, 0x53, 0xDF, 0xB6, 0xA2, 0x23, 0xD7, 0xC6, 0xE5, 0x63, 0x6D, 0xC2,
    0x80, 0x10, 0xA6, 0xE5, 0xB9, 0x9D, 0xA4, 0xD5, 0x4A, 0xA2, 0x91, 0xB3, 0x32, 0x04, 0x06, 0x58, 0x5C, 0x89, 0x92, 0x56,
    0xFA, 0xAB, 0x63, 0x16, 0x59, 0x9C, 0x5D, 0xF6, 0xA4, 0xDC, 0x4F, 0x98, 0xC9, 0x3B, 0x33, 0xD5, 0x77, 0x46, 0x64, 0xE7,
    0xAA, 0xE9, 0xD1, 0x79, 0x68, 0xCB, 0x2A, 0x8B, 0xCB, 0x0D, 0xBD, 0xC8, 0x24, 0xF9, 0x60, 0x69, 0x7F, 0xE7, 0xE6, 0xB6,
    0x1C, 0x8B, 0xA2, 0x1F, 0xD1, 0xCE, 0xBB, 0x75, 0x53, 0x4D, 0x3A, 0x03, 0x30, 0x7F, 0x68, 0x9E, 0xBC, 0x29, 0xB4, 0x3E,
    0x3D, 0x5B, 0x37, 0xE6, 0xEC, 0x9D, 0x10, 0x82, 0xC5, 0x3F, 0xEF, 0x3B, 0x8C, 0x5F, 0xC2, 0x84, 0x6A, 0x7B, 0xFB, 0x42,
    0x44, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82
    };

    PROGMEM prog_char acik[]= {
    0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0E,
    0x00, 0x00, 0x00, 0x0E, 0x04, 0x03, 0x00, 0x00, 0x00, 0xED, 0x66, 0x30, 0xE2, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47,
    0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x27, 0x50, 0x4C, 0x54, 0x45, 0x00, 0x00, 0x00, 0xFF, 0xCC, 0x00,
    0xCC, 0x66, 0x00, 0xFF, 0xFF, 0x33, 0xFF, 0x99, 0x00, 0xFF, 0xCC, 0x33, 0xCC, 0x99, 0x66, 0xFF, 0xFF, 0x99, 0xCC, 0x99,
    0x33, 0xCC, 0x99, 0x00, 0xFF, 0xCC, 0x66, 0x99, 0x66, 0x00, 0xFF, 0xCC, 0x99, 0x4A, 0x4E, 0xC9, 0x79, 0x00, 0x00, 0x00,
    0x01, 0x74, 0x52, 0x4E, 0x53, 0x00, 0x40, 0xE6, 0xD8, 0x66, 0x00, 0x00, 0x00, 0x01, 0x62, 0x4B, 0x47, 0x44, 0x00, 0x88,
    0x05, 0x1D, 0x48, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01,
    0xD2, 0xDD, 0x7E, 0xFC, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xDC, 0x01, 0x1D, 0x14, 0x23, 0x1C, 0x87,
    0xBC, 0xF0, 0x84, 0x00, 0x00, 0x00, 0x48, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0x60, 0x80, 0x03, 0x26, 0x25, 0x05,
    0x30, 0x95, 0x55, 0x3E, 0x0D, 0xC4, 0xD0, 0x31, 0x16, 0x14, 0x6C, 0x02, 0xD2, 0xC9, 0x86, 0x82, 0x82, 0xD2, 0x40, 0xE1,
    0xC5, 0x40, 0x3A, 0x44, 0x81, 0x81, 0xA9, 0x18, 0x46, 0x0B, 0x0A, 0x8A, 0xBA, 0x00, 0xE9, 0x60, 0x08, 0xCD, 0x90, 0x0C,
    0xA4, 0x9D, 0x80, 0xEA, 0x35, 0x80, 0xD2, 0x20, 0x9A, 0xA9, 0x53, 0xD0, 0x49, 0x01, 0xC9, 0x5C, 0x08, 0x00, 0x00, 0x9A,
    0x56, 0x0B, 0x58, 0x9D, 0x6A, 0x76, 0x99, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82
    };

    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    static byte myip[] = { 192,168,1,38};
    byte Ethernet::buffer[700];

    boolean kontrol1durum;
    boolean kontrol2durum;
    boolean kontrol3durum;
    boolean kontrol4durum;

    void setup () {

    Serial.begin(57600);

    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    Serial.println( “Ethernet denetleyicisine erisim saglanamadi.”);
    else
    Serial.println(“Ethernet denetleyicisi baslatildi.”);

    if (!ether.staticSetup(myip))
    Serial.println(“Sabit IP atama islemi yapilamadi.”);

    Serial.println();

    pinMode(ledPin,OUTPUT);
    pinMode(buttonPin,INPUT);
    pinMode(ENABLE, OUTPUT);
    pinMode(INPUT1, OUTPUT);
    pinMode(INPUT2, OUTPUT);

    kontrol1durum = EEPROM.read(0);
    kontrol2durum = EEPROM.read(1);
    kontrol3durum = EEPROM.read(2);
    kontrol4durum = EEPROM.read(3);

    digitalWrite(ENABLE, kontrol1durum);
    digitalWrite(INPUT1, kontrol2durum);
    digitalWrite(INPUT2, kontrol3durum);
    digitalWrite(buttonPin, kontrol4durum);

    }

    void loop() {

    deger=digitalRead(buttonPin);
    if(deger==HIGH) {
    digitalWrite(ledPin,HIGH);}
    else {
    digitalWrite(ledPin,LOW);
    }

    word len = ether.packetReceive();
    word pos = ether.packetLoop(len);
    if(pos) {
    if(strstr((char *)Ethernet::buffer + pos, “GET /kapali.png”) != 0)
    send_png_image(kapali, sizeof(kapali));
    else if(strstr((char *)Ethernet::buffer + pos, “GET /acik.png”) != 0)
    send_png_image(acik, sizeof(acik));
    else {
    if(strstr((char *)Ethernet::buffer + pos, “GET /?K1”) != 0) {
    kontrol1durum = !kontrol1durum;
    EEPROM.write(0,kontrol1durum);
    digitalWrite(ENABLE, kontrol1durum);
    }
    if(strstr((char *)Ethernet::buffer + pos, “GET /?K2”) != 0) {
    kontrol2durum = !kontrol2durum;
    EEPROM.write(1,kontrol2durum);
    digitalWrite(INPUT1, kontrol2durum);
    }
    if(strstr((char *)Ethernet::buffer + pos, “GET /?K3”) != 0) {
    kontrol3durum = !kontrol3durum;
    EEPROM.write(2,kontrol3durum);
    digitalWrite(INPUT2, kontrol3durum);
    }
    if(strstr((char *)Ethernet::buffer + pos, “GET /?K4”) != 0) {
    kontrol4durum = !kontrol4durum;
    EEPROM.write(3,kontrol4durum);
    digitalWrite(buttonPin, kontrol4durum);
    }
    BufferFiller bfill = ether.tcpOffset();
    bfill.emit_p(PSTR(“HTTP/1.0 200 OK\r\n”
    “Content-Type: text/html\r\nPragma: no-cache\r\n\r\n”
    “”
    “”
    ));

    if(kontrol1durum) bfill.emit_p(PSTR(“1. Enable “));
    else bfill.emit_p(PSTR(“1. Enable “));

    if(kontrol2durum) bfill.emit_p(PSTR(“2. Input1 “));
    else bfill.emit_p(PSTR(“2. Input1 “));

    if(kontrol3durum) bfill.emit_p(PSTR(“3. Input2 “));
    else bfill.emit_p(PSTR(“3. Input2 “));

    if(kontrol4durum) bfill.emit_p(PSTR(” led yaniyor“));
    else bfill.emit_p(PSTR(” led sonuk“));

    bfill.emit_p(PSTR(“”));
    ether.httpServerReply(bfill.position());
    }
    }
    }
    void send_png_image(PGM_P png_image, unsigned int image_size) {

    BufferFiller bfill = ether.tcpOffset();
    bfill.emit_p(PSTR(“HTTP/1.0 200 OK\r\n”
    “Content-Type: image/png\r\n\r\n”));
    bfill.emit_raw_p(png_image, image_size);
    ether.httpServerReply(bfill.position());
    }

  18. Ömer Koman dedi ki:

    hangi tarafı olmadı, aynı anda herşeyi ekleme birer birer ilerle. sana verdiğim kodu gerekli yerlere eklediğinde 4.ledi istediğin gibi kontrol edebilirdin. sonra buton girişini eklersin sonra motorları sürersin adım adım ilerle cem.

  19. cem dedi ki:

    abicim ben motorları zaten sürüyorum benim için şu an çok önemli butona bastığım anda led yanıyor.Led yandığında web server erkanında led yanıyo yazdırmam. Bunu hangi komutla yazdıracağımı bulamadım. Sizler sadece hangi komutla yada nasıl butona bastığım anda webserver ekranına bişey yazdırabilriim ona yardımcı olmanız?
    pinMode(ledPin,OUTPUT);
    pinMode(buttonPin,INPUT);
    deger=digitalRead(buttonPin);
    if(deger==HIGH) {
    digitalWrite(ledPin,HIGH);}
    else {
    digitalWrite(ledPin,LOW);
    bu kısım butona basınca led yakma kısmı.

  20. Ömer Koman dedi ki:

    epromdaki değeri oncelikle guncelleyeceksin. web sayfası epromdaki bilgileri okuyor onları ekrana yazıyor. webserver kendi kendine sayfa uretmez tarayıcıdan çağrı gelmesi lazım. örnek programda önce butona basıp durumu değiştir komutu yollyor, eproma değişen durumu yazıp kullanıcıya son durumun sayfasını hazırlayıp yolluyor. web sayfasına otomotik refresh komutu eklersen diyelim her 10sn yedebir yenile diye o zaman olabilir. ama buradaki örnek hep öncelikle bir bilgi yollanmasını bekliyor. şu kodu html sayfasına buyuk kucuk tag işaretleri arasına yazıp koda eklersen 10sn bir sayfa tazelenir kodu yazacağın yer yukarıda “HTTP/1.0 200 OK\r\n” den sonrabiryere koy (meta http-equiv=”refresh” content=”10″) tarayıcı bu komutu alınca senin webserverden/arduinodan 10sn yede bir yeni sayfa ister…

  21. mustafa dedi ki:

    Merhaba arkadaşlar kendime ebay dan ENC28J60 edindim elimde Arduino 2560 mega var
    ben bağlantıları konuda anlatıldığı gibi yaptım örnek programı yükledim.Ama adres
    çubuğuna yazacağım IP adresini alamıyorum.Arduino mega bağlantısı farklı mıdır ?
    Ayrıca ben ethernet bağlantısını direk kabloyla laptopa giriyorum bundan mı kaynaklanıyor ? direk modeme veya hub a girmem mi gerekiyor.Yardımcı olabilir misiniz.Teşekkürler.

  22. Ömer Koman dedi ki:

    mustafa iki bilgisayar arasında network bağlantısı ancak crossover bağlanmış network kablosu ile olur. bağlantıyı yaptıktan sonra notbookuna bir ip adresi ve subnet mask vermen lazım aynı ip grubundan bir farklısı ve aynı subnet maskı da arduinoya vermen lazım. megalar 3.3v tur internette mega için ethernet bağlantısını bir arat. makarna başka pilav başka

    • mustafa dedi ki:

      Hocam teşekkürler demek o kadar uğraş boşuna yapmışız.Hemen bir cross kablo yapıp deneyeceğim.

  23. Murat Yener dedi ki:

    Merhaba Ömer bey,
    hohi olarak arduino ile yeni ugrasmaya basladim, yorumlarinizi okudum, siz bu iste uzmansiniz, yardimci olabilirseniz sevinirim.

    step motor ile belirli dönusler yapmak istiyorum, yapabildim, ancak dönus ler yarim kalirsa, örnegin elektrik kesildiginde yada devre kapatildinda, step motorun sifir noktasina gitmesi gerekiyor, ve ayni sekilde basladigi anda sifir noktasini bulup sonra istedigim adimlari yapmasini istiyorum. Bu sizin icin oyuncak olmali. Bana bi cevap yazabilirseniz sevinirim.
    selamlar
    su anda kullandigim arduino codu söyle :

    #include
    #define STEPS 200
    Stepper stepper1(STEPS, 8, 9, 10, 11);
    void setup()
    {
    stepper1.setSpeed(50);
    stepper1.step(-400);
    delay(3000);
    }
    void loop()
    {
    stepper1.setSpeed(100);
    stepper1.step(-1600);
    delay(1500);
    stepper1.step(800);
    delay(1500);
    stepper1.step(-2400);
    delay(1500);
    stepper1.step(-400);
    delay(2500);
    stepper1.step(1200);
    delay(1500);
    stepper1.step(-400);
    delay(2500);
    stepper1.step(800);
    delay(1500);
    }

    • Ömer Koman dedi ki:

      eskiden hatırlarsanız muhasebecilerin ve bankalarda kullanılan yazıcılar vardı cayır cayır sesler çıkarır kağıda baskı yapardı onlar kafayı ilerletmek için step motor kullanırdı. o yazıcıları ilk açtığınızda kafa şöyle bir sağ tarafa gider sonda en solda pozisyon alırdı. sizde aynı mantıkla ilk başlangıçta yazıcının yerini bilemezsiniz bunun için motoru önce biraz ileri hareket ettirip sonra geriye döndüreceksiniz, başlangıç noktasında bir stop/limit switch koyun hareket sonunda o switch kısa devre olduğunda hareketi durdurun. şunu bir izle http://www.youtube.com/watch?v=ndGl8Sxpqmk

      • Murat Yener dedi ki:

        aynen gönderdiginiz örnekteki gibi, tesekürler. Ancak code si lagzim, ne düsünüyorsunuz? ilk acildiginda 0 naktasinda degil ise , nasil 0 noktasina gelir ve istedigim mesafeyi 0 dan baslayip devam eder? herhangi bir yerde kapatildiginda 0 a gidip kapanmasi gerkiyor.
        bunun code si ni nasil yapabilirim?
        tesekürler

        • Ömer Koman dedi ki:

          stepper1.step komutunun kutuphanesine bakın step işleminden sonra limit switch i okutun eğer 1 se son noktaya gelmiştir diğer stepleri işlemeden rutinden çıkın. kod yazımını siz yapabilirsiniz.

  24. Murat Yener dedi ki:

    cok tesekurler, bir deneyecegim

  25. Murat Yener dedi ki:

    ömer bey, malesef olmadi. Iki step motor sürücüsu bir arduino ya düsündüm, birincisi tetikleyip 0 noktasina gitsin, ayni motoru ikinci olarak düsünüp 10 saniye bekleyip sifirdan baslasin düsündüm, yapamadim. Her baslayacaginda sifiri bulacaksa yarim kalan bitmesinde sifira gitmesinin bir anlami yok, cünkü baslayinca zaten sifira gitmeyi deneyecek diye düsündüm, codlama icin bildiginiz, bir sey olabilirmi? tesekürler. (yada sayfayi okuyan baska arkadaslar)

  26. Murat Yener dedi ki:

    birincisi :

    #include
    #define STEPS 200
    Stepper myStepper(STEPS, 8, 9, 10, 11);
    void setup()
    {
    myStepper.setSpeed(100);
    myStepper.step(-800);
    delay(3000);
    }
    void loop()
    {
    myStepper.setSpeed(100);
    myStepper.step(-1600);
    delay(1500);
    myStepper.step(800);
    delay(1500);
    myStepper.step(-2400);
    delay(1500);
    myStepper.step(-400);
    delay(2500);
    myStepper.step(1200);
    delay(1500);
    myStepper.step(-400);
    delay(2500);
    myStepper.step(800);
    delay(1500);
    }

    ikinci codu :

    #include

    const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
    // for your motor

    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8,9,10,11);

    int stepCount = 1; // number of steps the motor has taken

    void setup() {
    // initialize the serial port:
    Serial.begin(9600);
    }

    void loop() {
    // read the sensor value:
    int sensorReading = analogRead(A0);
    // map it to a range from 0 to 100:
    int motorSpeed = map(sensorReading, 100, 500, 0, 100);
    // set the motor speed:
    if (motorSpeed > 100) {
    myStepper.setSpeed(motorSpeed);
    // step 1/100 of a revolution:
    myStepper.step(stepsPerRevolution/100);
    }
    }

  27. Murat Yener dedi ki:

    #include !!! ilk sira gecmemis ikisinde de ayni !!!!

  28. Murat Yener dedi ki:

    #include den sonra

  29. Murat Yener dedi ki:
  30. Murat Yener dedi ki:

    anlayamadigim ilk sirada tirnak icerisinde (Stepper nokta h) var, yoruma gecmiyor

  31. Ömer Koman dedi ki:

    sitede yabancı kod injection olmasın diye koruma vardır. siz forumu kullanın orada daha fazla ilgili kişi çıkar koddaki include da buyuk kucuk işaretleri yerine -eksi kullanın. biz kodunuzu yazmak yerine yol gösterebiliriz. include görünen kutuphane kodudur onu açıp onun içindeki step komutunda stop swith i okuma yapmalısınız.

  32. Murat Yener dedi ki:

    umarim buradan bahsediyorsunuz ?
    2 ay sonra Türkiye de olucam, Türkce hangi kitabi tavsiye edersiniz, tesekürler.
    mümkünse stop switchi hangi siraya nasil yazmam gerekiyor? örnegin analog 0 (A0) a swirchi yerlestirmek istiyorum

    /*
    Stepper.h – – Stepper library for Wiring/Arduino – Version 0.4

    Original library (0.1) by Tom Igoe.
    Two-wire modifications (0.2) by Sebastian Gassner
    Combination version (0.3) by Tom Igoe and David Mellis
    Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley

    Drives a unipolar or bipolar stepper motor using 2 wires or 4 wires

    When wiring multiple stepper motors to a microcontroller,
    you quickly run out of output pins, with each motor requiring 4 connections.

    By making use of the fact that at any time two of the four motor
    coils are the inverse of the other two, the number of
    control connections can be reduced from 4 to 2.

    A slightly modified circuit around a Darlington transistor array or an L293 H-bridge
    connects to only 2 microcontroler pins, inverts the signals received,
    and delivers the 4 (2 plus 2 inverted ones) output signals required
    for driving a stepper motor.

    The sequence of control signals for 4 control wires is as follows:

    Step C0 C1 C2 C3
    1 1 0 1 0
    2 0 1 1 0
    3 0 1 0 1
    4 1 0 0 1

    The sequence of controls signals for 2 control wires is as follows
    (columns C1 and C2 from above):

    Step C0 C1
    1 0 1
    2 1 1
    3 1 0
    4 0 0

    The circuits can be found at
    http://www.arduino.cc/en/Tutorial/Stepper
    */

    // ensure this library description is only included once
    #ifndef Stepper_h
    #define Stepper_h

    // library interface description
    class Stepper {
    public:
    // constructors:
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2);
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4);

    // speed setter method:
    void setSpeed(long whatSpeed);

    // mover method:
    void step(int number_of_steps);

    int version(void);

    private:
    void stepMotor(int this_step);

    int direction; // Direction of rotation
    int speed; // Speed in RPMs
    unsigned long step_delay; // delay between steps, in ms, based on speed
    int number_of_steps; // total number of steps this motor can take
    int pin_count; // whether you’re driving the motor with 2 or 4 pins
    int step_number; // which step the motor is on

    // motor pin numbers:
    int motor_pin_1;
    int motor_pin_2;
    int motor_pin_3;
    int motor_pin_4;

    long last_step_time; // time stamp in ms of when the last step was taken
    };

    #endif

    • Ömer Koman dedi ki:

      myStepper.step(800); gibi bir kod yazmak yerine

      for (int stepsay = 0; stepsay < 10; stepsay++) { myStepper.step(80); >>>> stop butonuna basıldmı kontrolunu burada yap
      }

      yazılabilir

  33. Murat Yener dedi ki:

    cok tesekürler, sanirim yüzeysel yerine biraz temelden dalmak gerekiyor.En azindan. Bunu basaramadim, ama motoru rahatlikla istedigim zamanda ve istegim yönede calistirdim, geri kalani biraz mekanikle yapacagim.Detayli kodlarla ve aciklamalariyla ulasabilecem yerler biliyormusunuz, su ana kadar zamaninizi aldim cok tesekürler

  34. Bahadır İşlek dedi ki:

    Resimler için Progmem değerlerini nasıl oluşturuyoruz yada nasıl çevirebiliriz??

  35. Ömer Koman dedi ki:

    tek renkli bitmapler için şu siteden faydalanabilirsiniz http://manytools.org/hacker-tools/image-to-byte-array/ . imajı siteye yüklüyorsunuz size c++ byte array olarak döndürürüyor. gelen kodun başını PROGMEM mono_bitmap1[]= {…} şeklinde değiştirin, yukarıdaki örnektekiyerde kullanabilirsin…

  36. huzeyfe dedi ki:

    Emeğinize sağlık
    Programı aynen aldım aşağıdaki sorunla karşılaştım ?

    arduinoturkiyecom_webserver_ornek_program.ino:33:23: error: too many decimal points in number

  37. tufan dedi ki:

    merhaba arkadaşlar. bitirme projem için no-ip ile ethernet shield arasında nasıl bağlantı kurabilirim veya hangi host serverlarla daha kolay iletişim sağlayabilirim. yardımcı olursanız sevinirim

  38. Ömer Koman dedi ki:

    ethernet kartınız neyse onun sitesinde örnek uygulamalar vardır önce unları bir deneyin tcp/ip öğrenince no-ip yi denersin

  39. tufan dedi ki:

    modem üzerinden zaten işlerimi yapıyorum ben sadece no-ip hostunu programa nasıl tanıtıcam onu sordum.yoksa kendi evimde internet üzerinden arduino ya bağlanıyorum ama ben dışardan da bu işlemi yapmak istiyorum.

    • Ömer Koman dedi ki:

      lokalde bağlantı kurabiliyorsan dışarıdan bağlantıyı sağlaman için önce modem üzerinde NAT yapman gerekiyor modemin dış IP sini lokalde arduinoya ayırdığın IP adresine yönlendirmen yeterli. modem dış ip si zaman zaman değiştiğinden no-ip ye otomatik olarak mevcut modemini kaydettirirken gerekli adımlar sitedeki no-ip yazısında var. bunu ya modemin üstündeki menuden yaparsın yada arduino üzerinden no-ip ye kaydettirsin belirli peryolarla. gerekli bağlantı adresleri ve şifrenin nasıl yollanacağı da yazıda var. biraz tcp/ip çalışması araştırması yapmanda fayda var.

  40. Necdet Akyurek dedi ki:

    Paylasim icin tesekkurler , yazıda bahsetmiş olduğunuz 74hc595 i edindim ,paylaşmış olduğunuz koda eklemeye çalıştım ama başarmadım , shift register tek basına çalışıyor , ama onu denedikten sonra tekrar webserver kodu atınca sayfaya erişim yok gibi bir hata alıyorum .modem sürekli aynı ip adresini atiyo ben onun verdigi ip adresini koddakiyle değiştirdim ama sonuc aynı .arduino nano kullanıyorum yola gösterirseniz cok sevinirim .

  41. Tamer dedi ki:

    sensörlerden okudugum sıcaklık nem ve seviye degerlerini kendi web sitemde saatte bir paylaşmak istiyorum bunu nasıl yapabilirim,yardımcı olursanız sevinirim..

  42. Emre dedi ki:

    Hocam bende ethernet shield var.ethercard master kütüphanesini yüklüyorum ve dhcp-dns uygulamasını açıyorum yüklerken,”byte Ethernet::buffer[700];” da hata veriyor. “ethernet is not been declared” diyor.yardımcı olabilirmisiniz??

  43. ata dedi ki:

    merhaba arduino ile projeler yapmaktayım son olarak röle kontrollerini web üzerinden yapıyorum ama bu kontrol databarını bir database üzerinde tutmak istiyorum nasıl yapabilirm acaba yardımcı olabilirmisiniz.

  44. ata dedi ki:

    database e veri yükleme konusunda bana yardımcı olabilirmisiniz acaba..

  45. mehmet dedi ki:

    ENC28J60 Ethernet Modülü ve Arduino yazımdaki bağlantı şemasını kullanarak Arduino ve ENC28J60 Ethernet Modülü arası bağlantıları kuruyoruz. 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 uygulamasında Files>Examples>EtherCard>getDHCPandDNS seçimlerini yaparak açılan örnek programı Arduino?muza yüklüyoruz. Daha sonra Serial Monitor?u açıp My IP nin karşısında yazan yerel ip adresimizi not ediyoruz.

    bu aşama yok seri monitorde ip yazmıyor sadece getdhcpanddns yazıyor

  46. Ömer Koman dedi ki:

    şuradaki https://github.com/jcw/ethercard/ kütüphaneyi kullanıyor program ve son versiyonu olduğundan yüklemekde fayda var. examples altında testdhcp orneğini bir çalıştırırmısınız. kart ip adresi alıyormu anlayalım.

  47. mehmet dedi ki:

    aynen ordaki kütüphaneyi kullanıyorum. ve arduino ide 1.0.5 setp yuklemesı ıle yuklu. testdhcp yide denedim oda 2. adıma geçmiyor. kart ip alamıyor. modem içerisinden kontrol ediyorum lan listesinde kart yok.

    2. bir husus farklı bir kütüphane ile deneme yaptım kart ip aldı 192.168.1.3 şeklinde modemin lan listesinde ethernet modulunu goruyorum ve o kütüphaneye ait demo server programınıda çalıştırdım 192.168.1.3 ile. orun yoktu fakat program istediğim mantıkta değil.

    sorun şu şekilde devam ediyor. ben daha önce bu ethernet modulunu yaklaşık 1 yıl kadar önce https://github.com/jcw/ethercard/ linkten indirdiğim kütüphane ile çalıştırdım. ordaki yazdıgım kodları saklamıstım. kart ip almasına rağmen eski programımıdaki gerekli değişiklikleri yapıp ip adresi gibi arduinoya yukluyorum fakat 192.168.1.3 den baglanamıyorum. bu kütüphanede ne değiştirdiler anlamadım gitti.

  48. kamuran dedi ki:

    merhaba hocam bizde iki arduino onu ve ethernet shield var..ethernet shield ‘in sağladığı web servis ile bu iki arduino’yu biribirine bağlayabilir miyiz? parametre gönderip alabilir miyiz?bununla ilgili örnek var mı? teşekkürler..

  49. Ömer Koman dedi ki:

    her uno ya farklı ip adresleri verip tcpclient örneklerini kullanabilir birbirine bağlayabilirsiniz. shieldlerin hangi tip işlemcisi olduğunu veya linkelerini verin örnek bulmaya çalışayım.

    • kamuran dedi ki:

      Shieldler Wiznet W5100..Henüz yeni olduğumuz için çok hakim değiliz ama uğraşıyoruz ve tcpclient örnekleri için araştıracaz..yardımlarınız için teşekkürler..

  50. kamuran dedi ki:

    Çok teşekkür ederim.Böyle ilgili ve hızlı cevap için ayrıca teşekkürler ve bu konulardaki hevesimizi de arttırmıştır..

  51. Hasan dedi ki:

    Merhaba,

    ENC28J60 modül ile virtualvire’ı kullanan rf modülü tek arduino ile kullanmaya çalışıyorum. Fakat ikisi beraber çalışmıyor hata da vermiyor.
    örneğin ping dahi göndermiyorum. modüller ayrı ayrı çalışıyor.
    yardımcı olursanız sevinirim.

    • Ömer Koman dedi ki:

      virtualwire pin11 pin12 kullanıyor değiştirmek gerekiyorsa virtualwire.cpp içinden değiştirmeyi deneyin bi. ayrıca hem ethernet hemde virtualwire interrupt ve timer kullanıyor çakışıyordur sıkıntı ondan da olabilir virtualwire yerine softseriali deneyin birde.

      • Hasan dedi ki:

        Merhaba Ömer Bey,

        Teşeküür ederim verdiğiniz bilgi için. Sizin yorumlarınızı yakından takip ediyorum ve benim gibi arduino ya yeni başlayanlara çok faydanız dokunuyor.

        Sorunu çözdüm sorun rf modülü setup yaptıktan sonra pin ve zaman ayarlarını değiştiriyormuşum sorun buradan kaynaklıymış.
        önce ayarları değiştirdim sonra rf modülü setup ile başlattıp sorun düzeldi.

        Benim size başka bir sorum daha olacak yine bir yerde takıldım.
        Webden kontrollü kablosuz termostat yapmaya çalışıyorum.
        rf ve web modüller tek tek çalışıyor. ikisini aynı arduinoda çalıştırmaya çalıştığımda aşağıdaki sorun ile karşılaşıyorum.
        RF den gelen bilgiyi char tipinde değişkene (char* c) atıyorum buradan da string tipinde gelenbilgi (String gelenbilgi(c)) değişkenine atıyorum.
        rf ve web döngüleri aynı loop içineyken (String gelenbilgi(c)) buradaki satırda gelenbilgi değişkenine aktarma yapamıyor.
        Sorun nereden kaynaklanabilir.
        teşekkür ederim şimdiden.
        (kodlar yanımda değil akşama gönderebilirim.

  52. ali dedi ki:

    arduino unodan anlıyor musunuz

  53. Coşkun Taşdemir dedi ki:

    Anlarız biraz ama soruları lütfen forumda soralım!

  54. gokturk dedi ki:

    bende w5100 var nette yazılan 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 ve 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED mac adreslerini deniyorum, ip alamıyorum. sadece modemdeki ve shield teki 1 led 1sn aralıkla yanıp sönüyor gerisi yok. kabloda yada modemde sıkıntı yok bilgisayar bağlanıyor.

    • Ömer Koman dedi ki:

      kartın altındaki mac adresleri kullanmak zorunsasınız, orjinal urun değilse o mac adreslerıde saçma birşeydir buyuk ihtimal, arduibo.cc deki örnekleri deneyin öncelikle. forumumuza da sorarabilirsiniz.

  55. cumali dedi ki:

    iyi günler elimde arduino ethernet shield var ben üniversite ögrencisiyim akıllı ev projesi yapacam projem de tuş takımından şifre girince kapı açılacak parmak okucuntunca evin içinden led lamba yanacak bunun için bana yardımcı olabilir misiniz kaynak internet sitesi filan

  56. hasan dedi ki:

    hocam ben arduino ile step motor sürmek istiyorum. ve anahtarda kullanmak istiyorum şöyleki motor 360 derece sağa dönecek 3 saniye bekleyecek eğer anahtardan sizyal gelirse 360 derece sola dönecek ve 3 saniye bekleyecek anahtardan sinyal gelmezse 3 saniye bekledikten sonra sağa dönecek yardımcı olursanız sevinirim

    • Ömer Koman dedi ki:

      burada enc28j60 ile ilgili konuları konuşalım, siz sitenin forum kısmından sorunuzu yazın hem anında yayınlanır hemde daha fazla kişiye ulaşırsınız. kolay gelsin

  57. Hasan Selçuk YALÇIN dedi ki:

    Selamünaleyküm arkadaşlar. Bende ethernet shield kullanarak akıllı ev sistemi yapmaya çalışıyorum. Bir takım bazı sıkıntılarım var. Arayüz yapmak istiyorum ama html ile değil yani php veya asp ile olacak. Tarayıcıdan ip adresimizi girip bağlandığımız zaman kullanıcı adı ve şifre isteyecek ve kim ne zaman girmiş ne yapmış bunları bir log dosyasına yazdıran bir arayüz nasıl yapabilirim? İnternette bir sürü örnek var ama tam ayrıntılı anlatan yok. Bilen birisi varsa veya böyle bi uygulaması varsa yardımcı olabilir mi?

    • Ömer Koman dedi ki:

      sitenin forum kısmına gelin yapan vardır mutlaka. arduino içindeki tüm web sayfaların toplamı 1k bile tutamaz bence daha gerçekçi ve basit düşünün. pc ile karıştırmayın arduinoyu. kolay gelsin

  58. efe dedi ki:

    Merhaba,
    Arduino ile kendi web sitemi haberleştirmek için ne yapmalıyım örnekler hep yerel ağ üzerinden bir web sitesinden PC ye ihtiyaç duymadan arduino mu haberleştirmek istiyorum yardımcı olurmusunuz ?
    teşekkürler

  59. Mokhtar dedi ki:

    Ben bunu ürün satın alabilirsiniz adresini istiyorum?
    lütfen bana yardım et

  60. Mokhtar dedi ki:

    Benim adresi (ANKARA-ÇANKAYA)

    • Ömer Koman dedi ki:

      lütfen ticari işlerinizi başka yerde yapın. burası bilgi paylaşım yeri ticaret için başka kapıya.

  61. Mokhtar dedi ki:

    ???????

  62. Mehmet AYYILDIZ dedi ki:

    String ile sitenize veri gonderip okumanız icin gereken kod

    String a=”memet”;
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    char server[] = “www.xxx.net”;
    IPAddress ip(192, 168, 1, 176);
    EthernetClient client;

    void setup() {
    Serial.begin(9600);

    if (Ethernet.begin(mac) == 0) {
    Serial.println(“DHCP Hatası”);
    Ethernet.begin(mac, ip);
    }
    delay(1000);
    Serial.println(“Bağlanıyor…”);
    if (client.connect(server, 80)) {
    Serial.println(“Bağlandı”);
    client.println(“GET /test.php?test=”+a+” HTTP/1.1″);
    client.println(“Host: http://www.xxx.net“);
    client.println(“Connection: close”);
    client.println();
    }
    else {
    Serial.println(“Bağlantı Hatası”);
    }

    }

    void loop()
    {

    baglan();
    }

    void baglan()
    {
    if (client.available()) {
    char c = client.read();
    readString += c;
    }

    if (!client.connected()) {
    client.stop();

    int d1 = readString.indexOf(‘(‘);
    int d2 = readString.indexOf(‘)’);
    o1l = (readString.substring(d1+1,d2));
    Serial.println(o1l);

    if(o1l == (“on”)) {
    digitalWrite(7, HIGH);
    }
    while(true);

    }
    }

  63. emre dedi ki:

    merhaba hocam. kütüphaneyi ekleyip derlediğimde şöyle bir hata mesajı alıyorum yardımcı olurmusunuz.

    Arduino:1.6.3 (Windows 7), Kart:”Arduino Uno”

    EEPROM klasöründeki kütüphane kullanılıyor: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM

    EtherCard klasöründeki kütüphane kullanılıyor: C:\Program Files (x86)\Arduino\libraries\EtherCard (legacy)

    C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM -IC:\Program Files (x86)\Arduino\libraries\EtherCard C:\Users\asus\AppData\Local\Temp\build8042079599187423026.tmp\arduinoturkiyecom_webserver_ornek_program.cpp -o C:\Users\asus\AppData\Local\Temp\build8042079599187423026.tmp\arduinoturkiyecom_webserver_ornek_program.cpp.o

    arduinoturkiyecom_webserver_ornek_program.ino:17:26: error: variable ‘kapali’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’

    arduinoturkiyecom_webserver_ornek_program.ino:37:24: error: variable ‘acik’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’

    Derleme sırasında hata oluştu.

    • Ömer Koman dedi ki:

      gerçi yukarıda yazının altında gerekli kutuphaneler açıklanmış ben gene hatırlatma yazayım şuradan https://github.com/jcw/ethercard/ kutuphaneyi tekrar indirin ve installation kısmında gösterilen zip dosyayı lib altına açın. aynı linkte examples altındaki örnekleri denemeye çalışın. bu yazı yayınlanalı 3 yıl olmuş yazarı da işleri yoğun pek ilgilemeze şu ara elimde de bu karttan yok deneyemiyorum. forum kısmına da gelin denemiş çalıştırmış biri çıkabilir.

      • emre dedi ki:

        ilginiz için teşekkür ederim hocam, kütüphane içindeki örnekleri derliyordum orada sorun yoktu.

        PROGMEM prog_char kapali[]= { ——> const prog_char kapali[]= {
        PROGMEM prog_char acik[]= { ——> const prog_char acik[]= {

        şeklinde değiştirmemi önerdiler, yaptım derledi. karta atıp deneme şansım olmadı onu da yarın deneyeceğim

  64. Göker dedi ki:

    PROGMEM prog_char kapali[]= { ——> const prog_char kapali[]= {
    PROGMEM prog_char acik[]= { ——> const prog_char acik[]= {

    Şeklindeki değişiklik ile sorun çözüldü. Teşekkürler

  65. Uğur Aydemir dedi ki:

    Hocam Merhaba…
    Öncelikli olarak emeğiniz ve paylaşımınız için çok teşekkür ederim.
    Kullandığım internet için sabit ip mevcut. Yukarıdaki programı yazdım, kendimce birçok da ekleme yaparak güzel bir program oluşturmaya çalıştım. Ayrıca appinverter ile de android uygulamasını telefonum için de tasarladım. Sorum şu olacak; program içerisinde tanımladığımız 192.168.xx.xx lokal ip adresine dışarıdan sabit ip ile nasıl erişebilirim?
    Not: Ağ üzerinde kamera ve değer izleme cihazları olduğundan 80. port kullanılıyor. (Port ile alakası var mı tam da emin değilim)

    • Ömer Koman dedi ki:

      192.168.xx ipler lokal iplerdir dışarıdan direk ulaşamazsınız bağlı olduğu rooter veya adsl modem ustunde nat ayarları yapmanız lazım. dışarıdan gelen trafiği sizin 192.168.x adresine yonlendime yapılacak.

  66. akif dedi ki:

    php bir web sitem var bunun üzerindende arduinomu kontrol etmem mümkünmü

    • Ömer Koman dedi ki:

      şöyle olur arduino ile belirli peryotlarla sitenizdeki bir sayfayı okursunuz. bu sayfadaki değerleri değiştirdiğinizde bu sayfayı okuma zamanı gelen arduino sayfanızı okuduğunda bu değerlere göre kendi üstünde işlemler yapabilir aynı zamanda arduino size veriler de gönderir. diğer seçenk ise bunun için php veya başka bir sistem suncuya ihtiyacınız olmadan, arduinonun kendisini web server gibi kullandığınızda ise arduinoya her bağlandığınızda(yada web sayfasını) çağırdığınızda o sayfada veriler görebilir yada komutlar verebilirsiniz. bu yazı bunu açıklıyor zaten. arduino.cc sitesinde werserver webclient konularını da inceleyin.

  67. ayberk dedi ki:

    merhabalar.

    Arduinoya yeni başladım. yukarıda anlattığınız gibi işlemleri uygualadım. fakat programı derlerken static void my_result_cb (byte status, word off, word len)
    kısmında hata veriyor. nerede hata yapıyorum acaba. yardım edebilirmisiniz

    • Ömer Koman dedi ki:

      hata mesajını da yazsaydınız daha iyi olurdu. yazım hatası olabilir buyuk harf kucuk harf ayırımı vardır arduino programı içinde buna dikkat edin yada kodu aktarırıken tanımlamalarda eksik bir satır varsa hata gelir.

      • ayberk dedi ki:

        C:\Program Files (x86)\Arduino\libraries\EtherCard\examples\getDHCPandDNS\getDHCPandDNS.ino: In function ‘void my_result_cb(byte, word, word)’:

        getDHCPandDNS:17: error: ‘void my_result_cb(byte, word, word)’ was declared ‘extern’ and later ‘static’ [-fpermissive]

        static void my_result_cb (byte status, word off, word len) {

        ^

        getDHCPandDNS:17: error: previous declaration of ‘void my_result_cb(byte, word, word)’ [-fpermissive]

        static void my_result_cb (byte status, word off, word len) {

        ^

        exit status 1
        ‘void my_result_cb(byte, word, word)’ was declared ‘extern’ and later ‘static’ [-fpermissive]

        bu şekilde bir hata mesajı veriyor.

        • Ayberk dedi ki:

          Sorunu çözdüm. arduino 1.6.6 yüklemiştim. son sürüm onda çalışmadı.
          onu kaldırıp 1.0.5 yükleyince çalıştı. Fakat şimdide dediğiniz programı yükleyip IP almak istediğimde. My_ip aşağıdaki gibi 0.0.0.0 şeklinde geliyor.

          [getDHCPandDNS]
          DHCP failed
          My IP: 0.0.0.0
          GW IP: 0.0.0.0
          DNS IP: 0.0.0.0
          DNS failed
          Server: 0.0.0.0
          şeklinde geliyor..

          verdiğiniz programdaki ip yerine 0.0.0.0 yazıp derlemeye çalıştığımda

          In file included from webserver_ornek.ino:1:
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:41: error: ‘uint8_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:42: error: ‘uint16_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:46: error: ISO C++ forbids declaration of ‘uint8_t’ with no type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:46: error: expected ‘;’ before ‘*’ token
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:51: error: expected `;’ before ‘static’
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:59: error: ‘uint8_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:71: error: ‘uint16_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:77: error: ‘uint16_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:83: error: ‘uint8_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:83: error: expected ‘,’ or ‘…’ before ‘*’ token
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:83: error: ISO C++ forbids declaration of ‘uint8_t’ with no type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:89: error: ‘uint8_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:89: error: ‘uint8_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:96: error: ‘uint8_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:147: error: ‘uint8_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:156: error: ‘uint16_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:164: error: ‘uint16_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:169: error: ‘uint16_t’ does not name a type
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:177: error: ‘uint16_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:177: error: ‘int16_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:184: error: ‘uint16_t’ has not been declared
          C:\Users\altay\Desktop\arduino-1.0.5-r2\libraries\EtherCard/enc28j60.h:184: error: ‘int16_t’ has not been declared
          webserver_ornek:64: error: ‘byte ENC28J60::buffer [700]’ is not a static member of ‘class ENC28J60’
          webserver_ornek.ino: In function ‘void setup()’:
          webserver_ornek:81: error: ‘buffer’ is not a member of ‘Ethernet’
          webserver_ornek.ino: In function ‘void loop()’:
          webserver_ornek:113: error: ‘class EtherCard’ has no member named ‘packetReceive’
          webserver_ornek:118: error: ‘buffer’ is not a member of ‘Ethernet’
          webserver_ornek:120: error: ‘buffer’ is not a member of ‘Ethernet’
          webserver_ornek:127: error: ‘buffer’ is not a member of ‘Ethernet’
          webserver_ornek:134: error: ‘buffer’ is not a member of ‘Ethernet’
          webserver_ornek:140: error: ‘buffer’ is not a member of ‘Ethernet’
          webserver_ornek:146: error: ‘class EtherCard’ has no member named ‘tcpOffset’
          webserver_ornek.ino: In function ‘void send_png_image(const prog_char*, unsigned int)’:
          webserver_ornek:177: error: ‘class EtherCard’ has no member named ‘tcpOffset’

          hatası oluştu

  68. Akın dedi ki:

    Proteusda çizilmiş devreleride paylaşabilir misiniz?

  69. GÜL dedi ki:

    Arduino:1.6.6 (Windows 8.1), Kart:”Arduino/Genuino Uno”

    C:\Program Files (x86)\Arduino\libraries\ethercard\examples\getDHCPandDNS\getDHCPandDNS.ino: In function ‘void my_result_cb(byte, word, word)’:

    getDHCPandDNS:17: error: ‘void my_result_cb(byte, word, word)’ was declared ‘extern’ and later ‘static’ [-fpermissive]

    static void my_result_cb (byte status, word off, word len) {

    ^

    getDHCPandDNS:17: error: previous declaration of ‘void my_result_cb(byte, word, word)’ [-fpermissive]

    static void my_result_cb (byte status, word off, word len) {

    ^

    getDHCPandDNS uygulamasında bu hatayı alıyorum nasıl çözebilirim

    exit status 1
    ‘void my_result_cb(byte, word, word)’ was declared ‘extern’ and later ‘static’ [-fpermissive]

    Rapor daha fazla veri içermeli
    “Derleme sırasında ayrıntılı çıktı göster”
    Dosya > Tercihler’de etkinleştirilmiş.

    • Ömer Koman dedi ki:

      foruma gelin bu konu konuşulmuştu. yaptığınız örnek kodu da foruma koyun bakalım…

  70. Furkan dedi ki:

    Çok teşekkür ederim kodlarınız için ilaç gibi geldi 🙂 Ancak sizden bir isteğim acaba basit bir şekilde sıcaklık ölçümünü yazdırmak istiyorum çıkışların altına nasıl yazabilirim değişkeni etherCard kütüphanesinde ? Cevap verirseniz çok sevinirim.

  71. Serhat Mollahamut dedi ki:

    Derler iken bu hatayı vermektedir, ne yapmam gerekiyor,

    arduinoturkiyecom_webserver_ornek_program.ino:6:61: fatal error: EtherCard.h: No such file or directory
    compilation terminated.
    Derleme sırasında hata oluştu.

    • Ömer Koman dedi ki:

      ethercard kutuphanesini lib klasörüne kopyalamanız lazım. kutuphaneyi bulamıyor. kutuphane linki yazının altında var dikkat ederseniz. deneyin olmazsa foruma gelin sorun

  72. esat dedi ki:

    hocam arduinodan almış oldugumuz analog verileri internet üzerinden grafiğini çizdirmek istiyoruz.bununla ilgili bize yol gösterebilirmisiniz? saygılar.

    • Ömer Koman dedi ki:

      internet uzerınde bır sayfayı yayınlamayı bılıyor musunuz ve verileri verı tabanına kaydedıp okuyup alt alta web sayfasında yazdırabılıyor musunuz bunları biliyorsanız zaten sorun çözuluyor bılmıyorsanız, en kolayı hazır sistemleri kullanmak bu sistemlere kaydolup bir sensor id si alıp, id ile verileri yolluyorsun ve aynı sistemden grafik olarak alabılırsın şurayı bır deneyin https://data.sparkfun.com/
      birde şurayı deneyin
      https://thingspeak.com/

      • esat dedi ki:

        hocam biz aldıgımız verileri internette görebiliyoruz ama çizdirme konusunu anlayamadık ve yapamadık.hatta aldıgımız verileri matlabda da çizdirebiliyoruz.gönderdiğiniz sitede tam olarak ne anlayamadım biraz daha yardımcı olursanız sevinirim

  73. Hakan dedi ki:

    öncelikle yazı için teşekkürler ancak verilen kodu arduinoda derlediğimde aşağıdaki hatayı alıyorum yardımcı olabilirseniz sevinirim.

    Arduino:1.6.6 (Windows 10), Kart:”Arduino/Genuino Uno”

    In file included from C:\Users\Hakan Gezen\Desktop\arduinoturkiyecom_webserver_ornek_program\arduinoturkiyecom_webserver_ornek_program.ino:11:0:

    C:\Users\Hakan Gezen\Desktop\Yeni klasör\arduino-1.6.6\libraries\Ethernet\src/Ethernet.h:39:22: error: ‘EthernetClass Ethernet’ redeclared as different kind of symbol

    extern EthernetClass Ethernet;

    ^

    In file included from C:\Users\Hakan Gezen\Desktop\arduinoturkiyecom_webserver_ornek_program\arduinoturkiyecom_webserver_ornek_program.ino:8:0:

    C:\Users\Hakan Gezen\Desktop\Yeni klasör\arduino-1.6.6\libraries\ethercard-master/enc28j60.h:187:18: error: previous declaration of ‘typedef class ENC28J60 Ethernet’

    typedef ENC28J60 Ethernet; //!< Define alias Ethernet for ENC28J60

    ^

    arduinoturkiyecom_webserver_ornek_program:20: error: 'prog_char' does not name a type

    const prog_char kapali[]= {

    ^

    arduinoturkiyecom_webserver_ornek_program:40: error: 'prog_char' does not name a type

    const prog_char acik[]= {

    ^

    C:\Users\Hakan Gezen\Desktop\arduinoturkiyecom_webserver_ornek_program\arduinoturkiyecom_webserver_ornek_program.ino: In function 'void loop()':

    arduinoturkiyecom_webserver_ornek_program:120: error: 'kapali' was not declared in this scope

    send_png_image(kapali, sizeof(kapali));

    ^

    arduinoturkiyecom_webserver_ornek_program:122: error: 'acik' was not declared in this scope

    send_png_image(acik, sizeof(acik));

    ^

    exit status 1
    'prog_char' does not name a type

  74. Ömer Koman dedi ki:

    merhaba yazıyı yazan arkadaş işleri yoğunluğundan buraya pek uğramıyor şöyle bir deneme yapalım kutuphaneyı indirip gerekli yere kurduysanız kutuphanenın kendi example klasorundekı bır orneği compile etmeyı denermısınız. ben daha sora deneyıp bilgi vermeye çalışacağım

  75. doğancan dedi ki:

    iyi günler ben arduino ile step motor devir yönü ve hız kontrolü yapıcam ır vericiler ile yardımcı olabilirmisiniz.

  76. sedat dedi ki:

    güzel çalışma olmuş elinize saglk.ardiuno usb ile bilgisayara bağlı olmadan server a bağlanabilir mi

    • Ömer Koman dedi ki:

      çalışır. usb sadece voltaj vermek için ve kontrol amaçlı çıktıları izlemek için kullanılabiliyor.

  77. Hamza dedi ki:

    ‘prog_char’ does not name a type diye bir uyarı alıyorum çözümü nedir ?

    • Ömer Koman dedi ki:

      enj28j60 kutuphanesi pek yenilenmiyor arduino idenin yeni versiyonları ile uyumsuz olabiliyor 1.0.0.5 versiyon ide ile deneyin yazının altında kutuphanenın yukleneceği link var oradan indirip kurun oyle deneyin.

  78. yaşar elçi dedi ki:

    ömer bey merhaba
    ben step motoru bir sensorle caliştırıp bir sensorle durduracağım.artı analalog kontrol edeceğim arduinoda dan step, dır, cıkışı ile kontrol ede bilirmiyim bana nasıl yardımcı olabilirsiniz.

    • Ömer Koman dedi ki:

      bu yazının altında ethernet ve enj28j60 sorularını alalım. diğer konuları forumdan sorabilirsiniz. özel proje yapacak kadar zamanım yok.

  79. yaşar elçi dedi ki:

    uslup ve davraniş tarzınızdan dolayı teşekür ederim ;;;;?

  80. emre dedi ki:

    her yolu dendedim fakat bir türlü web sayfası karşıma gelmiyor nedir sıkıntı

  81. Ömer dedi ki:

    programı aynen yüklediğimde bu hatayı alıyorum. Yardımcı olabilirmisiniz ?

    Arduino:1.6.12 (Windows 7), Kart:”Arduino/Genuino Uno”

    arduinoturkiyecom_webserver_ornek_program:18: error: ‘prog_char’ does not name a type

    PROGMEM prog_char kapali[]= {

    ^

    arduinoturkiyecom_webserver_ornek_program:38: error: ‘prog_char’ does not name a type

    PROGMEM prog_char acik[]= {

    ^

    C:\Users\CAPAR\AppData\Local\Temp\Rar$DIa0.069\arduinoturkiyecom_webserver_ornek_program\arduinoturkiyecom_webserver_ornek_program.ino: In function ‘void loop()’:

    arduinoturkiyecom_webserver_ornek_program:118: error: ‘kapali’ was not declared in this scope

    send_png_image(kapali, sizeof(kapali));

    ^

    arduinoturkiyecom_webserver_ornek_program:120: error: ‘acik’ was not declared in this scope

    send_png_image(acik, sizeof(acik));

    ^

    exit status 1
    ‘prog_char’ does not name a type

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • Ömer Koman dedi ki:

      bu sayfada progmem aratın çözümü var. oncelikle yazıda belirtilen ve altındaki linklerdeki kutuphaneleri yukleyip standart orneği deneyin hatasız compile olduktan sonra gerekli duzenlemeleri yapın.

      • Ömer dedi ki:

        Arkadaşlar şu şekilde bir düzenlemeyle sorunun kalktıgını söylemişler;
        PROGMEM prog_char kapali[]= { ——> const prog_char kapali[]= {
        PROGMEM prog_char acik[]= { ——> const prog_char acik[]= {

        Fakat aynı düzenlemeyi ben yaptığımda gene aynı hatayla karşılaşıyorum. Programın stabil çalışmamasının nedeni ne olabilir ?

        • Ömer Koman dedi ki:

          programda hiç değişiklik yapmayın olduğu gibi kullanın 500 bytetan fazla sayfa uzunluğu sorun yaratabilir. kodda sorun yok çalıştıranlar var. kutuphaneleri mutlaka yukleyin hatta biraz daha araştırıp daha guncel enj kutuphanesi varsa onu yukleyerek çalıştırmayı deneyin. daha eski versiyon arduino ide yukleyip çalıştırmayı da deneyebilirsiniz.

  82. Veli dedi ki:

    My ip değerini kendi ıp olarak yazıyorum. fakat programıma eklediğim bu ıp ile bağlantı kuramıyorum tarayıcımda. Bu siteye ulaşılamıyor diyor. Her yolu denedim ama nafile. Sizce sorun nerede dir ?

    • Ömer Koman dedi ki:

      bu konunun arduino ıle alakası yok ama aynı lokasyondakı kullanılmayan bır ip olması lazım.

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar