Showing posts with label Programlama. Show all posts
Showing posts with label Programlama. Show all posts

Friday, October 27, 2017

Remote SOund Navigation And Ranging(SONAR) Application with Raspberry Pi 2 in the Local Network Area(LAN)

Hello everybody, today I am here with another post. I will construct a remote SONAR application using Raspberry Pi 2, servo motor and HC-SR04 ultrasonic range sensor. In order to understand this post better, please check the previous posts that I have already written.

1 - Controlling Servo Motor using Raspberry Pi, Python (RPi.GPIO) software based Pulse Width Modulation(PWM)
2 - Using HC-SR04 Ultrasonic Range Sensor with Raspberry Pi 2

What do we need?

1 - Raspberry Pi 2
2 - HC-SR04 Ultrasonic Range Sensor
3 - Micro Servo Motor
4 - 1x1kΩ and 1x2.2kΩ Resistors
5 - Bread Board
6 - Jumper Male to Female Wires
7 - Laptop(for remote communication)

We need all the components above. But, if you want to display the results on Raspberry Pi locally, then you don't need a Laptop. However, here I will use Laptop. Because, Raspberry Pi is a small board which is used for remote applications generally.

Here is the technical description.

1 - My laptop's config(It will be the client machine):

- IP Adress:192.168.1.106
- Communication port is 9000
- Operating System: Windows 10
- This will be the client machine

2 - My Raspberry Pi's config(It will be the server machine):

- IP Adress:192.168.1.108
- Communication port is 9000
- Operating System: Raspbian Jessie Lite
- This will be the server machine

Thursday, October 26, 2017

Using HC-SR04 Ultrasonic Range Sensor with Raspberry Pi 2

The HC-SR04 ultrasonic range finder is a sensor that provides 2cm to 400cm of non-contact measurement functionality with a ranging accuracy that can reach up to 3mm. Each HC-SR04 module includes an ultrasonic transmitter, a receiver and a control circuit. It is very cheap and simple to use, however the signal output needs to be converted from 5V to 3.3V so as not to damage the Raspberry Pi. I will introduce some Physics along with Electronics in this tutorial in order to explain each step. But first, we should have the following components:

1 - Raspberry Pi 2 Model B
2 - HC-SR04 Ultrasonic Range Sensor
3 - 1x1kΩ and 1x2.2kΩ Resistors
4 - Bread Board
5 - Jumper Male to Female Wires

Ultrasonic Range Sensors and How do they works?

There are two types of ultrasonic range sensors: active and passive. An active sensors set sends out sound pulses called pings, then receives the returning sound echo. Passive sensors sets receive sound echoes without transmitting their own sound signals.

How HC-SR04 ultrasonic range sensor works? It is an active sensor and basically, it creates a pulse of sound, often called a "ping", and then listens for reflections (echo) of the pulse. If you check the following images. You will understand the concept better.


Sunday, October 22, 2017

Controlling Servo Motor using Raspberry Pi, Python (RPi.GPIO) software based Pulse Width Modulation(PWM)

Hello everybody. Today I am going to talk about controlling servo motors using Raspberry Pi. A servo motor is a rotary or linear actuator that allows for precise control of angular or linear position, velocity and acceleration. This project uses Python script, which uses RPi.GPIO library, run on a Raspberry Pi micro controller to send General-purpose input/output(GPIO) Pulse Width Modulation(PWM) outputs to a servo motor to set its angle. However, it is not an easy task since PWM period cannot be defined by the user. It is servo motor and manufacturer-specific.

For this project, I used the following items:

1 - Raspberry Pi 2 Model B
2 - Micro Servo Motor
3 - Jumper Male to Female Wires

The Raspberry Pi 2 has 40 pins and you can see the explanation of each pins below. The servo motor has three terminals. We need to connect these 3 terminals to the proper pins of Raspberry Pi.

1 - Position signal(PWM Pulses)
2 - Vcc (From Power Supply)
3 - Ground

Saturday, October 21, 2017

Live Video Streaming from Raspberry Pi using MJPG-Streamer and HTML5 in the Local Network Area(LAN)

Hello there! After Remote Connection to MySQL Database in the Local Network Area(LAN) post, I am here with another fancy topic which makes live stream over HTTP. There are many ways to do this. But after a quick search, I have found the one that leads to minimal latency and works really well over a WIFI connection. The solution is the combination of MJPG-Streamer on the Raspberry Pi and HTML5 client website on the other computer.

Here is the technical description.

1 - My laptop's config:

- IP Adress:192.168.1.106
- Operating System: Windows 10
- HTML5 client website will be implemented in this computer.

2 - My Raspberry Pi's config:

- IP Adress:192.168.1.108
- Operating System: Raspbian Jessie Lite
- MJPG-Streamer program will be installed here and it will stream live video.

Both are on a wireless LAN connected through a TP-LINK router(192.168.1.1).

One by one we need to do following steps:

Friday, October 20, 2017

Remote Connection to MySQL Database in the Local Network Area(LAN)

Hello there! It has been long time to not write any post in the blog. I do not want to say that I did not have any time, inspiration or something. I had time, really good ideas but somehow I was too lazy to write them down to the blog. But, today I wanted to break this laziness. Anyway, from the title most probably you got what I want to do. But, basically I will explain it again.

I have a private wireless LAN at home as everybody and two device is connected to this network.

Here is the technical description.

1 - My laptop's config(It will be the server machine):

- IP Adress:192.168.1.106
- MySQL Server 5.7 on port 3306
- Operating System: Windows 10
- The database is in this machine

2 - My Raspberry Pi's config(It will be the client machine):

- IP Adress:192.168.1.108
- MySQL Server 5.7 on port 3306
- Operating System: Raspbian Jessie Lite
- This machine will connect to my laptop

Both are on a wireless LAN connected through a TP-LINK router(192.168.1.1).

So the big question is that how can I configure the devices to connect to the database and execute queries?

Saturday, October 3, 2015

Image Segmentation - Region Growing Algorithm

1 - Introduction and problem definition

1.1 - Introduction

Image segmentation is an important process in Computer Vision that is used for several operations as edge detection, classification, 3D reconstruction, etc.. The main goal of image segmentation is to cluster pixels into regions. This clustering image pixels into image regions in turns convert the image into a representation that is more meaningful and easier to analyse. More precisely, image segmentation is the process of assigning a label to every pixel in an image such that pixels with the same label share certain characteristics. Image segmentation has broad range of applicability in different fields of science ans engineering.

In this lab work, we implement the region growing algorithm which is one of the basic process of partitioning a digital image and then analyse the design and implementation of it. Finally, we compare the region growing algorithm with other image segmentation algorithms. We describe also about the organization and development phase of the lab work.

1.2 - Problem definition

Our lab work problem asks for performing image segmentation over different image representation and check the result. We implement our image segmentation algorithm over gray level images and RGB color space images to cluster into different image regions. And then we compare our clustering result with Fuzzy C-Means (FCM) clustering algorithm.

Thursday, June 11, 2015

Robot Navigation - Q learning algorithm

Objective

The aim of this lab is to understand the reinforcement learning subject of the autonomous robots course and implement a reinforcement learning algorithm to learn a policy that moves a robot to a goal position. The algorithm is the Q-learning algorithm and it will be implemented in Matlab.

1 - Introduction

The reinforcement learning algorithm does not force the robot to plan path by using any path planning algorithm, rather the algorithm learns optimal solution by randomly moving inside map for several times. It is an approximation of natural learning process, where unknown problem is solved just by trial and error method. The following sections will briefly discuss about the implementation and the results obtained by the algorithm.

Environment: The environment used for this lab experiment is shown below.

Figure-1: Environment used for the implementation.

States and Actions: The size of the given environment is 20$\times$14 = 280 states. The robot can only do 4 different actions: ←, ↑, →, ↓. Thus, the size of the Q matrices would be 280$\times$4 = 1120 cells.

Dynamics: Dynamics make the robot move towards a direction according to the actions. The robot will move one cell per iteration to the direction of the action that we select, unless there is an obstacle or the wall in front of it, in which case it will stay in the same position.

Reinforcement function: Reinforcement function assigns reward at each cell, +1 for goal cell and -1 otherwise.

Sunday, May 31, 2015

Implementing Object Detection Based on Color in Webot Simulator for E-puck

This project was implemented by Richa AGARWAL, Taner GUNGOR and Pramita WINATA.

Abstract-Object detection and recognition is a challenging task in computer vision systems. So it was decided to work with E-puck for the same. But using a real e-puck connected with the system through bluetooth it is diffucult to transfer images captured by the robot's camera. So, it was decided to use Webot simulator for E-puck robot to develope and test the algorithm to detect objects using the color of an object. Where robot scans for the object if detects the goal, it moves in the direction of goal avoiding obstacles, else moves randomly in the arena looking for the goal (red object). The most relevant aspects of the simulator and implementation are explained.
Keywords-Webot simulator, e-puck, path planning


INTRODUCTION
We are implementing a simple object detection algorithm in Webot simulator for E-puck using C controller. The algorithm is designed to detect red objects using E-puck's camera. It is easier to control and grab images from E-puck robot using Webot simulator and controler.

1 - WEBOTS SIMULATOR
Webots is a development environment used to model, program and simulate mobile robots. With Webots the user can design complex robotic setups, with one or several, similar or different robots, in a shared environment. The properties of each object, such as shape, color, texture, mass, friction, etc., are chosen by the user. A large choice of simulated sensors and actuators is available to equip each robot. The robot controllers can be programmed with the built-in IDE or with third party development environments. The robot behavior can be tested in physically realistic worlds. The controller programs can optionally be transferred to commercially available real robots. Webots is used by over many universities and research centers worldwide. The development time you save is enormous.

Figure-1: Webots development stages

Webots allows you to perform 4 basic stages in the development of a robotic project Model, Program, Simulate and transfer as depicted on the Fig. 1.

Tuesday, May 12, 2015

Robot Navigation - Rapidly-Exploring Random Tree Algorithm

Objective

The aim of this post is to understand the rapidly-exploring random tree and implement it in Matlab.

1 - Introduction

A rapidly exploring random tree (RRT) is an algorithm designed to efficiently search nonconvex, high-dimensional spaces by randomly building a space-filling tree. The tree is constructed incrementally from samples drawn randomly from the search space and is inherently biased to grow towards large unsearched areas of the problem. It widely used in autonomous robotic path planning.

2 - The Algorithm

RRTs were proposed as both a sampling algorithm and a data structure designed to allow fast searches in high-dimensional spaces in motion planning. RRTs are progressively built towards unexplored regions of the space from an initial configuration as shown in Figure 1.


Progressive construction of an RRT.

At every step a random $q\_rand$ configuration is chosen and for that configuration the nearest configuration already belonging to the tree $q\_near$ is found. For this a definition of distance is required (in motion planning, the euclidean distance is usually chosen as the distance measure). When the nearest configuration is found, a local planner tries to join $q\_near$ with qrand with a limit distance . If $q\_rand$ was reached, it is added to the tree and connected with an edge to $q\_near$. If $q\_rand$ was not reached, then the configuration $q\_new$ obtained at the end of the local search is added to the tree in the same way as long as there was no collision with an obstacle during the search. This operation is called the Extend step, illustrated in Figure 2. This process is repeated until some criteria is met, like a limit on the size of the tree.

Friday, May 1, 2015

Robot Navigation - A Star Algorithm

Objective

The aim of this lab is to understand the A* algorithm and implement it in Matlab.

1 - Introduction

In computer science, A* is a computer algorithm that is widely used in pathfinding and graph traversal, the process of plotting an efficiently traversable path between points, called nodes. A* achieves better time performance by using heuristics.

2 - The Algorithm

A* uses a best-first search and finds a least-cost path from a given initial node to the goal node. As A* traverses the graph, it follows a path of the lowest expected total cost or distance, keeping a sorted priority queue of alternate path segments along the way.

It uses a knowledge-plus-heuristic cost function of node x to determine the order in which the search visits nodes in the tree. The cost function is a sum of two functions:
  1. the past path-cost function, which is the known distance from the starting node to the current node x (denoted g(x))
  2. a future path-cost function, which is an admissible "heuristic estimate" of the distance from x to the goal (denoted h(x)).
The h(x) part of the f(x) function must be an admissible heuristic; that is, it must not overestimate the distance to the goal. Thus, for an application like routing, h(x) might represent the straight-line distance to the goal, since that is physically the smallest possible distance between any two points or nodes.

If the heuristic h satisfies the additional condition h(x) = d(x,y) + h(y) for every edge (x, y) of the graph (where d denotes the length of that edge), then h is called consistent. In such a case, A* can be implemented more efficiently. No node needs to be processed more than once and. Now let's look at closely to the each steps.

Saturday, March 28, 2015

Robot Navigation - The Wavefront Planner Algorithm

Hi, reader this report was written for the 'Autonomous Robots' labwork. It explains 'The Wavefront Planner Algorithm'. End of this post, you can see the Matlab codes and also the report itself.

1 - Introduction

The theories behind robot maze navigation is immense. It would take several books just to cover the basics. But this labwork only concentrate on the wavefront planner algorithm which is still powerful methods of intelligent robot navigation. The basic concepts and details of the algorithm are going to be explained in the next chapter. After that, we are going to see the results.

2 - The Algorithm

The wavefront algorithm finds a path from point S (start) to point G (goal) through a discretized workspace such as this (0 designates a cell of free space, 1 designates a cell fully occupied by an obstacle):

\[
\begin{bmatrix}
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 2 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 1 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
\end{bmatrix}
\]

Wednesday, January 21, 2015

Face Recognition

Chapter 1: Introduction

1. Preliminary

In this project, we implemented a face recognition system by using principal component analysis, which is known as PCA. PCA method provide a mathematical way to reduce the dimension of problem.

Since the most elements of a facial image are highly correlated, it is better to extract a set of interesting and discriminative feature of a facial image. Mathematically speaking, we transform the correlated data to independent data. To implement the transform, we employed some linear algebra method such as SVD (Chapter3). The main idea is to obtain Eigenfaces that every face can be regard as a linear combination of these eigenfaces (Chapter4). Then the face recognition problem convert to a mathematic problem: what is the linear combination of a face? In other words, it simplify a problem from 2D to 1D.

Friday, January 16, 2015

Introduction to Spectral Mesh Analysis Toward a simple implementation in C++

Hi reader, as I said before I want to share what I have done and learned from the Vision & Robotics master program. This post includes the our semester project. Actually, the code was given to all the students and the professor wanted us to improve his code and apply 'Spectral Mesh Analysis' on it. You can find more information from the project link that is end of the post. If you have any question free to shoot. I'm just putting here the graphical user interface and how to use the program that is already inside of the project report.

6.1 Framework choice

Because of the constraints that the project must be developed using C++ under Qt IDE, we used the Qt Widgets that are mature and feature rich user interface elements suitable for mostly static user interfaces. Besides, since Qt Widget are native C++ elements it is easier to merge UI with the application logic. The application UI is connected to all other parts of the application through the class Logic. The logic handles all the data interchange between the UI and algorithms. So it is possible to split the application in separate parts.

6.2 Basic elements of UI

The UI is straightforward and easy to use. There are two main parts – openGL screen and sidebar. It is possible to extract many cases of the application usage from the task:

  • Load of the file
  • Adjust the camera properties
  • Adjust the light properties
  • Adjust the displaying mode
  • Calculate Laplacian Matrix and set new colors according to it
  • Find the shortest path from one node to another

Friday, November 21, 2014

How Google ranks Web pages?

Google’s search algorithm combined precomputed PageRank scores with text matching scores to obtain an overall ranking score for each webpage. The PageRank algorithm assigns a PageRank score to each webpages. The algorithm models the behavior of an idealized random Web surfer [1, 2]. This Internet user randomly chooses a webpage to view from the listing of available webpages. Then, the surfer randomly selects a link from that webpage to another webpage.

The model the activity of the random Web surfer, the PageRank algorithm represents the link structure of the Web as a directed graph.


The process for determining PageRank begins by expressing the directed Web graph as the nxn hyperlink matrix, H, where n is the number of webpages.


Friday, November 14, 2014

Real Time Adaptive Shortest Path Navigation System - [Proje]

1 – PROJECT OVERVIEW

This document includes the project proposal for the RETINA(REal Time Adaptive Shortest Path Navigation System) that will be produced at end of fall semester. The schedule for this project starts in September 2012 and ends in January 2013. This project will be developed by the students who are taking CE 497 Senior Project 1 course. The members of this project are as follows:

  • Taner Güngör
  • Efe Sezer
  • Uğur Eryüzlü
  • Ulaş Göde

Project will be supervised by Asst. Prof. Süleyman Kondakçı and project coordinator is Taner Güngör who is elected by the project team.

Real Time Adaptive Shortest Path Navigation System provides a package that is combination of the software and hardware. It performs a shortest path for the agents (who are using this system in their vehicles) in the traffic. The system finds that shortest path according to the specified parameters, such as instantaneous flow, throughput, weather conditions, (rain, humidity, snow) illumination of the roads. The oriented customers for this product are personal and commercial vehicle drivers and commercial transportation companies.

The project scope for the Real Time Adaptive Shortest Path Navigation System will be included embedded boards which are Arduino and ARM. These boards will perform the software operations via sensors which are attached on the Arduino board and show up the shortest path on the screen.

Thursday, August 28, 2014

Disket Sürücüsü ile Müzik Çalmak

Herkese merhaba, ilk defa üniversite son sınıftayken youtube üzerinde gördüğüm floopy diskler(disket sürücü) ile müzik çalma işlemini uzun zamandır yapmak istiyordum. Bugün bahsedeceğim konu bu. Hatta yaklaşık 3 ay gibi bir süre Hermes İletişim'de part-time çalıştığım vakit, bu konuyu anlattığım ve aramızda ilk önce kim yapacak diye ufak bir iddiaya tutuştuğum Aşkın Yollu'ya armağan ediyorum bu yazıyı. Öncelikle ihtiyacımız olan malzemelerin listesini vereyim.

1 - Arduino UNO

2 - Kullanılmayan Bir Disket Sürücüsü (Yazıda 3.25 inchlik 34-pine sahip sürücü kullanıyorum, birden fazla kullanabilirsiniz)

3 - Kullanılmayan Bir ATX Güç Kaynağı (Şart değil, gereken akımı Arduino üzerinden de alabilirsiniz)

4 - CAT5 UTP Kablolar (Sürücü ve Arduino arasındaki bağlantılar için)

5 - Breadboard

Yukarıdaki malzemelerimiz tam ise, sürücümüzü müzik çalar hale getirmeye başlayabiliriz. Öncelikle eğer güç kaynağı kullanacaksanız, güç kaynağımızın aşağıdaki resimde görüldüğü gibi yeşil ve herhangi bir siyah kablosunu kısa devre yaptırıyoruz. Bu sayede güç kaynağımız sabit 5 voltluk bir enerji verecektir. Bu enerji ise disket sürücüsünü çalıştırmak için yeterlidir.

Sunday, June 15, 2014

AdobeHDS(Adobe HTTP Dynamic Streaming) ve Video İndirme

Uzunca bir süredir Mete Çubukçu'nun NTV'de yayınlanan Pasaport adlı programını izliyorum. Çubukçu, “Pasaport”ta Ortadoğu’dan Avrupa’ya, Kafkasya’dan Amerika’ya uzanan geniş bir coğrafyada siyasi, sosyal, toplumsal gelişmeleri ve hayatları ekrana getiriyor. Çubukçu aynı zamanda dünya liderleriyle röportajlar yaparak programı renklendiriyor. Programın her bölümü ayrı bir keyif olmaKla beraber internet üzerinden izlenebiliyor. Buradaki linkten programın tüm bölümlerine ulaşabilirsiniz.

Benim bu yazıda değinmek istediğim nokta ise, internet ortamında bulunan bu videoları nasıl bilgisayarımıza indirebileceğimiz ile alakalı. Başlangıçta normal bir flash oynatıcı üzerinden stream yapıldığını düşünüyordum. Biraz uğraşsam dosyanın server üzerindeki yolunu bulup, videoyu bilgisayarıma indirebilecektim. Ancak daha sonra videoların "AdobeHDS" denen bir yöntemle stream edildiğini anladım. Peki nedir bu AdobeHDS?

AdobeHDS(Adobe HTTP Dynamic Streaming) normal HTTP bağlantıları üzerinden MP4 standartlarına uygun naklen video yayını yapılabilen bir yöntem. Ayrıca varolan önbellek altyapısını kullanarak iş akışı içerisine içerik hazırlamanızı sağlayan bir arayüz de sunmaktadır. Bu yazıda avantaj ve dezantajlarından bahsetmeyeceğim. Daha fazla bilgi almak isterseniz bu linkte fazlasıyla mevcut.

Friday, May 23, 2014

TTNET IEEE Build Up 2014 Etkinliği

Uzun bir süredir iş dolayısı ile katılmak istediğim etkinliklere katılamıyordum. Bunlardan birisi İzmir Ekonomi Üniversitesi tarafından düzenlenen GGJ Ege 2014 idi. Bu etkinliğe katılamasam da sunumların yapıldığı son gün alana gittim ve oyun sunumlarını izledim. Daha önceki GGJ'lerde ekip arkadaşım Alper Yeşil'in dereceye girdiğine de şahit oldum. Hatta şakayla karışık sanırım sorun bizdeymiş bile dedim.

Aradan yaklaşık 2-3 ay geçtikten sonra Alper'den telefon aldım. GGJ kıvamında İzmir Yüksek Teknoloji Enstitüsü tarafından düzenlenen TTNET'in sponsorluğunda gerçekleştirilecek olan BuildUp Etkinliğinden bahsedip katılıp katılamayacağımı iki tasarımcı arkadaşının boşta olduğunu söyledi. Kısaca etkinlikten bahsetmek gerekirse, 48 saat içerisinde verilen temaya uygun bir oyun maratonu diyebiliriz. Yani GGJ'den isim dışında pek farkı yok. Alper'in bu teklifi üzerine üniversitede pek çok projede birlikte olduğumuz bazı arkadaşlara durumu anlattım. Tabii ki efsane isim Efe Sezer'den olumlu yanıt dönünce oluru verdik bizde. Ayrıca o gün etkinliğe katılım için son gündü, hemen hızlıca ekip arkadaşları Maya Bora ve Ayışığı Gülsel ile tanışılıp grup adı belirendi. Tek bir çatı altında toplandık mottosu ile grubun ismini "Roof" koyduk ve acele bir şekilde kayıt işlemlerini yaptık. Yaklaşık 3-4 gün sonra bize olumsuz bir yanıt geldi, zira gruptan hiç kimsenin CV'sini veya portfolyosunu göndermemiştik. Akabinde etkinliğin yetkililerinden Onur Temizkan ile iletişime geçip bu etkinliğe ne kadar çok katılmak istediğimizi anlattım. Gerekli belgeleride yolladık. Etkinlik ekibi tarafından yapılan yeni bir görüşme ile katılımımız onaylandı. Biraz sorunlu bir süreç oldu ama değdi doğrusu.

Sunday, May 18, 2014

Network Settings - [Proje]

Linux kullanmaya üniversite 2.sınıfta başladım desem yanlış söylemiş olmam. Üniversite 1.sınıf ilk dönem, Ubuntu 9.04 (Yanlış hatırlamıyorsam) ile Windows XP'yi aynı anda kullanıyordum. Ancak Windows 7'nin piyasa çıkışı ve benim tek işletim sistemi olarak Windows kullanmak istememin sonucu o gün format atarken grub hatası aldım. Ve aldığım bu hata benim herhangi bir Linux dağıtımı kullanmamı biraz daha geciktirdi. Bütün bunları neden anlattığıma gelince, Linux dağıtımlarına mesafeli durmamın sebebi çoğu işlemin "Terminal" denen ve Windows'taki karşılığı "Komut Satırı" olan yapının üzerinden yürümesiydi. Linux dağıtımları her ne kadar görsellik barındırsalar da önemli ve gelişmiş birçok ayar hala Terminal üzerinden yapılıyordu. Görselliğin kolaycılığına(hatta birazda tembelliği diyebiliriz) kaçan birçok kişi için başlarda Terminal çok sıkıntılı bir yapı olarak görülebilir. Ancak bu sistem ile sağlananları ve yapılabilecekleri görünce insan ister istemez hayretlere düşüyor. Terminal ile yakınlaşmam üniversite 2.sınıf yıllarıma denk geliyor. Bu yıllarda Terminal üzerinde çeşitli komutları deneyip öğreniyordum. İlk defa Shell Script Programlamaya da bu dönemde başladım. Programlama dediysem basit girdi, çıktı üreten ufak scriptlerdi.

Okulumuzda "CE 354" kodlu, "UNIX Komut Dillerinde Programlama" adlı dersi de ilk bu zamanlar almayı düşündüm. Fakat hayatın cilvesi bu dersi son yılımda ve son dönemimde aldım. Ders genel olarak UNIX ile ilgili temel bilgileri, Terminal üzerinde işlem yapabilmeyi ve ufak ama çok yararlı scriptler yazmayı kapsıyordu. Elbette ders için yapmamız gereken birde proje vardı. Projemizin ismi "Network Settings". Ulaş GÖDE, Volkan BENLİ ve benim tarafımdan yazıldı. Kısaca açıklamak gerekirse: Interface(Arayüz), Hostname ve DNS Konfigürasyonu gibi 3 temel konu üzerinde ayarlama yapabilen ufak bir program. Benim yazdığım kısım Interface(Arayüz) Konfigürasyonu kısmı, bu bölümde bağlantı tipini ayarlayabilirsiniz. Şayet internet erişimi için wireless(kablosuz) bağlantı kullanıyorsanız, kablosuz ağları görüntülemek, istediğiniz bir ağa bağlanmak, otomatik, DHCP ya da el ile IP ataması yapmak gibi ayarlar mevcut. Diğer bölümlere de kısa kısa değinmek istiyorum. Hostname Konfigürasyonu kısmı Volkan BENLİ tarafından yazıldı, burada hostname ve IP görüntüleme, düzenleme, ekleme ve silme işlemleri yapılmakta, Ulaş GÖDE'nin yazmış olduğu DNS Konfigürasyonu kısmında ise mevcut DNS adreslerini görüntüleme, düzenleme, adres ekleme ve silme işlemleri yapılmaktadır. Sözü çok fazla uzatmadan resimler eşliğinde projeyi anlatmak istiyorum.

Sunday, September 29, 2013

Arduino ve GPS Modülü - [GPS Tracker] - II

Herkese merhaba, GPS Tracker projesinin 2. yazısındayız. İlk yazıyı okumak isteyenler buradaki linkten ulaşabilirler. Hatırlatmak için projeyi tekrar kısaca anlatacağım. Uydudan Arduino'ya bağlı GPS modülü aracılığı ile alınan bilginin USB ile bilgisayarımıza aktarılması ve buraya gelen bilgilerin anlamlı datalara dönüştürülüp kullanıcının ihtiyacına uyarlanması işlemiydi. Bu yazıda Arduino'ya yüklediğimiz programın ne işe yaradığını açıklayıp. Projenin QT ayağına da değinmek istiyorum. Projenin QT ayağında, ek olarak Google Map API(V3)'sini de kullandım. API yardımı ile uydudan aldığım longitude(boylam), latitude(enlem) bilgilerini kullanarak bulunduğum konumu harita üzerinde gösterebiliyorum. Ayrıca aldığımız hız bilgisini de ekrana yansıtabiliriz. Bu uygulama ile basit bir navigasyon sistemi yapmış olacağız. Çünkü QT Creator ile yazdığım program dinamik bir program. Uydudan alınan veri değiştikçe, QT'ye yansıtılan veri de aynı hızla değişiyor. Şayet arabanızda laptobunuzu açıp, Arduino'yu da laptoba bağlarsanız, siz hareket ettikçe haritada sizi temsil eden simge de hareket edecektir.(Tabii biraz zahmetli bir iş olduğu kesin, bende henüz arabada denemedim.) Lafı çok fazla uzatmadan Arduino'ya yüklediğimiz kodu açıklamak istiyorum.