Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
17
Cevap
0
Tıklama
0
Öne Çıkarma
arduino ethernet shield hakkında

G
gokhyildiz Konu Sahibi
2 ay (2115 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 gokhyildiz -- 1 Nisan 2020; 0:32:24 >


R
rafet32
2 ay (936 mesaj)
"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.


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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();
}






Bu mesajda bahsedilenler: @rafet32

R
rafet32
2 ay (936 mesaj)
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


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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ı >


Bu mesajda bahsedilenler: @rafet32

R
rafet32
2 ay (936 mesaj)
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 >
Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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.

< Resime gitmek için tıklayın >

< Resime gitmek için tıklayın >

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

< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi gokhyildiz -- 1 Nisan 2020; 0:30:24 >
Bu mesaja 1 cevap geldi.

R
rafet32
2 ay (936 mesaj)
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.


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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.

< Resime gitmek için tıklayın >




Bu mesajda bahsedilenler: @rafet32

R
rafet32
2 ay (936 mesaj)
quote:

Orijinalden alıntı: gokhyildiz

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

< Resime gitmek için tıklayın >

< Resime gitmek için tıklayın >

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

< Resime gitmek için tıklayın >

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


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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 gokhyildiz -- 1 Nisan 2020; 18:22:9 >


R
rafet32
2 ay (936 mesaj)
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?


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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




R
rafet32
2 ay (936 mesaj)
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.

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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.

< Resime gitmek için tıklayın >
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.
Videoyu izlemek için tıklayınız

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 gokhyildiz -- 2 Nisan 2020; 0:26:21 >


R
rafet32
2 ay (936 mesaj)
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.


Bu mesaja 1 cevap geldi.

G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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.




G
gokhyildiz Konu Sahibi
2 ay (2115 mesaj)
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.

Videoyu izlemek için tıklayınız





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

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.