Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım... Görüleceği gibi ilk örneklerimizde çoğunlukla ASM üzerinde iken daha sonraları C üzerinde örnekler yer almaktadır. Hatta ilerleyen zamanlarda Arduino örneklerinin yer alması kaçınılmaz olacaktır.

LM1117-3V3 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
LM1117-3V3 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

1 Eylül 2020 Salı

ENC28J60 ve Arduino ile Cep Telefonu haberleşmesi

 


Bir önceki projede "ENC28J60 ve Arduino ile ethernet haberleşmesi" ile Arduino ve ENC28J60 üzerinden bilgisayar ile ethernet hablerleşmesi sağlandı. Bilgisayar üzerinden Arduino'ya bağlı iki led web sayfası etkileşimi ile yapılıp söndürüldü. (Buna ek bir röle de olabilirdi.)

Kablolu haberleşmeye ek olarak (LAN) özellikle cep telefonu ikincil haberleşmesi olan wifi kablosuz haberleşmesi işin içine girmektedir. Bilindiği gibi cep telefonlarında (veya tablet) LAN ethernet yer almamaktadır.

Not: wifi haberleşmesi oldukça yaygınlaştığı için cep telefonu, tablet ve dizüztü bilgisayarda standart donanım olarak yer almaktadır.

Projede ENC28J60 ve Arduino Uno ikilisi kullanarak cep telefonu üzerinden haberleşerek 6 adet LED yakılıp söndürülmesi üzerinde çalışılacaktır.

Ethernet

Ethernet kablo bağlantısı üzerine bağlantıyı tanımlamaktadır. RJ45 bağlantısı olarak tanımlamakta ise de, BNC, Fiberoptik , Power-line gibi kablolu ethernet bağlantı yöntemleri de vardır.

İş bir ağ ortamına girildiği zaman TCP/IP, UDP, sunucu, DHCP, gibi kavramlar işin içine karışmaktadır. Konu oldukça dallı budaklı hale gelir ki, başlı başına bir meslek/bilim dalı olduğu bilinir.

En az 4 kablo ile bağlantısı gerçekleştirilir.Bu 10MBit iletişimi gerçekleştirir. Eğer 8 kablo ile bağlantı yapılırsa, 100MBit ve 1Gbit iletişim hızına çıkabilir. Ama bu ethernet bağlantısının hızını tanımlar. Tabii ki her zaman için bağlantı hızını kablonun uçlarına bağlanmış olan donanımlar belirler. Sonuçta ENC28J60 ethernet bağlantı hızı, 10Mbit olduğu için tüm sistemin hızı 10MBit ile sınırlanmış olur.

Wifi



Haberleşme ortamı kablolu bağlantıdan kablosuz ortama taşındığında işin rengi biraz değişir. Telsiz (Marconi) icadından bu yana kablosuz yayınlarda gelişmeler wifi olarak tanımlanan haberleşme yöntemine kadar gelinmiştir. (Daha da ileri gidilmiş olsa da, konumuz wifi).

Resim 1: Bilindik wifi simgesi (kablosuz bağlantı)

Wifi ingilizce:Wireless Fidelity kelimelerinin (Türkçe kablosuz bağlantı alanı) kısatması olarak algılanabilir. Çeşitli ülkelere göre değişiklik gösterse de, 2.4GHZ ile 5.8 Ghz radyo frekansında veya yakın frekanslarda yayın alanını kapsar. (IEEE 802.11 protokolüne göre ve a,b,g,h,n,ac,ax standartlarına göre uyumluluğu vardır.)

Şifreleme yöntemleri ile güvenliği sağlanmaktadır. WEP, WPA ve WPA2 gibi şifreleme yöntemleri var olup, daha iyi şifreleme yöntemleri geliştirilmektedir. Bu önemlidir çünkü ortama yayılan elektromagnetik sinyallerin yetkisiz kişilerde izlenmesi veya teknik ifade ile "kırılması", verilerin güvenliği açısından sorun oluşturabilir.

Yine de Wifi ile aynı frekans aralığını kullanan bluetoot, mikrodalga fırın hatta wifi'nin kendisi,telsiz telefon gibi cihazlar wifi iletişimin sürekliliğinde kesintilere sebep olabilir.

Neyse ki şu an için bu konuda fazla bir şey yapılması gerekmiyor. Sorunları çözülmüş bir konu, çünkü Cep telefonu wifi bağlantısı doğrudan cep telefonu işletim sistemini ilgilendiren bir konu. Bizi ilgilendiren bölümü cep telefonu üzerine yükleyeceğimiz App (uygulama) ile ENC28J60 + Arduino çiftinin yazılımının uyumluluğu.

Modem

Bu kadar laf kalabalıklığının yanında asıl can alıcı nokta, modem'dir. Daha doğrusu üzerinde hem wifi modül hem de RJ45 (LAN) bağlantılarını barındıran modem cihazıdır.(modem özelliği zaten işin olmazsa olmazı.) Wifi bağlantısı Cep telefonu için kullanılırken, LAN bağlantısı da ENC28J60 + Arduino ikilisi için kullanılmaktadır.

Resim 2:ADSL modem olarak bilinen ethernet (RJ45) ve wifi özellikli.(doğrudan sabit telefon hattı üzerine bağlanarak kullanılabilir modem)

Modem ayarlarının nasıl yapılacağı ve cep telefonun nasıl bağlanacağı konusu kullanıcıya bırakılmaktadır. Çünkü bu konular kullanılacak modeme ve cep telefonuna göre değişiklik göstermektedır.

Resim 3:Uydunet (televizyon ve internet bağlantısının dağıtıldığı kablo hattı-sokakta fiber kablo, ev girişi koaksiyel kablo) modem. Wifi ve RJ45-ethernet bağlantısı bulunan modem. Resimde arkasındaki kablo bağlantı girişi görülmektedir.

Ayrıca burada verilen program örneği sadece android tabanlı cep telefonları için uygundur, diğer işletim sistemlerine uygun değildir. Yine de diğer işletim sistemleri için web tarayıcı üzerinden de deneme yapılması mümkündür.

Modem burada ethernet (LAN) ile wifi üzerinden bağlanan cihaz arasında bir köprü olarak çalışacaktır. Modem olarak çalışıyorsa, zaten o bağlantı içinde bir köprü olarak çalışmaktadır.Tabii ki bu işlemlerin toplamına router fonkiyonu sağlar. Modem internet'e bağlı olmasa bile kendi kapsamında bir ağ ortamı oluşturacaktır.

Modem diyerek işi basite indirgemek oldu, router özelliği olan bir modem demek daha doğru olacaktır. Gerçi üzerinde wifi ve LAN bağlantısı olan modemler; router özelliğini barındırmaktadır.

Cep telefonu açısından, cep telefonun wifi'sini açıp, wifi listesinden modemin ismi seçildiğinde, modemin wifi şifresini isteyecektir. Her şey tamam ise cep telefonu wifi üzerinden modeme bağlanacaktır. Cep telefonu modeme bağlama işin hazırlık aşamasıdır.

Resim 4:Modem üzerinde bağlantı yöntemleri. Telefon hattı haricindeki bağlantılar gösterilmektedir. Dizüstü bilgisayarın hem kablo ethernet, hem de kablosuz bağlantı mümkündür. Kullanma isteğine göre aynı anda sadece biri tercih edilmesi gerekir. (emülatör yazılımı kullanımı durumunda.)

Her ne kadar cep telefonu ismi geçse de, emülatör yazılımlar yardımı ile, cep telefonu programı bilgisayar üzerinde de çalıştırılması mümkündür.

Birden fazla ENC28J60 + Arduino çiftinin bağlanması mümkündür, ama her bir ENC28J60 + Arduino çiftinin Ip numarası (ve MAC adres) farklı olacağı için aynı cep telefonu uygulamasında değişiklik yapılması gerekir.

ENC28J60

Bu projede elbette ethernet bağlantısı ENC28J60 üzerinden yürütülüyor ki, "ENC28J60 ve Arduino ile ethernet haberleşmesi" projesinde ayrıntılı olarak görülebileceği gibi üreticinin web sitesinden datasheet (veri kağıtları) indirilip incelenebilir.

Kısaca özetlenirse; ENC28J60 3.3V ile çalışıyor, işlemciye SPI olarak bilinen bağlantı üzerinden bağlanır, ethernet bağlantısı içinde darbe trafosu bulunan RJ45 (8P8C) üzerinden sağlanır, ek bağlantı olarak CS (çip seçme) ucu işlemciye bağlanır. ENC28J60 çoğu bacağı 5V uyumlu ise de bazı bacaklar (MISO gibi) seviye çevirici veya tampon kullanımı iyi bir fikir olabilir.(Bu üretici tarafından yayınlanan veri kağıtlarında belirtilmiştir.)

Resim 5:ENC28J60 28pin DIL çipi.

Donanım olarak bir yere kadar işlevi yerine getirse de, iletişimi asıl yürüten yazılım ve özellikle Arduino kütüphaneler olmaktadır.

Şema

Proje de Arduino bölümünü ayrı tutarsak, geriye sadece ENC28J60 ve birkaç tane ayrık eleman ilavesi ile devreyi oluşturuyor. Devre birçok elemanı SMD olacak şekilde tasarlandı ki, Arduino üzerinde kullanılabilecek bir modül olsun. Çünkü PCB üretiminde, kendi imkanlarımızla yapılabilecek bir yapıda olması açısından tek yüzlü karta montaj uygun görüldü.

Kısaca devre üzerinden geçecek olursak; R4,R4,R5,R6 dirençleri (49.9 Ohm %1) hat uygunlaştırma dirençleridir.).R1, R2 220R dirençleri RJ45 konnektörü üzerindeki dirençlere akım sınırlama elemanı olarak iş görür. R3 (2K) direnci ENC28J60 için R bias olarak çalışır. R16 (22k) ENC28J60 RESET bacağı için pull_up direnci olarak çalışacaktır. Aynı zamanda devre ilk açıldığında resetleme işlemi için RC zaman sabiti olarak işlev görür. R15 (10k) direnci INT bacağına pull-up direnci olarak iş görür, çünkü ENC28J60 herhangi bir durum, örneğin başlama gibi durumlarda cevap vermemesi halinde işlemcinin kesmeye gitmemesi için int çıkışı garantiye alınmış olur. Burada PCB çiziminde yer almayan ama, şemada gösterilen R8..R13 (1K) direnç devrede test amacı ile devreye eklenmiştir. Şemada gösterilmeyip de, PCB üzerinde gösterilen R14 (0R)jumper olarak devreye monte edilmiştir.

C1 (10uF) kondansatörü ENC28J60 iç beslemesi için gerilim regülatörü filtre kondansatörüdür. Bu regülatör 3.3Voltdan 2.5Volt üretir. C3 (100uF) ve C14 (100nF) kondansatörler U2 (LM1117) giriş filtereleridir. C2 (10uF) ve C13 (100nF) kondansatörleri U2 (LM1117) çıkış filtreleridir. C11 ve C12 (18pF) kondansatörleri ENC28J60 entegresinin osilatör destek kondansatörleridir. Diğer tüm kondansatörler filtre amaçlı devre üzerinde bulunmaktadır.

U2 (LM1117-3V3) gerilim regülatörüdür ve 5Voltdan devre için gereken 3.3V beslemeyi üretir. U3 (74HC125) Arduino ile ENC28J60 arasındaki gerilim seviyesini uygulaştırma amacı ile kullanılmaktadır. U1 (ENC28J60) bu projenin üzerine kurulu olan elemandır ki, ethernet haberleşmesi ile ilgili tüm işlemleri ve Arduino ile ilgili ileştimi yürütür. Arduino ile ethernet hattı arasında köprü görevini yerine getirir.

TR1 (HR911105A) ENC28J60 ile ethernet hattı arasındaki bağlantı ve elektriksel yalıtımı yerine getirir. BB (ferrit beat) ethernet veya HR911105A üzerinden gelebilecek yüksek frekanslı sinyallerin beslemeye ulaşmasını engeller. LED1..LED6 bu devreye test amacı ile monte edilmiş elemanlardır.

Resim 6: Projenin devre şeması

Devre üzerinde M1 olarak gösterilen veya PCB üzerinde J2,J3,J4,J5 olarak gösterilen (sıra pinler) Arduino UNO veya benzeri özellikle SPI hatları sıra pinler üzerinde yer alan Arduino modellerinin kullanımına uygundur.

Y1 (25MHz) kristal devrenin çalışması için gereken frekansı üretir.

Montaj

Öncelikle pcb tek yüzlü olarak verilse de isteyen gerekli değişiklikleri yaparak çift yüzlü bastırabilir. Proje başlangıç aşamasında blog üzerinde nanino olarak paylaşılan proje ile kullanılmak üzere tasarlanmıştı. Daha sonra ufak tefek güncellemeler ile Arduino Uno üzerinde de kullanılabilecek hale getirildi.


Resim 7:PCB'nin üst eleman yüzü


Resim 8: PCB'nin alt yüzdeki bakır yolları.(üst yüzden görüldüğü şekildedir.)


Resim 9: PCB'nin alt yüzdeki elemanlar. (alt yüzden bakıldığında görüldüğü şekildedir.

Devre montajına öncelikle dip elemanların montajı ile başlanır, U1 istenirse entegre soketi kullanılmadan entegreler doğrudan PCB üzerine monte edilebilirse de, eğer entegre soketi kullanımı, yanan elemanların değiştirilmesi gibi birçok sorundan kurtaracaktır. Montajı sonuna sıra pin ve HR911105A montajının bırakılması iyi olur. SMD elemanlar malzeme listesinde 805 olarak belirtilse de, SMD eleman çizimleri 1206 kılıf monte edilebilecek şekilde yapılmıştır.
Resim 10: PCB'nin üst eleman yüzünün model görünümü.

Resim 11:PCB'nin alt eleman yüzünün model görünümü.

Resim 12: PCB'nin monteli halinin üstten ve alttan görünümü.



Devre montajında tek yüzlü tasarım nedeniyle, çizimde oluşturulmuş tel köprüler unutulmamalıdır. Ne yazık ki, sıra pinler PCB'nin bakır yollarının bulunduğu yüze monte edilmelidir.


Resim 13: Test için devreye bağlanan LED 'lerin montajı. SMD LED'leri bir pine lehimlemeye çalışmak iyi bir tecrübe olabiliyor. (SMD LED'ler PCB üzerindeki lehimleme alanları üzerine lehimlemek üzere üretilmiş ürünlerdir.)


 Resim 14: LED'lein ilk tasarlanan hali (solda) ve düzenlemeler yapıldıktan sonraki hali(sağda). Küçük boyutlu ve bacakları bulunan LED'ler bulunabilirse, pekala onlar da kullanılabilir.

Malzeme Listesi

ENC28J60 kartı için Malzeme Listesi

LM1117-3V3 TO220U2
74HC125 SOICU3
ENC28J60 dip28U1
50R 1/4W dipR4,R5,R6,R7
220R 1/4W dipR1,R2
2K 1/4W dipR3
22k 805 kılıfR16
10k 805 kılıfR15
0R 805 kılıfR14
1K 805 kılıfR8..R13
100nF 1206 kılıfC4,...C10,C13,C14
18p 1206 kılıfC11,C12
10uF/25VC1,C2
100uF/16VC3
LEDLED1...LED6
HR911105ATR1
1 adet 40'lı erkek sıra pinJ1..J4


İstenirse,  ENC28J60 (28'li dar) için entegre soketi kullanılabilir. Arduino UNO veya eşdeğeri geliştirme kartı ve ethernet bağlantısı için ethernet kablosu unutulmamalıdır. Arduino UNO için gerekli olan USB kablosunu söylenmesine bile gerek yok.

ENC28J60 projenin çalıştırılması

Şu an için test amacı ile Arduino dolayısı ile ENC28J60 kartının beslemesinin bilgisayardan sağlanacaktır. Besleme Arduino USB portuna bağlı USB kablosu üzerinden 5V olarak sağlanacaktır. İsteyen harici bir güç kaynağı veya taşınabilir cep telefon şarj aletlerini kullanabilir.
  1. Arduino üzerine ENC28J60 modülünü pinlerin tümünün birbirine girmesine dikkat ederek, takın
  2. USB kablosunu Arduino UNO USB girişine takın. (Kare şeklindeki giriş)
  3. Ethernet kablosunun ENC28J60 modülünü üzerindeki RJ45 girişine takın.
  4. Her şey tamam ise, Arduno UNO + ENC 28J60 derli toplu görünecektir
  5. Arduino UNO üzerine takılan USB kablosunun diğer ucuna ya bilgisayarın USB gişine veya CEP telefonu mobil güç kaynağına takın. Arduino'ya program yüklemek gerektiği zaman elbette USB konnektörü bilgisayarın USB portuna takılacaktır.
  6. Son olarak ENC28J60 modülündeki RJ45 konnektörüne takılan ethernet kablosunun diğer ucunu modeme takın.



Resim 15: Montajı tamamlanan ENC28J60 kartının test için yapılması gereken bağlantılar.

ENC28J60 modulu üzerindeki LED'leri test etmek için basıt bir kod verilmiştir. Bu kod LEDleri sıra ile yakıp söndürecektir. Bağlantısı verilen kodları bilgisayarınıza indirin. Eğer değişiklik yapmadı ise, belgelerim klasöründe yer alan Arduino klasörüne kopyalayın. Arduino IDE üzerinde kodunuzu açın ve Arduino UNO üzerine yükleyin.

/*22-08-2020
 * Arduino UNO
 * ENC28J60 ethernet kartı 
 * üzerindeki 6 LED'in testi
 * Sıra ile yanıp sönme
 */
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
const int LED6 = 8;


void setup() {
  // put your setup code here, to run once:
  pinMode (LED1, OUTPUT);
  pinMode (LED2, OUTPUT);
  pinMode (LED3, OUTPUT);
  pinMode (LED4, OUTPUT);
  pinMode (LED5, OUTPUT);
  pinMode (LED6, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED6, LOW);
  digitalWrite(LED1, HIGH);
  delay(200);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(200);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, HIGH);
  delay(200);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  delay(200);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, HIGH);
  delay(200);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  delay(200);
}





Programı Arduino UNO üzerine nasıl yükleneceğini bildiğiniz varsayılmaktadır. Program derlenip yüklendikten sonra sıra ile LER'ler yanıp söner. Bu ko sadece LED'lerin çalıştığı ve kısa devre olmadığının onayını verecektir.

İnternetten bağlantısı verilen programı indirin, Arduino IDE uygulamasına yükleyin açın ve Arduino UNO üzerine yükleyin. (ip nomarasını kendi ethernet sistemine uygun olduğundan emin olun.)


Resim 16: RJ45 konnektörü üzerindeki kablo bağlantı LED'i. Kırmızı daire ile işaretli turuncu LED.


Resim 17: Modem üzerindeki kablo bağlantı LED'i. Kırmızı daire ile işaretli olan.

Her şey tamam ise, Arduino UNO+ENC28J60 modülü çalışmaya başlayacak ve ethernete bağlanacaktır.Bunu modem üzerinden ve ENC28J60 modülü üzerinde yer alan RJ45 konnektörü üzerindeki LED'lerden izlenebilir.

Resim 18: Cep telefon görünümü. Hedef IP değeri girilmiş.Giriş yapmak için yazı alanına tıkla. Ekranın altın bir klavye belirecek. İstediğiniz ip değerini girin. Yalnızca ip doğruluğu testi yapılmaz.

Telefonunuza uygulamanızı indirin veya kopyalayın ve yükleyin.(google play üzerinden indirilmediği için telefon sistemi sizi uyarabilir).Cep telefonunuzu modemin kablosuz ağına dahil edin. (wifi bağlantısı) "ENC28J60_CEP" uygulamasını çalıştırın.Daha önce girilip kaydedilmesi ise, Hedef IP girin. (örnek olarak gelen .ino belgesindeki kayıtlı ip olarak 192.168.0.55 olarak girilebilir.)İsterseniz IP kaydet butonuna basarak kaydadin. Böylece bir sonraki uygulamanızı açışınızda, tekrar yazmanız gerekmez.

Resim 19: Cep telefon görünümü. Bir butonu basılır iken.

Artık tek yapılacak "YAN" yazan butonlardan birine basmak. Basılan butona göre ENC28J60 modülü üzerindeki uygun LED yanar. "YAN" yazan butona basıldığı zaman, "SÖN" yazı ile değişecektir. Doğrudan doğruya cihazdan bir geri besleme alınmadığı için, cep telefonu programı kapatılıp tekrar açıldığı zaman, tüm butonlar "YAN" olarak değer alır.

Resim 20: İlk buton basıldığında yana LED.


Resim 21: Tüm LED'ler yanarken. Arkaplanda yanan kırmızı LED Arduino UNO'ya aittir.

Cep Telefonu programı (Android)

Cep telefonu (veya tablet) programı "app inventor" ile yazıldı.(veya kodlandı) App inventor doğrudan web sayfası üzerinde çalışan yapıdır. Kodlaması sürükle bırak tekniği ile çalışmaktadır. Ayrıntılara girmeden, kodlama resimleri ve derlenmiş uygulama paylaşılacaktır. Hazırını kullanabilir veya kendiniz uygulamayı oluşturabilirsiniz.

App inventor sitesine üye olup, kendi uygulamanıza geliştirebilirsiniz. Oluşturduğunuz uygulamanızdan başka bir şeyi bilgisayarınıza bir şey indirmeniz gerekmez. Sadece internet bağlantısı gereklidir. Derlenen uygulama ister bilgisayara, isterse cep telefonuna indirilebilir.

Resim 22: App inventor çalışma sayfasından görünüm. Sol tarafta yer alan öğelerin isimleri sağ tarafta gösterilmektedir ve istenildiği gibi değişiklik yapılması mümkündür. Öğelerin özel isim verilmesi önemlidir, kodlama esnasında kullanacağınız öğelere atadığınız isimlerdir.
Resim 23: Uygulama telefonda ilk açıldığı anda, yapılması gereken adımları içermektedir.6 adet buton isminin "YAN" olarak atanması ve son olarak daha önce kaydedilmiş ise ip değerini okunup "ip_no" yazı alanına yazılmasını sağlar. Daha önce kaydedilmemiş ise boş bırakılır.

Resim 24: IP kaydet butonuna tıklandığı zaman yapılacak işlem adımlarını içermektedir. "Veri_hazirla" değişkenine http://192.168.0.1 değerini ata. "Buton_kaydet" tıklandığı zaman,"ip_no" yazı alanındaki değeri kaydet.

Resim 25: Her bir buton için, buton yazısı "YAN" ise , buton yazısını "SÖN" olarak değiştir, aksi durumda "YAN" olarak değiştir. (Bu buton tıklandığı fonksiyonundan çıkıldığı zaman yerine getirilir) Ve buton ile ilgili fonksiyonu çağır.

Resim 26: (Mor renkli) Herbir fonksiyon için,öncelikle ip değeri (ip_no yazı alanındaki) girilmiş ise yerine getirilecek şekilde."Veri_hazirla" değişkenine "http://" ata. "Veri_hazirla" değerine ip_no alanındaki ip değerini ekle.Bu noktada buton yazısı "SÖN" olarak görülecekse, "/?durum=L1_ON", buton yazısı "YAN" olarak görülecekse, "/?durum=L1_OFF" "Veri_hazirla" değişkenine eklenir. Web1.URL'ye "Veri_hazirla" değişkeni yüklenir ve Web1.Get fonksiyonu çağrılır. Arduino UNO+ ENC28J60 ikilisine veri gönderilmiş olur.

Projede her ne kadar cep telefonu ile diye belirtildi ise de, aynı ağa bağlı herhangi bir cihazdan web gezinme programının adres çubuğuna "http://192.168.0.55/?durum=L1_ON" veya "http://192.168.0.55/?durum=L1_OFF" yazılarak LED1 kontrol edilebilir.

örnek 192.168.0.55 için verilmiştir. Tabii bu sizin ip adresinize göre değişiklik gösterebilir. Aşağıda sözü edilen komut listesi ve sonuçları görlebilir.

Adres çubuğuna yazılanENC28J60 +Ardunio UNO üzerindeki çalışma şeklindeki
http://192.168.0.55/?durum=L1_ONLED1 yanar
http://192.168.0.55/?durum=L1_OFFLED1 söner
http://192.168.0.55/?durum=L2_ONLED2 yanar
http://192.168.0.55/?durum=L2_OFFLED2 söner
http://192.168.0.55/?durum=L3_ONLED3 yanar
http://192.168.0.55/?durum=L3_OFFLED3 söner
http://192.168.0.55/?durum=L4_ONLED4 yanar
http://192.168.0.55/?durum=L4_OFFLED4 söner
http://192.168.0.55/?durum=L5_ONLED5 yanar
http://192.168.0.55/?durum=L5_OFFLED5 söner
http://192.168.0.55/?durum=L6_ONLED6 yanar
http://192.168.0.55/?durum=L6_OFFLED6 söner


Android cep telefonu programı tabletler için kullanılabildiği gibi bir emülatör programı üzerinden (windows) bilgisayarda kullanılabilir. Yeter ki bilgisayar da ENC28J060 ile aynı ağa bağlı olsun.

Resim 26: Emülatör üzerinde çalışan cep telefonu uygulamasının görünümü. Aynı cep telefonundan kontrol ettiği gibi LED'ler butonlara uygun yakıp söndürülür.

Sonuç

Cep telefonu uygulaması dahil proje ile ilgili belgeleri adresinden indirebilirsiniz. Kütüphane ismi (EtherCard) wiz5500 veya wiz5100 ile aynı olduğu için karışıklığa yer vermemek adına kütüphane Arduino IDE belgesinin (.ino) bulunduğu klasör içinde yer almaktadır.



6 Ağustos 2020 Perşembe

ENC28J60 ve Arduino ile ethernet haberleşmesi





Bugüne kadar incelediğimiz projelerde, işlemciler arasında haberleşme içinde RS485 hariç birkaç metreden öteye gidebilen yoktu. Ama bazen işlemciler arasında haberleşme birkaç yüz metre, birkaç kilometre, belki gezegenler arasına kadar uzanmak gerektirebilir. Belirli bir mesafeden sonra (gezegenler arası) uygulama doğrudan kablosuz haberleşmeye geçer ki, şu an için üzerinde durmayı düşünmediğimiz konulara denk geliyor.

Projede ele alacağımız haberleşme de ise, kablolu bağlantı yapılarında kullanılan, hatta bilgisayarlar arasında bağlantı yöntemlerinden biri olan Ethernet bağlantısını kullanan ENC28J60 entegresi ile Arduino üzerinden bilgisayar ile bağlantı oluşturmaya çalışacağız.

Not: Öncelikle bu projede LAN olarak ifade edilen yerel ağ bağlantısı üzerinden anlatım olacaktır. Konu çok geniş ve ayrıntı gerektiren bir yapıya sahip olduğundan, daha geniş bağlantı olan WAN bağlantısı konu dışı bırakılacaktır.

İkinci olarak günümüz bilgisayarların kaynakları ile kıyas kabul etmeyen 8 bitlik bir işlemci üzerinden Ethernet bağlantısını gerçekleştirmeye çalışacağız. Bu nedenle Arduino işlemcisinin kapasitesi nedeni ile bazı sınırlamaların olacağı akıldan çıkarılmaması yerinde olacaktır. Ortaya çıkan açıkların bir bölümü ENC28J60 tarafından doldurulacaktır. Zaten durum böyle olmasa, bu projeyi gerçekleştirmek mümkün olmazdı.

Kartı tasarımına başlarken o zaman için internetta paylaşımı yapılmış olan "Low cost Ethernet shield with ENC28J60" projesi göz önüne alındı.

Yazılım ve kütüphanesi olarak de "http://www.lucadentella.it" örnek alındı. Program ve kütüphanede bazı değişiklik ve uyarlamalar yapıldı.
Ethernet

Ethernet deyimi, işin olanlar haricince RJ45 konnektör bağlantısını temsil eder. İşin temeli bu bağlantı kablosudur, ama daha derinlere inildiğinde böyle olmadığı görülebilir. (ikinden fazla bağlantı noktası için hub veya switch olarak adlandırılan cihazlara ihtiyaç duymaktadır). Şu anki tam durumu takip etmesem de daha önceki yıllarda bu bağlantı BNC bağlantı fişleri ile de gerçekleştirilebilmekte idi.

Ethernet; donanımdan yazılıma doğru değişen birçok katmandan oluşan bir bağlantı şeklidir. Temeli donanım ve bağlantıyı temsil ederken, üzerindeki yazılım katmanları, bağlantı şekli, bağlantı hızı ve hatta bağlantının yapısı (iletilen bilginin niteliği gibi) konuları kapsayabilmektedir.

TCP/IP

Hani Ethernet bu bağlantının donanım yönü olarak tanımladık ya, bu işin yazılım yönlerinden biri de TCP'dir. (Aktarma katmanı) Normalde bu haberleşmenin katmanlarından biridir. Bu yapıda özellikle haberleşmenin hata kontrolu ve verilerin sağlıklı iletimi ile sorumlu bir yapıdır. Örneğin bir resim gönderildi. Elbette bu resim paket olarak ifade edilen parçalar halinde gönderilir. Bu paketlerin bazı kaybolabilir veya fazladan paket de gelebilir. İşte bu paketlerin fazla geleni iptal edilirken, eksik gelen paketler kaynaktan tekrar talep edilir. Bu nedenle bu yapının farklı bir yaklaşımı olan UDP'ye göre yavaştır.

Not: UDP sürekli veri gönderimi gereken tv yayını veya görüntü aktarımı gibi haberleşmenin kesintisi durumunda sıkıntı oluşturan sistemlerde yaygın olarak kullanılır. Bu tip haberleşmede bilginin hedefe varıp varmadığı kontrol edilmez ve eksik olan bilgi tekrar talep edilmez. Kendine göre uygulama alanları olsa da, bu projede UDP kullanılmayacaktır.

Kısaca IP olayına da değinecek olursak; Ethernet ağı üzerine bağlı olan her bir cihazın bir ip adresi vardır. Bu 4 baytlık bir sayı grubudur. 2'den fazla bir cihaz söz konusu ise, bir ağ dağıtıcısı (switch veya hub) gibi gerekir ki, burada soldan ilk 3 baytın aynı olmasını gerektirirken, son bayt ağ üzerindeki cihazların farklı olmasını gerektirir. Eğer bir cihaz ip adresini kendisi istediği adresi alabiliyorsa, buna sabit ip denirken, cihazı ağ kontrol cihazı tarafından veriliyorsa (ki bu DHCP özelliği olması gerekir-DHCP server gibi) dinamik ip olarak isimlendirilir.

Not: Ip adresi bir noktada yazılımsal adrestir (statik veya dinamik), ama her bir Ethernet cihazın ikincil bir adresi daha vardır. Bu ikinci adres donanım adresi olarak bilinen (ortam erişim kontrolu) MAC adresi'dir. Kullandığımız ENC28J60 için bu da yazılım ile belirlenebilen 48 bitlik bir değerdir. 24 biti üretici kodunu temsil ederken, kalan 24 bit ürüne özel eşsiz bir kodu temsil eder. Orjinalde MAC adresi Ethernet aletinin ROM'unda yer alır.

Burada özetlenmek istenen konu oldukça dallı budaklı geniş bir konudur, kendini geliştirmek isteyen daha geniş araştırma yapması yerinde olacaktır.

Bu noktada bir karar vermemiz gerekiyor, ya statik ip kullanacağız ki ENC28J60 her bağlandığında aynı ip değerini alsın ve biz bağlanmak istediğimizde bu ip adresini kullanalım( sorunu ağ üzerinde ENC28J60 için kullanılmak istenen başka bir cihaz tarafından kullanıyorsa çakışma meydana gelebilir, o nedenle kullanılacak ip konusunda dikkatli olmak gerekir), ya da dinamik ip kullanacağız ve her seferinde farklı bir ip alma ihtimalini ortaya çıkaracak ve önce bağlantıdan ip değerini öğrenmemiz gerekecektir. Eğer Modem gibi veya DHCP özellikli bir cihazınız varsa, IP adresini ENC28J60 için ayırtabilirsiniz. Böylece ENC28J60 cihazını bağladınız zaman doğrudan ayrılmış olan IP adresini alacaktır.

ENC28J60

Sadece Ethernet haberleştirilmesi için özelleştirilmiş bir işlemci gözü ile bakabileceğimiz bu ürün Microchip firması tarafından üretilmiştir. ENC28J60 3.3V ile besleme gereksinimi vardır. Ama tasarımından kaynaklanan yapısı sayesinden işlemciye bağlanan bacakları 5V ile de çalışabilmekte. Bunun anlamı tabii ki 5V ile çalışan Arduino ile özel bir tampon kullanmadan doğrudan bağlanabileceği anlamını taşır. Yinede ENC28J60 ayrı bir 3.3V ile beslenmesi şart. Zaten tasarımda ayrı bir 3.3V regülatör entegresi eklenmiştir.

Şekil-1: ENC28J60 dip kılıfı

Gelelim işlemci yani Arduino ile bağlantısına; bu noktada bizi ilgilendiren asıl haberleşmenin yapıldığı SPI hattıdır. Bu iş için SPI hattının standart bağlantısına ek çip seçme ucudur. İki adet kesme ucu, daha özel uygulamalar oluşturmak için kullanımı mümkündür. Kesme uçları 5V ile kullanımı için 3.3->5V çevirici kullanımı iyi bir seçim olabilir.ENC28J60 için SPI bacakları SO,SI ve SCK olarak adlandırılmaktadır.

ENC28J60 üzerinde yer alan RESET ucu, adından da anlaşılacağı üzere donanımsal sıfırlamayı sağlamak üzere kullanılmaktadır. Özellikle ilk elektrik verildiğinde ENC28J60 registerlerinin ilk durumlarına almalarını sağlama üzere kullanılmaktadır. (Yani açılışta ENC28J60 entegresinin başlangıç değerlerini aldığını garanti altına alır) Kullanılacak uygulamalarda ENC28J60 cevap vermemesi durumunda çipin kilitlendiği düşünülüp donanımsal sıfırlama uygulamak birçok sorunda çözüm olacaktır.

Şekil-2: ENC28J60 blok şeması.

ENC28J60 25MHz kristal ve iki kondansatör ile çalışmaktadır. Entegre için gereken 25MHz saat sinyallerini üretmektedir. İstenirse ayrıca ENC28J60 üzerinde programlanabilin saat çıkışı da yer almaktadır. Örneğin bazı uygulamalarda gördüğüm işlemciye saat sinyali olarak uygulanabilmektedir.


Şekil-3: Resimde görülen trafo, RJ45'e ayrı olarak eklenen harici darbe trafosudur. Bu trafo modülü ENC28J60 ile RJ45 (8P8C) arasına bağlanır. Toroidler resimde açıkça görülmektedir.

Gelelim işin can alıcı noktasına; Ethernet bağlantıları. Öncelikle ENC28J60 ethernet bağlantıları doğrudan Ethernet hattına bağlanmaz. Onun yerine transformatörler kullanılır. Transformatörlerden kasıt 2 adet olması. Bir tanesi veri gönderme için diğeri veri alma hatları için. Güç taşıması söz konusu olmadığı için transformatör olarak tanımlanan küçük toroid nüveler üzerine sarılmış tellerdir. Bu bölümde hazır içinde trafoları bulunan RJ45 konnektörü kullanılabildiği gibi, trafosuz RJ45 konnektörü kullanılabilir ve ek trafo içiren modüller de kullanılabilir. ENC28J60 veri alma ve gönderme bacakları fark girişlidir ve 1:1 darbe trafosu ile sürülür. Tabii ki trafo bağlantı uçlarında 50 Ohm hat uygunlaştırma dirençleri bağlıdır.(ENC28J60 uçlarındaki)

Şekil-4: Kabaca ENC28J60 ile bir işlemcinin bağlantısı. Besleme gösterilmemiştir.

Not: Bu trafoların çeşitli yapılarda ve bağlantılarda olan modelleri vardır. Bu projede 10Mbps hızı yeterli olduğu için seçilmiş olan trafolu RJ45 yeterliydi. Daha yüksek hızlar için farklı model seçilmesi gerekecekti.

ENC28J60 incelendiğinde Rbias bacağının Ethernet trafosu bağlantılarındaki akımı sınırlamak için kullanıldığı görülür. Rbias bacağı ile GND arasında bağlı 2K gibi bir dirençtir. Bu direncin değeri, hem ENC28J60'ın çekeceği akımı belirler, hem de aynı zamanda Ethernet kablolarındaki haberleşmenin sağlıklı yürütülmesinden sorumludur.

TPOUT+ ve TPOUT- gönderme ile ilgili bölümün bağlantılarını temsil eder. Bu bölümün bağlantısı şekildeki gibidir. Burada bizi ilgilendiren 3.3V 'a bağlanan ferrit beat'dir. Her ne kadar kısa devre olarak çalışsa da, yüksek frekanslı parazitleri filtrelemek için gereklidir. Bu yüksek frekanslı parazitler hem harici hem de ENC28J60 tarafından üretilen parazitler olabilmektedir.

TPIN+ ve TPIN- bağlantıları veri alma ile ilgilidir. Tabii ki girişine bağlı hat uygunlaştırıcı dirençleri ve darbe trafosu bağlantılarını unutmamak kaydı ile.

Şekil-5: Resimde görülen LEDB bağlantı şeklinde,RESET işleminden sonra ENC28J60'ın hangi modda çalışacağını belirler. Bu modlar tabii ki ethernet iletişim hızını belirleyecektir.

Trafo üzerinde 2 adet LED bulunmaktadır. Bu LED'ler Ethernet kablosu bağlandığı ve ENC28J60 ve işlemcinin Ethernet aktivasyonun göstermek üzere çalışır. LED B bacağına bağlı LED'in bağlantı şekline göre ENC28J60'ın half-dublex veya full-dublex çalışmasını kontrol eder. Anlaşılacağı üzere şu an için proje half dubleks olarak çalışmaktadır.

Burada bir noktaya daha değinmek gerekirse, ENC28J60'ın bazı bölümleri enerji tasarrufu sağlamak amacı ile 2,5V ile çalışır. (Tabii ki ENC28J60'ın dahaz az ısınmasını sağlamak için) Neyse ki ek bir regülatör gerektirmeden kendi iç regülatörü üzerinden kendisi üretir. Tek yapılması gereken, Vcap bacağına 10uF bir kondansatör bağlamaktır.

Tabii ki her entegre devrenin olmazsa olması, besleme bacaklarının yanına takılması gereken filtre kondansatörleri. Bu konunun ne kadar önemli olduğunu ancak başınıza çalışmayan bir devre çıktığı zaman anlayabiliyorsunuz. Özellikle devrenin bir bölümü çalışırken, bir bölümü çalışmadığı zaman. Birçok entegre üreticisinin PCB hakkında yayınlarında önemle altını çizdikleri bir konudur.

Her ne kadar ENC28J60 bazı bacakları 5V toleransı var ise de, bazı bacakları 5Volt seviyesine ulaşmaması gerekir. Bu nedenle tampon veya seviye çevirici kullanmak yerinde olur.Projemizde bunun için 74HC125 entegresi kullanıldı.ENC28J60 entegresinin SO ve INT bacaklarına 74HC125 ile bağlantı sağlandı. Bu iki bacak ENC28J60 için çıkış bacağı konumundadır. <

Not:Microchip sitesinden ENC28J60 veri kağıdını indirip inceleyebilirsiniz. Tabii ki internet üzerinde daha ayrıntılı bilgi bulabilirsiniz.

Elbette ENC28J60 donanım olarak oldukça ayrıntılara sahiptir, bir noktadan sonra yazılım ile ilgili olarak iç registerlere ve devamında da TCP/IP ethernet haberleşme bilgilerine girmek gerekiyor. Neyse ki, bu noktada Arduino'nun ENC28J60 ile ilgili kütüphaleri yardımımıza yetişmektedir. Aksi durumda, böyle bir projeyi gerçekleştirmek için, oldukça bilgi edinmemiz gerekirdi.

74HC125

ENC28J60 kullanımında bazı bacaklarının +5V ile toleranslı olarak kullanılabileceğini belirtmiştik. Ama bazı bacakların bir tampona ihitiyaç duyar veya seviye çeviricisine ihtiyaç duyar.Bu konu ile ilgili olarak birkaç seçenek var. Bu noktada bizim seçimimiz, ENC28J60 veri kağıtlarında da önerilen 74HC125 oldu. HC serisi entergrelerin güzel yanı, 2V ile 6V aralığında çalışabilmesi olmaktadır. Her ne kadar, projede 74HC125 entegresine uygulanan besleme 5V olsa da.

Şekil-6: 74HC125 entegresinin bacakları ve tanımları. Sadece besleme bacakları gösterilmemiştir.

74HC125 entegresinin 4 adet kontrol edilebilen tampon bulunmaktadır. Bu tamponların kontrol uçları doğrudan GND 'ye bağlanarak tamponrların sürekli açık olarak çalışmaları sağlanmaktadır. Bu tasarımın sorunu eğer SPI hattı üzerinde ikinci bir SPI cihaz var ise, SPI haberleşmesinin karışmasıdır. (Özellikle Arduino MISO bacağının sürekli olarak aktif olmasından kaynaklanan bir durumdan dolayı). Ama SPI hattına tek sadece bu cihaz bağlı ise bir sorun oluşturmadan çalışacaktır. Birden fazla SPI cihaz kullanılacaksa, bu sorunun çözümü basit, MISO bacağı üzerindeki tamponun OE bacağını, ENC28J60'ın CE bacağına bağlamak. Böylece sadece SPI hattını aktifleştirme durumunda ilgili tampon aktiflenmiş olacaktır.

Şekil-6: 74HC125 entegresi.

ENC28J60'ın kesme bacağı, ENC28J60 seçilmese bile çalışması gerektiğinden, kesme bacağına bağlı tamponun seçme bacağının sürekli GND hattına bağlı olması sorun oluşturmaz.
GirişGirişÇıkış
OEAY
LHH
LLL
HXZ
74HC125 içindeki bir tamponun doğruluk tablosu.

LM1117-3V3

ENC28J60 entergresinin 3.3V ile beslenmesi gerektiği belirtilmişti.Ama Arduino üzerinde 3.3V besleme olduğu biliniyor, ama bizi ilgilendiren önemli konu ENC28J60 için gereken akım.Veri kağıtlarında ENC28J60 için (belirli şartlar altında) 250mA bir akım harcayabileceği belirtilmiş. Bunun üzerine diğer çevre birimleri de eklenirse, 300-400 harcayabileceği göz önüne alınması gerekebilir.
Şekil-7: LM1117-3V3 TO220 montajlı görünümü

Besleme devresi için özellikle 5V'dan 3.3V ele edebilmek için LM1117-3V3 regülatörü kullanına karar verildi.1.2V gerilim düşümü, 800mA maksimum akım çıkışı sağlaması ve özellikle 3 bacak bağlantısı ile kolay monte edilmesi seçilmesi için yeterliydi.
Şekil-8: LM1117-3V3 TO220 için bacak bağlantısı

HanRun HR911105A

Ethernet bağlantısının en önemli avantajlarından biri olarak izolasyon olduğu belirtilmişti.Bu amaçla RJ45 konnektörünün içinde bir transformatör dizisi (darbe transformatörleri) yer almaktadır. Ayrıca konnektör üzerinde 2 adet LED bulunmaktadır. Bu LED'ler fiziksel ethernet bağlantısı gerçekleştirildiğini ve veri alış-veriş işlevi olduğunu gösterecektir. Tabii ki bu LED kontrolleri ENC28J60 ile sağlanmaktadır.
Şekil-9: Hanrun HR911105A iç bağlantıları

Şekil-10: Resimde içinde trafosu bulunan RJ45 konnektörlerin altından ve üstünden resimlerini içermektedir. internette araştırma yaparsanız oldukça fazla çeşidi olduğunu görürsünüz. Bu konnektör doğrudan ENC28J60 entegresinin TPOUT+, TPOUT-, TPIN+ ve TPIN- bacaklarına bağlanabilir. (Tabii ki ek sonlandırma dirençlerini unutmadan). Ayrıca konnektörün hemen altında iki aktivasyon LED'i de görülebilir.

Özellike RJ45 konnektörünün PCB üzerine monte ediliyor olması tasarımda yer ve harcanan zamanı azaltmaktadır. Kabloya bağlanan RJ45 konnektörü zaten birbirini tamamlayan bir yapı ikili oluşturduğunda,sadece 8P8C sıkma pensesi (RJ45) ihtiyaç duyulmaktadır.

Şema
Proje de Arduino bölümünü ayrı tutulursa, geriye sadece ENC28J60 kalıyor ki, o da zaten birkaç tane ayrık eleman ilavesi ile devreyi oluşturuyor. Devreyi planlarken, kartı küçük tutabilmek için dirençler, RJ45 konnektörü, kristal haricindeki elemanları SMD olarak düşünüldü, ki tek yüzlü karta monte edebilsin.

Kısaca devre üzerinden geçecek olursak; R1,R2,R3,R4 dirençleri (50 Ohm) hat uygunlaştırma dirençleridir. (Bu değerde direnç bulunamaz ise, 49.9Ohm %1 değerli dirençler kullanılabilir).R5, R6 220R dirençleri RJ45 konnektörü üzerindeki dirençlere akım sınırlama elemanı olarak iş görür. R7 (2K) direnci ENC28J60 için R bias olarak çalışır. R8 (22k) ENC28J60 RESET bacağı için pull_up direnci olarak çalışacaktır. Aynı zamanda devre ilk açıldığında resetleme işlemi için RC zaman sabiti olarak işlev görür. R9 (10k) direnci INT bacağına pull-up direnci olarak iş görür, çünkü ENC28J60 herhangi bir durum, örneğin başlama gibi durumlarda cevap vermemesi halinde işlemcinin kesmeye gitmemesi için int çıkışı garantiye alınmış olur. Burada PCB çiziminde yer almayan ama, şemada gösterilen R11 ve R12 (1K) direnç devrede test amacı ile devreye eklenmiştir. Şemada gösterilmeyip de, PCB üzerinde gösterilen R10 (0R)jumper olarak devreye monte edilmiştir.

C3 (10uF) kondansatörü ENC28J60 iç beslemesi için gerilim regülatörü filtre kondansatörüdür. Bu regülatör 3.3Voltdan 2.5Volt üretir. C1 (100uF) ve C4 (100nF) kondansatörler U1 (LM1117) giriş filtereleridir. C2 (10uF) ve C5 (100nF) kondansatörleri U1 (LM1117) çıkış filtreleridir. C6 ve C7 (18pF) kondansatörleri ENC28J60 entegresinin osilatör destek kondansatörleridir. Diğer tüm kondansatörler filtre amaçlı devre üzerinde bulunmaktadır.

U1 (LM1117-3V3) gerilim regülatörüdür ve 5Voltdan devre için gereken 3.3V beslemeyi üretir. U2 (74HC125) Arduino ile ENC28J60 arasındaki gerilim seviyesini uygulaştırma amacı ile kullanılmaktadır. U3 (ENC28J60) bu projenin üzerine kurulu olan elemandır ki, ethernet haberleşmesi ile ilgili tüm işlemleri ve Arduino ile ilgili ileştimi yürütür. Arduino ile ethernet hattı arasında köprü görevini yerine getirir.

J1 (HR911105A) ENC28J60 ile ethernet hattı arasındaki bağlantı ve elektriksel yalıtımı yerine getirir. L1 (ferrit beat) ethernet veya HR911105A üzerinden gelebilecek yüksek frekanslı sinyallerin beslemeye ulaşmasını engeller. D1 ve D2 bu devreye ek olarak test amacı ile monte edilmiş iki elemandır.
Şekil-11: Projenin devre şeması
Şekil-12: Projenin devre şeması-Malzeme değerleri yazılı

Devre üzerinde M1 olarak gösterilen veya PCB üzerinde J2,J3,J4,J5 olarak gösterilen (sıra pinler) Arduino UNO veya benzeri özellikle SPI hatları sıra pinler üzerinde yer alan Arduino modellerinin kullanımına uygundur.

Y1 (25MHz) kristal devrenin çalışması için gereken frekansı üretir.

Montaj
Öncelikle pcb tek yüzlü olarak verilse de isteyen gerekli değişiklikleri yaparak çift yüzlü bastırabilir. Proje başlangıç aşamasında blog üzerinde nanino olarak paylaşılan proje ile kullanılmak üzere tasarlanmıştı. Daha sonra ufak tefek güncellemeler ile Arduino Uno üzerinde de kullanılabilecek hale getirildi.

Şekil-13: PCB'nin üst eleman yüzü

Şekil-14: PCB'nin alt yüzdeki bakır yolları.(üst yüzden görüldüğü şekildedir.)

Şekil-15: PCB'nin alt yüzdeki elemanlar. (alt yüzden bakıldığında görüldüğü şekildedir.

Devre montajına öncelikle dip elemanların montajı ile başlanır, U2 ve U3 istenirse entegre soketi kullanılmadan entegreler doğrudan PCB üzerine monte edilebilirse de, eğer entegre soketi kullanımı, yanan elemanların değiştirilmesi gibi birçok sorundan kurtaracaktır. Montajı sonuna sıra pin ve HR911105A montajının bırakılması iyi olur. SMD elemanlar malzeme listesinde 805 olarak belirtilse de, SMD eleman çizimleri 1206 kılıf monte edilebilecek şekilde yapılmıştır.
Şekil-16: PCB'nin üst eleman yüzünün  3boyutlu model görünümü.

Şekil-17: PCB'nin monteli halinin üstten ve alttan görünümü.

Devre montajında tek yüzlü tasarım nedeniyle, çizimde oluşturulmuş tel köprüler unutulmamalıdır. Ne yazık ki, sıra pinler PCB'nin bakır yollarının bulunduğu yüze monte edilmelidir.
Şekil-18: Test için devreye bağlanan LED ve dirençlerin montajı. Uzay montaj.

Malzeme Listesi

ENC28J60 kartı için Malzeme Listesi

LM1117-3V3U1
74HC125U2
ENC28J60U3
50R 1/4W dipR1,R2,R3,R4
220R 1/4W dipR5,R6
2K 1/4W dipR7
22k 805 kılıfR8
10k 805 kılıfR9
0R 805 kılıfR10
1K 1/4W dipR11,R12
100nF 1206 kılıfC4,C5,C8...C14
18p 1206 kılıfC6,C7
10uF/25VC2,C3
100uF/16VC1
LEDD1,D2
HR911105AJ1
1 adet 40'lı erkek sıra pinJ2..J5


İstenirse, 74HC125 (14'lü) ve ENC28J60 (28'li dar) için entegre soketi kullanılabilir. Arduino UNO veya eşdeğeri geliştirme kartı ve ethernet bağlantısı için ethernet kablosu unutulmamalıdır. Arduino UNO için gerekli olan USB kablosunu söylenmesine bile gerek yok.

ENC28J60 ve bilgisayar ethernet bağlantısı
Bu noktada önemli konulardan biride ethernet bağlantısıdır. Deneme için ENC28J60 kartını doğrudan bilgisayara mı, yoksa bir hub veya switch üzerinden mi bağlanacak? Bu seçim ENC28J60 çalışmasını etkilemese de, kullanılacak kablonun bağlantı şeklini değiştirecektir.

ENC28J60 ile bilgisayarın tek bir kablo ile ethernet kablosu ile bağlantısı.
Şekil-19: ENC28J60 ile bilgisayarın cros kablo üzerinden bağlantısı.

Görüldüğü üzere doğrudan bilgisayar ile ENC28J60 arasındaki bağlantı tek bir kablo ile gerçekleştirilir. Buradaki tek gereklilik bilgisayarın Ethernet bağlantı için RJ45 bağlantı portunun olmasıdır. Ne gibi ayarlarını yapılabileceği konusu işletim sistemlerine göre değişiklik gösterdiği için kullandığınız işletim sisteminin nasıl ayarlandığını internet üzerinden öğrenmeniz gerekebilir.
Şekil-20: Hub üzerinden ethernet bağlantısı. Tüm kablo uçlarına RJ45 konnektörü takılır/teknik ifade ile çakılır. Konnektör renk sıralaması kablo çiftlerine dikkat edildiği sürece ve kablonun her iki ucu aynı olduğu sürece sorun değildir. Resimde yeşil ve yeşil-beyaz kablolarının konumu dikkate alınmalıdır.

Bu bağlantı şeklinde ya çoklu portu olan HUB veya switch kullanılabildiği gibi hublar birbirlerinin portlarına bağlanarak portları artırılabilmektedir.

ENC28J60 projenin çalıştırılması

Şu an için test amacı ile Arduino dolayısı ile ENC28J60 kartının beslemesinin bilgisayardan sağlanacaktır. Besleme Arduino USB portuna bağlı USB kablosu üzerinden 5V olarak sağlanacaktır. İsteyen harici bir güç kaynağı veya taşınabilir cep telefon şarj aletlerini kullanabilir.

Örnek olarak cross kablo(çarparaz bağlantı) kullanılarak ethernet bağlantısı oluşturulacaktır.

Arduino üzerine ENC28J60 modülünü pinlerin tümünün birbirine girmesine dikkat ederek, takın. Arduino USB portuna ve bilgisayarın USB portuna USB kablosunu takın.

Şekil-21: Montajı tamamlanan ENC28J60 kartının test için yapılması gereken bağlantılar.

Bu noktada artık iş Arduino'ya gerekli yazılın yüklenip test edilmesi konusuna girmektedir. Bağlantısı verilen kodları bilgisayarınıza indirin. Eğer değişiklik yapmadı ise, belgelerim klasöründe yer alan Arduino klasörüne kopyalayın. Arduino IDE üzerinde kodunuzu açın ve Arduino UNO üzerine yükleyin.

Şekil-22: Ethernet bağlantı ışığı ethernet bağlantısının yapılmış olduğunu gösterir. Resimde mavi daire ile gösterilen. Bu LED donanımsal bağlantı ile ilgili bir LED'dir. Arduino üzerinde yazılım olmasa bile Ethernet kablosu bağlı oldukça yanar.
Şekil-23: Aktiflik LED'i ise ENC28J60 ile ethernet bilgili alışverişi esnasında yanar ve söner..Soluk renkte görülmesinin sebebi çok kısa zaman aralığında yanıp söndüğü için fotografta yakalama süresi ile ilgilidir.

RJ45 üzerindeki iki LED ethernet bağlantısının doğru yapılıp yapılmadığını ve cihazın sağlıklı çalıştığının izlenmesi için kullanılabilir.

Not: Windows üzerinden kullanımı anlatılacaktır. Anlatılan program ve yardımcı bilgiler kullanılan bilgisayarın yazılım ve işletim sistemine göre farklılık gösterebilir.

Öncelikle Arduino ve ENC28J60'ın bağlı olduğu bilgisayarın ethernet ayarlarına girerek;
Şekil-24: Bilgisayarın ethernet ayarları.

IP adresi ve varsayılan ağ geçidi Arduino'ya (ENC28J60) IP adresi ile ilişkilidir. Resimde de görüldüğü gibi ilk üç grup aynıdır. En sağdaki grup değişiklik gösterir. IP adresi ağ üzerindeki her cihaz için farklılık göstermesi zorunluluğu vardır. Eğer ağ üzerinde aynı ip adresi taşıyan cihazlar varsa, ip çakışması adı verilen olay olur ki, bu cihazlar haberleşme gerçekleştiremez. Statik ip kullanan ağlardı bu konuya dikkat etmek gereklidir.

Şekil-25: Chrome adres çubuğuna girilen ip adresi.

Eğer ip ayarlar tamamsa, ayarlar onaylanıp diyalog pencereleri kapatılır. Sonraki aşamada internete girmek için kullanılan örneğin Google Chrome gibi bir internet gezinme uygulaması açılır ve adres çubuğuna Arduino ( ENC28J60) yüklenen yazılımdaki IP adrdesi girilir.

192.168.0.50

olarak belirlenmiş değer girilir ( kod olarak verilen static byte myip[] = {192, 168, 0, 50};)  ve enter tuşuna basılır. Eğer Arduino yazılım veya ethernet bağlantı ayarlarında bir sorun yok ise, Arduino üzerinde yüklenmiş olan WEB sayfası ekranda görülür.

Web sayfası ENC28J60 üzerine takılan iki LED'i yakıp söndürmek ve durumunu göstermek için buton ve bilgi alanları içerir. Web sayfası üzerindeki Butonlara bastıkça ENC28J60 üzerindeki karşılık gelen LED yanıp söner.

Şekil-26: Web sayfası görünümleri.

Şekil-27: ENC28J60 üzerindeki LED'ler

Proje de ayrıca yapılan işlemlerin bilgisi Arduino üzerinden bilgisayara iletilir. Seri Port üzerinden alınan bilgi ayrıca takıp edilebilir. Tabii ki Arduino USB kablosu bilgisayara takılı olması kaydı ile.
Şekil-28: Arduino IDE Seri Port pencerisi görünümü.

Sonuç

Proje ile ilgili belgeleri adresinden indirilebilir. Kütüphane ismi (EtherCard) wiz5500 veya wiz5100 ile aynı olduğu için karışıklığa yer vermemek adına kütüphane Arduino IDE belgesinin bulunduğu klasör içinde yer almaktadır.

Kartın geliştirilmesi için LED'lerin bağlı olduğu pinlere ek devre ile röle bağlanması durumunda daha güçlü cihazların da sürülmesi mümkündür.

Aynı şekilde Arduino'nun boş bacaklarına ek atamalar ve Arduino uygulamasında yapılacak düzenlemelerle daha fazla pin kontrolu de mümkündür.

Eğer projede paylaşılan devreye kendi yapacak durumunuz yaksa, alternatifiniz resimdeki modüldür.Piyasadan edinebileceğiniz bir üründür. Kablolar ile bağlantılarının yapılması gerekmektedir.


Not:Proje üzerinde paylaşılan olan ticari ürünler; kendi firmalarının ait ürünlerdir.


Translate

Sayfalar

Etiketler

74C922 (1) 74HC125 (2) 74HC138 (1) 74HC20 (1) 74HC590 (1) 93C46 (5) adc (2) adım motor (1) Android (1) Arduino (5) Arduino UNO (5) at90S2313 (7) atmega128 (1) Atmega128 (1) atmega16 (5) atmega32 (4) Atmega328p (5) Atmega8 (44) attiny (1) attiny2313 (18) avr (71) barometre (1) bilgisayar ses (1) Biplor step motor (1) Bluetooth (2) bootloader (1) cep telefonu (1) CGRAM (1) CGROM (1) DHT11 (1) DS1302 (1) DS1307 (5) ds1820 (3) EDMCPR6YOY (1) ENC28J60 (3) ethernet (3) F2631XH-44 (1) fiber optik (2) floresan ekran (4) frekans (1) FT232BL (9) FT232RL (1) FTDI232 (3) GLCD (2) grafik LCD (8) HC06 (2) HH10D (2) HITCHACHI (1) higrometre (2) HP03S (1) HR911105A (1) i2c (1) isp (2) kapasitemetre (2) karakter LCD (5) kızılaltı (2) klavye (2) kondansatör (1) L2432 (1) L298 (1) LAN (1) LCD (22) LCD ekran (2) led (8) led ekran (14) led matris ekran (4) LM044L (1) LM1117-3V3 (2) LM35 (8) lm358 (1) LM75 (2) max3232 (1) MCP3550 (1) nea02017 (2) panasonic (1) PCF8574AT (2) PCM1602 (3) programlayıcı (1) RCM2048R (1) rs232 (16) rs485 (14) saat (14) sayıcı (1) Seri (3) Sharp (1) Step motor (1) şifreli kilit (2) T6963C (3) TC1602.TC2004 (1) termometre (13) tester (1) transistör (1) tuş takımı (2) tx179 (2) uf-150 (1) USB (14) voltmetre (1) wifi (1) YMC162 (2) zamanlayıcı (2)

İzleyiciler