Şimdi Ara

arduino ethernet shield hakkında

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
19
Cevap
0
Favori
747
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • merhaba,
    arduino ile akıllı ev sistemleri gerçekleştirmeyi planlıyorum. gerekli kodları yazdım ve testlerini gerçekleştirdim. fakat aldığım Wiznet W5100 cihazı switch ile kullanamıyorum. kullandığım switch: ep-808sx-c
    ethernet shield modem ile direkt bağlanınca çalışmaktadır fakat switch den gelen ethernet ile bağlayınca çalışmıyor.
    şöyle bir konu ile karşılaştım:https://forum.arduino.cc/index.php?topic=385960.0
    fikri olan varsa yardımlarını bekliyorum.
    teşekkürler.



    < Bu mesaj bu kişi tarafından değiştirildi anaksimenes35 -- 1 Nisan 2020; 0:32:24 >



  • "normal ethernet kablosu ile bağlandığımda..." diyorsunuz, nereye bağlıyorsunuz?

    Ayrıca şu adımları kontrol edebilirsiniz.

    - Switchden gelen ethernet kablosuna bilgisayarınızı bağlayın, internete bağlanabiliyormusunuz? Bu sayede kablonun ve switchin sağlam/ayarlarının doğru olduğunu kontrol etmiş olursunuz.

    - Kodlarınızı bilmiyoruz DHCP kullanıyormusunuz? Yoksa Statik IP tanımlamasımı yaptınız? Networkünüzü bu açıdan yeniden gözden geçirebilirsiniz.
  • rafet32 kullanıcısına yanıt
    hocam şimdi şöyle açıklayım, evde kullandığım normal bir vdsl modem var. buna direkt bağladığımda problemsiz bir şekilde çalışıyor. fakat araya switch girince yani, modem -> ethernet kablo -> switch -> ethernet kablo ile bağlantı yaptığımda cihazı kullanamaz hale geliyor. açıkçası ip meselesine hiç dikkat etmedim, örnek kod olduğu için. kullandığım kod ise teleduino kütüphanesinin örnek kodu:


    /*
    Teleduino328EthernetClientProxy.ino - Teleduino328EthernetClientProxy example
    Version 328-0.6.9
    Nathan Kennedy 2009 - 2014
    http://www.teleduino.org

    This sketch is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    */

    #include <EEPROM.h>
    #include <Servo.h>
    #include <Wire.h>
    #include <Teleduino328.h>

    #include <SPI.h>
    #include <Ethernet.h>

    // User configurable variables
    byte useDhcp = true;
    byte useDns = true;
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress deviceIp(192, 168, 1, 100); // Only if useDhcp is false
    IPAddress gatewayIp(192, 168, 1, 1); // Only if useDhcp is false
    IPAddress dnsIp(192, 168, 1, 1); // Only if useDhcp is false
    IPAddress subnet(255, 255, 255, 0); // Only if useDhcp is false
    IPAddress serverIp(173, 230, 152, 173); // Only if useDns is false
    char serverName[] = "us01.proxy.teleduino.org"; // Only if useDns is true
    unsigned int serverPort = 5353; // Can be set to either 53 or 5353
    byte statusLedPin = 8;

    // User configurable key, this is used to authenticate with the proxy server
    // This is checked against the EEPROM on boot and written if necessary
    // The proxy server retreives the key from the EEPROM
    byte key[] = { 0xE3, 0x11, 0xD2, 0x41,
    0xE6, 0x5F, 0x6D, 0x6C,
    0x5B, 0x7A, 0x7C, 0x79,
    0xEB, 0x10, 0x64, 0xDE };
    // E311D241E65F6D6C5B7A7C79EB1064DE -> API KEY

    // Other required variables
    byte data[257];
    byte dataLength;
    byte hexStage;
    unsigned long lastInstruction = 0;
    unsigned long lastRefresh = 0;
    byte stage = 0;

    // Declare client object
    EthernetClient Client;

    void setup()
    {
    // Load presets
    Teleduino328.loadPresets();

    // Set status LED pin
    Teleduino328.setStatusLedPin(statusLedPin);

    Teleduino328.setStatusLed(1); // Initialisation
    // Check the EEPROM header and check to see if the key is correct
    // This is to ensure the key is not cleared from the EEPROM
    if(EEPROM.read(0) != '#')
    {
    EEPROM.write(0, '#');
    }
    if(EEPROM.read(1) != 0)
    {
    EEPROM.write(1, 0);
    }
    if(EEPROM.read(2) != '#')
    {
    EEPROM.write(2, '#');
    }
    if(EEPROM.read(160) != '#')
    {
    EEPROM.write(160, '#');
    }
    for(byte i = 0; i < 16; i++)
    {
    if(EEPROM.read(161 + i) != key[i])
    {
    EEPROM.write(161 + i, key[i]);
    }
    }
    if(EEPROM.read(177) != '#')
    {
    EEPROM.write(177, '#');
    }

    // Start network and attempt to connect to proxy server
    Teleduino328.setStatusLed(2); // Network configuration
    if(useDhcp)
    {
    if(!Ethernet.begin(mac))
    {
    Teleduino328.setStatusLed(2, false, 10000);
    Teleduino328.reset();
    }
    }
    else
    {
    Ethernet.begin(mac, deviceIp, dnsIp, gatewayIp, subnet);
    }
    delay(1000);

    Teleduino328.setStatusLed(3); // Connect to server
    if((useDns && !Client.connect(serverName, serverPort)) || (!useDns && !Client.connect(serverIp, serverPort)))
    {
    Teleduino328.setStatusLed(3, false, 10000);
    Teleduino328.reset();
    }
    lastInstruction = millis();
    }

    void loop()
    {
    if(Client.connected())
    {
    // What we need to do depends on which 'stage' we are at
    switch(stage)
    {
    case 0: // Wait for start byte
    if(Client.available())
    {
    char c = Client.read();
    if(c == '?')
    {
    stage++;
    }
    }
    break;
    case 1: // Reset variables
    dataLength = 0;
    hexStage = 0;
    stage++;
    break;
    case 2: // Instruction byte
    if(Client.available())
    {
    char c = Client.read();
    if(c == '?')
    {
    stage = 1;
    break;
    }
    else if(c == '\r' || c == '\n' || c == '.')
    {
    stage = 0;
    break;
    }
    if(!hexStage)
    {
    data[0] = Teleduino328.hexDecode(c) * 16;
    }
    else
    {
    data[0] += Teleduino328.hexDecode(c);
    }
    hexStage = !hexStage;
    if(!hexStage)
    {
    stage++;
    }
    }
    break;
    case 3: // Data length byte
    if(Client.available())
    {
    char c = Client.read();
    if(c == '?')
    {
    stage = 1;
    break;
    }
    else if(c == '\r' || c == '\n' || c == '.')
    {
    stage = 0;
    break;
    }
    if(!hexStage)
    {
    data[1] = Teleduino328.hexDecode(c) * 16;
    }
    else
    {
    data[1] += Teleduino328.hexDecode(c);
    }
    hexStage = !hexStage;
    if(!hexStage)
    {
    stage++;
    }
    }
    break;
    case 4: // Data
    if(Client.available())
    {
    char c = Client.read();
    if(c == '?')
    {
    stage = 1;
    break;
    }
    else if(c == '\r' || c == '\n' || c == '.')
    {
    if(dataLength == data[1])
    {
    stage++;
    break;
    }
    else
    {
    stage = 0;
    break;
    }
    }
    if(!hexStage)
    {
    data[2 + dataLength] = Teleduino328.hexDecode(c) * 16;
    }
    else
    {
    data[2 + dataLength] += Teleduino328.hexDecode(c);
    }
    hexStage = !hexStage;
    if(!hexStage)
    {
    dataLength++;
    }
    }
    break;
    case 5: // Execute instruction and return result
    Teleduino328.instruction(data);
    Client.write('!');
    for(int i = 0; i < data[1] + 2; i++)
    {
    Client.write(Teleduino328.hexEncode(data[i] / 16));
    Client.write(Teleduino328.hexEncode(data[i] % 16));
    }
    Client.write('\n');
    lastInstruction = millis();
    stage = 0;
    break;
    }
    }
    else
    {
    Teleduino328.setStatusLed(10);
    Teleduino328.reset();
    }

    // Has the instruction timeout been reached?
    if(millis() - lastInstruction > 30000)
    {
    Client.flush();
    Client.stop();
    Teleduino328.setStatusLed(9);
    Teleduino328.reset();
    }

    // Process refreshes every 50ms
    if(millis() - lastRefresh >= 50)
    {
    Teleduino328.pinTimers();
    Teleduino328.shiftRegisterTimers();
    Teleduino328.shiftRegisters();
    lastRefresh = millis();
    }

    // Check to see if reset has been requested
    Teleduino328.checkReset();
    }






  • Yukarıdaki mesajdaki şu maddeyi denediğinizde sonuç ne oldu

    - Switchden gelen ethernet kablosuna bilgisayarınızı bağlayın, internete bağlanabiliyormusunuz? Bu sayede kablonun ve switchin sağlam/ayarlarının doğru olduğunu kontrol etmiş olursunuz.

    Diğer bir ifade şekli ile şu denemeyi yapın. İnternete bağlanabiliyormusunuz?
    Laptop kullanıyorsanız kablosuz ağı kapatıp deneyin. Sizi yanıltmasın.
    modem-> ethernet kablo -> switch -> ethernet kablo -> Bilgisayar
  • rafet32 kullanıcısına yanıt
    Switch ile PC arasindaki bağlantıda bir sıkıntı yok daha önce kullandığım bir cihazdi zaten

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Sanırım aynı şeyden bahsetmiyoruz. Yukarıda bahsettiğim test işlemini başka kelimeler ile ifade etmeye çalışayım.

    Wiznet <-> ep-808sx-c <->router bağlantı yapısını kurduğunuzda çalışmadığını belirttiniz.

    Bu durumda Wiznet te taktığınız kablonun ucunu, wiznetten söküp kendi bilgisayarınıza bağlayın.

    PCniz<-> ep-808sx-c <->router

    Bilgisayarınız bu durumda internete bağlanabiliyormu?


    Bağlanıyorsa, bilgisayarın aldığı ip,netmask, gateway gibi ayarları kendi kodunuz içindeki değerler ile karşılaştırın. Sanırım kodunuz statik ip ye göre hazırlanmış. Kod içindeki ağ ayarlarının, sizin ev networkünüzdeki ip ve diğer ağ ayarları ile uyumlu olması gerekmektedir.



    < Bu mesaj bu kişi tarafından değiştirildi rafet32 -- 31 Mart 2020; 23:40:0 >
  • quote:

    Orijinalden alıntı: rafet32

    Sanırım aynı şeyden bahsetmiyoruz. Yukarıda bahsettiğim test işlemini başka kelimeler ile ifade etmeye çalışayım.

    Wiznet <-> ep-808sx-c <->router bağlantı yapısını kurduğunuzda çalışmadığını belirttiniz.

    Bu durumda Wiznet te taktığınız kablonun ucunu, wiznetten söküp kendi bilgisayarınıza bağlayın.

    PCniz<-> ep-808sx-c <->router

    Bilgisayarınız bu durumda internete bağlanabiliyormu?


    Bağlanıyorsa, bilgisayarın aldığı ip,netmask, gateway gibi ayarları kendi kodunuz içindeki değerler ile karşılaştırın. Sanırım kodunuz statik ip ye göre hazırlanmış. Kod içindeki ağ ayarlarının, sizin ev networkünüzdeki ip ve diğer ağ ayarları ile uyumlu olması gerekmektedir.
    hocam switch ile bağlantı sağladığımda bu cihazlar modemde gözükmektedir.

    arduino ethernet shield hakkında


    arduino ethernet shield hakkında


    eğerki ethernet shieldi direkt modeme bağlarsam, 192.168.1.1 de görmekteyim ve apiler çalışmaktadır.

    arduino ethernet shield hakkında



    < Bu mesaj bu kişi tarafından değiştirildi anaksimenes35 -- 1 Nisan 2020; 0:30:24 >




  • Kodlarınızda Wiznet de DHCP aktifmiş ve routerden IP almış buraya kadar sorun yok gibi görünüyor. Bu durumda kabloyu router ile aradaki switche takmanızda bir fark görünmüyor.
    Test işlemini nasıl yapıyorsunuz.

    Kodlarınızda ICMP servisi aktifse 192.168.1.35 (gönderdiğiniz son resimde dhcp sunucusu bu ip yi atamış, test yapmadan önce yeniden bakın) ping atmayı deneyin.
  • rafet32 kullanıcısına yanıt
    hocam testleri teleduino kütüphanesindeki apiler sayesinde yapıyorum.

    https://us01.proxy.teleduino.org/api/1.0/328.php?k=E311D241E65F6D6C5B7A7C79EB1064DE&r=getAllInputs


    wiznet direkt olarak modeme bağlıyken sinyal alıyorum, fakat switch ile bağlayınca sinyal alamıyorum. modem ana sayfasında dahi gözükmüyor.

    arduino ethernet shield hakkında




  • quote:

    Orijinalden alıntı: anaksimenes35

    hocam switch ile bağlantı sağladığımda bu cihazlar modemde gözükmektedir.





    eğerki ethernet shieldi direkt modeme bağlarsam, 192.168.1.1 de görmekteyim ve apiler çalışmaktadır.



    Alıntıları Göster
    Bu mesajınızda switch ile bağlatı yaptığınzda wiznetin modemden ip aldığını belirtmiştiniz.




  • quote:

    Orijinalden alıntı: rafet32

    Bu mesajınızda switch ile bağlatı yaptığınzda wiznetin modemden ip aldığını belirtmiştiniz.

    Alıntıları Göster
    Öyle birşey yazmadım hocam, ikinci cümlede acikladim. Sadece modeme bagladigimda sinyal alıyorum diye.



    < Bu mesaj bu kişi tarafından değiştirildi anaksimenes35 -- 1 Nisan 2020; 18:22:9 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Benim yukarıdaki mesajlarda birkaç sefer denemenizi tavsiye ettiğim hususun cevabını vermediniz.

    Denemenizi tavsiye ettiğim şey aslında çok basit bir işlem ve problemin nereden kaynaklandığını tespit etmek için yol gösterici olacaktır. Lütfen aşağıdaki adımları deneyip sonucu paylaşırmısınız. Modeme doğrudan bağladığınızda çalıştığını belirttiğinize göre sorunu network donanımı kısmında aramak lazım.

    Belki kablo ucundaki RJ45 konnektörde, veya kabloda kopukluk vardır, veya switchde kabloyu taktığınız portun içindeki pinler zarar görmüş olabilir. switch veya adaptörü problemli olabilir. switch ışıklarının yanması bazen yanıltıcı olabilir adaptörler zamanla çıkış değerlerini kaybedebilirler... vs.

    1- Modem ile switch i bir kablo ile bağlayın.
    2- Başka bir kablo ile switch kendi bilgisayarınıza bağlayın.
    3- Bilgisayarınızda kablosuz bağdaştırıcı varsa onu devre dışı bırakın.
    4- Bu durumda bilgisyarınızdan internete bağlanabiliyormusunuz?




  • quote:

    Orijinalden alıntı: rafet32

    Benim yukarıdaki mesajlarda birkaç sefer denemenizi tavsiye ettiğim hususun cevabını vermediniz.

    Denemenizi tavsiye ettiğim şey aslında çok basit bir işlem ve problemin nereden kaynaklandığını tespit etmek için yol gösterici olacaktır. Lütfen aşağıdaki adımları deneyip sonucu paylaşırmısınız. Modeme doğrudan bağladığınızda çalıştığını belirttiğinize göre sorunu network donanımı kısmında aramak lazım.

    Belki kablo ucundaki RJ45 konnektörde, veya kabloda kopukluk vardır, veya switchde kabloyu taktığınız portun içindeki pinler zarar görmüş olabilir. switch veya adaptörü problemli olabilir. switch ışıklarının yanması bazen yanıltıcı olabilir adaptörler zamanla çıkış değerlerini kaybedebilirler... vs.

    1- Modem ile switch i bir kablo ile bağlayın.
    2- Başka bir kablo ile switch kendi bilgisayarınıza bağlayın.
    3- Bilgisayarınızda kablosuz bağdaştırıcı varsa onu devre dışı bırakın.
    4- Bu durumda bilgisyarınızdan internete bağlanabiliyormusunuz?
    hocam ilk önce bana yardımcı olmak istediğiniz için teşekkür ederim. dediğiniz işlemlerin hepsini zaten daha önceden test etmiştim. herhangi bir kabloda sıkıntı yok, tekrar tekrar test ettim. switch üzerindeki ethernet portlarında da hiçbir sıkıntı yok. yukardaki resimlerde olan toshiba bilgisayar sorunsuz bir şekilde ethernet ile internete girmektedir. bu sorunu arduino forumuna da açtım. daha önceden yaptığım araştırmalar sonucunda, kullandığım ürün orjinal olmadığı için bazı ucuz çin malu boardlarda dirençlerin eksik takıldığı bilgisine ulaştım. ilk mesajda attığım konuda da bunu açıklıyordu zaten. çözüm olarak ise ethernet portunun önündeki 511 ohm luk direnç yerine 49-51 ohm luk direnç takılmasını öneriyorlar.

    bugün açtığım konu ve aldığım cevap:https://forum.arduino.cc/index.php?topic=674518.0

    problem ile ilgili örnek konu:https://forum.arduino.cc/index.php?topic=372779.0

    benimde benzer bir problemi yaşayan fakat çözüm bulamayan:https://arduino.stackexchange.com/questions/19335/w5100-ethernet-shield-dhcp-fails-with-a-switch




  • Gözden kaçan bir nokta olabilir diye yukarıdaki hususlara dikkatinizi çekmek istedim. Siz denediğiniz durumları yazmadığınızda bizlerin bunları bilmesi maalesef imkansız.

    İlave bir katkı: Ethernet TX ve RX hatları bobin kısmından sonra 50ohm luk empedans ile sonlandırılırlar. Sizin verdiğiniz 49-51 ohm arası değerlerde iş görecektir. Aşağıdaki resmi referans alıp elinizdeki kartı kontrol etmenizde fayda var.

    Kırmızı dikdörtgen içine alınan 4 adet 49,9ohm luk 4 direnç yerine devrenizde 511 ohm direnç varsa değiştirmeniz uygun olacaktır.

    arduino ethernet shield hakkında




  • quote:

    Orijinalden alıntı: rafet32

    Gözden kaçan bir nokta olabilir diye yukarıdaki hususlara dikkatinizi çekmek istedim. Siz denediğiniz durumları yazmadığınızda bizlerin bunları bilmesi maalesef imkansız.

    İlave bir katkı: Ethernet TX ve RX hatları bobin kısmından sonra 50ohm luk empedans ile sonlandırılırlar. Sizin verdiğiniz 49-51 ohm arası değerlerde iş görecektir. Aşağıdaki resmi referans alıp elinizdeki kartı kontrol etmenizde fayda var.

    Kırmızı dikdörtgen içine alınan 4 adet 49,9ohm luk 4 direnç yerine devrenizde 511 ohm direnç varsa değiştirmeniz uygun olacaktır.

    hocam bunu yapan birkaç tane video buldum, örnek videoda 2 tane 100R direnç ile işi çözmüş. bende aynısını yapsam sorunum çözülür herhalde diye düşünüyorum. teşekkürler.


    edit: farklı bir kaynaktada 2 tane direnç ile çözüldüğünü anlatmış:https://arduinodiy.wordpress.com/2017/04/12/the-w5100-bug/



    < Bu mesaj bu kişi tarafından değiştirildi anaksimenes35 -- 2 Nisan 2020; 0:26:21 >




  • Evet 50ohm elinizde yoksa 2 adet 100ohm direnci paralel bağlayarak 50ohm elde edebilirsiniz.

    Bu durumda 4 direnç değiştireceğiniz için 8 adet 100ohm dirence sahip olmanız gerekir.
  • quote:

    Orijinalden alıntı: rafet32

    Evet 50ohm elinizde yoksa 2 adet 100ohm direnci paralel bağlayarak 50ohm elde edebilirsiniz.

    Bu durumda 4 direnç değiştireceğiniz için 8 adet 100ohm dirence sahip olmanız gerekir.
    merhaba hocam iyi günler,
    bahsettiğimiz 2x100 ohm direnç ile bağlama işlemini yaptım. fakat herhangi bir değişiklik olmadı. sizi bilgilendirmek istedim. yazılımsal olarak bir değişikliğe gitmeye karar verdim. ne yapabilirim diye araştırmaya başladım.
    teşekkürler.
  • arkadaşlar sorunu çözdüm, fakat gün geçmiyor ki klon ethernet shield'da farklı problemler gün yüzüne çıkmasın. eğerki ethernet shield'a direkt enerji verip kullanmaya çalışırsanız içerisindeki programladığımız döngü çalışmamaktadır. bunun için reset butonuna basmak zorunda kalıyorum. bu sorunu da çözmek için dakika da bir reset interrupt'u yaptırmaya karar verdim. daha farklı bir çözümü olan varsa yorumlarınızı bekliyorum. teşekkürler.

    güncelleme: çözüm olarak 100nF kapasitör önermişler, bakalım daha ne problemler göreceğiz.




    < Bu mesaj bu kişi tarafından değiştirildi anaksimenes35 -- 11 Nisan 2020; 15:38:34 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.