81
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ü

İnternet ortamında elektrik sayacının analizi ve takip edilmesi

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.

20

Şekil 4.0.2 MPLAB C18 Derleyicisi Help Komutları

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>&nbsp;</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*)"&nbsp;");

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&degisken2=degeri&degis

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

67

Şekil 6.0.5 Sistem Ares similasyondaki görüntüsü

Şekil 6.0.6. Sistemin Prototip Resmi1

68

Şekil 6.0.7. Sistemin Prototip Resmi2

Şekil 6.0.8 Sistemin Prototip Resmi3

69

Şekil 6.0.9Sistemin Sayac Kısmı

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)