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.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.
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.
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.)
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.
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.
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 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
LM1117-3V3 TO220 | U2 |
74HC125 SOIC | U3 |
ENC28J60 dip28 | U1 |
50R 1/4W dip | R4,R5,R6,R7 |
220R 1/4W dip | R1,R2 |
2K 1/4W dip | R3 |
22k 805 kılıf | R16 |
10k 805 kılıf | R15 |
0R 805 kılıf | R14 |
1K 805 kılıf | R8..R13 |
100nF 1206 kılıf | C4,...C10,C13,C14 |
18p 1206 kılıf | C11,C12 |
10uF/25V | C1,C2 |
100uF/16V | C3 |
LED | LED1...LED6 |
HR911105A | TR1 |
1 adet 40'lı erkek sıra pin | J1..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.- Arduino üzerine ENC28J60 modülünü pinlerin tümünün birbirine girmesine dikkat ederek, takın
- USB kablosunu Arduino UNO USB girişine takın. (Kare şeklindeki giriş)
- Ethernet kablosunun ENC28J60 modülünü üzerindeki RJ45 girişine takın.
- Her şey tamam ise, Arduno UNO + ENC 28J60 derli toplu görünecektir
- 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.
- Son olarak ENC28J60 modülündeki RJ45 konnektörüne takılan ethernet kablosunun diğer ucunu modeme takın.
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.)
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.
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.
ö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ılan | ENC28J60 +Ardunio UNO üzerindeki çalışma şeklindeki |
http://192.168.0.55/?durum=L1_ON | LED1 yanar |
http://192.168.0.55/?durum=L1_OFF | LED1 söner |
http://192.168.0.55/?durum=L2_ON | LED2 yanar |
http://192.168.0.55/?durum=L2_OFF | LED2 söner |
http://192.168.0.55/?durum=L3_ON | LED3 yanar |
http://192.168.0.55/?durum=L3_OFF | LED3 söner |
http://192.168.0.55/?durum=L4_ON | LED4 yanar |
http://192.168.0.55/?durum=L4_OFF | LED4 söner |
http://192.168.0.55/?durum=L5_ON | LED5 yanar |
http://192.168.0.55/?durum=L5_OFF | LED5 söner |
http://192.168.0.55/?durum=L6_ON | LED6 yanar |
http://192.168.0.55/?durum=L6_OFF | LED6 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.
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.