Arduino(Ethernet Shield)’nun Web Server Olarak Kullanımı

Problem
Arduino ve Ethernet Shiled ile   web server elde etmek istiyoruz.  Örneğin,  web browser ?ımızda  Arduino analog pinlerine bağlı sensörlerimizden ölçtüğümüz değerleri görüntülemek istiyoruz.

Çözüm

     Önceki twitter yazımızdaki   gibi  ilk önce Ethernet ve IP ayarlarımızı yapacağız  ardından analog Pin?lerden okunulan değerleri,  program içerisinde girdiğimiz IP adresini  Web Browser?ımıza girerek görüntüleyeceğiz.

Gerekli Olan  Elemanlar

 Arduino Uno  veya benzeri?

Arduino Ethernet Shield 

-Kablo veya jumper kullanın daha pratik olur.

-Bir tane de kitabınız olsun başucunuzda. Arduino hakkında yazılmış tek Türkçe kitap olan Elektronik Mühendisi Coşkun Taşdemir?in kitabı burada kullandığımız analoglar hakkında detaylı bilgileri almanızı sağlayacaktır.

 

#include <SPI.h>

#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; /* Media Access control – ortam eriÅŸim kontrolü, 6 byte?tan oluÅŸmakta ethernet donanım adresi diyebiliriz Ethernet modulleri üzerinde de yazılır. Robotistan Ethernet Module sayfasında alttan çekilen fotoÄŸrafta yeralmakta – (Åžekil-1) */

 

 

Şekil-1 Arduino Ethernet Shield alt kısım (MAC adress)

 

byte ip[] = { 192, 168, 1, 177}; // cihaz IP adresimiz.

EthernetServer server(80); /* PC?miz için varsayılan telnet portumuz hadi biz buna HTTP Kontrol Portu diyelim(port 80).*/

void setup()

{

Ethernet.begin(mac, ip); /* sadece mac ve ip başlatmak yeterli. Eğer yukarıda gateway ve subnet?te belirtseydik burada onlarıda eklerdik(mac,ip,gateway,subnet) şeklinde ve onları da başlatmış olurduk.*/

server.begin(); /*bu komut server?ımızı azarlar ve gelen bağlantıları dinlemesini emreder*/

}

void loop()

{

EthernetClient client = server.available(); /*  EÄŸer web browser’ın okumak için hiçbir data?sı yok ise bu nesne (aÅŸağıda örnek kod içerisinde belirtildiÄŸi üzere) bir if ifadesi içerisinde false olarak deÄŸerlendirilecek. Hadi devam edelim ÅŸimdi istemciye ÅŸartlarımızı söyleyelim bilgilerimizi alacak bir sensör bilgisi bile bizim için önemli, ağırdan satalım onun için. */

if (client) {

boolean current_line_is_blank = true; /* bir http isteği boş bir satır ile biter*/

  while (client.connected()) {

if (client.available()) {

char c = client.read();

/*eğer satır sonuna gelindi ise ve bu satır boş ise http isteğimiz sona erdi demektir. Dolayısıyla bir cevap gönderebiliriz. */

if (c == ‘\n’ && current_line_is_blank) {

client.println(“HTTP/1.1 200 OK”); //  standart http yanıt baÅŸlığı gönderir

client.println(“Content-Type: text/html”);

client.println();

for (int i = 0; i < 7; i++) { /*Döngümüzü yazıyoruz kaç tane sensör varsa o kadar değişken giriyoruz döngü içerisine o kadar input değeri vardır.

/*web browser?a analog input?lardan okunan değerlerimizi yazdırmak istiyoruz. */

client.print(“analog input “);

client.print(i); //hangi analog input olduğu yazılsın.

client.print(” is “);

client.print(analogRead(i));/* i. inci analog pine bağlı sensörden okunan değeri browser?a yazdırıyoruz.*/

client.println(“<br />”); /* browser?ımızda(?html?den hatırlarız.) bir satır atlatalımda veriler birbirine girmesin*/

/** Bu ?client.print? lardan sonra şu şekilde çıkışlar görüntüleyeceğiz.

?Analog input 0  is 0.06

        Analog input 1  is 0.7?

        Analog input 2  is 0.7?

        Analog input 3  is 0.7?

        Analog input 4  is 0.7?

        Analog input 5  is 0.7?

        Analog input 6  is 0.7?

       ?

**/

 

}

break;

}

if (c == ‘\n’) {

current_line_is_blank = true;// Yeni bir satıra başlıyoruz.

} else if (c != ‘\r’) {

current_line_is_blank = false;

}

}

}

delay(1);// browser?ımıza verileri almak için biraz zaman verelim

client.stop();

}

}

 SONUÇ

Böylelikle arduino analog pinlerinden okuduÄŸumuz deÄŸerleri Ethernet module aracılığı ile web browser?ımızda local IP adresimiz üzerinden görebileceÄŸiz.  Daha ucuz Ethernet Shield’ler kullanarak bu iÅŸlemleri yapabilirsiniz.  Bunun için Ä°smail Buçgün‘ün yazmış olduÄŸu yazıyı da okuyabilirsiniz . Yazı da belirtilen Arduino baÄŸlantılarını kullanarak gayet ucuz bir web server elde edebilirsiniz.  Kolay gelsin.

Kaynaklar

http://arduino.cc/en/Reference/ServerAvailable

http://arduino.cc/en/Reference/ClientConnected

http://arduino.cc/it/Reference/ClientAvailable

http://arduino.cc/it/Reference/ClientRead

http://arduino.cc/en/Reference/Ethernet

Arduino cookbook**

 

Yücel Çetin

İstanbul Üniversitesi Elektrik-Elektronik Mühendisliği'nde öğrenci, Arduino sevdalısı, python meraklısı bir canlı...

72 comments

  1. 13.murat dedi ki:

    60 adet analog bilgiyi internet sayfasında yayınlamak istiyorum bunun için en az hangi donanımları kullanmalıyım ardunuoları her bir ardunu için bir internet eklentisimi almam gerekiyor tam olarak çözemedim

  2. Yalçın ARI dedi ki:

    Merhaba paylaşımınız önce çok teÅŸekkür ederim. Elimde Ardiuno Mega ve Ardiuno Wifi Shield var. Ve sizin Arduino ve Ethernet Shiled ile yaptığınız web server’ı bunlarla yapmak istiyorum. Aynı ÅŸekilde Web Browser’da Arduino analog pinlerine baÄŸlı sensörlerden ölçtüğüm deÄŸerleri görüntülemek istiyorum. Bu mümkün müdür? Yaptığım bazı araÅŸtırmalar sonrasında kod içerisinde belirlediÄŸimiz IP adresini wifi Shield ile nasıl yapacağımı çözemedim.

    Şimdiden çok teşekkürler

  3. Ömer Koman dedi ki:

    2 tip wifi sield var biri sadece seralden calisir rx tx portuna baglanir tcp stack kendi icindedir kullanimi basittir. Digeri spi ile baglanir tcp stack arduinodadir. Her modulun yontemleri kendine goredir kutuphaneleride cok ayridir ethernetteki ornekler size uymaz. Wifide modul AP modunda calisirsa baskasekilde baglanmaniz gerekir modul mevcut wifi agina baglanip bu agdaki clientler wifi module baglanacaksa cok ayri isler yapmaniz lazim. Aldiginiz modulun orneklerini ve network ve authantication ve tcp socket programlamayi da calis gel. İyi gunleeer 🙂

  4. elektroS dedi ki:

    Hocam bende leonardo var.
    examples altında
    Webserver programını yükledim.
    Ama şöyle bir sorun oldu herhalde.
    Ethernet serverin başlaması için önce seri iletişimin başlamasımı gerek!
    bu satırı okurmusunuz? Programdan alıntıdır!


    void setup() {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
    }

    // start the Ethernet connection and the server:
    Ethernet.begin(mac, ip);

  5. Hocam merhaba yazınız için teşekkür ederim öncelikle.. Arduino bir arkadaşımda var ve o pratikliği görünce inanılmaz heves ettim. Bende başlamak istiyorum.. Arduino almak istiyorum mega alacağım büyük ihtimalle. Size sormak istediğim soru yazıda da belirttiğiniz gibi erhernet shield mı almalıyım bu iş için yoksa ENC28J60 Ethernet Modülü mü ? Farkları nelerdir ? Hangisinin kullanım alanı daha geniştir ?

  6. Ömer Koman dedi ki:

    arduinonun kendı resmı erhernet modulu farklı bir işlemci(w5100)kullanır fiyatı bıraz daha pahalı bütçe problemi varsa enj28j60 alırsın o daha ucuza gelir. kullanım olarak ikisi faklı kutuphaneler kullanır mesela enj28j60 ta dhcp den otomatik ip aldırma yoktur standart kutuphanesinde sonradan bazı kişiler eklemiştir bazen yamulabılır. arduinonun resmi kutuphanesi bıraz daha yetenekli. sen karar verirsin
    ÅŸu forumda karşılaÅŸtırmış http://forum.arduino.cc/index.php/topic,115464.0.html eÄŸer tcp ip ve internet programcılığı biliyorsan hepsinin zorluk derecesi sana aynı gelir, w5100 un önü daha açık kullanımı daha kolay filan, enj ilede ÅŸunu da yapamadım diyen de görmedim ama… her ikisi içinde bol örnek var.

  7. Fatma Y. dedi ki:

    Hocam ethernet shilde yeni başlıyoruz. İlk önce DhcpAddressPrinter örnek kodları ile ip adresini buldum. WebServer örnek kodu üzerinde ip adresime bunu yazdım. Kodu Ardunioya yükledim. Aynı ip yi browsera yazdım. Ancak ulaşılamıyor. Neden olabilir hocam.

  8. semih y. dedi ki:

    byte mac[] kısmında bu örnekte ve arduino ide üzerindeki örnekte verilen mac adresinde herhangi bir deÄŸiÅŸiklik yapıldığında ‘Unable to connect’ veya zaman aşımı hatası alıyorum. Cihaz üzerindeki mac adresini girdÄŸimde de aynı hatayı alıyorum. Örnekte verilen mac adresini kullanmak zorunda olmadığımızı düşünerek neden böyle bi hata verdiÄŸini anlamadım.

    • semih y. dedi ki:

      kodu derledikten sonra ethernet kablosunu takıp çıkardım düzeldi ama mac adresine ne yazarsam yazayım böyle yaptığımda sayfa normal çalışıyor onu da anlamış değilim.

      • Ömer Koman dedi ki:

        arp network yapısı böyle çalışıyor ondan. herşey mac adres tablosundan yönetilir siz her mac değiştirdiğinizde rooter tabloda size yeni bir yer açıyor ve o ip paketlerini o mac adrese yönlendiriyor siz kabloyu her çıkarıp taktığınızda bu tablo yenilenip güncellenmiş oluyor ve paketler doğru adrese yönlendirilmiş oluyor. tcp ağlarını biraz daha çalışıp öğrenmeniz lazım.

  9. lokman dedi ki:

    merhaba hocam, sensörlerden aldığımız bilgileri bir webser’e atmak istiyorum ama bunu ethernet shilde ile deÄŸil de gms shield ile yapmak istiyorum nasıl yaparım bunu ?

  10. can erden dedi ki:

    hocam merhabalar, arduino ethernet shield ile ethernet üzerinden haberleşme yapmaya çalışıyorum. PC üzerinden gönderdiğim komutlara göre istediğim şekilde kontrol sağlıyorum ve arduinodan cevap da alabiliyorum. Fakat arduinoya bağladığım butona basınca veri gönderemiyorum. Butona basılı tutup, PC den komut gönderince, butona basılınca gitmesi gereken veri arduinodan gönderiliyor. Dışardan veri gelmedikçe arduino bir veri göndermiyor yani. Ne yapmam gerekiyor sizce?

    NOT: Arduinodaki program örneklerdeki chat server programının deÄŸiÅŸtirilmiÅŸ hali…

    Yardımınız bekliyorum.

    Teşekkürler.

  11. feyzullah dedi ki:

    Hocam iyi günler,
    Akıllı ev bitirmesi yapıcam pc ile ethernetshield vasıtasıyla arduino arasında baglantı yapıcam. Web serverde oluÅŸturacagım arayüzü nasıl oluÅŸturabilirim kolay bir ÅŸekilde. Yardımcı olursanız sevinirim…

    • Ömer Koman dedi ki:

      yukarıdaki örnekle başlayın. arduino içine koyacağınız sayfanın boyu bir kaç yuz bayttan fazla olmaması gerekiyor. butun sayfa goruntulerı sonuçta program hafızasında saklandığında detaylı bir arayuz yapmanız mumkun değil.

  12. robotcu dedi ki:

    Ömer hocam bir sorum olacakti. Ben ethernet ile master slave iletisim kullaniyorum. Hersey cok guzel calisiyor robotumu slave den kontrol ediyorum. Ama istedigim webserver calismadiginda yani iletisim koptugumda masterdan slave dur komutu yollamaliyim ama bir türlü programin icine entegre edemedim. dur komutunu yukarida programda nereye koymaliyim.Yardimci olabilirseniz sevinirim.

    • Ömer Koman dedi ki:

      yukarıdaki kod yerine size bir mantık önereyim onu yapmaya çalışın. anladığım kadarı ile robotunuza komur yolluyorsunuz ve bunu yapıyor veya harekete başlıyor bu arada komut geldikçe işlemlerini de yapıyor. burada sorununuz iletişim koptuğunda konrolden çkıyorsunuz. bunu en kolay çözme tekniği masterdan belirli aralıklarla bir hello mesajı atın, slave cihazlar belirli peryotlarda bu mesajı aldığında herşey yolunda diye düşünüp sıradaki işlemi yapması lazım. yada slave her komutu işlediğinde diğer komuta geçmeden önce masterden bir hello mesajı varmı yokmu kontrol edip diğer adıma geçmesi en mantıklı yol olacak. normal networklerdede master, slavelere veya bradcast adresten herkese bir sync mesajı atar bu mesajı alan slave normal işine devam eder durur. mesaj kesilirse yeni mesajı alana kadar durumunu koruyup ilk mesajı aldığında kaldığı yerden devam eder veya sıradaki komuta geçer vs vs.

  13. robotcu dedi ki:

    evet haklisiniz iletişim koptuğunda robot son sinyalde kaliyor.Hareket halinde ise devam gidiyor durmuyor.Aslinda Master dan slave e veri yollamak sorun degil, Master dan c# arasindaki webserver kontrolünün devamliligini kontrol etmem gerekiyor. c# dan Master devamli belli araliklarda veri yollayamiyorum. Oyuzden yukaridaki programda baglanti hatasi alabilsem slave e direk o zaman veri yollayabiliyirim.Master in internet baglantisini kontrol etmek zorundayim sürekli, sorunum burada basliyor.

    • Ömer Koman dedi ki:

      arduino ethernet kutuphaneyi tekrardan bir göz gezdirin http://arduino.cc/en/Reference/Ethernet telnet client örneğini bir inceleyin. normalde m2m(machine to machine) iletişimde http laflarını kurallarını kullanmanıza gerek yok. connected olduktan sonra serial porttan farkı kalmıyor tcp ip nin basit komutlarla karşılıklı haberleştirmeyi deneyin olsun bitsin.

  14. robotcu dedi ki:

    Hocam bir sorum daha olacak. Elimde BMP085 basinc sickalik sensörü var. Bu sensörden verileri direk serial monitorden okudugumda degerler iyi gösteriyor ama webserver ile okudugumda sicaklik 19 ken -68 gibi gösteriyor. Acaba bu farklar neden olur. Tabii ki basinc tada ayni sorun var. Acaba Arduino ve Ethernet shield arasindaki kullanilan SPI protokol buna etki ediyor olabilir mi bu konuda yardimci olabilir misiniz?

    • Ömer Koman dedi ki:

      spi portunda modullerın cs select pinleri ayrı ayrı olması lazım. kullanmadan önce ilgili cs pinin seçili(hi) olduğundan emin olmak lazım.

  15. alparslan dedi ki:

    hocam mrb arduniouno aldım adım sayar yapmak istiyoorum yardımcı olabilirmisiniz

  16. UÄŸur Aydemir dedi ki:

    Merhaba hocam. Arduino uno ile internet üzerinden lokasyon kontrolü yapıyorum. Webserver e de mit app inverter ile yazdığım aplikasyon ile yönetiyorum.
    Benim sorum şu olacak; Telefona girdiğim değeri arduino da nasıl alıp işleyebilirim. Şöyle ki; telefona % açıklık değeri gireceğim, örneğin %45, arduino ya bu web üzerinden gidecek, arduino bu aldığı değeri karta bağlı potasyometre değeri ile kıyaslayacak ve çıkış pininde bağlı motor ile açma ya da kapatma komutu verecek. Bunu nasıl sağlayabilirim. Android yazılımda yazdığım değeri arduino ya bağlı sensör ile kıyaslayacak yazılım nasıl olabilir?

    • UÄŸur Aydemir dedi ki:

      Ya da şöyle de düşünelibiliriz. App invertor’da oluÅŸturacağımız text_box a girdiÄŸimiz sayı kadar yanıp sönen led uygulaması. Mantığı aynı olur. Bunu nasıl yapabilirim. (Not: Hem app invertor hem de arduino kısmı için yardımcı olabilirseniz çok sevinirim)

  17. Emre GazioÄŸlu dedi ki:

    Hocam ben Arduino ve arduino wifi shield kullanarak relay kontrol etmek istiyorum ve bunu android uygulamasıyla kontrol etmek istiyorum ama bunun için yeterli bilgim ve tecrübem yok.Yani androidden yapacağım bir istek ile wifi üzerinden arduino da rölenin açılıp kapanmasını istiyorum. Bunu nasıl yapabilirim yardımcı olursanız sevinirim.

    • Ömer Koman dedi ki:

      malzemelerinizi alın kodunuzu yazın takıldığınız yeri forumda sorun birileri böyle olursa yardım edebilir… proje yazma ÅŸeklinde bir yardım yapamıyoruz. sizden ilerleme ve çaba olmazsa bu site ve forumdan kimse yardım etmez…

  18. Ceylan EREN dedi ki:

    Merhaba hocam.
    arduino yu bilgisayara bağlayıp ethernet shiled kullanmadan uzaktan nasıl kontrol edebiliriz?

    • Ömer Koman dedi ki:

      arduino bilgisayara baÄŸlıysa ÅŸu ÅŸekilde olur…
      arduino <---> bilgisayar <-----> ethernet <------> internet <-----> kullanıcı

  19. akif dedi ki:

    hocam size iki sorum olacak
    1-) elimde bir ethernet shield’im var bunun sd kart yuvasına takılan sd karttaki index.html gibi grafiksel arayüzü olan bir siteyi arduinoya verdiÄŸim ip üzerine yansıtabilirmiyim (mesela 192.168.1.177 yazdığımda sd karttaki index.html yi görüntüleyebilirmiyim)
    2-) başka bir şehirden arduinomu kontrol etmek için ne yapmalıyım

    ÅŸimdiden vereceÄŸiniz cevaplar için teÅŸekkür ederim…

    • Ömer Koman dedi ki:

      yazıyı hazırlayan arkadaÅŸ iÅŸerinin yoÄŸunluÄŸundan siteye uÄŸramaz oldu ben cevaplıyayım. bu konuları forumda çok iÅŸledik oraya gel. zaten Ethernet shield in amacı tam da deÄŸiniz iÅŸleri yapmak için tasarlanmıştır. uzaktan eriÅŸim yapabilmeniz için tcp/ip mantığını, rooter, local ip, NAT gibi kavramları biliyor olmanız lazım. arduinonun baÄŸlı olduÄŸu networkten internete çıkışını ve internetten local networke giriÅŸin rooter üzerinden yönetilmesini yapabilmeniz lazım. yok ben internetten girmeyeyim aynı adsl modemi kullanıyoruz obur odadan neler oluyor bakacam dersen iÅŸin kolay sitedeki Ethernet yazılarını oku yeter sana… birde sonuçta arduino hafızası sınırlı bir alan hazırlayacağın web sayfalarının 1-2k gibi bir sınırı olacağını unutma. sd kart var ok oradan da sayfaları alıp yollarsın da bunlar hep sınırlı ve fazla grafik olmasa iyi olur. bir web sayfasından html kodunu tarayıcı çağırırken önce html kodu çağırır sonra resimleri tek tek çağırır da bunları hep iyi bir kod yazımı ile yönetmen lazım. bence basit text bilgileri yollama ve okuma iÅŸlemleri ile baÅŸla sonra renklendiririsin bir kac pixellik grafikler de sonra eklersin.

    • osman dedi ki:

      hocam elimde 1 arduino mega var . arduino megamın üstüne ethernet shield ve motor shielti aynı anda takabilirmiyiz. eğer bu mümkün değilse ethernet shield ile kullanabileceğim bir motor sürücü kartı önerebilirmisiniz. şimdiden teşekkürler.

      • Ömer Koman dedi ki:

        ethernetshield ile web server ve webclient orneklerini once bır hallet sonra motor surucu için foruma gel sor.

  20. Merhaba hocam ben asp.net ,Mysql kullanarak arduino üzerindeki 3 adet sensörüm mevcut burdaki bilgileri kaydetmek istiyorum.asp.net üzerinden port kontrolü var arduino web server ile sensördeki bilgileri web browserda gösterebiliyorum.Bunları sadece Get etmek kaldı ama asp.net windows server tabanlı olduğu arduino bunları derleyemiyor ve sd karta attığımda okumuyor.Bu konuda nasıl bir yol izlemeliyim.

    • Ömer Koman dedi ki:

      arduino minnacık hafızası olan bir cpu buna rağmen bir web server olarak görev yapabiliyor yukarıdaki örnek bunu gösteriyor. sen arduinodaki sensor verilerini bir sunucuya atmak istiyorsan tcp client kullanacaksın o rrneklere bak. bildiğin asp ve mysql kodlarını kendi sunucunda kullan ve arduinonun oraya bağlanıp sensor verilerini oraya kaydetmesini sağla. buradaki örnek senin arduinoya bağlanıp sensor verilerini tarayıcı ıle çekmeni sağlar. foruma gel oradan da sor denemiş olanlar var. arduinoda asp ve mysql komutları işlemez. oyle şeyler yapmak istiyorsan php ve mysql gibi sistemleri rasbery pi ile veya arduino yun gibi Linux tabanlı sistemlerle çözebilirsin. arduinoda ıyı bır tcp/ip kutuphanesi var tarayıcıdan gelen istekleri cevaplayabılır ama asp veya php gibi yorumlayıcılar ıcermez şimdilik.

  21. mert sönmez dedi ki:

    Merhaba
    Arduino+ethernet shield(wiznet5100) ile html dosyası sd kartta olacak şekilde web server oluşturdum.Serial porttan her adımı takip ettim.Kod
    client.write(webFile.read()); // send web page to client
    kısmında kalıyor browser ekranına durmadan “y” harfleri basıyor.BaÅŸka html kodlarıyla denedim fakat sonuç aynı problem nedir bilen birileri yardım etsin lütfen.3 gündür bu sorunla uÄŸraşıyorum.Kod ve htm linki : https://startingelectronics.org/articles/arduino/switch-and-web-page-button-LED-control/

    • Ömer Koman dedi ki:

      foruma gelin yazın. benzer iÅŸleri çözenler var…

      • habil dedi ki:

        KNDİ WEB SERVERIMIZI TASARLAYABİLECEĞİMİZ BİR PROGRAM VARMI
        ARDUİNO İÇİN

        • Ömer Koman dedi ki:

          en sade biçimi le html veya gömülü css ile yapabilirsin java script için yeterli bellek olmayacak buyuk ihtimal. arduinoda sayfalar çok kucuk boyutlu tasarlanmalı hatta mumkunse 1k civarı olmalı bazı uygulamalar sd karttan sayfa ve resimleri okuyup yolluyor ama sonuçta ardunonun işlem belli.

  22. Onur Yurt dedi ki:

    Hocam merhabalar. Ben hareket sensöründen aldığım bilgiyi arduino yardımıyla internet ortamına atmak ve başka bir arduino ile o web pageden o bilgiyi alıp led yakmak istiyorum.Bilgi alma işlemi mümkün müdür , nasıl yapabilirim acaba ?

    • Ömer Koman dedi ki:

      ethernetclient ile arduino veya herhangi bir web sunucudan veri okursunuz. ethernetserver ile web sayfası içinde verileri aktarırsınız. hepsinin örneği arduino ide de ornekler altında var oradan inceleyebilirsiniz.

  23. aytug dedi ki:

    Merbaha herkese bnm sorum şu sunucuda bulunan bir web api var ve tetiklendiğinde json formatında veri gönderiyor. Bu veriyi arduino ile alabilirmiyim?

    • Ömer Koman dedi ki:

      alırsınız. sonucta json format da text bazlı bir veri, içindekileri ayrıştırmak size düşüyor. tabi veri yoğunluğu 1-2k yı geçmezse fazla sorun yaşamazsın.

  24. Zafer GUZEL dedi ki:

    Merhabalar,Arduino ve rf-reader ile elde etmis oldugum verileri sd card a yazdim.Sd card taki bu loglari bir sunucuya dosya olarak gondermek istiyorum bunu nasil yaparim.bu sunucu localde bir sunucu ve http ile yapmak istemiyorum.herhangi bir cozumu olan var mi bu konuda .Cok Tesekkur ederim

    • Ömer Koman dedi ki:

      temel protokol tcp/ip, sunucunuzda tcp/ip den gelen verileri bir şekilde karşılamanız kendi transfer protokolunuzu yazmanız lazım. satır satır mı yollarsınız sabit byte paketlere bölüp sırayla mı atarsınız size kalmış. foruma gelin önerisi olan çıkabilir.

  25. yavuz dedi ki:

    merhabalar .. ethernet shield ı modeme baÄŸlayıp ip yi giridiÄŸim zaman “http error 404 found ” hatası veriyor nasıl düzeltebilirim yardımcı olurmusunuz?

    • Ömer Koman dedi ki:

      once kendi networkunuzde olmanız lazım yani modem size hangi ip grubunu vermişse o gruptan bir ip vermeniz lazım ethernete daha sonra bir sayfayı cağırmayı deneyın. ethernetclient orneklerıni deneyın. foruma gelin

  26. Ä°brahim YeÅŸil dedi ki:

    Bu kod enc28j60 ile uymlu mu acaba?

    • Ömer Koman dedi ki:

      hangi modulu kullanıyorsanız onun kutuphanesını ve kodlarını kullanın uyumlu gorunse de farklılık çıkıyor. enj28j60 arduınonun kendı yazıp geliştirdiği bir kod degıl, arduınoda ethernet yokken bırısı yazmış uygulamış gostermiş ve herkes ondan bakıp kullanıyor ve şu anda geliştirlen duzeltılen bır kod degıl

  27. muhammed dedi ki:

    İyi günler hocam İyi günler. Bitirme projesi olarak web kontrollü akıllı ev yapıyorum. Ancak bu projeyi okulda çalıştırmak biraz sıkıntı. Hocam bana bir modem bulup router olarak kullanmamı istedi ve routerın içinde bir yerel ağ oluşturup o ağ içerisinden işlev yapmam gerektiğini söyledi. Kablosuz yerel ağı oluşturdum. Ancak nerede kullanacağımı bu ağın ıpsini kod yazarken kullanmam gerekli mi ?(Oluşturduğum kablosuz yerel ağın ıpv4 adresi)

  28. Ceren dedi ki:

    Iyi günler.Bitirme projemiz için arduino ile agirlik sensorunden gelen verileri web server ile gormek istiyoruz.Arduinonun hazir web server kodu üzerinden deniyoruz aynı aga ait bir ip tanimliyoruz fakat sayfa bulunamadı yaziyor.Nasil çözebiliriz?

    • Ömer Koman dedi ki:

      hangi ethernet eklenti kartını kullanıyorsanız onun ethernet kutuphanesini kullanmanız lazım onun yuklu olması lazım enj28j60 kartı kullanıp wiz5000 kartının surucusunu kullanıysanız uymaz önce ondan emin olun.
      daha sonra ethernet modulunun mac adresini programdaki tanımlama alanına yazın bu mac adres bir etıketle ya kutusununda ya ambalajında yada kartın ustunde yazması lazım. daha sonra serialmonitorden açılışa bakın va yazdıgınız programda kartın duzgun başlatıldıgını yazan satırları görün sorun varsa orada yazar once onları sağlayın. daha sonra ağınızda ip adrslerının yapısını ıyı ınceleyın ve aynı gruptan bir ip tespit edıp onu verin başka bır cıhaz bu ip yi kullanmamalı. daha sonra bilgisayardan bu ip adresını çağırarak sayfanın gelmesını bekleyın. olmazsa foruma gelin sorun.

      • Ceren dedi ki:

        wiz5100 ethernet kartını kullanıyoruz.Mac adresinden ve ağda boş bir ip adresi tanımladığımızdan da eminiz fakat yine aynı hatayı alıyoruz. Server is at 0.0.0.0 değerini döndürüyor ethernet.localip() fonksiyonu.

        • Ömer Koman dedi ki:

          şu orneği yapıyorsunuz sanırım
          https://www.arduino.cc/en/Tutorial/WebServer

          bu kartta sd kart da var onun select pinini tanımlamanız lazım setup kısmında çakışıyorsa ethernet chipi duzgun çalışmaz.
          şu kodları her ıhtıumale karşı setup kısmına ekleyın
          pinMode(4, OUTPUT);
          digitalWrite(4, HIGH);

  29. Eren dedi ki:

    Çalışma güzel. Fakat “prog_char” tanımlamasını kabul etmiyor. Ayrıca Web sayfasına yazılan yazıların aynı anda TFT LCD bir ekranada yazdırmak istiyorum olmuyor. Ekranı normal metin çıktısında çalıştıryorum. Mega uyumlu bir ethernet shieldi arduino uno ile kullanıyorum. Yardımcı olursanız sevinirim.

  30. Ömer Koman dedi ki:

    yukarıdaki orneği hiç değiştirmeden derlemeyi deneyin

    • Ömer Koman dedi ki:

      bu konu forumda çok anlatıldı. basitçe anlatayım genel bir delay ın olsun orneğın 1ms lik ve bırde rolelerın için sayacın olsun her delaydan sonra sayacı bir arttır(yani 1ms bekledik anlamında) ve role kontrol rutınınde bu sayac degerlerıne bakarak çalıştır.

      orneÄŸin
      role1zamansay=0;
      loop {
      delay(1);
      role1zamansay=role1zamansay+1;
      if (role1zamansay==10000){
      role1_on();
      }
      if (role1zamansay==20000 ){
      role1_off();
      }
      }

      burada loop suresi sadece 1ms olacak ve kıtlenme yaşamayacaksın diğer işlerın ıcın de yapmaya zaman bulacaksın. eğer dığer kodlarında da zamanlama lazımsa bu zamansay değerine gore hareket edersın.

  31. fatih dedi ki:

    Merhaba hocam değerli bilgileriniz için teşekkür ederim.

    Ethernet üzerinden aynı ağda bağlı iken kontrolü sağlayabiliyoruz. Aynı şekilde modem arayüzünden port açarak bu kontrolü internet üzerinden uzaktanda yapabiliyoruz. Fakat modem ip adresi sürekli olarak değişiyor. Statik ip alma imkanım yok. Bazı kişiler statik ip almadan , bu sıkıntıyı çözmüşler. Nasıl yapabiliriz ?

    Bir hosting alarak modemin ip adresini orada bir sayfaya yüklemeyi ve onu uzaktan okumayı düşündüm böyle birşey mümkün olabilirmi ? mümkün ise nasıl yapabilirim?

    Bir yol gösterirseniz sevinirim. Cevaplarınız için şimdiden teşekkür eder iyi çalışmalar dilerim.

  32. Ömer Koman dedi ki:

    dinamik dns servislerine bağlanarak ip adresinize ulaşabiliyorsunuz bu servislerin amacı size bir domain altında sub domain açıyor ve o sub domaini yazdığınızda direk sizin sunucunuza ulaşmış oluyorsunuz.
    sitemizde daha once yazılmış bir yazı var ınceleyebılırsınız
    http://arduinoturkiye.com/arduino-ve-enc28j60-ethernet-modulu-uygulamalari-1-no-ip-com/

    bir diÄŸer benzer servis ise dyn.com dur ucretli veya ucretsiz olabiliyor siteleri inceleyebilirsiniz.

    kendi yontemınız de gecerli olabilir tabıkı

  33. akın dedi ki:

    ömer bey konuyla alakalı değil ancak size bir sorum olacak. pic16f877 ile şeri led kontrolü nasıl yapabilirim.Mesela karaşimşek yapmak istesem şerit ledde tek bir giriş olduğu için tüm ledleri kontrol edemiyorum bunun çözümü nedir.

    • Ömer Koman dedi ki:

      neopixel led şerit kullanmanız lazım ledlerin rengini istediğiniz gibi tek tek programlayabilirsiniz o üründe. kullanmak için pic ıle uyumlu kutuphane araştırmanız lazım yada arduino ıle çok zahmetsiz şekılde yapabilirsiniz.

  34. ahmet dedi ki:

    else if (c != ‘\r’) {

    ^

    exit status 1
    stray ‘\342’ in program

    Arkadaşlar siz bu kodları denemedenmi yayınlıyorsunuz? Bende bu hatayı veriyor. İnternetten neyi denesem arızalı bozuk çıkıyor. Denemeden kod yayınlamayın. 950 kişi hata alıyor 50 kişi de birşekilde çalışıyor diye iyi birşeyler yaptığınızı iddia edemezsiniz.

    • Ömer Koman dedi ki:

      verılen kodlar zaten arduıno nun sitesinden veya ide ustundekı example klasorundekı ethernet server ve client uygulamalarıdır oncelıkle oraya bakın kolay gelsin. sitede ozellıkle oncelıkle arduınonun ıcınde gelen veya sıtesındekı kodları yayınlanır kişisel kodlara biz de guvenmıyoruz

  35. Alim dedi ki:

    merhaba. arduino ile çiçek sulama projesi yaptım. internet üzerinde çiçeğin nem takibini yapmam gerekiyor. modemim yok. telefonumun ip sini kullanarak nem takibi yapabilir miyim? bilgim zayıf verileri bir araya getiremiyorum. amacım telefonumundan ya da başkası telefonundan telefonumun ip sini yazdığında ekranda nem değeri şu kadar vs. gibi bilgilerin olması. umarım yardımcı olursunuz ihtiyacım var

    • Ömer Koman dedi ki:

      veriye bir şekilde ulaşmalısınız. evde modem yoksa verileri nasıl dışarıdan ulaşılır olmasını sağlayacaksınız, etrafta bir wifi varsa oradan faydalanın yada vodem gibi bir ev içi wifi+3g,4g dağıtıcı alıp verileri transfer edin.

  36. erddi dedi ki:

    Merhaba; yukarıdaki yapıyı aşagıdaki yapıya uyarlamak mümkünmüdür ? mümkün ise yardımcı olursanız sevinirim.

    #include
    #define DEBUG true
    SoftwareSerial wifi(2,3); // RX, TX

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

    pinMode(6,OUTPUT);
    digitalWrite(6,HIGH);
    pinMode(7,OUTPUT);
    digitalWrite(7,HIGH);
    pinMode(8,OUTPUT);
    digitalWrite(8,HIGH);
    pinMode(9,OUTPUT);
    digitalWrite(9,HIGH);
    pinMode(10,OUTPUT);
    digitalWrite(10,HIGH);
    pinMode(11,OUTPUT);
    digitalWrite(11,HIGH);
    pinMode(12,OUTPUT);
    digitalWrite(12,HIGH);
    pinMode(13,OUTPUT);
    digitalWrite(13,HIGH);

    // Reset modul
    sendCommand(“AT+RST\r\n”,2000,DEBUG);
    // Konfigurasikan sebagai Akses poin
    sendCommand(“AT+CWMODE=3\r\n”,1000,DEBUG);
    // Sesuaikan dengan SSID dan Password
    sendCommand(“AT+CWJAP=\”192.168.1.1\”,\”21255354550\”\r\n”,7500,DEBUG);
    Serial.println(“ip adresi”);
    // Mendapatkan IP adress
    sendCommand(“AT+CIFSR\r\n”,1000,DEBUG);
    // Konfigurasikan untuk multiple connection
    sendCommand(“AT+CIPMUX=1\r\n”,1000,DEBUG);
    // Aktifkan server pada port 80
    sendCommand(“AT+CIPSERVER=1,80\r\n”,1000,DEBUG);
    Serial.println(“Sunucu Hazır!”);
    }

    void loop() {
    // Cek jika ESP mengirimkan pesan
    if(wifi.available()) {

    if(wifi.find(“+IPD,”)) {
    delay(1000);
    int connectionId = wifi.read()-48;
    wifi.find(“pin=”);
    int pinNumber = (wifi.read()-48)*10;
    pinNumber += (wifi.read()-48);

    int secondNumber = (wifi.read()-48);
    if(secondNumber>=0 && secondNumber millis())
    {
    while(wifi.available())
    {
    char c = wifi.read();
    response+=c;
    }
    }

    if(debug) {
    Serial.print(response);
    }
    return response;
    }

    • Ömer Koman dedi ki:

      merhaba forumda esp moduller ıcın hazır uygulama vıdeoları var orayı ıncelemenızı tavsiye ederım.

  37. Muhammed Talha ERTAN dedi ki:

    Merhaba. Bir robot projem var ve robottaki kameradan alınan görüntüyü eşzamanlı olarak bilgisayarda görüntülemek istiyorum. Nasıl bir sistem kullanmalıyım acaba? Teşekkürler.

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

*



Sosyal AÄŸlar