Upload
akdeniz
View
0
Download
0
Embed Size (px)
Citation preview
BİTİRME ÇALIŞMASI
İnternet Ortamında Elektrik Enerjisinin
Analizi ve Takibi
Bilgihan ÇELEBİ
Hüseyin AYCAN
Danışman
Doç. Dr. Şükrü ÖZEN
Haziran, 2014
Antalya
T.C.
AKDENİZ ÜNİVERSİTESİ
Elektrik-Elektronik Mühendisliği Bölümü
Bu çalışma …. / …. / 2014 tarihinde aşağıdaki jüri tarafından Elektrik-Elektronik
Mühendisliği Bölümü’nde Lisans Bitirme Projesi olarak kabul edilmiştir.
Bitirme Projesi Jürisi
Danışman Adı
Üniversite
Akdeniz Üniversitesi
Fakülte
Mühendislik Fakültesi
Jüri Üyesi
Üniversite
Akdeniz Üniversitesi
Fakülte
Mühendislik Fakültesi
Jüri Üyesi
Üniversite
Akdeniz Üniversitesi
Fakülte
Mühendislik Fakültesi
I
ÖZET
Günümüzde telefonlarımızın bataryaları, arabalarımızın aküleri ve evimizde bulunan
tüm cihazların ihtiyaç duyduğu elektrik enerjisinin tüketiminden başlayarak üretimine
kadar her aşamada ölçülmesi ile sistemin hata analizi, kontrolü, verimlilik için
yapılacak iyileştirmelerin hepsinin yapılmasına olanak sağlar. Bu sistemin en altında
bulunan tüketiciler harcadıkları enerjinin tüketimini anlık olarak yakından takip
ederek, geçmiş dönemlere ait tüketim bilgilerine ulaşmak isterler. Kullanılan elektrik
enerjisinin miktarını takip eden tüketiciler daha önce ne kadar harcadıklarını
bilmedikleri için bu konuda bilinçlenerek, elektrik tüketiminde daha dikkatli bir
şekilde davranması hem kendi bütçesine katkı sağladığı gibi hem de ülke ekonomisine
katkıda bulunmuş olur.
Gerçekleşen teknolojik çalışmaların sayesi ile elektrik, elektronik, yazılım ve özellikle
bir ağ teknolojisi olan internet arabiriminin gelişimi bilginin daha kolay yayılmasını
sağladığı gibi bilginin hızlı bir şekilde ulaşabilme imkânı sağlamaktadır. Kullanılan
elektrik miktarını ölçüp faturalandırma yapmamızı sağlayan elektrik sayacı da bu her
geçen gün gelişen teknolojiye (eepromun) , yüksek çözünürlüklü işlemcilerin artması)
paralel olarak yapısal ve fonksiyonel değişimi söz konusudur. Eskiden kullanılan
elektromekanik sayaçlar yapısını elektronik elektrik sayaçlarına bırakarak ölçüm
hataları, sayaç okuma sırasındaki ölçüm hataları, sayaç üzerinde gerçekleştirilmesi
yasak oynamalar, vb. kayıpların azaltılmasına yardımcı olmuştur.
II
TEŞEKKÜR
Lisans eğitimimiz süresince hem mühendislik hem de hayata yaklaşımıyla bizlere
örnek olan, bilgisini ve deneyimlerini her zaman cömertçe bizlerle paylaşan tüm
hocalarımıza ve özellikle danışman hocamız Doç. Dr. Şükrü Özen’e,
Uygun çalışma ortamını bizlere sağlayan fakültemiz bünyesinde ki Teknik Büro
çalışanlarına,
Proje kapsamında maddi katkılarından dolayı Luna Elektrik Elektronik SAN. TİC.
A.Ş. yetkililerine,
Bu günlere gelmemiz de büyük pay sahibi olan ailelerimize ve dostlarımıza
teşekkürlerimizi sunarız.
III
İÇİNDEKİLER
ÖZET ...................................................................................................................... I
TEŞEKKÜR .......................................................................................................... II
BÖLÜM 1. GİRİŞ ................................................................................................. 1
BÖLÜM 2. ELEKTRONİK ELEKTRİK SAYACINDAN VERİLERİN
ALINMASI ............................................................................................................ 2
2.1. SERİ İLETİŞİMDE KULLANILAN ELEMANLAR ................................................................ 6
2.1.1 Elektronik Elektrik Sayaç ....................................................................................... 6
2.1.2 RS485-RS232 Çevirici ........................................................................................... 7
2.1.3 MAX232 Entegresi ................................................................................................ 7
2.2.1. Senkron Veri İletimi .............................................................................................. 8
2.2.2. Asenkron Veri İletimi ............................................................................................ 9
2.2.3. RS232 .................................................................................................................. 12
2.2.4. RS485 .................................................................................................................. 13
BÖLÜM 3. VERİLERİN İNTERNET ORTAMINDA SUNULMASI ..............14
3.1. TCP/IP STACK YAPISI ................................................................................................. 15
3.2. VERİLER İNTERNET ORTAMINA SUNULMASINDA KULLANILAN EKİPMANLAR .......... 16
BÖLÜM 4. GELİŞTİRME ARAÇLARI ............................................................17
4.1.MPLAB YAZILIM GELİŞTİRME ORTAMI ..................................................................... 17
4.2. MPLAB C18 DERLEYİCİSİ .......................................................................................... 18
4.3. STACK YAPISI VE DOSYALARI .................................................................................... 21
4.3.1. TCP/IP Stack Dosyaları ...................................................................................... 21
4.3.2. HardwareProfile.h ............................................................................................... 23
4.3.3. TCPIPConfig.h .................................................................................................... 27
4.3.4. TCPIPConfig.h İçerisindeki Kullanılan Modüller .............................................. 30 4.3.4.1. Announce Modülü .................................................................................................... 30 4.3.4.2. DNS İstemci Modülü ................................................................................................ 31 4.3.4.3. HTTP2 Server Modülü.............................................................................................. 31
4.3.4.3.1. HTTP2 Dinamik Değişkenler ............................................................................ 32 4.3.4.3. Uzak Sunuculara İstekte Bulunmak .......................................................................... 34
4.4. MİCROCHİP YARDIMCI PROGRAMLAR ........................................................................ 35
4.4.1. MPFS2 Yardımcı programı ................................................................................. 35
4.4.2. TCP/IP Configuration Wizard Yardımcı programı ............................................. 38
IV
BÖLÜM 5. PHP ve MYSQL ................................................................................42
5.1. PHP NELER YAPABİLİR? ............................................................................................. 42
5.2. PHP’ NİN AVANTAJLARI NELERDİR? .......................................................................... 44
5.2.1. Hız ....................................................................................................................... 44
5.2.3. Kolay Öğrenilmesi .............................................................................................. 44
5.2.4. Kararlı ve Özgür Web Uygulamaları .................................................................. 44
5.2.5. Veritabanı Hâkimiyeti ......................................................................................... 45
5.2.6. Platform ve Web Sunucusu Özgürlüğü ............................................................... 45
5.2.7. Geniş Kullanıcı ve Geliştirici Kitlesi, Ücretsiz Kurulum ve Kullanımı .............. 45
5.2.8 Sürüm Geçmişi ..................................................................................................... 45
[9] ...................................................................................................................................... 47
5.3. PHP ÇALIŞTIRMA VE GELİŞTİRME ORTAMI ................................................................ 47
5.3.1. Wamp Server ....................................................................................................... 48 5.3.1.1. Fonksiyonellik........................................................................................................... 48 5.3.1.2. Wampserver Kullanımı ............................................................................................. 49
5.5. PHP’NİN YAZIM KURALLARI ...................................................................................... 51
5.6. PHP’DE DEĞİŞKEN TÜRLERİ ....................................................................................... 53
5.6.1. Metin ve Sayı Değişkenleri ................................................................................. 53
5.6.2. Dizi Değişkenleri ................................................................................................. 54
5.7. PHP’YE DIŞ KAYNAKLARDAN BİLGİ ALMA ............................................................... 55
5.7.1. Adres Satırından Bilgi Almak ............................................................................. 55
5.8. PHP DOSYASINI DURDURMA ..................................................................................... 56
5.9. MYSQL ....................................................................................................................... 57
5.10. MYSQL VE SQL ....................................................................................................... 58
5.10.1 MySQL’de Veritabanı ve Tablo oluşturulması .................................................. 58
5.10.2. SQL ile Tablodan Kayıt Çekmek ...................................................................... 60
5.10.3. SQL ile Tabloya Veri Girişi .............................................................................. 61
5.11. PHP KULLANARAK MYSQL’E BAĞLANMAK ........................................................... 62
5.12. PHP KULLANARAK MYSQL’E VERİ GİRİŞİ .............................................................. 62
BÖLÜM 6. Donanım ...........................................................................................64
6.1. SİSTEMİN ISIS ÇİZİMİ .................................................................................................. 64
6.1.1. Merkezi Kontrol Devresi ..................................................................................... 64
6.1.2. Sayaç ile Merkezi Kontrol arası Haberleşme Devresi ......................................... 65
6.1.3. Güç Devresi ......................................................................................................... 66
6.2. SİSTEMİN ARES ÇİZİMİ ............................................................................................... 66
BÖLÜM 7. SONUÇ VE TARTIŞMA ..................................................................70
Kaynakça ..............................................................................................................71
V
Şekiller Dizini
Şekil 1.0.1 Uzaktan kontrol sistemine genel bakış .................................................................. 1
Şekil 1.0.1 Serialport üzerinden gelen data’nın yardımcı program ile kontrol edilmesi ve
gözlenmesi ....................................................................................................................... 5
Şekil 2.0.2 LUNA Aktif Reaktif 3 Fazlı Elektronik Elektrik Sayaç ........................................ 6
Şekil 2.0.3 Rs485 Rs232 Çevirici Modülü .............................................................................. 7
Şekil 2.0.4 MAX232 Mantıksal Diyagramı ............................................................................. 8
Şekil 2.0.5 MAX232 Tipik Çalışma Devresi ........................................................................... 8
Şekil 2.0.6 MAX232 Entegresi ................................................................................................ 8
Şekil 2.0.7 Senkron Veri İletişimi ............................................................................................ 9
Şekil 2.0.8 Asenkron Veri İletimi .......................................................................................... 10
Şekil 3.0.1 Genel Hatlarıyla Gömülü Sistem Yazılımın donanım üzerinde işletilmesi ......... 14
Şekil 3.0.2 TCP/IP Stack Mimarisi ...................................................................................... 15
Şekil 3.0.3 Microchip Application Libraries v2013-06-15 sürümünün özellikleri [6] .......... 16
Şekil 4.0.1 MPLAB yazılım geliştirme ortamına genel bakış ............................................... 18
Şekil 4.0.2 MPLAB C18 Derleyicisi Help Komutları ........................................................... 20
Şekil 4.0.3 TCP/IP Stack Dosyaları ve dizinleri .................................................................... 21
Şekil 4.0.4 HardwareProfile.h kütüphanesindeki Sistem özelliklerinin belirtildiği yazılım
bloğu .............................................................................................................................. 23
Şekil 4.0.5 HardwareProfile.h kütüphanesindeki dijital çıkışların atandığı yazılım bloğu .... 24
Şekil 4.0.6 HardwareProfile.h kütüphanesindeki kullanılmayan diğer dijital çıkışların
birbirleri ile bağdaştırılması .......................................................................................... 24
Şekil 4.0.7 MPLAB IDE yazılım geliştirme ortamında mikro denetleyici seçilmesi ............ 24
Şekil 4.0.8 MPLAB IDE yazılım geliştirme ortamında mikro denetleyici isminin girilmesi ve
projeye dâhil edilmesi ................................................................................................... 25
Şekil 4.0.9 MPLAB IDE yazılım geliştirme ortamında proje özellikleri dizini .................... 26
Şekil 4.0.10 MPLAB IDE yazılım geliştirme ortamında proje özelliklerinin değiştirilmesi . 27
Şekil 4.0.11 TCPIPConfig.h kütüphanesindeki modül atamalarının gerçekleştiği yazılım
bölümü ........................................................................................................................... 28
Şekil 4.0.12 TCPIPConfig.h kütüphanesindeki dosya sisteminin ve harici depolama
biriminin özellikleri ve türünün belirtilmesi ................................................................. 29
Şekil 4.0.13 TCPIPConfig.h kütüphanesindeki ağ altyapı bilgileri IP adresi , MAC adresi ,
Ağ alt geçit adresleri ve DNS adresleri bilgilerinin atandığı yazılım bölümü .............. 30
Şekil 4.0.14 Microchip Ethernet Device Discoverer programına genel bakış ....................... 31
Şekil 4.0.15 HTTP2 web server yapısının genel olarak işleyişi [7] ....................................... 32
Şekil 4.0.16 Microchip MPFS Generator yardımcı programı ekran görüntüsü ..................... 36
Şekil 4.0.17 Web tarayıcısı üzerinden sistem üzerine MPFS dosya sistemindeki web
sayfalarının yüklenmesini gösteren örnek ekran görüntüsü .......................................... 37
Şekil 4.0.18 Microchip TCP/IP Stack kütüphaneleri ile oluşturulmuş Demo App
uygulamasının donanım üzerinde gerçeklendikden sonraki web sayfasının ekran
görüntüsü ....................................................................................................................... 37
Şekil 4.0.19 TCP/IP Configuration Wizard programı başlangıç ekranı ................................. 38
VI
Şekil 4.0.20 TCP/IP Configuration Wizard programı modül düzenleme bölümü ................. 39
Şekil 4.0.21 TCP/IP Configuration Wizard programı modül düzenleme bölümü 2 .............. 39
Şekil 4.0.22 TCP/IP Configuration Wizard programı web server konfigürasyonlarının
düzenlendiği bölüm ....................................................................................................... 40
Şekil 4.0.23 TCP/IP Configuration Wizard programı dosya sistemi konfigürasyonlarının
düzenlendiği bölüm ....................................................................................................... 40
Şekil 4.0.24 TCP/IP Configuration Wizard programı TCP soket konfigürasyonlarının
düzenlendiği bölüm ....................................................................................................... 41
Şekil 4.0.25 TCP/IP Configuration Wizard programı TCP soket konfigürasyonlarının
düzenlenmesinde ki örnek hata türü .............................................................................. 41
Şekil 5.0.1 Wamp server ayarlamaları ................................................................................... 49
Şekil 5.0.2 Wamp server konfigürasyonları ........................................................................... 49
Şekil 5.0.3 Wamp Server kullanarak örnek php dosyasının çalıştırılması ............................. 50
Şekil 5.0.4 Wamp server ile phpMyAdmin kullanımı ........................................................... 58
Şekil 5.0.5 phpMyAdmin ile örnek veritabanı oluşturulması ................................................ 59
Şekil 5.0.6 phpMyAdmin ile örnek tablo oluşturulması ........................................................ 59
Şekil 5.0.7 phpMyAdmin ile tablo içeriklerinin oluşturulması .............................................. 60
Şekil 6.0.1 Merkezi Kontrol Devresi ..................................................................................... 64
Şekil 6.0.2 Sayaç ile Merkezi Kontrol arası Haberleşme Devresi ......................................... 65
Şekil 6.0.3 Güç Devresi ......................................................................................................... 66
Şekil 6.0.4 Sistemin ARES çizimi ......................................................................................... 66
Şekil 6.0.5 Sistem Ares similasyondaki görüntüsü ................................................................ 67
Şekil 6.0.6. Sistemin Prototip Resmi1 ................................................................................... 67
Şekil 6.0.7. Sistemin Prototip Resmi2 ................................................................................... 68
Şekil 6.0.8 Sistemin Prototip Resmi3 .................................................................................... 68
Şekil 6.0.9Sistemin Sayac Kısmı ........................................................................................... 69
Tablolar Dizini
Tablo 2.0.1 Kontrol Kanalları .................................................................................................. 3
Tablo 2.0.2. Sayaçtan Alınan Veri Kod ve Değerleri .............................................................. 4
Tablo 2.0.3. MAX232 verici/alıcı pin lojik fonksiyonları ..................................................... 17
Tablo 2.0.4. Databitlerinin Paritelerinin gösterimi ................................................................ 20
Tablo 5.0.1. Çeşitli Php Destekleyen Veritabanları ............................................................... 44
Tablo 5.2.0.1. PHP sürüm geçmişindeki renk açıklamaları ................................................... 44
Tablo 5.2.0.2. PHP sürüm geçmişi ........................................................................................ 44
1
BÖLÜM 1. GİRİŞ
Elektrik sisteminde bulunan elektronik sayaçları uzaktan okumanın elbette ki birçok
yolu bulunmaktadır ve teknoloji geliştikçe de bunun sayısı artacaktır. Bunlar sayaçtaki
bilgilerin yerel ağ üzerinden kablolu ya da kablosuz olarak internete sunulması, GSM
modülleri ile SMS ya da GRPS teknolojisi ile uzaktan görüntülenebilmesi, herhangi
bir bölgede birden fazla bulunan sayacın RF iletişim teknolojisiyle tekbir noktada
toplanarak uzaktan erişime açılmasını bu yollar arasında gösterebiliriz. Çözüme giden
yollardan herhangi birini tercih etmeden önce ihtiyaçlar belirlenmeli ve buna uygun
en ekonomik yol seçilmelidir. Örnek olarak tekbir sayacın verilerine uzaktan
erişiminin sağlanarak, geçmişe yönelik bilgilerinin analizini çıkartmak istersek, bunu
hem donanımımızı geliştirerek hem de uzaktan toplanan verilerin internet üzerinde
düzenli bir biçimde kaydedilmesini ele alabiliriz. Eğer ikinci seçeneği seçersek bu
durumda çözüm yolları arasından bizim için en uygun olanını seçmemiz gerekir. GSM
teknolojilerini kullanmamız durumunda uzaktan erişim sırasında okunan her veri için
GSM firmasına ödeme yapmak durumunda olduğumuzdan dolayı bu çözüm bizim için
pek uygun sayılmaz. Eğer sayacın bulunduğu yerde internet bağlantısı bulunuyorsa,
yerel ağ üzerinden erişimin sağlanması bizim için fazladan bir ekonomik gider olarak
karşımıza çıkmayacaktır. Bu açıdan bu çözümün seçilmesi ekonomik yoldan ve
donanım açısından en uygun olanı olarak gözükmektedir.
Uygulamamızda sayaçta bulunan verilerin yerel ağ üzerinden uzaktan erişim modelini
kullandık. Sayaç ile mikro denetleyici, mikro denetleyici ile Ethernet modülünün
haberleştirilmesi donanım yönünden bu yönteme çözüm olarak ele alınabilir. Daha
sonraki bölümlerde ise bu uygulama modelinin işleyişini, sisteme uygulama
aşamalarını teknik, teorik ve kişisel deneyimlerimizin yer aldığı kısımlar yer
almaktadır.
Şekil 1.0.1 Uzaktan kontrol sistemine genel bakış
2
BÖLÜM 2. ELEKTRONİK ELEKTRİK SAYACINDAN VERİLERİN
ALINMASI
Projemizin en önemli aşamalarından birisi de evlerimizde, işyerlerimizde,
fabrikalarımızda kullanmış olduğumuz elektriğin ölçülmesini, faturalandırılmasını
sağlayan elektronik elektrik sayacından verilerin alınması birkaç türlü olsa da
seçtiğimiz yol RS485 hattı üzerinden sayaca ait anlık akım gerilim güç gibi değerlerin
alınmasıdır.
LUNA Aktif Reaktif Üç fazlı Elektronik Elektrik Sayacının çeşitli iletişim protokolleri
ile verileri alınabilir. Bunlar Rs232 ve Rs485’dır. Rs232 ile sadece bir sayaçtan okuma
gerçekleştirebilirken Rs485 ile birden fazla sayaçtan veri alabiliyoruz. Okuma
yapılacak sayacın fazla olmasıyla hangi sayacın okunacağı, okuma isteğinde sayaç
numarasının yazılması ile belirtilir. Bu şekilde sadece seçilen sayaç ile bağlantı
kurular. Sayaçtan veri okuma yaparken verilen okuma isteği “/?XXXXXXXX!CRLF”
olarak ifade edilir. (X = Sayaç No). Bu sayede her sayaca ait her fazın akım gerilim
frekans güç sayısı ayrıca güçleri de sayaçtan alabilmekteyiz. Rs485 çıkışı mevcuttur.
Biz bu çıkışı Rs485/232 çevirici devre yardımıyla sayaca ait anlık akım, gerilim, güç
faktörü gibi değerleri PIC 18lf4685 e yazdığımız C 18 yazılımı ile internet ortamına
sunmaktayız. [1]
PIC18f4620 yani sayaç ile iletişim kurulan mikrodenetleyici “/?XXXXXXXX!CRLF”
komutunu gönderdiğinde sayaçtan çıkan veriler RS485-232 çevirici üzerinden geri
gelmektedir. Ancak buradaki önemli bir nokta göndermiş olduğumuz komut dizisinde
en sonundaki CRLF komutudur.PIC18f4620’e CCS programlama dilini kullanarak
yazmış olduğumuz yazılımda fprintf(web,"%s",sayac); ile dizi değerleri
gönderebilmekteyiz. Ancak sayaçtan veri okumak için göndermiş olduğumuz dizinin
son karakterleri CRLF bir dizi olmayıp ASCII tabloda değerleri olan ve newline
anlamına gelen enter’in kodudur. Bu amaçla gönderilen kod;
char sentdata[]={0x2F,0x3F,0x21,0x0D,0x0A};
fputs(sentdata,sayac);
ASCII tabanlı sistemlerde LF (Line feed, '\n',0x0A), CR(Carriage
return, '\r',0x0D),CR‘in LF’yi takip etmesi (CR+LF, '\r\n',0x0D0A) komutları ile
yazdırma işlemi yapılır. Bu komutların kullanılmış olduğu sistemler;
3
LF: Unix Unix benzeri sistemler (GNU/Linux, OS X,AIX, …),BeOs…
CR: Commodore 8-bit makineler, Acorn BBC, Apple II, Max OS…
RS: Qnx pre-POSIX…
LF+CR: Acorn BBC ve RISC Os
CR+LF: Microsoft Windows, DEC TOPS-10, Symbian OS, Palm OS, Amstrad
[2]
Char Oct Dec Hex Control-Key Control Action
NUL 0 0 0 ^@ Nu l character
SOH 1 1 1 ^A Start of heading, = console interrupt
STX 2 2 2 ^B Start of text, maintenance mode on HP
console ETX 3 3 3 ^C End of text
EOT 4 4 4 ^D End of transmission, not the same as ETB
ENQ 5 5 5 ^E Enquiry, goes with ACK; old HP flow
control ACK 6 6 6 ^F Acknowledge, clears ENQ logon hand
BEL 7 7 7 ^G Be l, rings the be l...
BS 10 8 8 ^H Backspace, works on HP
terminals/computers HT 11 9 9 ^I Horizontal tab, move to next tab stop
LF 12 10 a ^J Line Feed
VT 13 11 b ^K Vertical tab
FF 14 12 c ^L Form Feed, page eject
CR 15 13 d ^M Carriage Return
SO 16 14 e ^N Shift Out, alternate character set
SI 17 15 f ^O Shift In, resume defaultn character set
DLE 20 16 10 ^P Data link escape
DC1 21 17 11 ^Q XON,
with
XOFF to
pause
listings;
":okay to
send".
DC2 22 18 12 ^R Device
control 2,
block-
mode flow
control
Tablo 2.1 Kontrol Kanalları
4
Seri No 0.0.0 0.0(00000043)\
Sayaç Saati 0.9.1 0.9.1(17:33:59)\0D
Sayaç Tarihi 0.9.2 0.9.2(13-12-26)\0D
Gün 0.9.5 0.9.5(4)\0D
Demant Bilgileri 1.6.0 1.6.0(000.120*kW)(13-12-21,15:30)\0D
T 1.8.0 1.8.0(000000.753*kWh)\0D
T1 1.8.1 5.8.0(000000.000*kVArh)\0D
T2 1.8.2 8.8.0(000000.000*kVArh)\0D
T3 1.8.3 32.7.0(225.4V)\0D
T4 1.8.4 31.7.0(000.000A)\0D
Ri 5.8.0 33.7.0(+1.00)\0D
Rc 8.8.0 52.7.0(225.6V)\0D
I1rms 31.7.0 51.7.0(000.000A)\0D
V1rms 32.7.0 53.7.0(+1.00)\0D
cosPhi1 33.7.0 72.7.0(226.3V)\0D
I2rms 51.7.0 71.7.0(000.000A)\0D
V2rms 52.7.0 73.7.0(+1.00)\0D
cosPhi2 53.7.0 34.7.0(50.0Hz)\0D
I3rms 71.7.0 54.7.0(50.0Hz)\0D
V3rms 72.7.0 74.7.0(50.0Hz)!\0D
S
Tablo 2.2. Sayaçtan Alınan Veri Kod ve Değerleri
Projemizde sayaca doğru kod dizimini göndermek ve sayaçtan gelen verileri analiz
etmek amacıyla çalışmalara PC seriport’u ile başlanıp bunun üzerinden ilerlemiştir.
PC’nin seriport’u ile sayacımızı aradaki dönüştürücü sayesinde bağlayıp veri
gönderme ve alma başarı ile gerçekleştirilmiştir.
Seriporttan gönderilen kod dizisi: 2f 3f 21 0d 0a şeklinde olup en sondaki 0d 0a CRLF’
ye tekabül etmektedir. Gönderilen veriye karşılık sayaç tarafından sayaç bilgileri
gelerek sayaca ait bilgileri PC seriport’u tarafında okunmuştur. Bundan sonraki
aşamada gelen bu verileri doğrudan PIC 18f4620 ‘e göndererek proje devam etmiştir.
5
Şekil 1.0.1 Serialport üzerinden gelen data’nın yardımcı program ile kontrol
edilmesi ve gözlenmesi
6
2.1. Seri İletişimde Kullanılan Elemanlar
2.1.1 Elektronik Elektrik Sayaç
Şekil 2.0.2 LUNA Aktif Reaktif 3 Fazlı Elektronik Elektrik Sayaç
Projemizde kullanmış olduğumuz sayaç LUNA Aktif Reaktif 3 Fazlı Elektronik
Elektrik Sayaç;
EN 50470, EN62052-11 ve EN 62053-23 standartlarına uygun,
Aktif enerji tahakkuku için C sınıfı %0,5 hassasiyetli ölçüm ve reaktif enerji
için A sınıfı %2 hassasiyetli ölçüm yapan,
8 ayrı zaman dilimine 4 ayrı tarifede fiyatlandırma için programlanabilen,
Bina içi ve dışı kullanıma uygun,
P54 koruma sınıflı,
Elektrik dağıtım firmalarının istediği voltaj, akım, frekans, demant, maksimum
demant, yük profili, quadrant bilgisi, akım yönü gibi tüm özellikleri ölçüp
hafızasında saklayan,
Hem gövde kapağının hem de klemens kapağının uygunsuz açılmasını takip
edip hafızasına alan,
Üstündeki optik pot vasıtası ile el terminaliyle okuma sağlayabilen,
Standart olarak bulunan RS485 portları ile uzaktan okuma sistemlerine
sahiptir. [1] [3]
7
2.1.2 RS485-RS232 Çevirici
Şekil 2.0.3 Rs485 Rs232 Çevirici Modülü
Sayaçtan elden ettiğimiz verilerin mikro denetleyici tarafından yorumlanabilmesi
kullanmış olduğumuz ATC-106 izolasyonlu arabirim çevirici;
RS-232C, RS-422, RS-485 standartlarına uygun,
Yüksek voltaj korumalı (3500V) olup,
Hızlı Geçici Voltaj Süpresörü (TVS) ile yıldırım ve yüksek voltajdan oluşan
etkiyi verimli bir şekilde (ESD) önleyen,
PC, IPC veya taşınabilir bilgisayarınızı RS-232 arabirim bağlantısına 9 PIN
dişi konnektör ile bağlanabilen,
RS-232 sinyalini, düzenli RS-485 sinyaline çevirebilme özelliğine sahiptir. [3]
[4]
2.1.3 MAX232 Entegresi
MAX232 entegresi, EIA-232 protokolü ile TTL/CMOS uyumlu entegrelerin
gerilim seviyelerinin uyumlu çalışabilmesi için üretilmiştir. MAX232
entegresinin pin numaraları ve pin isimleri Şekil 2.0.6’de görülmektedir.
İçerisinde dört tane gerilim dönüştürücüsü vardır. Bunlardan ikisi
transmitter(alıcı), diğer ikisi de receiver(verici) olarak adlandırılmaktadır. Bu
dönüştürücüler, gerilim seviyesi dönüştürmesinin yanında Çizelge 4,3’ten de
görüleceği üzere, inverter(tersleyici) görevi de yapmaktadırlar. Her bir verici,
girişlerine bağlanan EIA-232 pinlerinin gerilim seviyelerini 5V TTL/CMOS
gerilim seviyelerine dönüştürerek çıkışlarından vermektedir. Her bir alıcı,
girişlerine bağlanan 5V TTL/CMOS gerilim seviyelerini EIA-232 gerilim
seviyelerine dönüştürerek çıkışlarından vermektedir.
Transmitter Inputs
Transmitter Outputs
Transmitter Inputs
Transmitter Outputs
High Level Low Level High Level Low Level
Low Level High Level Low Level High Level
Tablo 2.0.3 MAX232 verici/alıcı pin lojik fonksiyonları [4]
8
Şekil 2.0.4 MAX232 Mantıksal Diyagramı
Şekil 2.0.5 MAX232 Tipik Çalışma Devresi
Şekil 2.0.6 MAX232 Entegresi
2.2.Seri İletişime Ait Bilgiler
Seri bir linkteki verici veya sürücü belli bir anda bir bit olmak üzere, bitleri sırasıyla
yollar. Linkte, her bir yön ayrı bir hat olabileceği gibi, ortak kullanılan bir hatta
olabilir. Yani gönderici, dönüşleri aynı hattan alır. Bir linkteki veri akışının kontrolünü
için gerekli sinyallerden biri saat (clock) sinyali veya zamanlama frekansıdır. Hem
gönderen hem de alan cihaz bir bitin ne zaman gönderileceğine ya da alınacağına karar
verirken bir saat sinyal kullanır. İki çeşit seri bilgi gönderme formatı vardır.
2.2.1. Senkron Veri İletimi
Senkron veri gönderirken, sistemdeki tüm cihaz ya birisinin ürettiği ya da dışarıda bir
cihaz tarafından üretilen clock saat sinyalini kullanırlar. Gönderilen her bit saat
sinyalinin geçişinde (yükselen veya alçalan kenarından) sonraki belirli bir zamanda
9
gönderilmektedir. Aynı zamanda alıcı da gelen biti okumak için clock geçişlerini
kullanır. [5]
Senkron veri göndermede, bit gönderimini başlatırken yâda bitirirken çeşitli sinyaller
kullanır. Bunlar başlama stop bitleri olabileceği gibi özgün sinyallerde olabilmektedir.
Senkron haberleşmede donanımlar arası uzaklık 15 feet ve daha kısa olmak üzere
kablo kullanılır. Onun için donanımlar arası mesafe eğer uzun mesafeli ise uygun
olmamaktadır. Ayrıca bu durumda senkron veri iletimi, clock sinyalinin iletimi parazit
nedeniyle bozulduğu için pratik değildir.
Şekil 2.0.7 Senkron Veri İletişimi
2.2.2. Asenkron Veri İletimi
Asenkron veri iletiminde donanımlar arası clock sinyali bulunmamaktadır. Bunun
nedeni her bir taraftaki cihaz kendi sinyalini sunmaktadır. Ancak, uçların clock
frekanslarında anlaşmaları ve clocklarında uyumlu olmaları gerekir. İletilen her baytta
saatleri eşlemek üzere bir Start ve gönderilen verilerin bittiğini belirtmek üzere bir
veya daha fazla Stop biti bulunmaktadır. [5]
Asenkron veri iletiminde bulunan cihazlar, PC, modem, gömülü sistemler gibi Rs-232,
Rs-485 gibi portlar.
Bir asenkron veri gönderirken transfer sırasında clock sinyalini her iki taraf ayarladığı
için bu çeşitli formatlarda olabilmektedir. Bunların en yaygın olarak kullanılan olan 8-
N-1’dir. Gönderici donanım her bir gönderdiği baytı, 1 adet Start bitini takiben 0
10
numaralı bitten (En az anlamlı -LSB: least significant bit-) başlayarak 8 veri biti ve 1
adet Stop biti olarak yollar.
Şekil 2.0.8 Asenkron Veri İletimi
-Start bit: Bir karakterin gönderilmeye başlandığını bildirmek için kullanılır. Her
zaman transferin ilk biti olarak gönderilir.
-Data bits: Veri bitlerini oluşturan gruptur.
-Parity bit: Transfer edilen karakterlerin karşı tarafa doğru gönderilip
gönderilmediğini kontrol etmek için kullanılan bittir. Eğer alıcı, alınan parite biti ile
hesaplanan Parity bitinin eşit olmadığını tespit ederse, hata verir ve o andaki karakteri
kabul etmez. Parite biti Çift, tek, iz ya da boşluk (Even, Odd, Mark,
Space)olabilmektedir. Çift(Even) parite, parite bitinin kendindeki ve veri bitlerindeki
1’lerin toplamı sayısının çift olmasını sağlayacak şekilde set edildiğini belirtir.
Tek(Odd) parite ise, aynı şekilde 1’lerin toplam sayısının tek olmasını sağlayacak
şekilde set edilmektedir. İz parite (Mark) ve boşluk (Space) parite sabit
parametrelerdir. İz parite daimi olarak 1’dir ve boşluk parite de 0’dır.Böyle oldukları
için iz ve boşluk pariteleri hata göstergesi olarak kullanışlı olmamaktadır. Örneğin
11
başka bir format olan 7-E-1 formatını ele alalım. Gönderici 1 Start bitini takiben 7 veri
biti,1 parite biti ve 1 Stop biti gönderir.
-Stop bit: Karakterin bittiğini gösterir. Karakterler arasında boş ya da ölü zamanlar
sağlar. Stop biti gönderildikten sonra istenildiği zaman yeni bilgi gönderilebilir.
- Baud: Bit/sn. olarak ifade edilen birim zamanda (saniyede) iletilen bit sayısını ifade
etmektedir. Analog sinyaldeki değişim hızıdır.
Data Biti Çift (Even) Parite Biti Tek(Odd) Parite Biti
0000000 0 1
0000001 1 0
0000010 1 0
0000011 0 1
0000100 1 0
1111110 0 1
1111111 1 0
Tablo 2.0.4 Data bitlerinin Paritelerinin gösterimi
Start bitiyle başlayıp Stop bitiyle biten aralıktaki değer Word olarak adlandırılır. Word
içindeki veri bitleri karakter tanımlarlar. Bunlar, kimi linklerde metin (harf ya da
rakam) karakterlerini temsi ederken diğer linklerde metin karakterleriyle hiç ilgisi
olmayan ikili (binary) değerleri temsil ederler. Transfer edilen karakter sayısı, bit
hızıyla Word’deki bitlerin sayısına eşittir. Her iletilen baytta bir Start bir de Stop biti
ekleme iletim süresini %25 artırır (çünkü Word’de bu iki birlikte 110 bit bulur).8-N-1
formatında bir baytın iletim süresi bitin iletim süresinin 1/10'udur.Yani 9600 bps
hızında, saniyede 960bayt iletilmektedir.
12
2.2.3. RS232
RS-232 iki cihaz arasında bilgi alışverişine yönelik olarak tasarlanmıştır. Mesafe 50
ile 100 feet (15-30 m) arasında değişebilmektedir. Bu noktada kablo tipi ve bit hızı
önemli rol oynar. Bir adaptör yardımıyla fark l ı tip arabirime çevrilebilmektedir.
Basit bir devre kullanarak bir RS-232 portu, birçok cihaza bağlanabilen ve daha uzun
mesafelerde çalışabilen bir RS-485’e çevirmek mümkündür.
RS-232 linklerde dengesiz (unbalanced) hatlar kullanılır. Dengesizlik sakınılması
gereken bir şey gibi görünmekle birlikte, burada, hatlardaki sinyallerin elektriksel
karakteristiklerine atıfta bulunulmaktadır. Dengesiz bir hat, sinyalin sinyal
voltajının tek bir tele tatbik edildiği ve tüm sinyal gerilimlerinin tek bir toprağı
referans aldıkları bir hattır. Bu tip bir arabirime tek-uçluda denilmektedir. Dengeli
ya da fark (differantial) hatlarında her bir sinyal için, biri diğerindeki sinyalin tersini
(inverse) taşıyan iki tel kullanılır.
RS-232’nin bazı yönlerden avantajları vardır.
• Her P C ’ d e b i r v e d a h a f a z l a b u l u n u r . Yeni P C ’ l e r U S B
g i b i a r a b i r i m l e r i desteklemektedir. Fakat RS-232 USB’nin
yapamadığı şeyleri yapar.
• Mikro denetleyici, arabirim yongaları bir 5 V seri portu RS-232 ye
çevirebilirler.
• Linkler 50 ya da 100 feet uzunlukta olabilir. Çoğu cihazlardaki
arabirimler uzun mesafelere yönelik değildirler. USB linkler 16 feet
olabilmektedirler. PC paralel arabirimi 10-15 feet, IEEE-1284 tip B
sürücülerle ise 30 feet olabilmektedir. Oysa RS-232 çok daha uzun
kablolarla da iş görebilir. Her RS-232 bir modeme bağlanırsa, bu durumda
telefon şebekesini tüm dünyaya iletim amacıyla kullanmak mümkündür.
• 2- yollu bir link için sadece üç tele ihtiyaç vardır. Paralel linkte sekiz
adet veri hattıyla iki ve daha fazla kontrol sinyali ve birkaç da toprak hattı
bulunur. Kablolama maliyeti yanında bir de konektör sorunu vardır. [5]
Dezavantajları ise şunlardır:
• Linkin karşı ucu paralel veri gerektiriyorsa, gelen veriyi paralel veriye
dönüştürmek zorunda kalacaktır. Ancak bu sorun bir UART kullanarak
kolaylıkla çözülebilir.
• Çok kullanışlı olmaları nedeniyle boş seri portu bulmak neredeyse imkânsız
13
gibidir. PC’lerde çok sayıda seri port bulunur. Ancak sistem bunların her biri için
bir kesme istek hattı tahsis edememektedir. Birçok mikro kontrolörde donanımda
yalnızca bir tane seri port bulunmaktadır.
• Bir linkte ikiden fazla cihaz bulunmayabilir.
• Belirlenen en yüksek hız 20,000 bps(bit per second)dir. Oysa genellikle
kısa linklerde, bunun üzerine çıkan, pek çok arabirim bulunmaktadır.
• Çok uzun linklerde farklı arabirim gerekebilir. [5]
Daha yüksek hız, daha uzun link ve daha çok düğüm olması halinde RS-485
dengeli arabirimi bir çözüm olabilir.
2.2.4. RS485
RS-232’nin halledebileceğinden yüksek hızlarda ve uzak mesafelerde veri transferi
gerektiğinde çözüm RS-485 olacaktır. RS-485’li linkler iki cihazla sınırlı değildir.
Mesafeye, bit hızına ve arabirim yongalarına bağlı olarak sayıları 256’ya varabilen
düğüm bir linkle bağlanabilir.
RS-485, standartta TIA/EIA-485 olarak geçer. RS-232’ye göre çeşitli avantajları vardır.
• Maliyeti düşüktür. Sürücüleri ve alıcıları pahalı değildir. +5V ya da daha
düşük güç kaynağıyla çalışırlar. Böyle bir kaynakla, farksal çıkışlarda
gereken minimum 1.5V’luk farkı üretebilirler. RS-232’nin ± 5V’luk
minimum çıkışı, ± gerilimli bir güç kaynağını ya da bunları türeten daha
pahalı bir arabirim yongası gerektirir.
• Ağ Kapasitesi. İki cihazla sınırlı olmayışı RS-485’nin çok sayıda sürücüsü
ve alıcısı olmasını sağlar. Yüksek empedanslı sürücülerle bir RS-485 256
düğümlü olabilir.
• Uzun Linkler. Link uzunluğu 4000 feet’e çıkabilir. RS-232’de bu limit
50-100 feet’tir.
• Sürat. Saniyede 10 Mega bit hız mümkündür. Bit hızı kablo boyu ilişkilidir.
Tablo3.2’de RS-485’in özelliklerine ve akraba bir arabirime yer verilmiştir.
RS-422 bir sürücü ve on alıcıyla sınırlıdır. Ancak farksal giriş gerilimi çok
daha büyüktür. [5] [6]
14
BÖLÜM 3. VERİLERİN İNTERNET ORTAMINDA SUNULMASI
Projemizin tasarım amaçlarından biride sayaç üzerinden aldığımız, kullanılan sisteme
ait Fazlar arası gerilim, tüketilen toplam aktif ve reaktif güç, faz akımları gibi bilgileri
düzenli olarak internet ortamında görüntülemektir. Elbette ki, bu ihtiyacı karşılamada
birçok yöntem ve yol izlenebilir. Biz bu yöntem ve yollar arasından Microchip’in
sağladığı TCP/IP Stack Kütüphanelerini kullandık.
Microchip TCP/IP Stack gömülü network uygulamaları için, fiziksel network katmanı
ile uygulamanız arasında bir altyapı sağlar. Uygulama katmanları tarafından kullanılan
birçok yaygın modülleri de bünyesinde içerir. Bunlardan bazıları; web sayfaları için
HTTP modülü, e-mail göndermek için SMTP modülü, durum ve kontrol desteği için
SNMP,TELNET ve Seri haberleşme – Ethernet ‘ e kadar ve birçoklarını içermektedir.
Bunlara ek olarak, hafif ve yüksek performanslı olması, TCP ve UDP iletim
katmanlarının uygulanması, IP, DHCP, ARP ve DNS modüllerini de gösterebiliriz. [6]
Sistemin Algoritması;
Şekil 3.0.1 Genel Hatlarıyla Gömülü Sistem Yazılımın donanım üzerinde
işletilmesi
15
Yukarıda ki şekilde görüleceği üzere, projenin gerektirilebilmesi için donanım
üzerinde çalışan gömülü sistem yazılımının genel algoritması blok diyagramdaki
gibidir. Microchip TCP/IP Stack yapısı sağlıklı bir şekilde çalışabilmesi için program
akışını kesen uygulamaların çok fazla beklemeye maruz kalmaması gerektiği göz
önünde bulundurulması gerekir. Bunun sebebi, Microchip TCP/IP Stack yardımcı
çoklu görev düzeni ile çalışmaktadır. Yani kullanıcıların seçimlerine bırakılan
modüller ve yazılım içerisinde olması gereken gerekli modüllerin belirli bir sonsuz
döngü içerisinde defalarca tekrar tekrar çalışması anlamına gelir. Bu da her bir modül
içerisinde bulunan değişken değerleri (örneğin, web sayfası üzerinden gelen callback
fonksiyonların geri dönüş değerlerinin istenilmesi gibi) döngünün tekrar başa
dönmesiyle modüllerin içerilerinde yeniden çalışması gereken fonksiyonların
çağırılarak uzaktan yapılan herhangi bir isteğin anında cevap olarak istenilen tarafa
gönderilmesiyle sonuçlanır.
3.1. TCP/IP Stack Yapısı
Şekil 3.0.2 TCP/IP Stack Mimarisi
TCP/IP Stack yapısı şekilde görebileceğiniz gibi internet trafiğine uyulması
için gerekli protokolleri içermektedir. Bunları modüler bir yapı halinde C
programlama dilinde tasarlanmış ve TCP/IP(İnternet) protokol yapısını izlemektedir.
Stack yapısı sürekli olarak TCP ve UDP iletim katman modüllerini, IPv4( ve ICMP
‘nin bölümü) Internet katman modüllerini, ARP bağlantı katmanı modüllerini ve çeşitli
uygulama katman modüllerini desteklemektedir. [7]
16
3.2. Veriler İnternet Ortamına Sunulmasında Kullanılan Ekipmanlar
Verilerin internet ortamına sunulması için hâlihazırda bulunan sayaçtaki verilerin
alındığı varsayılarak, merkezi bir kontrol devresi ile uygulamamızı internet ortamıyla
haberleştirebileceğimiz köprü vazifesi gören bir Ethernet devresi olması
gerekmektedir.
Şekil 3.0.3 Microchip Application Libraries v2013-06-15 sürümünün özellikleri
[6]
Tablodan da görüldüğü gibi TCP/IP Stack kodları tüm 16, 32 bit ailelerinde ve
8 bit 18F serisinde çalışabilmektedir. Buradan hareketle piyasada kolay bulunması da
göz önüne alınarak, 64 K hafızası olan 18F4620 mikro denetleyicisi ile çalışmaya karar
verdik. Ancak proje derleme aşamasında ihtiyacımız olan modülleri destekleyen
projeyi çalıştıracak gerekli hafıza boyutu 64 K ‘ı aşmaktadır ve bu yüzden üst seviye
olan, 96K 18LF4685 mikro denetleyicisini kullanmaya karar verdik. Bahsedilen bu
hafıza sorunu, yükseltilen Microchip TCP/IP Stack uygulaması HTTP modülü yerine
bir üst versiyonu olan HTTP2 modülünü içermektedir.
Bu sebep ile HTTP modülünden daha fazla özellik barından HTTP2 modülü program
hafızasında daha fazla yer kaplamaktadır. Eğer eski TCP/IP Stack uygulamaları ile
çalışmak isterseniz 18F4620 mikro denetleyicisi web sunucusu ve uzaktan veri
gönderme, alma gibi basit işlemleri, diğer modüllerin kullanılmaması dahilinde
çalıştırabilmektedir.
Uzaktan erişim için ya da gömülü sistem üzerinde bulunması istenilen web sayfaları
bir MPFS2 imaj dosyası içinde depolanır. İmaj dosyası geçici olmayan bir depolama
17
biriminde(Eeprom yada SPI Flash) yada mikro denetleyici’ ye ait olan dahili Flash
program hafızasında tutulabilir.
Projemizde ise 32 KB Eeprom modeli olan 25LC256 ‘ı kullanmayı tercih ettik. Bu
tercihimizi yazılım üzerinde TCPIPConfig.h kütüphanesinden isterseniz “ yazılım
bölümün ” ’de anlatılan şekilde isterseniz Microchip’in sağladığı TCPConfigWizard
programı ile bu isteğinizi yazılımda ifade edebilirsiniz. Ayrıca bu eepromun max.
Çalışma frekansı 10 MHz olduğundan devre üzerinde de yine 10 Mhz kristal osilator
kullanmayı tercih ettik.
Donanımın dış dünya ile bağlantısı niteliğinde olan Ethernet devresinde ENC28J60
entegresini kullanmayı tercih ettik. Bu entegre RJ45 soketiyle Ethernet’e bağlanmakta
ve kendisine bağlı bulunan işlemcilerle SPI ara yüzü ile haberleşmektedir. Projemizde
Ethernet devresini donanım kısmında bulunan “ Ethernet devresi “ kısmındaki devreyi
hazır olarak kullanarak, sistemde oluşabilecek insan kaynaklı hataları sıfıra çekmek
istenilmiştir. [8]
BÖLÜM 4. GELİŞTİRME ARAÇLARI
Bu projenin geliştirilmesi için geliştirme ortamı olarak Microchip MPLAB IDE ve
derleyici olarak ise C18 v3.7 LITE versiyonu kullanılmış, işlemcisinin
programlanabilmesi için ise MPLAB IDE içerisinde bulunan yazılım ile PICKIT2
modülü kullanılmıştır. [8]
4.1.MPLAB Yazılım Geliştirme Ortamı
MPLAB yazılım geliştirme ortamı, kullanıcılara ücretsiz olarak sunulan PIC ve dsPIC
ürünleri için gömülü uygulamalar geliştirilmesini olanak sağlayan ve ücretsiz olarak
dağıtılan bir yazılımdır. Kullanışlı bir ara yüze sahip bu yazılım geliştirme ortamı
kullanıcılara Assembly, C18 ve CCS C derleyicisi ile çeşitli yazılım dillerinde de
kullanıcıların yazılımlarını derlemesine olanak sağlamaktadır.
18
Şekil 4.0.1 MPLAB yazılım geliştirme ortamına genel bakış
4.2. MPLAB C18 Derleyicisi
C programlama dili gibi yüksek seviyeli dillerde uygulama geliştirmek için birçok
seçenek vardır. MPLAB C18 derleyicisi, Microchip tarafından geliştirilmiş bir C
derleyicisidir. Bu derleyici birçok özelliğe sahip ANSI uyumlu, 8 bit
mikroişlemcilerin, PIC 18 aileleri için kullanılan bir C derleyicisi ve 32-bit Windows
konsol uygulamasıdır. Bu konsol uygulaması MPLAB geliştirme ortamı ile birlikte
kullanılabilmektedir.
C18 derleyicisinin deneme sürümü elbette ki ücretsiz olup, deneme sürümü olmayan
derleyicisinin tüm özelliklerini ve kütüphanesini içerir.
C18 derleyicisi temel olarak aşağıdaki özelliklere sahiptir;
ANSI '89 uyumluluğu
MPLAB IDE ile birlikte kolay kullanılabilir proje yönetimi ve kaynak düzeyinde
hata ayıklama
19
Geliştirilmiş kodların yeniden kullanımı için yer değiştirebilir modüllerin üretimi
Kullanıcıların oluşturduğu kütüphanelerin ve dâhili kütüphanelerin kolay
kullanımına MPLIB izin verir
Çoklu seviye optimizasyonu ile verimli kod oluşturma motoru
Tam kontrolün kesinlikle gerekli olduğu yerlerde, güçlü bir Assembly desteğini
vermesi [8]
Bunlar C18 derleyicisi özellikleri içinde yer alır.
21
4.3. Stack Yapısı ve Dosyaları
Microchip TCP/IP Stack, tasarlamış olduğunuz devrelerin, sistemlerin dış dünyaya
yani internet dünyasına ulaşmasını sağlayan uygulamadır. Bu uygulama ya da
kütüphaneler ile hayal gücünüzün enginliği seviyesinde tasarladığınız devrelerin,
sistemlerin uzaktan erişilebilir, kontrol edilebilir ve üzerinde bulunan bilgilerin
toplanabilir bir hale getirilmesi sağlanır.
Bu kütüphaneyi Microchip ’in resmi sitesinden “ Microchip Application Libraries ”
paketi içerisinde bulabilirsiniz. Projemizde “ v2013-06-15 ” sürüm numaralı
kütüphaneler kullanılmış ve bu sürümdeki TCP/IP Stack versiyonu “ 5.42.08 “ dur.
4.3.1. TCP/IP Stack Dosyaları
Şekil 4.0.3 TCP/IP Stack Dosyaları ve dizinleri
Microchip Solutions v2013-06-15 dizini içerisinde USB, Dokunmatik ekran, SD Card
yönetimi ve Grafik ekranlarla oluşturabileceğiniz birçok demo uygulama yüklü olarak
gelmektedir. Bu dizin içerisinde ve buradaki konumlara da kullanıcıların kendi
projelerini oluşturmasına olanak sağlamaktadır.
22
Microchip dizini içerisinde Stack dosyaları ve bileşenleri bulunmaktadır. Bu dizin
altındaki “ Include ” klasörü Microchip Stack ve kütüphane çözümleri için Header
dosyalarını tutar. Yine Include dizini altında bulunan TCPIP Stack klasörü de C
kaynak kodları, dokümanları ve Stack yardımcı uygulamaları içermektedir.
Microchip’in TCP/IP Stack uygulamasını kullanan bütün projelerde bazı temel
dosyaların mutlaka proje içerisine dahil edilmesi gerekmektedir.
Main dosyası: Uygulama kodlarınızı içerisinde barındıran dosyalardır.
• ARP.c ve ARP.h – Bu dosyalar, Stack tarafından verilmiş bir IP adresi ile
ilişkilendirilmiş MAC adresini çözümlemede kullanılır.
• Delay.c ve Delay.h – Bu dosyalar, bazı Stack fonksiyonları için gecikmelerin
sağlanabilmesi için kullanılırlar. Not olarak; bu gecikmelerin kendi kodunuzda
kullanılmaması daha iyi olacaktır. Çünkü kullanıldığı durumlarda, program akışının
durabileceği bazı koşullar oluşabilmektedir.
• Fiziksel Katman dosyaları - Bu dosyalar, belirlenmiş bir fiziksel katmanın program
içerisinde devreye alınabilmesi için kullanılmıştır.
• Helpers.c ve Helpers.h
Bu dosyalar ise, çok yönlü Stack görevleri için yardımcı fonksiyonları içerir.
• IP.c ve IP.h
Bu dosyalar, internet katmanını fonksiyonellikle Stack yapısı için temin eder.
• StackTsk.c ve StackTsk.h
Bu dosyalar ise, stack yapısını başlatacak olan kodları içerir ve devam eden Stack
yapısının callback fonksiyonlarını yerine getirir.
• Tick.c ve Tick.h
Bu dosyalar, stack içerisindeki bazı zamanlama fonksiyonlarının uygulanması için
kullanılan tik zamanlayıcısının oluşmasını sağlar.
• HardwareProfile.h
Bu konfigürasyon dosyası, donanım özelliklerinin ayarlanmasında kullanılır.
23
• TCPIPConfig.h
Bu konfigürasyon dosyası ise, sisteminize kaydedilmiş olan yazılımın kurulması için
kullanılır.
• MAC.h
Bu kütüphane dosyası, makroları ve donanımsal MAC katmanıyla ilişkili yapıları
destekler.
• TCPIP.h
Bu kütüphane Stack yapısı için öncelikli olarak dâhil edilmesi gereken bir dosyadır.
Main dosyanız TCPIP.h kütüphanesini içermelidir. Bu sayede ek dosyaların dâhil
edilip edilmeyeceğini ek olan protokollerin ve özelliklerin seçimini
gerçekleştirebilirsiniz. [7]
4.3.2. HardwareProfile.h
Proje içerisinde yeni TCP/IP Stack versiyonların da, ENC28J60 entegresini
kullanıyorsanız diğer bir adı ile HWP PIC18EX_ENC28.h olarak gelmektedir. Bu
kütüphane içerisinde donanımınızın pin bilgilerini, clock frekansı gibi bilgileri
tanımlayabilmektesiniz.
Aşağıdaki şekil4.0.4’de sistem saat frekansı 40 M Hz olarak ayarlanarak gerçekte
kullanılan frekans değeri yani kullanacağınız osilator değeri bu değerin ‘ 4 ’ e
bölünmesiyle 10 M Hz olarak atanmıştır.
Şekil 4.0.4 HardwareProfile.h kütüphanesindeki Sistem özelliklerinin belirtildiği
yazılım bloğu
Basit dijital giriş ve çıkışlar aşağıdaki gibi tanımlanabilir ve aşağıdaki örnekte Sisteme
dâhil edilen Ledlerin tanımlanması gösterilmiştir.
24
Şekil 4.0.5 HardwareProfile.h kütüphanesindeki dijital çıkışların atandığı
yazılım bloğu
Microchip’ in DemoApp uygulaması üzerinde geliştirmeye gidiyorsanız ve bu
uygulama içerisinde bazı dijital çıkışları kapatmak istiyorsanız aşağıdaki gibi bir
yönteme başvurabilirsiniz. Burada diğer ledler LED2 ile bağdaştırılarak kapatılmıştır.
Şekil 4.0.6 HardwareProfile.h kütüphanesindeki kullanılmayan diğer dijital
çıkışların birbirleri ile bağdaştırılması
ENC28J60 entegreniz ile eğer kullanıyorsanız eepromun mikro denetleyicinizde
bunların nerelere bağlanacağını seçebilirsiniz. Eğer farklı bir işlemci modeli ile
çalışmak isterseniz MPLAB IDE programı içerisinden configure > select device
yolunu izleyerek bunu gerçekleştirebilirsiniz.
Şekil 4.0.7 MPLAB IDE yazılım geliştirme ortamında mikro denetleyici seçilmesi
25
Şekil 4.0.8 MPLAB IDE yazılım geliştirme ortamında mikro denetleyici isminin
girilmesi ve projeye dâhil edilmesi
Mikro denetleyicinizin özelliklerine bağlı olarak program hafızanızın 64 K ‘ı aşan
durumlarda (Mikro denetleyicinin yeterli hafızaya sahip olduğu varsayılarak yani 64
K ‘dan büyük hafızaya sahip) bunu yine MPLAB IDE programı içerisinde tanıtmanız
gerekmektedir. Bunu da yine menü sekmelerinden Project > build options > Project
yoluyla aşağıda gösterildiği gibi uygulamanız gerekmektedir.
26
Şekil 4.0.9 MPLAB IDE yazılım geliştirme ortamında proje özellikleri dizini
Açılan pencerede MPLAB C18 sekmesi altından Memory Model kategorisinden
aşağıdaki gibi ayarlayabilirsiniz.
27
Şekil 4.0.10 MPLAB IDE yazılım geliştirme ortamında proje özelliklerinin
değiştirilmesi
4.3.3. TCPIPConfig.h
4. Bölümde bahsedildiği gibi Microchip kodlarını modüler bir şekilde yazmış ve
bunları da kullanıcıların rahatlıkla düzenleyebileceği bir yapı haline getirmiştir.
Aşağıdaki resimde Proje içindeki ismi ile TCP ENC28.h (Eğer ENC28j60 modülünü
kullanıyorsanız.) içinde Stack yapısında kullanmak istediğiniz ya da istemediğiniz
modüllerin aktif veya pasif yapılmasına olanak sağlamaktadır. Tabi ki burada dikkat
edilmesi gerek bir nokta ise, bazı modüllerin aynı anda çalışmamasıdır. Yani HTTP
ile onun daha üst seviyesinde olan HTTP2 modülü aynı anda çalışmamaktadır. Bu gibi
nedenlerden dolayı Microchip firması bu Application Libraries uygulaması içerisinde
TCPIP Configuration Wizard programını, bu dosyanın doğru bir şekilde
düzenlenmesini sağlamak için bu uygulama paketi içerine dâhil etmiştir.
28
Şekil 4.0.11 TCPIPConfig.h kütüphanesindeki modül atamalarının gerçekleştiği
yazılım bölümü
Ayrıca bu kütüphane içerisinde MPFS veya MPFS2 dosya sistemi seçimi, 1M bit
Eeprom kullanacaksak 25LC1024 bulunan satırın programa açılması, Eeprom ya da
Flash depolama birimlerinin seçimi de yine bu kütüphane dosyası içerisinde
yapılmaktadır.
29
Şekil 4.0.12 TCPIPConfig.h kütüphanesindeki dosya sisteminin ve harici
depolama biriminin özellikleri ve türünün belirtilmesi
Devremizin ağ altyapı bilgileri IP adresi, MAC adresi, Ağ alt geçit adresleri ve DNS
adresleri bu kütüphane içinde tanımlıdır. Buradaki IP adresi, Ağ alt geçit adresleri gibi
sistemin yerel ağ’ da bağlanabilmesi için gerekli olan tanımlamalar, sistemin
çalıştırıldığında ve resetlendiğin de alacağı ilk değerlerdir. Yani bu ayarlar sadece,
daha önceden Eeprom içerinde bu bilgiler bulunmuyorsa, Eeprom silindiğinde, sistem
resetlendiğin de kullanılır. DHCP client modülünün açılmasıyla yerel ağın alt yapı
bilgilerini otomatik olarak alır ve bu bilgilerle sistem çalıştırılması sonrasında
değiştirir.
30
Şekil 4.0.13 TCPIPConfig.h kütüphanesindeki ağ altyapı bilgileri IP adresi ,
MAC adresi , Ağ alt geçit adresleri ve DNS adresleri bilgilerinin atandığı yazılım
bölümü
4.3.4. TCPIPConfig.h İçerisindeki Kullanılan Modüller
4.3.4.1. Announce Modülü
Bu modül DHCP etkinleştirilmiş bir ağda, UDP mesaj yayını ile 30303 portu üzerinde
sistemimizin keşfedilmesine olanak sağlar. Yani bu modül ile sistemimizin ağ
üzerinde bulunup bulunmadığını, sistem kodlarının çalışıp çalışmadığı testi yapılabilir.
Bu modül aşağıdaki gibi TCPIPConfig.h kütüphanesinden önündeki “//” işaretinin
kaldırılmasıyla kolaylıkla yeterli hafızanın bulunmasıyla devreye alınabilir. Bu modül
çalıştırılan sistemin yerel ağ ‘da bağlı olup olmadığını test etmeye yaramaktadır.
Announce modülü tarafından kullanılan modülün değiştirilmesi istenilirse “
Announce.c ” kaynak dosyasından aşağıdaki tanımlamadaki port değeri değiştirilir.
#define ANNOUNCE_PORT 30303
31
Announce protokolü, Microchip Application Libraries ile birlikte gelen TCP/IP
Discoverer programı ile kullanılması için tasarlanmıştır. Bu sayede bu program ile ağ
üzerindeki bir sistem rahatlıkla bulunabilir.
Şekil 4.0.14 Microchip Ethernet Device Discoverer programına genel bakış
4.3.4.2. DNS İstemci Modülü
Domain Name Service (DNS) sunucu isimlerini (www.google.com gibi) onların IP
adresleriyle (74.125.224.72 gibi) eşleşmelerini sağlamaktadır. DNS istemci modülü,
stack yapısına DNS çözümleyebilmesini sağlamaktadır. Ayrıca TCP uygulamalarında
DNS modülünün kullanılmasına gerek yoktur. Fakat uzak sunucuların IP adresi
bilinmediği durumlarda kullanılabilir. Bu modül TCPIPConfig. h dosyası içerisinde
aşağıdaki gibi tanımlanabilir.
# define STACK_USE_DNS
4.3.4.3. HTTP2 Server Modülü
HTTP2 web server modülü ve onunla ilişkili olan MPFS2 dosya sistem modülü,
sisteme bir web server gibi davranmasına izin verir. Bu, durum bilgisini görüntülemek
ve herhangi bir web browser kullanılarak uygulamanın kontrol edilmesine olanak
sağlar. HTTP2 web server’ in nasıl çalıştığını anlamak için şu 3 başlıca bileşen
gerekmektedir: web sayfaları, MPFS2 yardımcı programı ve CustomHTTPApp.c ,
HTTPPrint.h kaynak dosyalarıdır. Bütün bunların genel işleyiş yapısı aşağıdaki
gösterilmiştir. Ayrıca MPFS2 yardımcı programı daha sonraki bölüm olan TCPIP
destek programları içerisinde bahsedilmiştir.
32
Şekil 4.0.15 HTTP2 web server yapısının genel olarak işleyişi [7]
HTTP2 web server modülü birçok özelliğe sahiptir ve bunlar aşağıda gösterilmiştir.
4.3.4.3.1. HTTP2 Dinamik Değişkenler
Birçok temel ihtiyaçlardan biride durum bilgilerinin, web sayfasını kullanan
kullanıcıya sağlanmasıdır. HTTP server, dinamik değişkenlerin oluşturduğu
komutların yerine getirir ve html kodu içerisindeki bu komutlar, servera bildirim
göndererek, geliştiricinin web sayfası içerisinde oluşturduğu kodların bulunduğu bir
geri dönüş fonksiyonunun çalıştırılmasını sağlar. [7]
Kullanımı
Basitçe bir dinamik değişken oluşturmak istersek , web sayfası kaynak kodu içerisinde
bulunan bu değişkenin iki ucuna “ ~ ” işareti eklenir.(örnek : ~DinamikDegisken~)
Microchip’in sağladığı MPFS2 yardımcı programını dinamik değişkenleri sayfanızın
kaynak kodları içerisine ekledikten sonra çalıştırdığınızda , bu program otomatik
olarak bu değişkenleri algılar ve HTTPPrint.h kütüphanesi içerisine indeksler. Bu
sayede CustomHTTPApp.h (yada kendi oluşturacağınız herhangi bir kütüphane)
kütüphanesi içerisinde “ HTTPPrint_DinamikDegisken ” isminde web sayfasından
bulunan isteğin cevaplanacağı bir fonksiyon oluşturulabilir.
Aşağıda yukarıdaki anlatılan dinamik değişkenlerin uygulandığı basit bir html kodu
ve bu kodun servera geri dönüşünün olduğu bir fonksiyon yazılmıştır(Demo
uygulamasında CustomHTTPApp.h içerinde bulunmaktadır).
<tr><td><b>Dinamik Değişken:</b></td><td> </td><td>~ Dinamik Değişken
~</td></tr>
33
İlişkilendirilmiş bir geri dönüş fonksiyonu ve bu fonksiyonun web sayfası içerisindeki
alana içerisindeki değerin döndürülmesi ;
void HTTPPrint_DinamikDegisken(void)
{
TCPPutROMString(sktHTTP, (ROM BYTE*)"Dinamik değişken ismi
yazıldı.");
}
Uzun Çıktılar
HTTP protokolü, veri iletimi için sabit bir hafıza buffer ‘ı kullanır. Bu yüzden
gönderilmek istenilen veri tek seferde gönderilemeyebilir. Bu yüzden göndermek
istediğiniz datanın bu buffer’ın maksimum taşıma seviyesini aşmaması gerekmektedir.
HTTP2 web server, html sayfa üzerinden dönen herhangi bir geri dönüş
fonksiyonunun işletilmesinde buffer içerisinde en az 16 boş byte’ın olmasını
sağlamaktadır. Bu yüzden 16 Byte’dan daha küçük olan datalar uygun TCPPut
fonksiyonları ile web sayfası üzerine geri döndürülebilir. Fakat daha fazla uzun çıktılar
için ne kadar kullanılabilir alanın olduğu kontrol edilmeli , ve bunun sayısınca datalar
yazılmalı ve tekrar geri dönülmelidir. Çıkış durumunun yönetilebilmesi için, geri
dönüş fonksiyonunda Stack uygulaması tarafından desteklenen curHTTP.callbackPos
bayrağı kullanılması gerekilmektedir. Bu bayrağın kullanılmasının örneğini aşağıdaki
örneği aşağıda gösterilmektedir.
Microchip ‘in demo uygulaması içerisinde gelen aşağıdaki LCD üzerinde verilerin
web sayfası üzerindeki görüntülenme kodları yer almaktadır.
Html kaynak kodu;
<div class="examplebox code">~lcdtext~</div>
Yukarıdaki kod bölümüyle server üzerinde bir geri dönüşüm fonksiyonu isteği
oluşturulur.
void HTTPPrint_lcdtext(void)
34
{
WORD len;
// Ne kadar Byte ‘ın yazılabilir olduğunun hesaplanması
len = TCPIsPutReady(sktHTTP);
// Eğer yazma işleminin başındaysa(ilk defa çağrılmışsa) yazılmak istenen
// max. Byte değeri yazılır (16x2 = 32 karakter)
if(curHTTP.callbackPos == 0)
curHTTP.callbackPos = 32;
// Tek seferde yazılabilecek karakterler 12 byte olabilir
// (boşluklar ve alt satıra geçme ifadeleri daha uzundur.)
while(len > 12 && curHTTP.callbackPos)
{
// 16 Byte yazıldıktan sonra web sayfa üzerinde altsatıra geçme kodunun gönderilmesi
if(curHTTP.callbackPos == 16)
len -= TCPPutROMString(sktHTTP, (ROM BYTE*)"<br />");
if(LCDText[32-curHTTP.callbackPos] == ' ' || LCDText[32-curHTTP.callbackPos]
==
'\0')
len -= TCPPutROMString(sktHTTP, (ROM BYTE*)" ");
else
len -= TCPPut(sktHTTP, LCDText[32-curHTTP.callbackPos]);
curHTTP.callbackPos--;
}
}
4.3.4.3. Uzak Sunuculara İstekte Bulunmak
Microchip TCP/IP Stack uygulamanız ile uzakta bulunan herhangi bir sunucuya
istemci olarak bağlanabilir ve sanki adres çubuğunda sorgulama yapar gibi web
sunucusuna kolaylıkla istekte bulunabilirsiniz. Eğer SQL veritabanında veri
depolamak gibi işlevleri yerine getirmek istiyorsanız, web sayfasını sanki herhangi bir
kullanıcı adres çubuğunda ya da yönlendirdiğiniz herhangi bir panelden verilerini
almanız gibi olan herhangi bir GET yada POST metotlarıyla verileri kaydeden ve bu
sayfayı herhangi bir dilde kodlamanız durumunda, bu sayfa SQL veritabanında
depolama yapabilmek için gerekli ara bağlantısını oluşturacaktır. Bu aşamadan sonra
otonom bir şekilde sisteminizdeki bilgilerin otomatik olarak kaydedilmesi için gerekli
olan, sanki bir kullanıcı herhangi bir web browser üzerinden ilgili POST yada GET
metoduyla verileri aldığınız bu sayfaya olan bağlantısı kalmış demektir.
35
Örnek olarak sorgulama adresinizin şu şekilde olduğunu kabul edelim;
www.bilgihanhuseyin.com/verilerikaydet.php?serino=43&gun=2 ise bu
sorgulamanın GET metodundaki gönderim mesajındaki formatı aşağıdaki gibidir.
GET /verilerikaydet.php?serino=43&gun=2 HTTP/1.0
Host: www.bilgihanhuseyin.com
Connection: close
TCPPutROMString(istemci, (ROM BYTE*)"GET ");
TCPPutROMString(istemci, (ROM BYTE*)"/kayit.php?serino=");
TCPPutROMString(istemci, (ROM BYTE*)"43");
TCPPutROMString(istemci, (ROM BYTE*)"&gun=");
TCPPutROMString(istemci, (ROM BYTE*)"2");
TCPPutROMString(istemci, (ROM BYTE*)" HTTP/1.0\r\nHost: ");
TCPPutString(istemci, sunucuAdi);
TCPPutROMString(istemci, (ROM BYTE*)"\r\nConnection: close\r\n\r\n");
Yukarıdaki gibi GET metoduyla istenilen verilerin gönderimi yapılabilir ve dünyanın
birçok yerinde bu sistemlerin olduğu düşünülürse tek bir noktadan bu verilerin
gözlemlenmesi ve uzaktan izlenmesi gibi birçok işlev yerine getirilebilir.
4.4. Microchip Yardımcı Programlar
4.4.1. MPFS2 Yardımcı programı
Microchip tarafından sağlanan bu program , web sayfalarını verimli bir şekilde harici
depolama birimine yada dahili Flash program hafızasına depolanabilir hale
getirmektedir. Bu program ayrıca, web sayfaları içerisinde bulunan dinamik verileri
indeksleyerek HTTPPrint.h dosyasını bu indeksler ile güncellemektedir. Bu da
kullanıcı için manüel olarak yapılmasına karşın büyük bir kolaylık sağlamaktadır.
Harici depolama birimi kullanıldığında, MPFS2 yardımcı programı BIN formatında,
daha önceden yazdığınız yada demo uygulaması içerisinde bulunan web sayfalarından
oluşan sıkıştırılmış bu dosyayı çıktı olarak verir ve bu dosyayı doğruca ister web
browser üzerinden, ister ftp üzerinden isterseniz de bu uygulamanın verdiği bir destek
36
ile derleme aşaması bittikten hemen sonra sisteminize bağlı Eeprom doğrudan
aktarabilirsiniz. Eğer Web sayfalarını Flash program hafızasında tutulması isteniyorsa
da, MPFS2 yardımcı uygulaması C imaj kaynak kodu oluşturarak bunu proje içerisine
dâhil eder.
Şekil 4.0.16 Microchip MPFS Generator yardımcı programı ekran görüntüsü
Eğer Internet aracılığı ile web sayfası sisteme atılması isteniliyorsa, Microchip
Announce programı vasıtasıyla yada DHCP client kullanılmadıysa program içerisinde
yazılan sistem IP adresi web browser üzerinde adres çubuğuna yazılarak, uzaktan
sisteme erişim sağlanır.
Erişimin başarılı bir şekilde sağlanmasından sonra aşağıdaki resimdeki gibi
http://sistemipadresi/mpfsupload sayfasına gidilir.
37
Şekil 4.0.17 Web tarayıcısı üzerinden sistem üzerine MPFS dosya sistemindeki
web sayfalarının yüklenmesini gösteren örnek ekran görüntüsü
Bu aşamadan sonra mpfs2 yardımcı programı ile sıkıştırdığınız web sayfalarınızı
buradan sisteminize yükleyebilirsiniz. İşlemin başarılı bir şekilde tamamlandığının
mesajı alındıktan sonra tekrar sisteminizin ana sayfasına girerek yüklemiş olduğunuz
web sitesini görebilirsiniz. Eğer Microchip TCP/IP Stack ile birlikte gelen web
sayfalarını MPFS2 programı aracılığı ile derleyip sisteminize yüklerseniz, ana
sayfanız aşağıdaki gibi olacaktır.
Şekil 4.0.18 Microchip TCP/IP Stack kütüphaneleri ile oluşturulmuş Demo App
uygulamasının donanım üzerinde gerçeklendikden sonraki web sayfasının ekran
görüntüsü
38
4.4.2. TCP/IP Configuration Wizard Yardımcı programı
Microchip’ in sağladığı bu program aracılığı ile TCPIPConfig.h kütüphanesinin
herhangi bir hata oluşmaksızın kullanıcının isteği doğrusunda hızlı ve güvenli bir
şekilde düzenleyebilirsiniz. İsteğe bağlı olarak aşağıdaki resimdeki “Show
Advanced Settings” kutucuğu da işaretlenerek daha kütüphanede ayarlanabilen daha
fazla özelliği, programa ekleme ve çıkartarak devreye alabilir ya da çıkartabilirsiniz.
Şekil 4.0.19 TCP/IP Configuration Wizard programı başlangıç ekranı
İlgili dizini seçip ve isteğe bağlı gelişmiş düzenleme seçeneğinin seçilmesinin
ardından “Next” butonuna basılarak istenilen modüllerin aktif yada pasif yapılmasının
kontrol edildiği bölümü aşağıdaki resimden görebilirsiniz ve ilgili düzenlemeleri
buradan yapabilirsiniz.
39
Şekil 4.0.20 TCP/IP Configuration Wizard programı modül düzenleme bölümü
Gerekli modüllerin seçiminden sonra daha sonraki ayarlama bölümü olan Ağ
yapılandırma bölümü gelmektedir. Bu bölümde Sisteminize ait Host İsmini, MAC
adresini ve sistemin ilk açılışında resetlendiğin de ya da DHCP clientin kullanılmaması
durumunda işletilecek olan Ağ altyapısı bilgileri düzenlenir.
Şekil 4.0.21 TCP/IP Configuration Wizard programı modül düzenleme bölümü
2
Aşağıdaki resimlerde ise sırasıyla sisteminize ait web server ayarlamalarınız, web
sayfalarını ve bazı dosyalarını saklayacağınız hafıza türünün seçimi ve soket
sayılarının düzenlendiği bölüm yer almaktadır.
40
Şekil 4.0.22 TCP/IP Configuration Wizard programı web server
konfigürasyonlarının düzenlendiği bölüm
Şekil 4.0.23 TCP/IP Configuration Wizard programı dosya sistemi
konfigürasyonlarının düzenlendiği bölüm
41
Şekil 4.0.24 TCP/IP Configuration Wizard programı TCP soket
konfigürasyonlarının düzenlendiği bölüm
Bu programda hata yalnızca aşağıdaki şekildeki gibi oluşabilir. Bu hatanın çözümü ise
hatanın olduğu soketin sayısının olması gereken duruma göre artırıp ya da
azaltılmasıdır. Resimdeki duruma göre soket sayısının GENERIC_TCP_SERVER
Bölümü altında “ Count ” bölgesindeki değerden kaynaklanmaktadır ve orada “0”
değeri yazmaktadır. Bu değer 1 yapılarak yani GENERIC_TCP_SERVER modülü
için 1 tane soket açılarak bu hata düzeltilebilir.
Şekil 4.0.25 TCP/IP Configuration Wizard programı TCP soket
konfigürasyonlarının düzenlenmesinde ki örnek hata türü
42
BÖLÜM 5. PHP ve MYSQL
PHP: Hypertext Preprocessor (Türkçe: Üstünyazı Önişlemcisi) (Aslen: Personal Home
Page - Kişisel Ana Sayfa) ,internet için yaratılmış, sunucu taraflı, çok geniş kullanımlı,
genel amaçlı, HTML içerisine gömülebilen betik ve programlama dilidir. İlk kez 1995
yılında Rasmus Lerdorf tarafından yaratılan PHP’ nin geliştirilmesi bugün PHP
topluluğu tarafından sürdürülmektedir. Ocak 2013 itibariyle 244 milyondan fazla web
sitesi PHP ile çalışırken, 2,1 milyon web sunucusunda PHP kurulumu bulunmaktadır
[9]
Projemizde PIC18lf4685 'den çektiğimiz verileri veri tabanına kaydedip, kullanıcının
tüketmiş olduğu elektrik enerjisini web tarayıcısında takip edebilmesi PHP dilini
kullandık. Web sitelerini de hazırladığımız HTML dosyaları, bildiğiniz üzere özel
olarak yorumlanmadığı sürece sabit sonuçlar verirler.Yani düz bir HTML dosyasında
yapamayacağımız şeyler vardır.Mesela HTML kullanarak bir web sunucusundaki yazı
dosyasını okuyamayız,ya da bir veritabanı ile bağlantı kuramayız.HTML ile
kullanıcılarımız hakkında bilgi edinebiliriz, ancak bunları işleyemeyiz;matematiksel
işlemler yapamayız.Bu tarz görevler için HTML içerisine koyacağımız scriptleri
algılayıp özel bir yorumcu gerekir.Bizde projemizde yukarıdaki nedenlerden dolayı
PHP kullanarak kullanıcı ile etkileşimde bulunan bir sistem kurduk.
5.1. PHP Neler Yapabilir?
PHP esasen server tarafında yorumlanması üzerine odaklanmıştır, bu nedenle herhangi
bir CGI programının yaptığı; dataların toplanması, dinamik sayfa içeriklerinin
oluşturulması veya çerezlerin gönderilmesi yada alınması gibi işlemleri ve daha
fazlasını yapabilir.
PHP komutlarının kullanıldığı başlıca üç bölge vardır;
Server tarafında kodların yorumlanması; bu yöntem diğerlerine göre
daha geleneksel ve php için esas hedef bölümüdür. Bunun çalışabilmesi
için 2 şeye ihtiyacınız vardır; PHP derleyicisi (CGI veya server
modülü) ve web browserdır. Yazmış olduğunuz PHP programının
çıktısını web browser ile PHP sayfasını server üzerinden
görüntüleyebilirsiniz.
Komut satırı kodlarının yorumlanması; herhangibi bir PHP kodu yazıp,
bu kodu server yada browser olmadan çalıştırabilirsiniz.
43
İhtiyacınız olan tek şey PHP derleyicisi ve bunun web sayfaları
görüntülemede kullanılmasıdır.
Masaüstü uygulamalarının yazılması; PHP grafik tabanlı kullanıcı ara
yüzlü bir masaüstü uygulaması oluşturmadaki en iyi programlama dili
değildir, fakat PHP programlama dilinin çok iyi bilinmesi halinde ve
bunların bazı ileri seviye PHP özelliklerinin istemci tarafı
uygulamalarında kullanılması istenildiğinde , PHP-GTK ‘ı kullanabilir
ve bunun gibi programları yazabilirsiniz. Ayrıca bu yöntem ile çapraz
platform uygulamaları yazabilirsiniz. PHP-GTK, PHP ye bir ilavedir ve
ana dağıtım içerisinde mevcut değildir.
[10]
PHP özgür bir yazılım olup PHP Lisansı ile dağıtılmaktadır. Bu lisans kullanım şartları
kısmında GNU Genel Kamu Lisansı ile örtüşmese de, PHP tüm web sunuculara ve
hemen hemen tüm işletim sistemi ve platforma ücretsiz olarak yüklenebilir.
Php ile gerçekleştireceğimiz çok şey olmasına karşı, bazılarının listesi aşağıdadır.
● Herhangi CGI(Common Gateway Interface) programının yapabileceği her şey
yapılabilir, dinamik sayfa içeriği hazırlanabilir, kullanıcı ile interaktif iletişim
sağlayabiliriz.
● Tarayıcı üzerinden E-posta erişi yazılım hazırlayabiliriz.
● Dinamik olarak grafikler oluşturabiliriz.
● HTTP doğrulama (authentication) yapılabilir.
● Cookieler (Çerezler) kullanılabilir.
● Oturum yönetim sistemi hazırlanabilir (Session)
● E-Ticaret uygulamaları geliştirebiliriz.
● Tarayıcı üzerinden FTP programı hazırlayabiliriz.
● PHP ile XML yorumlayabiliriz.
● COM bileşenlerini kullanabiliriz.
Ancak bütün bunların üzerinde PHP’ nin belki de en güçlü özelliği, çok geniş bir açıda
veritabanı kullanımı desteklemesidir. Php ile ileri düzeyde veritabanlarının kullanımı
oldukça rahattır. PHP aşağıdaki veritabanlarını desteklemekte olup, biz projemizde
MySQL kullandık. [11]
44
MySQL PostgreSQL Oracle(OCI7 ve
OCI8)
dBase
InterBase Ovrimos Empress FrontBase
ODBC FilePro mSQL Solid
Hyperwave Direct MS-SQL Sybase IBM DB2
Adabas D Ingres Velocis Informix
Tablo 5.0.1. Çeşitli Php Destekleyen Veritabanları
5.2. PHP’ nin Avantajları Nelerdir?
Php script dilinin avantajlarına bir göz atacak olursak, şunları söyleyebiliriz:
5.2.1. Hız
Günümüzde bir web sayfasının size ulaşma süresi artık milisaniyeler ile tartılacak
kadar hassas bir nokta iken, PHP’ nin bu konudaki performansı oldukça
etkileyicidir.PHP her şeyi kendi üzerinde çalıştırırken COM nesneler ile
haberleşmediği için verimi yüksektir.Bunun üzerine Zend Optimizer özelliği eklendiği
zaman çok yüksek bir performans ve hız elde edilebilir.
5.2.3. Kolay Öğrenilmesi
PHP, profesyonel olmayan, niyeti sadece biz gibi web sitesinde biraz etkileşim ve
dinamizm getirebilmek olan programcılara da hitap etmek için geliştirilmiştir.Temel
olarak ortaya çıkış nedenlerinden bir tanesi de bu olup,rahat ve kolay öğrenilebilen bir
script dili olmasını sağlayabilmektir.Ayrıca daha önceden C C++ gibi bilgisayar
programlama dilleri ile uğraştıysanız öğrenmesi sizi zorlamayacaktır.
5.2.4. Kararlı ve Özgür Web Uygulamaları
PHP uygulamaları son derece kararlıdır. Mesela Javascript'in çalışması bulunduğu
tarayıcıya göre değişim gösterebilirken, PHP’ de böyle bir şey söz konusu değildir.
PHP size istediğiniz platform ve tarayıcıda çalışma özgürlüğü verir.
45
5.2.5. Veritabanı Hâkimiyeti
PHP ile SQL veritabanı sorgularına son derce rahat ve hızlı bağlantılar kurulabilir.Web
üzerinde geliştirdiğiniz veritabanı uygulamalarında son derce başarılı ve yüksek
performanslı sonuçlar elde edebiliriz.
5.2.6. Platform ve Web Sunucusu Özgürlüğü
PHP’yi dilediğiniz platformda ve birçok popüler web sunucusunda
çalıştırabilirsiniz.Unix,Linux ya da Windows gibi platformlarda çalışabilmek size
daha fazla özgürlük verir.Öte yandan APACHE,IIS(Internet Information Server)
,PWS(Personal Web Server), FHTTPiOmni HTTP ve Xitami gibi web sunucuları
arasından tercih yapabilirsiniz. Ancak şunu belirteyim ki, bu PHP için en tavsiye
edilecek platform /web sunucusu kombinasyonu Unix/Apache kombinasyonudur.
5.2.7. Geniş Kullanıcı ve Geliştirici Kitlesi, Ücretsiz Kurulum ve Kullanımı
Geniş bir kullanıcı ve geliştirici kitlesine sahip olan PHP, büyük bir hızla yayılımına
ve gelişimine devam ederken, aynı zamanda da tamamen ücretsizdir. Bu, onu şu
andaki ve gelecekteki muhtemel ücretli rakiplerinden daha üstün ve güzel bir çözüm
haline getirecektir. [12]
5.2.8 Sürüm Geçmişi
Kırmızı Eski sürüm, desteklenmiyor
Sarı Eski sürüm, hala destekleniyor
Yeşil Mevcut sürüm
Mavi Gelecek sürüm ya da BETA, ALFA sürüm
Tablo 5.2.8.1 PHP sürüm geçmişindeki renk açıklamaları
46
1 1.0.0 1995-06-08 "Personal Home Page Tools(Kişisel Ana sayfa
Araçları)". Olarak anılıyordu ve kısaltımı "PHP" idi.
2 2.0.0 1997-11-01 Oluşturucusu ve geliştiricisi "en hızlı ve en sade araç"
olarak, web sayfaları için geliştirdi.
3 3.0.0 1998-06-06 Sürüm kişisellikten, kurumsallığa geçti. Zeev
Suraski ve Andi Gutmans tekrar basit dil bilgisini
yazdı.
4 4.0.0 2000-05-22 Daha ileri seviye dil bilgisi eklendi/Zend Motoru
denilen dil bilgisi denetleyicisi getirildi.
4.1.0 2001-12-10 'Süper globaller' tanıştırıldı.
($_GET, $_POST, $_SESSION, $_SERVER vb...)
4.2.0 2002-04-22 register_globals ön tanımlı olarak engellendi.
4.3.0 2002-12-27 CLI tanıştırıldı,CGI ekleri yapıldı.
4.4.0 2005-07-11 phpize ve php-config betikleri için eklenmeler
yapıldı.
4.4.8 2008-01-03 Çoğu güvenlik sorunları ve hatalar düzeltildi. Son
kalıcı PHP 4 sürümü oldu. Gerekli ise, güvenlik
güncellemeleri 2008-08-08 e kadar sürdü.>
4.4.9 2008-08-07 Daha fazla açık onarıldı. PHP 4 serileri için son sürüm
oldu.
5 5.0.0 2004-07-13 Zend Motoru II ile yeni obje modelleri geliştirildi.
5.1.0 2005-11-24 Eklenen değişkenler ile performans artışı
gözlemlendi.
5.2.0 2006-11-02 Filtreleme ön tanımlı olarak iptal edildi.
5.2.11 2009-09-16 Hata ve güvenlik sorunları çözüldü.
5.2.12 2009-02-25 Güvenlik ve veri tabanı iletişimi güçlendirildi. 60 adet
hata düzeltildi.
5.2.13 2010-07-22 Hatalar düzeltildi.
5.2.14 2010-12-17 Hatalar düzeltildi. PHP 5.2.x sürümleri geliştirilmesi
durduruldu.
5.3.0 2009-06-30 Namespace desteği, Atlama kodları (goto ile
limitlendi ), Yerli PHP arşivlemesi
(phar),Windows desteği arttırıldı, sqlite3 geliştirildi,
fileinfo, mime_magic yerine daha iyi
bir MIME desteği için getirildi, uluslararası olarak
"ereg" kod yapısı iptal edildi.
5.3.1 2009-11-19 100'den fazla hata düzeltildi, bazı küçük sorunlar da
düzeltildi.
5.3.2 2010-03-04 Çok geniş bir hata düzeltimi yapıldı.
5.3.3 2010-07-22 Başlıca hata ve güvenlik sorunları onarıldı.
5.4 2012-03-01 Trait desteği geldi, diziler için kısa sözdizimi desteği
geldi. Register_globals, safe_mode,
allow_call_time_pass_reference konfigürasyon
değerleri session_register(), session_unregister() ve
47
session_is_registered() metotları ile birlikte
kaldırıldı. Dahili web sunucu desteği eklendi. Bellek
kullanımı düşürüldü, mevcut fonksiyonelice üzerinde
performansı artıran çok sayıda iyileştirme yapıldı.
5.5 2013-06-20 Yeni makine kodu önbellekleme eklentisi (Zend
Optimizer+) geldi. GD resim işleme kütüphanesine
yeni fonksiyonlar eklendi. Parola şifreleme
işlemlerini kolaylaştırmak ve daha üst seviyede
güvenlik sunmak üzere password_hash() ve
password_verify() metotları geldi. try {} catch() {}
sözdizimine diğer üst seviye dillerde bulunan finally
bloğu eklendi.
6 6.0.0 Şu an
güncellenmedi,
gelecek sürüm
register_globals, magic_quotes ve
safe_mode kaldırıldı. Unicode desteği geldi.
Tablo 5.2.8.2 PHP sürüm geçmişi
[9]
5.3. PHP Çalıştırma ve Geliştirme Ortamı
PHP tamamen açık kaynaklı (Open Source) bir dil olarak geliştirildiğinden, C kaynak
kodları tamamen açıktır. Başta Linux olmak üzere birçok Unix sistemi, C kaynak
kodlarıyla dağıtılan yazılımları kurmak ve çalıştırmak için gereken birçok derleyici
standart olarak barındırır. Windows 95/98/ME/NT ve Windows 2000 için PHP’nin
derlemeye ihtiyaç duymayan derlenmiş dağıtımları (binary code), PHP’nin Web
sitesinde mevcuttur.
PHP dilinin kullanan Web yazılım geliştiricilerinin büyük çoğunluğu, PHP
yazılımlarını kendi bilgisayarlarlarında geliştirip daha sonra İnternet üzerindeki Web
sunucularına yükleyerek kullanırlar. PHP’nin her türlü işletim sisteminde sorunsuz
olarak çalışabilmesi sayesinde (platformdan bağımsızdır), Windows üzerinde
geliştirirken ve çalıştırılan yazılım, Linux veya Unix sistemlerinde tek satır kod
değiştirmeden aynı şekilde çalışabilir.
PHP, bir Web yazılımı geliştirme dili olduğu için, PHP’nin İnternet’ten tek başına
temin edilmesi Web yazılımı geliştirme ortamı için yeterli değildir.PHP’nin
çalıştırılacağı ortam Web sunucuları olacağı için, PHP’yle birlikte bir Web
sunucusunun da tercih edilerek geliştirmenin yapılacağı bilgisayarda hazırlanması
gerekmektedir. Gerek PHP’nin performans üstünlüklerini açığa çıkarması, gerekse tek
48
başına yeterliliği açısından, dünyada PHP yaygın olarak Apache Web sunucularıyla
birlikte kullanılmaktadır.
PHP, aslında bir kod yorumlayıcısı olarak çalışır. Kod yorumlayıcı olarak yaptığı iş,
kendisine gönderilen, içindeki PHP komutları bulunan dosyaları çalıştırarak sonuçları
ekrana basmaktır. Sunucu bilgisayardaki Wen sunucusu, kod yorumlayıcıdan gelen
sonuçları sunucunun ekranına basmak yerine, Web sunucusuna bağlı olan ve isteği
gerçekleştiren ziyaretçiye gönderir. Perl, C ya da Python dilleri de Web sunucularında
kullanılan diğer CGI yorumlayıcılarıdır.[3][PHP ve Mysql – Kayra Otaner]
5.3.1. Wamp Server
WampServer programı otomatik olarak, web uygulamaları geliştirmenizde ihtiyacınız
olan her şeyi yüklemektedir. Herhangi bir ayarlama dosyalarında değişiklik yapmadan
serverinizi ayarlayabilirsiniz. Ayrıca bu programı http://www.wampserver.com/en/
sayfasından indirebilir ve bilgisayarınıza kurabilirsiniz.
5.3.1.1. Fonksiyonellik
WampServer’in işlevselliği eksiksiz ve kolay kullanıma sahiptir.
Eğer Windows çubuğunda yer alan WampServer’in ikonuna fare ile tıklarsanız;
Apache ve MySQL servislerini kontrol edebilirsiniz.
Online/Offline arasında geçişin sağlayabilirsiniz.(herkese giriş izni
verilmesi yada sadece localhost üzerinden erişimin sağlanması)
Apache, MySQL ve PHP sürümleri arasında geçiş veya yüklenmesi
Server ayarlarınızı kontrol edebilirsiniz.
Loglarınıza erişebilirsiniz.
Ayar dosyalarına erişebilirsiniz.
Eğer sağ tıklarsanız;
WampServer’in menü dilini değiştirebilir,
Resmi sitesine buradan erişim sağlayabilirsiniz.
49
Şekil 5.0.1 Wamp server ayarlamaları
5.3.1.2. Wampserver Kullanımı
“www” dizini otomatik olarak kurulacaktır.(genellikle c:\wamp\www)
Bu dizin altına kendiniz herhangi bir alt dizin oluşturarak, kendi PHP
dosyalarınızı bu klasör içerisine koyunuz
WampServer menü içinden “localhost” linkine tıklayarak yada internet
browser üzerinden http://localhost üzerinden erişebilirsiniz.
Şekil 5.0.2 Wamp server konfigürasyonları
50
Şekilde 6.3.1.2 de görebileceğiniz gibi “www” dizininin altına eklemiş olduğumuz
“phporneksayfa” klasörünün içerisinde barındırdığı PHP dosyalarının çalıştırılmasını
buradan gerçekleştirebiliriz.
Şekil 5.0.3 Wamp Server kullanarak örnek php dosyasının çalıştırılması
5.4. PHP’nin Temelleri
PHP dosyaları temelde Web sunucusunda yer alan metin dosyalarından başka bir şey
değildir. Web sunucusunun ayarına bağlı olarak. php3. , .phtml yada .php uzantısıyla
tanımlanırlar. Bu metin dosyasında PHP komutları ve HTML yer alır. Web sunucusu
PHP olarak tanımlanmış örneğin .php3 uzantılı bir dosya çağrıldığı zaman bu dosyayı
önce PHP derleyicisine gönderir. PHP derleyicisi aslında metin dosyası olan .php3
dosyasındaki komutları çalıştırarak HTML’e dönüştürür. Ortaya çıkan HTML kodu
da, isteği gönderen kullanıcıya Web sunucusu aracılığıyla iletilerek işlem
tamamlanmış olur.
PHP derleyicisi, kendisine ulaşan metin dosyasında <? Yâda <?php kelimelerine
rastlayana kadar tüm HTML kodunu Web sunucusuna aynen gönderir. PHP
komutlarının başladığını belirten <? ya da <?php ‘den sonra ?>’ya kadar olan bölümü
işleterek çıkan sonuçları, ki bunlar HTML komutları yerine düz metinde olabilir, Web
sunucusuna iletir. İstenirse PHP dosyası ASP’de kullanılan <% ve %> notasyonunu
kullanarak da yazılabilir. Bir PHP dosyası sadece HTML’den, Hem HTML hem PHP
komutlarından, ya da sadece PHP komutlarından oluşabilir. PHP’nin esnekliği, aslında
hem HTML hem de PHP komutlarının aynı dosyada kullanılabilmesinden de gelir.
51
Aşağıda anlatılan örnek komutlar , “www” dizini altında yer alan önceden belirlemiş
olduğunuz klasör altında bulunan index.php dosyası oluşturarak yada bu dosyayı metin
editörüyle düzenleyerek aynen yazılmalıdır. Yazılan komutları test etmek için, Web
tarayıcısının adres satırına http://localhost/phporneksayfa/index.php yazmak ve her
yeni değişiklikte Web tarayıcısındaki sayfayı yenileyerek dosyayı tekrar çağırmak
yeterlidir. Aşağıdaki örneklerde anlatılan bilgiler ekrana doğru şekilde gelmiyorsa, ya
kurulumda hata vardır, yada index.php dosyası yoktur. Bu durumda kurulum
bölümüne tekrar göz atılmalıdır.
5.5. PHP’nin Yazım Kuralları
PHP temel olarak C dilinin sözdizimi üzerine inşa edilmiştir. Tüm PHP komutları ‘ ; ’
(noktalı virgül) ile sonlandırılmalıdır. PHP’de yaygın olarak ekrana bilgi basmak için
echo komutu kullanılır. Aynı işlem için print ya da printf de kullanılabilir. PHP’de
değişken ve komutlar küçük/büyük harf duyarlıdır.
<?
echo(“Merhaba Dünya – Bu bir PHP kodudur.”);
?>
Yukarıdaki komut kurulum bölümündeki test görüntüsü gibi ekrana aynısını
yazacaktır.PHP’nin yazılım kurallarının esnekliği aynı komutun ;
<?
echo “Merhaba Dünya – Bu bir PHP kodudur.”;
?>
Ya da
<?
Echo ‘Merhaba Dünya – Bu bir PHP kodudur.’;
?>
Şekillerinde yazılmasına da izin verir. Genelde en üstteki parantez ve çift tırnaklı
yazım şekli tercih edilir. PHP dosyalarına açıklayıcı bilgiler eklemek için tek satırlık
açıklamalarda // , birden çok satırı kapsayacak açıklamalarda ise /* ve */ işaretleri
kullanılır. Örneğin;<?
// PHP örnek yazılımı
echo(“Merhaba Dünya – Bu bir PHP kodudur.”);
?>
52
Şeklindeki bir PHP kodunda yer alan, PHP örnek yazılımı kelimeleri PHP komutu
değildir ve PHP yorumlayıcısı bu kelimeleri başında // işareti yer aldığı için dikkate
alınmaz. Bazı durumlarda PHP komutlarını silmek yerine başlarına // koymak da tercih
edilebilir. Açıklama satırlarının birden çok satırda olması gereken durumlarda
<?
/*
PHP
Örnek
Yazılımı
*/
echo(“Merhaba Dünya – Bu bir PHP kodudur.”);
?>
/* ve */ arasına yazılan tüm bilgiler PHP komutları barındırıyor olsa bile dikkate
alınmaz. Ekrana basılacak bilgi metninin içinde tek ya da çift tırnak işaretinin
bulunması durumunda, tırnak işaretinden önce \ işareti kullanılmalıdır. Aksi takdirde
echo komutunun metin ayracı olan çift ya da tek tırnakla, basılacak bilgideki tırnaklar
karışabilir.
<?
echo(“Merhaba Dünya – \”Bu bir PHP kodudur\”.”);
?>
Yukarıdaki PHP komutları ekrana Merhaba Dünya – ”Bu bir PHP kodudur”.
yazacaktır.Çift tırnakların önündeki \ işareti, PHP’ye çift tırnağı komut olarak değil
de, ekrana basılacak bilgi olarak görmesini söyler.
Ekrana basılacak olan metin ya da HTML kodlarında C’de olduğu gibi \n belirteci yeni
bir satıra geçmek için, \t belirteci sekme (tab) boşluğu vermek için kullanılır.
<?
echo(“Deneme deneme deneme <br>\n”); //
açıklamalar gerekirse PHP komutlarından sonra da yapılabilir.
?>
53
PHP komutları, ağırlığı olarak HTML komutlarını Web sunucusu aracılığıyla Web
tarayıcısına göndermek için kullanıldıklarından echo komutunun içine HTML komutu
yazmak da mümkündür. Aslında HTML’de yeni bir satıra geçme etiketi olan <br>
kullanılarak tarayıcıya Deneme deneme deneme <br> sat8r8 gönderilir.
Gönderilecek bilgi içinde yer alan \n, tarayıcı tarafından yeni bir satır olarak
yorumlanır. HTML’de yeni satır açmakla, metin dosyasında yeni satır açmak arasında
fark vardır. Yukarıdaki echo ‘dan \n parçasını çıkartarak tekrar deneme yapıldığında,
tarayıcıda aynı görünüm elde edilir, ancak tarayıcıdaki dosyanın kaynak koduna
bakıldığında aradaki fark anlaşılacaktır.
5.6. PHP’de Değişken Türleri
5.6.1. Metin ve Sayı Değişkenleri
Değişken tanımlarken değişkenin barındıracağı bilginin metin ya da sayı olmasının
çok fazla önemi yoktur. Metin olarak tanımlanan ama sayı içeren bir değişkende, daha
sonra matematiksel işlem yapabilmek mümkündür. Tüm diğer dillerde olduğu gibi
PHP’de de sayı, uzun sayı, metin, dizi ve nesne tipi değişken tanımları yapılabilir. Bu
değişkenlerin tiplerinin önceden tanımlanarak PHP’ye bildirilmesi gerekmez.
PHP’de kullanılacak olan değişkenlerin harflerle başlaması ve içinde sayı ve harfin
dışında karakter barındırmaması gerekiyor. Her değişkenin $ işaretiyle başlaması
şarttır. Değişkenlerin sayı içermesi durumunda, değişkene doğrudan sayı değeri
atanırken, metin (yani string) atanacağı durumda çift ya da tek tırnakla bilgilerin
ayrılması gerekir. Değişkenlerin birbirleriyle etkileşimleri de değişkenin türüne göre
değişir. Bir metin değişkeniyle diğer bir metin değişkenini birleştirmek için . işareti
kullanılır. Sayısal içerik barındıran değişkenler için işlemler, tamamen matematiksel
işaretlerle yapılır. Değişkenlere önceden değer atanmak istendiğinde = işareti
kullanılır. Aşağıdaki örnekteki değişken4, içinde sayısal değişken barındırmasına
rağmen artık bir metin değişkenidir.
$degisken1 = “ Bilgihan ”;
$degisken2 = 100043;
$degisken3 = “Hüseyin ”;
$degisken4 = “257”;
54
Yukarıdaki listede degisken1 , degisken2 ve degisken4 metin değeri barındıran
değişkenlerdir. Sayısal değer barındıran değişken sadece degisken2’dir. Metin
değişkenleri, istenirse birbirleriyle birleştirilebilir. Bu birleşme metinlerin art arda
sıralanmasıyla oluşur.
$degisken5 = $degisken1.$degisken3.$degisken4
Birleştirme işlemi sonunda yeni oluşturulan degisken5 aslında Bilgihan Hüseyin 257
değerini barındırıyor.
Değişkenler kıyaslanmak istendiğinde kullanılan işaretler de = = ve < > ‘dir. Eğer bir
değişkenin değerinin, diğer bir değişkenin değerine eşit olduğunun denetlenmesi
gerekiyorsa = =, eğer farklı olduğunun denetlenmesi gerekiyorsa != kullanılır. Ünlem
işareti her zaman doğru değeri yanlış , yanlış değeri doğruya çevirir. Eğer değişkenler
birbirine eşitse 1 yani doğru, değilse 0 yani yanlış sonucu oluşur. Aşağıdaki ilk satırda
değişken 1 ve 2 birbirlerine eşit olmadığından 0 , yani yanlış sonucunu verirken , ikinci
satır 1 yani doğru sonucunu verir.
echo $degisken1 == $degisken2
echo $degisken1 <> $degisken2
5.6.2. Dizi Değişkenleri
PHP ve diğer yazılım dillerinde dizi değişkenleri olan array’ler oldukça önemlidir.
Dizi değişkenlerin en güzel örnek olarak, kişi ve yaş değişkenini barındıran bir dizi
değişkeni verilebilir. A kişisinin yaşı 22, b kişisinin yaşı 18, c kişisinin yaşı 24 olmak
üzere, bu durumda bu kişilerin isimlerini ve yaşlarını barındıran dizi değişkeni,
$yaslar[“a”] =22;
$yaslar[“b”]=18;
$yaslar[“c”]=24;
Şeklinde tanımlanabilir. Dizi değişkenleri tekil ve çoklu dizi olarak tanımlanabilirler.
Bir dizi değişkenine sonradan yeni bir değer eklenerek, dizideki değişkenlerin sayısı
artırılabilir. Dizi değişkeni dizilerindeki değişken sayısı count komutuyla öğrenilebilir.
Dizi değişkenleri üzerinde kullanılabilecek birçok fonksiyon vardır.
55
5.7. PHP’ye Dış Kaynaklardan Bilgi Alma
Tüm programlama dillerin yazılan programlar, bazı değişkenleri kullanıcıdan alarak,
bu değişkenler üzerinde mantıksal denetleme ve döngüler sonucunda kullanıcıya belli
bir tepkiyi verir. PHP bir Web yazılımı geliştirme dili olduğundan, kullanıcıdan
gelecek değişkenler üç şekilde alınabilir:
1. Kullanıcı tarayıcıdaki bir formu doldurarak PHP’ye Post ya da Get
metoduyla gönderir.
2. Kullanıcının bilgisayarında daha önceden depolanmış bir cookie’den
değişken alınır.
3. Kullanıcı tarayıcının adres satırına değişkeni yazarak Qery String yoluyla
değişkeni gönderir.
5.7.1. Adres Satırından Bilgi Almak
En az kullanılan yöntem olmasına rağmen, en kolay bilgi alma yöntemi Query String
denilen adres satırından bilgi alma yöntemidir. İnternet’te dolaşırken oldukça sık
rastlanılan uzun ve karmaşık adreslerde hep bu yöntem kullanılmaktadır. Örneğin;
http://www.huseyinbilgihan.com/sayacbilgileri.php?bilgiid=2
adresinde www.huseyinbilgihan.com adresi sunucunun adresi, sayacbilgileri.php PHP
dosyasının kendisidir. PHP dosyasını izleyen soru işaretinden sonra gelen tüm bilgiler,
PHP ‘de değişken olarak tanımlanır. Yukarıdaki örnekte tanımlanan değişkenin adı
bilgi id ve değeri de 2 dir. Birden çok değişkenin bir PHP dosyasına gönderilmesi
gerektiğinde değişkenlerin arasına & işareti konulması gerekir. PHP’ye dışarıdan
adres satırından bilgi alırken genel sıralama şu şekilde olacaktır:
http://sunucuadı/Phpdosyasuadı?degisken1=degeri°isken2=degeri°is
ken3=degeri&...
Örnek olarak sistemde hazırlanabilecek index.php adındaki bir PHP dosyası eğer,
<?
echo(“Dışarıdan gönderilen değer = $gonderilen”);
?>
56
Şeklindeyse bu dosyaya, dışarıdan başlangıç kelimesi adres satırına yazılarak
gönderilebilir:
http//localhost/index.php?gonderilen=başlangıç
bu durumda index.php dosyası ekrana şunu yazar:
Dışarıdan gönderilen değer = başlangıç
Benzer şekilde birden çok değer örneğin ad ve soy ad değerlerini hazırlanacak başka
bir index.php dosyasında denenebilir.
<?
echo(“Merhaba … Adınız : $ad , soyadınız da : $soyad”);
?>
Bu PHP dosyasına
http://localhost/index.php?ad=genc&soyad=muhendisleriz
adresi tarayıcıya yazılarak ad ve soy ad bilgisi genç mühendisleriz olarak gönderilir.
Bu durumda ekrana;
Merhaba… Adınız: genç, soyadınız da: mühendisleriz
Olarak yazacaktır. Dışarıdan bilgi alış yöntemlerinden en basiti olan adres satırından
bilgi alma özelliği karmaşık Web uygulamalarında oldukça yoğun bir şekilde
kullanılır.
5.8. PHP Dosyasını Durdurma
Bazı durumlarda PHP dosyalarının çalışması engellenmek istenebilir. Sonsuz döngüye
girdiği anlaşılan bir durumda PHP dosyalarına kendisini durdurması söylenebilir.
Bunun için iki temel komut vardır: exit ve die. Bu komutlar PHP yorumlayıcısı
tarafından yorumlandıkları anda, PHP dosyasının çalıştırılması sona erer, exit komutu
hiçbir mesaj vermeden PHP dosyasını durdururken, die komutu bir mesajla birlikte
dosyayı çalıştırmayı bitirebilir. Bir hata oluşması durumunda;
die “Hata oluştu”;
Satırı ekrana Hata oluştu şeklinde yazar ve PHP dosyasının çalıştırılmasını durdurur.
57
5.9. MySQL
PHP ‘nin yaygınlaşmasındaki kuşkusuz en büyük yardımcılarından biri de MySQL
oldu. Windows ve Unix versiyonları ücretsiz olarak dağıtılan MySQL’in PHP’yle
beraber gelişmesi sayesinde hem PHP hem de MySQL karlı çıktılar. Gelişmiş
veritabanı sistemlerinde görülen ilişkisel veritabanı mantığıyla geliştirilen MySQL,
çoklu bağlantı desteği ve performansıyla uzun süreden beri İnternet’te adını
duyurmayı başarmıştı. GPL lisansıyla kaynak kodları açıklanan MySQL’in PHP’yle
stratejik işbirliği sayesinde, PHP4 ve MySQL birlikte diğer veritabanı ve dil ikililerine
karşı konulmaz performans üstünlüğü sağlıyor.
PHP’nin, MySQL ve Apache’yle birlikte derlenerek kullanıldığı sistemlerde
veritabanı ve Web sunucusu arasında kurulan kalıcı bağlantılar sayesinde Web
sunucusu ve veritabanı tek bir yazılımmış gibi çalışabiliyor. Bu sayede çalışan iki ayrı
yazılıma göre %400’lere varan performans üstünlüğü sağlanmış oluyor.
10 senelik bir mazisi olmayan Linux’un masaüstü ve sunucu pazarında yükselen
grafiği, açık kaynak olarak geliştirilmesinden kaynaklanıyordu. Apache Web
sunucusunun da dünya Web sunucusu pazarında %60 ‘ların üzerinde tercih edilmesi
Apache’nin açık kaynak olarak üretilen ve dünyaca güvenilen ikinci en güçlü yazılım
olduğunu kullanıcılara ispatlıyor. MySQL, özellikle PHP birlikteliğiyle dünyanın son
zamanlarda adından oldukça sık söz ettiren en popüler veritabanı yazılımıdır. Dünyada
kullanıcıların en çok tercih ettiği sitelerden biri olan Yahoo’nun bazı bölümlerinin
altyapısında MysQL kullanıyor olması bile, MySQL’i tanımak ve kullanmak için
yeterince güçlü bir gerekçedir.
NASA’nın 2001 Ocak ayı başında yaptığı bir açıklamaya göre, Marshal Hava
Üssün’de artık Oracle yerine MySQL kullanılıyor olması, bu gelişmeler arasında en
kuvvetli olanıdır. Oracle gibi, dünyada çok kullanılan ve oldukça güçlü bir altyapıya
sahip bir veritabanı karşısında, tüm kodları açık olarak geliştirilen MySQL, dünyanın
belki de en hassas bilgilerinin depolandığı NASA gibi uygulama alanında güvenle
kullanılıyor.
58
5.10. MySQL ve SQL
Bir veritabanını kullanırken bilinmesi gereken en önemli ayrıntı SQL adı verilen
veritabanı yönetim ve sorgulama dilidir. Bu dilin detayları hakkında bilgi sahibi
olarak, veritabanını performanslı ve hızlı şekilde kullanabilirsiniz. Orta derecede SQL
kullanılan sitelerde çoğu zaman performans kaybı ve gereksiz sorgularla karşılaşılır.
Veritabanından sonucu tek sorguda çekmekle iki sorguda çekmek arasında oldukça
büyük performans farkı oluşacaktır. Ayrıca SQL kullanılarak yapılan işlemleri
PHP’yle yapmak, güç ve performans kaybına da yol açar.
SQL kullanılması ve öğrenilmesi HTML gibi oldukça kolay bir dildir. Profesyonel
Web programcılarının bilmeleri ve iyi derecede kullanmaları gereken dil ya da
bilgilerin başında gelir. MySQL’in kullandığı SQL komutları birebir olmasa da çok
ufak değişikliklerle Oracle ya da Sybase gibi gelişmiş veritabanlarında da
kullanılabilir.
5.10.1 MySQL’de Veritabanı ve Tablo oluşturulması
WampServer’in kurulumundan sonra adres çubuğuna http://localhost üzerinden
“phpmyadmin” kısmına tıklayarak ya da direk olarak http://localhost/phpmyadmin
adresine bağlanarak phpmyadmin ‘ e giriş yapınız.(WampServer’da öntanımlı id:root
pass:(yok) ) Giriş yaptıktan sonra aşağıdaki gibi bir sayfa açılacaktır.
Şekil 5.0.4 Wamp server ile phpMyAdmin kullanımı
59
Veritabanları sekmesi altından aşağıdaki gibi veritabanınıza herhangi bir isim vererek
veritabanınızı oluşturabilirsiniz.
Şekil 5.0.5 phpMyAdmin ile örnek veritabanı oluşturulması
Veri tabanınızı oluşturduktan sonraki işlem olan verilerin kaydedileceği tabloyu
oluşturmak kaldı ve aşağıdaki gibi phpornekveritabanı altından tablonuzu
oluşturabilirsiniz.
Şekil 5.0.6 phpMyAdmin ile örnek tablo oluşturulması
60
Tablo oluşturulduktan sonra tablo içerisinde depolanacak verilerin türü, uzunluk
değeri, indeksi, otomatik olarak her yeni gelen veride değerinin artırıp artırılmayacağı
gibi kayıtlarda tamamlanarak istenilen tablo kaydet butonuyla oluşturulmuş olur.
Şekil 5.0.7 phpMyAdmin ile tablo içeriklerinin oluşturulması
5.10.2. SQL ile Tablodan Kayıt Çekmek
Veri çekme işlemi için SQL’de select komutu kullanılır. Daha önce oluşturulan
phptablo tablosundan tüm kayıtları çekebilmek için ;
Select * from phptablo
Komutu kullanılır. Bu komut SQL kalıplarında * işareti bir tablodaki tüm alanları tarif
etmek için kullanılır. Özellikle bir tablodan bazı alanlar çekilmek isteniyorsa, *
kelimesi yerine alan adları aralarında virgül kullanılarak yazılabilir.
Select id, isim from phptablo
Bu komut phptablo tablosundan isim ve id alanlarına ait tüm bilgileri ekrana döker.
Normalde SQL’de alan adlarını tablo adıyla birlikte yazmak da mümkündür.
Select phptablo.id, phptablo.isim from phptablo
Komutu da bir önceki SQL cümleciğiyle aynı görevi görür. Bu kullanımda alan
adlarının başına ait oldukları tablonun adı yazılarak nokta işaretiyle ayrılırlar. Bir
tablodaki tüm kayıtları çekmek için:
61
Select phptablo.* from phptablo
Cümleciği de kullanılabilir. SQL’de belli bir tablodan kayıt çekilirken tüm kayıtların
listelenmesi yerine, belli bir kriteri sağlayan kayıtların çekilmesi de gerekebilir.
Select id from phptablo where isim = ’ali’
Bu SQL cümleciğinde tablodan çekilen kayıtlara bir kriter uygulamak için where
kelimesi kullanılıyor. ‘ki orada ’ olarak Türkçeleştirebileceğimiz where kalıbı SQL ‘de
oldukça sık kullanılır. Yukarıdaki SQL cümlesi phptablo tablosundan ismi ali olanların
id’lerinin listelenmesini sağlar.
5.10.3. SQL ile Tabloya Veri Girişi
Veritabanına girilmesi gereken verilerin olduğu durumlarda select komutuna karşı
gelen insert into komutu kullanılır. Bu komut sayesinde veritabanında belirtilen
tabloya istenen sonuçlar yerleştirilebilir. İnsert into kalıbı iki şekilde kullanılır: insert
into kalıbı kriter belirtilmeden, ya da where sözcüğü olmadan kullanılır. Bunlardan
ilki, kalıp bilgi girişinin yapılacağı tablodaki tüm alanlara veri girişini yapan genel
kalıptır.
İnsert into sinavsonuc values(‘48’,’50’,’75’,’85’)
Bu komutla tablo sıralaması, öğrenci numarası, ilk sınav sonucu, ikinci sınav ve
üçüncü sınav sonucu olan bir tabloya 48 numaralı öğrencinin notları 50,75 ve 85 olarak
giriliyor. Tabloya yerleştirilecek olan verilerin values kalıbıyla parantez içinde
yazılması gerekiyor. Eğer üçüncü sınav henüz gerçekleştirilmediyse, bu sınavın notu
null komutu kullanılarak boş değer olarak girilebilir.
İnsert into sinavsonuc values(‘48’,’50’,’75’,null)
Bazı durumlarda tablodaki tüm alanlara veri girişi yapmak yerine birkaç farklı alana
veri girişi yapılabilir. Bu durumda insert into kalıbı
İnsert into sinavsonuc(sinav1,sinav3) values(‘57’,’86’)
Şeklinde kullanılarak values sözcüğünden önce hangi alan adlarına veri girişi
yapılacağı bildirilir ve projemizde bu yöntem kullanılmıştır.
62
5.11. PHP Kullanarak MySQL’e Bağlanmak
PHP yaygın şekilde kullanılan her türlü veritabanının kullanıcısına, veritabanına özel
PHP komutlarıyla kullanım imkânı sağlar. PHP kullanım kılavuzu incelendiğinde,
veritabanları arasındaki pek çok PHP komutunun önce MySQL daha sonra Oracle için
olduğu görülecektir. MySQL komutlarının birçoğu özel durumlarda gerekli olurken,
10 kadar komut her türlü MySQL işleminde yaygın şekilde kullanılırlar.
Bir PHP dosyasında MySQL veritabanı kullanılmak istendiğinde, mutlaka veritabanı
sunucusuna bağlanılmalı ve bir veritabanı seçilmelidir. Genellikle bir PHP
dosyasından bir veritabanına bağlantı yapılacağı için veritabanı sunucusuna
bağlandıktan sonra, bir veritabanı ismi verilerek, o veritabanı sunucusu ve o veritabanı
üzerinde tüm diğer MySQL işlemleri yapılabilir. Eğer istenirse birden çok veritabanı
sunucusundaki birden çok veritabanına da bağlantı yapılabilir.
Aşağıdaki komutlarda mysql_connect() komutuyla veritabanı sunucusuna IP, kullanıcı
adı ve şifre verilerek bağlantı sağlanır. Daha sonraki mysql_select_db() komutuyla da
dosyadaki tüm MySQL işlemlerinde kullanılacak olan veritabanı tercihi belirtilmiş
olur. PHP dosyasında tüm veritabanı işlemlerinden önce veritabanı sunucusuyla
bağlantı kurulmalıdır.
Mysql_connect(“localhost”,”root”,”sifre”); (WampServer’da ön tanımlı
şifre yoktur o yüzden ilk defa test ediliyorsa bu bölümde bir şey yazılmaması gerekir.)
Mysql_select_db(“phpornekveritabanı”);
5.12. PHP Kullanarak MySQL’e Veri Girişi
PHP kullanılarak kullanıcı ya da ziyaretçilerden alınan bilgilerin MySQL’e
depolanması aslında sorgu cümleciği olan SQL’de insert’in kullanılmasından başka
bir şey değildir. PHP’ye dışarıdan alınan tüm bilgiler değişken dizileri halinde MySQL
‘e yerleştirilebilir.
Veritabanında sayacnumarası, saat, tarih, demant gibi bilgilerin depolanacağı bir
tabloya veri girmek için kullanılacak bir PHP dosyasında veri girişi aslında
mysql_query() komutuyla gönderilen SQL cümleciğiyle yapılır.
Eğer veri girişinde kullanılacak olan phptablo tablosu kullandığınız veritabanında
hazır değilse aşağıdaki satırların SQL giriş alanına yazılmasıyla tablo oluşturulacaktır.
63
CREATE TABLE phptablo
(
İd INT not null AUTO_INCREMENT,
sayacnumarası VARCHAR(30) not null,
saat VARCHAR(30) not null,
tarih VARCHAR(30) not null,
demant VARCHAR(30) not null,
PRIMARY KEY (id)
)
Aşağıdaki mysql_query() komutu SQL cümleciğini MySQL’ gönderir. Gönderilen
SQL cümleciği de MySQL’deki phptablo’nun sayacnumarası, saat, tarih, demant
alanlarına bilgi gönderir. Veritabanındaki phptablo tablosunda ilk alan olan id alanı
aslında otomatik olarak oluşturulan bir alan olduğu için, SQL’de ona karşılık gelecek
alana null kelimesinin yazılması yeterli olacaktır.
Mysql_query(“insert into phptablo(id, sayacnumarası, saat, tarih, demant)
values (null,’43’,’04.24’,’13 Mayıs 2014’, ‘16’)”);
Sayacnumarası, saat, tarih ve demant gibi bilgileri için sırasıyla 43, 04.24, 13 Mayıs
2014 ve 16 değerleri gönderilir. Dikkat edilmesi gereken önemli bir nokta bu bilgilerin
SQL içerisine tek tırnakla ayrılarak konulmuş olmalarıdır. MySQL, kendisine
gönderilen bu yeni bilgileri veritabanına yerleştirirken, tablo özelliklerinde
auto_increment olarak belirtilen alanlar için otomatik olarak bir sıra numarası üretir.
Bu sıra numarası, geliştirilen PHP yazılımının türüne bağlı olarak tabloda yer alan
bilgilerin birbirlerinden ayırt edilmesinde gerekli olabilir. MySQL tarafından bu
tabloda gerçekleştirilen insert işleminde üretilen sıra numarası
$id = mysql_insert_id();
Komutuyla alınabilir. Mysql_insert_id() komutu en son insert işleminin değerini
vereceğinden mysql_query()’den hemen sonra yazılması gerekmektedir.
64
BÖLÜM 6. Donanım
6.1. Sistemin ISIS çizimi
6.1.1. Merkezi Kontrol Devresi
Şekil 6.0.1 Merkezi Kontrol Devresi
65
6.1.2. Sayaç ile Merkezi Kontrol arası Haberleşme Devresi
Şekil 6.0.2 Sayaç ile Merkezi Kontrol arası Haberleşme Devresi
66
6.1.3. Güç Devresi
Şekil 6.0.3 Güç Devresi
6.2. Sistemin ARES çizimi
Şekil 6.0.4 Sistemin ARES çizimi
70
BÖLÜM 7. SONUÇ VE TARTIŞMA
Gelişen teknolojinin kullanımının artmasıyla birlikte, sistemlerin takibi, kontrol
edilmesi ve analizi gereklilik haline gelmiştir. Sistemlere uzaktan erişilmesi ve tek bir
noktada toplanarak verilerinin uygun ortamlarda depolanması bu gerekliliklerin
karşılanmasında efektif ve ekonomik olarak çözüm sağlayacaktır.
Proje de sistemlerin uzaktan erişilerek verilerinin tek bir noktada toplanması,
depolanması ve analizi amaçlanmıştır. Bunun sebebi sistemde oluşabilecek hatalar,
gelecekte sistem üzerinde yapılabilecek iyileştirmeler ve benzeri analizler için bizlere
yardımcı olacaktır. Aynı zamanda bu verilerin izlenmesiyle anlık olarak verilerin
takibi ve önemli durumlara göre alınabilecek önemlere yardımcı olacaktır.
Projemizde sistem üzerindeki veriler izlenebilmiş fakat gönderilen verilerin, veri
iletim yolunda bozulması, tahribatı sonucunda sağlıklı bir şekilde veritabanı
oluşturulamadığından depolama ve analiz kısımları gerçeklenememiştir.
Sonuç olarak projeden beklenen amaçlardan bir kısmı gerçeklenerek, var olan
hataların çözülmesinin ardından çeşitli kullanım amaçlarına göre enerji kalitesinin
takip edilmesi, elektrik sayaçları, su sayaçları, trafik durum takibi, trafik radar sistemi
gibi sistemlerin kontrol edilmesi ve veri analizlerinin çıkarılması, herhangi bir hata
durumunda, hatanın kaynaklandığı zaman ve durum bilgileri bu sayede erişilebilir hale
gelmektedir.
71
Kaynakça
[1] «Luna Elektrik Elektronik Sayacları,» [Çevrimiçi]. Available:
http://www.lunasayac.com/. [%1 tarihinde erişilmiştir5 4 2014].
[2] «Wikipedia,» Wikipedia, [Çevrimiçi]. Available:
http://en.wikipedia.org/wiki/Newline#Unicode. [%1 tarihinde erişilmiştir4 5
2014].
[3] «Nokta,» NoktaElektronik, [Çevrimiçi]. Available: http://noktaelektronik.net/.
[%1 tarihinde erişilmiştir5 5 2014].
[4] « Texas Instruments MAX232 datasheet katalog,» Microchip, 2014.
[5] J. Axelson, Her yönüyle seri port, Jan Axelson, çeviren Cihan Gerçek ; editör
Gökhan Dinçer , 2004.
[6] «www.microchip.com,» Microchip, [Çevrimiçi]. Available:
http://www.microchip.com/pagehandler/en-us/devtools/mla/. [%1 tarihinde
erişilmiştir6 5 2014].
[7] «Microchip TCP/IP Stack Help,» 2014.
[8] «Dev. Tools Parts,» microchip, [Çevrimiçi]. Available:
http://www.microchip.com/pagehandler/en-us/devtools/dev-tools-parts.html.
[%1 tarihinde erişilmiştir6 5 2014].
[9] wikipedia, «wikipedia,» [Çevrimiçi]. Available:
http://tr.wikipedia.org/wiki/PHP. [%1 tarihinde erişilmiştir6 5 2014].
[10] «Php.net,» [Çevrimiçi]. Available: http://www.php.net/manual/en/intro-
whatcando.php. [%1 tarihinde erişilmiştir6 5 2014].
[11] R. Çölkesen ve B. Örencik, Bilgisayar haberleşmesi ve ağ teknolojileri,
İstanbul: Papatya Yayıncılık, 2010.
[12] Ö. Çaycı, PHP ve MySQL, cilt K. Kapak, Ankara: Seçkin Yayıncılık, 2003.
[13] K. Otaner, PHP ve MySQL ile web yazılımı geliştirme, Ankara: Sistem
Yayıncılık, 2010.
72
[14] Z. Demirkol, İnternet Teknolojileri, İstanbul: Pusula Yayıncılık, 2011.
[15] «Wampserver,» [Çevrimiçi]. Available: http://www.wampserver.com/en/. [%1
tarihinde erişilmiştir11 5 2014].
[16] «Luna Elektrik Elektronik Sayac,» [Çevrimiçi]. Available:
http://www.lunasayac.com/. [%1 tarihinde erişilmiştir16 5 2014].
73
ÖZGEÇMİŞLER
Ad Soyad Bilgihan ÇELEBİ
Doğum Tarihi 15.10.1991
Doğum yeri ANKARA
Lise 2005 - 2009 Pursaklar Lisesi
Staj Yaptığı Yerler AltaTECH , Antalya (2012)
Türk Telekomünikasyon A.Ş. - Ankara - (2013)
Ad Soyad Hüseyin AYCAN
Doğum Tarihi 19.07.1992
Doğum yeri ANTALYA
Lise 2006 - 2010 Antalya Lisesi
Staj Yaptığı Yerler ALTA TECH -Antalya (2012)
ASAT Genel Müdürlüğü SCADA Otomasyon - Antalya( 2013)