Arduino ve ENC28J60 Ethernet Modülü Uygulamaları-3: WebServer
İsmail // 4 Kasım 2012 // 134 yorum // kategori: Arduino Eklentileri(Shield), Arduino ProjeleriUzun 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:
Etiketler: 74HC595 > arduino > Arduino Ethernet > Arduino Ethernet Modülü > Arduino ile Akıllı Ev Sistemi > Arduino ile Web Server Uygulaması > arduino ile web server yapımı > Arduino ile Webserver Yapımı > Arduino İnternet Üzerinden Kontrol > Arduino No-ip Servisi > Arduino Röle Devresi > Arduino Shift Register > Arduino ve 74HC595 > Arduino ve ENC28J60 > Arduino ve No-ip.com > Arduino ve Shift Register > Arduino ve Webserver > arduino web > Arduino Web Kontrol > arduino web server > Arduino Webserver > Arduino Webserver Uygulaması > Arduino Yerel Ağ Üzerinden Kontrol > ENC28J60 > ENC28J60 Ethernet Module > ENC28J60 Ethernet Modülü > ENC28J60 Webserver > ENC28J60 Webserver Uygulaması
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.
ENC28J60 ile yapılan uygulamaları w5100 ile de yapabilir miyiz ?
TeÅŸekkürler beklediÄŸim bir uygulamaydı…
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
BaudRate
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?
İ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..
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.
http://arduinoturkiye.com/bardagin-yarisi-dolu-yada-pwm/#comment-1592
Kolay gelsin İsmail bey. Webserver ile no-ip adresimizi nasıl birleştirebiliriz. Yardımcı olursanız sevinirim. Teşekkürler
Ä°yi çalışmalar…
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.
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.
Ä°smail Bey merhaba,
konu ile alakalı farklı bir hususta size nasıl ulaşabilirim.
Saygılar
İ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
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.
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
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?
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.
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?
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
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());
}
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.
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ı.
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…
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.
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
Hocam teşekkürler demek o kadar uğraş boşuna yapmışız.Hemen bir cross kablo yapıp deneyeceğim.
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);
}
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
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
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.
cok tesekurler, bir deneyecegim
ö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)
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);
}
}
#include !!! ilk sira gecmemis ikisinde de ayni !!!!
#include den sonra
anlayamadigim ilk sirada tirnak icerisinde (Stepper nokta h) var, yoruma gecmiyor
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.
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
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
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
Resimler için Progmem değerlerini nasıl oluşturuyoruz yada nasıl çevirebiliriz??
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…
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
sorun halledildi.
teşekkürler
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
sitemizdeki yazılara bakmadan direk soruyosun muhterem http://arduinoturkiye.com/arduino-ve-enc28j60-ethernet-modulu-uygulamalari-1-no-ip-com/
zaten bu uygulamaya bakarak no-ip dedim.burda gösterilenleri yaptım ama olmadı.bağlantı sağlayamadım benim ethernet shield enc28j60 gibi değil bende o yüzden bağlantı sağlayamadım diye buraya yazdım
ethernet kartınız neyse onun sitesinde örnek uygulamalar vardır önce unları bir deneyin tcp/ip öğrenince no-ip yi denersin
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.
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.
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 .
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..
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??
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.
https://xively.com/ şuradan girip kayıt oluyorsun kontrol verilerini bu siteye online olarak atıyorsun sonuçları grafik olarak görüyorsun.
database e veri yükleme konusunda bana yardımcı olabilirmisiniz acaba..
yardımcı olamam şu örneği inceleyin derim http://www.instructables.com/id/Save-data-of-temperature-and-humidity-on-MySQL-wit/?ALLSTEPS
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
ş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.
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.
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..
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.
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..
ÅŸurada geniÅŸ bilgi var http://arduino.cc/en/Guide/ArduinoEthernetShield
ÅŸurada server http://bildr.org/2011/06/arduino-ethernet-pin-control/
ÅŸurada client http://bildr.org/2011/06/arduino-ethernet-client/
Ç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..
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.
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.
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.
Sorun çözülmüştür.
arduino unodan anlıyor musunuz
Anlarız biraz ama soruları lütfen forumda soralım!
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.
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.
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
foruma gelin yazın fikir veren çıkar.
sitemizdeki temel konular ÅŸunlar
http://arduinoturkiye.com/arduino-temel-baglantilar-arduino-basic-connections/
http://arduinoturkiye.com/arduino-ogrenirken-yol-haritasi-1/
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
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
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?
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
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
Ben bunu ürün satın alabilirsiniz adresini istiyorum?
lütfen bana yardım et
Benim adresi (ANKARA-ÇANKAYA)
lütfen ticari işlerinizi başka yerde yapın. burası bilgi paylaşım yeri ticaret için başka kapıya.
???????
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);
}
}
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.
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.
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
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
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)
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.
php bir web sitem var bunun üzerindende arduinomu kontrol etmem mümkünmü
şö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.
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
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.
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.
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
Proteusda çizilmiş devreleride paylaşabilir misiniz?
forumdaproteusla uÄŸraÅŸanlar var oradan sorabilirsin…
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ÅŸ.
foruma gelin bu konu konuÅŸulmuÅŸtu. yaptığınız örnek kodu da foruma koyun bakalım…
Ç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.
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.
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
hocam arduinodan almış oldugumuz analog verileri internet üzerinden grafiğini çizdirmek istiyoruz.bununla ilgili bize yol gösterebilirmisiniz? saygılar.
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/
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
ö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
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
iyi günler ben arduino ile step motor devir yönü ve hız kontrolü yapıcam ır vericiler ile yardımcı olabilirmisiniz.
yazının konusu dışında bır baÅŸka konu açmayalım foruma gelin…
güzel çalışma olmuş elinize saglk.ardiuno usb ile bilgisayara bağlı olmadan server a bağlanabilir mi
çalışır. usb sadece voltaj vermek için ve kontrol amaçlı çıktıları izlemek için kullanılabiliyor.
‘prog_char’ does not name a type diye bir uyarı alıyorum çözümü nedir ?
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.
ö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.
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.
uslup ve davraniş tarzınızdan dolayı teşekür ederim ;;;;?
her yolu dendedim fakat bir türlü web sayfası karşıma gelmiyor nedir sıkıntı
ornek kodunuzu foruma koyun ne hatası alıyorsunuz çalışırken onu da belirtin.
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.
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.
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 ?
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.
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 ?
bu konunun arduino ıle alakası yok ama aynı lokasyondakı kullanılmayan bır ip olması lazım.
Merhaba iyi çalışmalar dilerim herkese.Bu uygulamayı yapmaya çalışıyorum.Yerel ip adresini okuyabildim ve devremi kurdum ancak,led ile uygulama dosyasını derleyemedim.Hata mesajım aşağıdaki şekilde.Anladığım kadarıyla karakter tanımlamak için yazdığımız prog_char komutunu tanımıyor.Bu sorunu nasıl aşabilirim?Yardımcı olabilir misiniz? ;
”
Arduino:1.6.9 (Windows Vista), Kart:”Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”
arduinoturkiyecom_webserver_ornek_program:16: error: ‘prog_char’ does not name a type
PROGMEM prog_char kapali[]= {
^
arduinoturkiyecom_webserver_ornek_program:36: error: ‘prog_char’ does not name a type
PROGMEM prog_char acik[]= {
^
C:\Users\K.Kaan KOSEOGLU\Desktop\arduinoturkiyecom_webserver_ornek_program\arduinoturkiyecom_webserver_ornek_program.ino: In function ‘void loop()’:
arduinoturkiyecom_webserver_ornek_program:115: error: ‘kapali’ was not declared in this scope
send_png_image(kapali, sizeof(kapali));
^
arduinoturkiyecom_webserver_ornek_program:117: 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.
“
progmem hatalarının çözümü yorumlarda var bu sayfadakı yorumları gözden gecirin.
Selamlar biz şu anda internet üzerinden led ekrana yazı yazdırmak istiyoruz ama bir türlü olmuyor lütfen yardımcı olun!!
foruma gelin; ama nasıl yaptıgınızı ve olmayan kısmını anlatın once. ınternete nasıl çıkacaksınız wıfı mı ethernet mi? nasıl bir led ekran kullanıyorsunuz gibi konularıda yazın.
Konunun açılış tarihi çok eski biliyorum ama yazdım edeceğinizi düşünerek , öncelikle merhaba bnim yapmak istediğim proje aruinoya buttonlar bağlicam ve bu butonlara tıklayınca kurulan sidedeki birtakım verileri değiştiricek örneğin bit yazıyı ve bu yazıya bnim bilgisayardan kodladığım .exe uzantılı uygulama okuyabilecek . Yani ortada bir site olacak aruino oraya veri yollicak ve programda bunu çekicek . Eğer arduino ile veri yollamayı yapabilirsem program ile o bilgiyi okutabilirim diye düşünüyorum . Böyle bir şey yapmam mümkünmüdür . Yardımcı olursanız sevinirim . Şimdiden teşekkürler .
10 adet odaya konulacak 10 adet ısı sensörünün yerel ethernet üzerinden tek bir mönitörden izleyebileceğim bir proje arıyorum.yardımcı olabilirmisiniz.
sitemizde dht11 sıcaklık sensoru orneği var buradaki webclient ile okudugunuz sıcaklıgı yollayacaksınız.