KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ



Benzer belgeler
C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

1 PROGRAMLAMAYA GİRİŞ

C++ Dersi: Nesne Tabanlı Programlama

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Operatörlere İşlev Yükleme

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

C++ Dersi: Nesne Tabanlı Programlama

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

C++ Dersi: Nesne Tabanlı Programlama

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

NESNEYE YÖNELİK PROGRAMLAMA

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

ACR-Net 100 Kullanım Kılavuzu

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA II

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

T.C. KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

BİLG Dr. Mustafa T. Babagil 1

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

Programlama Dilleri 1. Ders 5: Göstericiler

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

C++ Dersi: Nesne Tabanlı Programlama

Terminal Üzerinden Led Kontrol Uygulaması

C++ Dersi: Nesne Tabanlı Programlama

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

C++ Dersi: Nesne Tabanlı Programlama

WiFi RS232 Converter Sayfa 1 / 12. WiFi RS232 Converter. Teknik Döküman

C++ ile Nesneye Dayalı Programlama

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

Operatörlerin Aşırı Yüklenmesi

Inheritance. Inheritance (turetim)

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

Adı Soyadı : Öğrenci No :

ANALOG SANTRALLAR IP HYBRID SANTRALLAR

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

HSancak Nesne Tabanlı Programlama I Ders Notları

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

DOSYA İŞLEMLERİ Programlama dilleri hafta -

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

WiFi Relay Sayfa 1 / 11. WiFi Relay. Teknik Döküman

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

11- FONKSİYONLAR (FUNCTIONS)

Eln 1002 Bilgisayar Programlama II

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Proses. Prosesler 2. İşletim Sistemleri

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Bilgisayar ile Dijital Devrelerin Haberleşmesi. FT232R ve MAX232 Entegreleri. Çalışma Raporu

Hafta 12 Karakter Tutan Diziler

const objects & const member functions

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Temel Dosya İşlemleri. Kütük Organizasyonu 1

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

Temel Bilgisayar Programlama

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

Örnek. int analogpin = 3; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogread(analogpin); Serial.

SAYFA NO: 2/8 1.2 Genel Özellikler Dış Görünüş İncelemeye alınan parçaların yüzeyinde oksidasyon, deformasyon, hasar olmayacaktır İşaretl

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind()

Sistem Programlama Deney 1

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

BİLG Dr. Mustafa T. Babagil 1

UniGSM Arduino SHIELD (UniGSM-A) KURULUM ve KULLANIM KİTAPÇIĞI

PROSESLER. Proses. Proses

Binary Tree nedir?uygulamas nasl yaplr?

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

HSancak Nesne Tabanlı Programlama I Ders Notları

Hafta 13 Fonksiyonlar

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

MEKANİZMA TEKNİĞİ (7. Hafta)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Algoritma ve Programlama: Karar Yapıları ve Döngüler

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr.

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME

Sınav tarihi : Süre : 60 dak.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Transkript:

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ Nesneye Yönelik Programlama C++ ile Beaglebone Black de Bluetooth Haberleşmesi Danışman: Yrd. Doç. Dr. Mehmet YAKUT Sinan DİVARCI 110207076 1

İçindekiler 1.Giriş... 3 2. PCB Tasarımı... 3 2.1 Şematik... 3 2.2 Layout... 4 2.3 CAPE nin dizilmiş hali... 5 3.Beaglebone Black... 5 3.1 Yazılım Kısmı... 5 4. C++ Yazılımı... 6 4.1 Yazılımın Çalıştırılması... 9 5. Resimler... 10 2

1.Giriş Bu projede, Beaglebone Black için bluetooth cape yapımı ve bu cape in c++ tabanlı bir yazılım yazılarak çalıştırılması amaçlanmıştır. PCB tasarımı Mentor Graphics Pads ile yapılmıştır. Yazılım geliştirme ubuntu ortamında, eclipse ile cross compile yapılarak yazılmıştır. Projede Beaglebone Black, HC06 ve deneme yapabilmek için usb-seri dönüştürücü kullanılmıştır. 2. PCB Tasarımı PCB tasarımı Mentor Graphics Pads ile yapılmıştır. Şematik çiziminde HC06 datasheetlerinden ve BBB datasheetinden yararlanılmıştır. 2.1 Şematik Şematik hazırlanırken, bluetooth modülün besleme gerilimi, uart rx, tx uçları, reset pini, BBB uart pinleri gibi faktörler göz önünde tutularak çizilmiştir. Ayrıca bluetooth un durum Led leri cape e dahil edilmiştir. HC06 ile BBB arasındaki bağlantılar Resim1 de gösterilmiştir. Resim 1 HC06 durum led lerinin bağlantıları ve modülü AT moduna sokmak için gerekli pinler için jumper çizimleri Resim 2 de gösterilmiştir. 3

Resim 2 2.2 Layout Layot çiziminde yapılan cape nin BBB ile uyumlu olması için BBB pin aralıkları datasheet ten bakılarak dikkatle çizilmiştir.bbb in Ethernet girişi gibi girinti çıkıntılar dikkate alınmıştır. Malzeme yerleşimi yapılırken çok dağınık olmamasına dikkat edilmiştir. Çizimin son hali Resim 3 de gösterilmiştir. Resim 3 4

2.3 CAPE nin dizilmiş hali PCB basılırken, ütü yöntemi kullanılmıştır. Her ne kadar bu yöntemle yapılan PCB ler genellikle pek sağlıklı olmasa da PCB nin küçük boyutlu olması sebebiyle iyi çıkmıştır. PCB nin basılmış ve dizilmiş hali Resim 4 de gösterilmiştir. Resim 4 3.Beaglebone Black Beaglebone Black de herhangi bir işletim sistemi değişikliğine gidilmemiştir. Mevcut Angstrom işletim sistemi için Eclipse de çalıştırılabilir şekilde proje derlenerek BBB e gönderilip çalıştırılmıştır. BBB de UART etkinleştirme işlemi http://hipstercircuits.com/enable-serialuarttty-on-beaglebone-black/ adresinde anlatıldığı gibi yapılmıştır. Eclipse crosscompile ayarları için http://derekmolloy.ie/beaglebone/setting-up-eclipse-on-the-beaglebone-for-c-development/ adresindeki adımlar takip edilmiştir. Yazılım geliştirilirken Deitel&deitel kitabından ve internet üzerinde çok sayıda kaynaktan faydalanılmıştır. 3.1 Yazılım Kısmı Yazılım geliştirilirken NYP dersinde öğrendiğimiz C++ işlevlerinin en yüksek düzeyde kullanma kaygısı güdülmüştür. Yazılım kısmında danışman hocam Yrd. Doç. Dr. Mehmet YAKUT ile sürekli iletişim kurularak yazılım içersinde ki eksikler giderilmeye çalışıldı. C++ ile yazılım geliştirilirken NYP nin ana konularından olan class yapısı kullanıldı. Class ile UART sınıfı oluşturulup Bluetooth haberleşmesi bu sınıf ile sağlandı. Üye fonksiyon olarak bluetooth ile veri gönderip alabilmek için gerekli fonksiyonlar yazıldı. Ayrıca gpio erişimi sağlandı yazılımın şuan ki hali temel işlevleri yerine getirebilecek düzeyde ve geliştirmeye açık. 5

4. C++ Yazılımı Proje içerisinde operatör aşırı yükleme, fonksiyon aşırı yükleme, class yapısı ve nesneler kullanıldı. Ayrıca istenirse bu UART sınıfından kolaylıkla diğer UART lara erişim ile sınıflar türetilebilir. Program doğrudan BBB de çalışacak şekilde yazılmıştır. Bluetooth ile veri gönderme kısmı sorunsuz çalışmaktadır. Veri alma kısmı geliştirilmelidir. #include <iostream> #include<stdio.h> #include<iomanip> #include <stdio.h> #include <unistd.h> #include <string.h> using namespace std; char UARTadresi; class UART friend ostream &operator<<(ostream&, const UART &); public: UART(int); void uartac(); //int değere hangi uart açılacak onun numarası girilecek void uartkapat(); void uartyaz(char); //fonksiyon aşırı yüklemesi void uartyaz(char*); char uartoku(); ~UART(); private: FILE *UARThandle; //char uartlar[4][16]="/dev/ttyo0","/dev/ttyo1","/dev/ttyo2"; int number; //hangi numaralı uğartın açılacağı char UARTadress[64]; int uart; // sprintf(gpiostring, "%d", GPIOPin); // sprintf(gpiodirection, "/sys/class/gpio/gpio%d/direction", GPIOPin); ; ostream &operator<<(ostream &output, const UART &a) output <<a.uartadress<<" adresindeki UART"<<a.number<<" kullaniliyor"<<endl; return output; UART::UART(int a) number=a; uartac(); UART::~UART() delete &number; delete []UARTadress; cout<<"nesne yikildi!"<<endl; 6

void UART::uartac() sprintf(uartadress, "/dev/ttyo%d", number); if ((UARThandle= fopen( UARTadress, "w")) == NULL) printf("unable to open value handle\n"); void UART::uartkapat() fclose(uarthandle); void UART::uartyaz(char s) fprintf(uarthandle,"%c",s); void UART::uartyaz(char* s) while(*s) fprintf(uarthandle,"%c",*s++); char UART::uartoku() char Data; fscanf (UARThandle, "%c", &Data); return Data; int main() char deneme[20]="deneme\n\r"; UART seriport(1); seriport.uartac(); //1.uart açıldı seriport.uartyaz(deneme); // fonksiyon aşırı yüklemesi seriport.uartyaz('d'); //fonksiyon aşırı yüklemesi seriport.uartkapat(); cout<<"bilgiler: "<<seriport<<endl; //Aşırı yüklenmiş << operatörü kullanımı while(1) seriport.uartyaz(seriport.uartoku()+1); 7

int GPIOPin=60; // GPIO1_28 veya pin 12 FILE *myoutputhandle = NULL; char setvalue[4], GPIOString[4], GPIOValue[64], GPIODirection[64]; sprintf(gpiostring, "%d", GPIOPin); sprintf(gpiovalue, "/sys/class/gpio/gpio%d/value", GPIOPin); sprintf(gpiodirection, "/sys/class/gpio/gpio%d/direction", GPIOPin); // Export the pin if ((myoutputhandle = fopen("/sys/class/gpio/export", "ab")) == NULL) printf("export islemi basarisiz\n"); return 1; strcpy(setvalue, GPIOString); fwrite(&setvalue, sizeof(char), 2, myoutputhandle); fclose(myoutputhandle); // Set direction of the pin to an output if ((myoutputhandle = fopen(gpiodirection, "rb+")) == NULL) printf("cikis yapma basarisiz\n"); return 1; strcpy(setvalue,"out"); fwrite(&setvalue, sizeof(char), 3, myoutputhandle); fclose(myoutputhandle); //çıkış 1 yapılıyor if ((myoutputhandle = fopen(gpiovalue, "rb+")) == NULL) printf("deger yazma basarisiz\n"); return 1; strcpy(setvalue, "1"); fwrite(&setvalue, sizeof(char), 1, myoutputhandle); fclose(myoutputhandle); sleep(1); //çıkış 0 yapılıyor if ((myoutputhandle = fopen(gpiovalue, "rb+")) == NULL) printf("deger yazma basarisiz\n"); return 1; strcpy(setvalue, "0"); fwrite(&setvalue, sizeof(char), 1, myoutputhandle); fclose(myoutputhandle); sleep(1); // Unexport pin if ((myoutputhandle = fopen("/sys/class/gpio/unexport", "ab")) == NULL) printf("unexport yapilamadi\n"); return 1; strcpy(setvalue, GPIOString); fwrite(&setvalue, sizeof(char), 2, myoutputhandle); fclose(myoutputhandle); printf("\n!problem yok! \n"); return 0; 8

4.1 Yazılımın Çalıştırılması Yazılım doğrudan BBB üzerinde Eclipse ile terminal bağlantısı yapılarak çalıştırılmıştır. Aynı anda Windows Pc de terminal programı ile PC nin Bluetooth modülüne gelen veriler dinlenerek sistemin çalışması gözlenmiştir. Eclipse de programın çalıştırılması Resim 5 de gösterilmiştir. Resim 5 Terminal programında ki çıktılar Resim 6 da verilmiştir. Resim 6 9

5. Resimler Aşağıda BBB ve yapılan cape resimleri verilmiştir. 10

11