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

Paylaş
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 is 0.06

        Analog input is 0.7?

        Analog input is 0.7?

        Analog input is 0.7?

        Analog input is 0.7?

        Analog input is 0.7?

        Analog input 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**

 

Devamını oku

Project Aslan, Arduino DUE Kullanan Bir Robot İşaret Dili Çevirmeni

Project Aslan, Arduino DUE Kullanan Bir Robot İşaret Dili Çevirmeni

Genellikle robotikleri endüstriyel veya araştırma alanlarına uygulandığı zaman görüyoruz, ancak günlük yaşamda da yardımcı olabilecekleri çok yol var: Örneğin, görme engelli insanlar için kişisel rehber görevi gören mutfak botu, engellilerin yemek yapmasına yardımcı olabilir. Veya – ve bu gerçek – işaret dili çevirmeni işlevi gören robot kolu. Sınıflarda, mahkemelerde ve evde, bu

Arduino Turkiye tarafından
Arduino DUE ile Yaşayabileceğiniz Sorunların Çözümleri

Arduino DUE ile Yaşayabileceğiniz Sorunların Çözümleri

Elinizden hatırı sayılır miktarda Arduino DUE geçtiyse (veya sadece şanssız gününüzdeyseniz), düzgün çalışmayan en az bir tane cihazla karşılaşma olasılığınız yüksek. Bunun için her zaman cihazı çöpe atmanız gerekmeyebilir. Birçok Arduino DUE sorununu çözmek için çeşitli yöntemler var. Diyelim ki Arduino DUE ile çalışmaya başlayacaksınız. Bunun için Arduino’yu açtınız

Arduino Turkiye tarafından
STM32 Mikro Denetleyiciler Arduino

STM32 Mikro Denetleyiciler Arduino Dünyasında Ne Anlama Geliyor?

Arduino ile tanışanlar genellikle uzun bir yolun başlangıcında oluyor. Çünkü Arduino dünyası vazgeçmesi zor maceralarla dolu. Arduino’yu tanıdıkça bu heyecanınız da artacak. Bu nedenle Arduino dünyasıyla sizi buluşturmak için biz de heyecan duyuyoruz. Çok ucuza elde edebileceğiniz Arduino kiti ve ihtiyaç duyacağınız diğer malzemeler uzun soluklu projeler için yeterli

Arduino Turkiye tarafından