Raspberry Pi’nin kendi sitesinden Raspbian Lite imajını indirip, SD karta yazıp ilk boot’u yaptığınız varsayılmaktadır.

Her şeye başlamadan önce Pi’miz için ilk ayarları yapmamız gerekiyor.

Bunun için hazırladığınız Rasbian Lite imajı ile Pi’yi açın.

login ekranı geldiğinde pi yazıp entera basın, password sorulduğunda da raspberry yazarak terminale giriş yapabilirsiniz.

Raspbian GNU/Linux 8 raspberrypi tty1

raspberrypi login : pi
Password : raspberry

İlk ayarları yapacağımız aracımızın adı raspi-config. Çalıştırmak için

pi@raspberryipi:~ $Raspbian’ın IP adresini öğrenerek işe başlayabiliriz. Bunun için 2 yöntem mevcut. Birincisi Pi’ye monitör ve klavye bağlayarak açılış yaparız.login ekranı geldiğinde aşağıdaki şekilde giriş yapıyoruz.

pi@raspberrypi:~ $ sudo raspi-config

raspiconfig

Buradaki her seçeneğin anlamını internette bulabilirsiniz. Bizim hızlıca yapmamız gereken işlemler şöyle.

Expand File System : Bu madde üzerindeyken entera bastığınızda SD kartınızdaki boş alanın tamamı Raspbian dosya sistemine bağlanır.

Change User Password : Açılışta raspberry yazarak giriş yaptığınız şifreyi değiştirmenizi sağlar. Örneklerde hep raspberry şifresi kullanılacağı için, herhangi bir karışıklık yaşamamak adına hemen değiştirmeyin bu şifreyi.

Boot Options : Açılış tercihlerini seçebilirsiniz.

B1 Console : Kullanıcı adı ve şifre girerek konsol oturumu açar.

B2 Console Autologin : Sizin adınıza otomatik login yapar ve kullanıcı adı şifre girmekle uğraşmazsınız.

B3 Desktop : Masaüstü modu

B4 Desktop Autologin : Masaüstü modda otomatik kullanıcı girişi yapar.

*** Eğer Pi’yi masaüstü bilgisayar gibi değil de teknik olarak kullanacaksanız Console modlarından her hangi birini seçiniz.

Internationalisation Option : Yerelleştirme ayarlarıdır.

Change Locale : tr_TR paketleri eklenir. Fakat default locale olarak en_GB.UTF-8 seçilmiş olmalıdır.

Change Timezone : Asia altından Istanbul seçilir. (Siz farklı bir şehirde yaşıyor olabilirsiniz fakat saat sisteminde Istanbul tüm Türkiye saat sistemini temsil eder.

Change Keyboard Layout : Önce klavye tipi seçimi gelir. Standart klavyeler için Generic 105-key (Intl) PC seçimiyle devam edilebilir.  Bir sonraki ekranda English (UK) klavye ayarları görünür ve alt kısmındaki Other seçilir, daha sonra Turkish  ve son olarak da tekrar Turkish seçilir. Bundan sonra bir iki ayrıntı ayarı var klavyeyle ilgili. The default for the keyboard layout ve No compose key seçimleri ile bu adımlar atlanır ve klavye ayarlarımız tamamlanır.

Advanced Options :

SSH : Pi’mizi monitör ve klavye bağlamadan uzaktan terminal bağlantısı ile yönetmemizi sağlayan servistir. Etkinleştirmeliyiz.

SPI , I2C, GPIO Server : Elektronik iletişim için aktifleştirmemiz gerekiyor.

Tüm ayarları yapıp Finish dedikten sonra Pi yeniden başlayacak.


Sistemimizi Güncel Tutalım

İlk işimiz yüklü paketlerimizi güncellemek. Konsolda sırasıyla sudo apt-get update ve sudo apt-get upgrade yazıyoruz.

pi@raspberrypi:~ $ sudo apt-get update
Get:1 http://mirrordirector.raspbian.org jessie InRelease [14,9 kB] Get:2 http://archive.raspberrypi.org jessie InRelease [13,2 kB] …

Fetched 9.280 kB in 18s (489 kB/s)
Reading package lists… Done
pi@raspberrypi:~ $ sudo apt-get upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages will be upgraded:


Do you want to continue? [Y/n] Y

Bir süre yüklemeden sonra sistemdeki tüm kurulu paketlerimiz güncellenmiş olur. Bu güncellemelerden sonra Reboot önerilir.

pi@raspberrypi:~ $ sudo reboot

Apache – PHP5 – MySQL kurulumu

pi@raspberrypi:~ $ sudo apt-get install apache2 apache2-utils
pi@raspberrypi:~ $ sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
pi@raspberrypi:~ $ sudo apt-get install php5-mysql
pi@raspberrypi:~ $ sudo apt-get install mysql-server mysql-client

mysql kurulumunda bir ekranda sizden mysql root kullanıcısıiçin bir şifre belirlemeniz istenecek. New password for the MySQL “root” user:  için bir şifre belirleyip,  devam edin. (Belirlediğiniz mysql root şifresini unutmayın…!)

Bu şifreyi şimdiki adımda kuracağımız phpmyadmin bize soracak.

pi@raspberrypi:~ $ sudo apt-get install phpmyadmin

Kurulum esnasında bize hangi web server’ı kullandığımız sorulacak. Web server to reconfigure automatically:  sorusuna yanıt olarak apache2 seçin ve devam edin…(Önce Space’e sonra Enter’a basın) İlerki adımlarda az önceki root şifremizi soracak. Her bir adımda şifremizi yazarak devam ediyoruz. Konsola düştüğümüzde kurulumlar tamamlanmış olacak.

Apache – PhpMyAdmin ayarları

/etc/apache2/apache2.conf dosyasını açıyoruz.

pi@raspberrypi:~ $ sudo nano /etc/apache2/apache2.conf

PageDown tuşu ile dosyanın en sonuna inip aşağıdaki satırı ekliyoruz.

Include /etc/phpmyadmin/apache.conf

Satırı ekledikten sonra Ctrl+O ile dosyayı kaydedip, Ctrl+X ile nano’dan çıkabiliriz.
Yeni bi şeyler kuruyorsak şart olmasa da Reboot candır.

pi@raspberrypi:~ $ sudo reboot

Apache Web Server Testi

Web serverımızın çalışıp çalışmadığını kontrol için Pi ile aynı ağdaki bilgisayarınızın web browserına Pi’nin IP adresini http://raspberrypi-ip-adresi/ şeklinde girdiğinizde aşağıdaki gibi bir sayfa ile karşılaşıyor olmanız lazım.

apache-default

phpmyadmin için ise http://raspberrypi-ip-adresi/phpmyadmin adresini kullanabilirsiniz.

Python3 Kurulumu

pi@raspberrypi:~ $ sudo apt-get install python3

Kurulum sonrası Python3 testi yapmak için konsoldayken Python3 yazıp bakabiliriz.

pi@raspberrypi:~ $ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

Ctrl+C veya Ctrl+Z basarak Python’dan çıkabiliriz.

Python3 – MySQL Kurulumu

pi@raspberrypi:~ $ sudo apt-get install python3-pip
pi@raspberrypi:~ $ sudo pip3 install pymysql

PHP – MySQL Testi

Örnek senaryomuzda Pi’nin web arayüzü vasıtasıyla kullanıcıyla etkileşime geçip 2 adet metin girmesini isteyeceğiz. Daha sonra bu girilen metinleri MySQL veritabanına yazacağız.

Girdiğimiz metinleri okumayı ve I2C’den diğer cihazlara göndermeyi ise Python3 ile yapacağız.

İlk iş olarak MySQL veritabanımızı oluşturalım.

pi@raspberrypi:~ $ mysql -u root -p
Enter password: mysql-root-şifreniz
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.52-0+deb8u1 (Raspbian)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.mysql> CREATE DATABASE pibase;
Query OK, 1 row affected (0.00 sec)
mysql> USE pibase;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

mysql> CREATE TABLE `messages` (
    ->   `id` int(11) NOT NULL AUTO_INCREMENT,
    ->   `text_one` varchar(16),
    ->   `text_two` varchar(16),
    ->   PRIMARY KEY (`id`)
    -> );
Query OK, 0 rows affected (2.77 sec)

mysql> 

Default PHP klasörümüz; /var/www/html/ bu klasöre girelim ve index.php isimli bir dosya oluşturalım.

pi@raspberrypi:~ $ cd /var/www/html/
pi@raspberrypi:/var/www/html/ $ sudo nano index.php

index.php dosyamızın içeriğini aşağıdaki gibi oluşturalım.

<!DOCTYPE html>
<html>
<body>
<form action="action_page.php">
 Metin 1<br>
 <input type="text" name="text1" >
 <br><br>
 Metin 2<br>
 <input type="text" name="text2" >
 <br><br>
 <input type="submit" value="Gönder">
</form>
<p>Veritabanına işlenmesini istediğiniz metinleri yazıp 
<strong>Gönder</strong> butonuna basınız.</p>
</body>
</html>

Aynı klasörde bir de action_page.php isimli dosya oluşturalım.

pi@raspberrypi:/var/www/html/ $ sudo nano action_page.php

action_page.php dosyamızın içeriği de şu şekilde olacak. Fakat dosyayı oluştururken $password = “mysql-root-şifreniz“; satırını sizin şifrenize göre düzenlemeyi unutmayın.

<?php

$text1 = $_POST["text1"];
$text2 = $_POST["text2"];

$servername = "localhost";
$username = "root";
$password = "mysql-root-şifreniz";
$dbname = "pibase";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO messages (text_one, text_two) 
VALUES ('$text1', '$text2')";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

?>
<br>
<a href="index.php">Go back to index</a>

Şimdi web browserımızda http://raspberrypi-ip-adresi/index.php yazarak kodumuzu test edebiliriz.

pibase-index

Örnek olarak birinci kutuya Merhaba, ikinci kutuya da Pi yazıp Gönder‘e basalım.
Eğer buraya kadar olan kısımların tamamı doğru ise aşağıdaki gibi bir mesajla karşılaşmamız lazım.

pibase-action_page-1

Pekala, kontrol edelim, gerçekten veritabanına yazmış mı mesaj kutularımızı?

pi@raspberrypi:~ $ mysql -u root -p
Enter password: mysql-root-şifreniz
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.52-0+deb8u1 (Raspbian)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.mysql> USE pibase;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

mysql> SELECT * FROM `messages`;
+----+----------+----------+
| id | text_one | text_two |
+----+----------+----------+
|  1 | Merhaba  | Pi       |
+----+----------+----------+
1 row in set (0.00 sec)
mysql> 

Şu ana kadar herhangi bir sorunla karşılaşmadıysanız, Apache – PHP – MySQL üçlememiz gayet güzel çalışıyor.

Python3 – MySQL Testi

Python çalışmalarımız için /home/pi klasörünün içinde Python isimli bir klasör oluşturalım.

pi@raspberrypi:~ $ mkdir /home/pi/Python
pi@raspberrypi:~ $ cd /home/pi/Python
pi@raspberrypi:/home/pi/Python/ $

readdb.py isimli bir dosya oluşturalım.

pi@raspberrypi:/home/pi/Python/ $ nano readdb.py

Dosyamızın içeriğini aşağıdaki gibi oluşturalım. Fakat tabların kaymamasına özellikle dikkat edin.


#!/usr/bin/env python3

from __future__ import print_function

import pymysql

db = pymysql.connect(host='localhost', port=3306, user='root', passwd='5632', db='pibase')

cursor = db.cursor()

try:
	cursor.execute("SELECT text_one FROM messages ORDER by id DESC LIMIT 1")
	results = cursor.fetchall() 
	for row in results:
		message = row[0]
		print(message) 

	cursor.execute("SELECT text_two FROM messages ORDER by id DESC LIMIT 1")
	results = cursor.fetchall() 
	for row in results:
		message = row[0]
		print(message) 

except:
   print ("Error: unable to fecth data")


cursor.close()
db.close()

Kodumuzu test edelim. Bakalım neler olacak?

pi@raspberrypi:/home/pi/Python/ $ python3 readdb.py
Merhaba
Pi
pi@raspberrypi:/home/pi/Python/ $

Her şey tam olması gerektiği gibi. Artık PHP ile veri okuyup, MySQL veritabanına yazabiliyor, yazdığımız veriyi Python ile okuyabiliyoruz. Şimdi bir sonraki aşamaya geçebiliriz.

Arduino ve Pi – I2C Kurulumu

I2C protokolü ile Raspberry Pi’yi bir Arduino’ya bağlayacağız ve veritabanında okuduğumuz mesajı Arduino’ya gönderip, LCD ekranda görüntüleyeceğiz. Bunun için önce Arduino ve LCD bağlantısını aşağıdaki gibi yapalım.

arduino-lcd

Arduino’nun LiquidCrystal kütüphanesindeki HelloWorld örneği ile LCD ekranda çıktı alabiliyor olmanız gerekiyor. Bunun için Arduino Hello World linkinden faydalanabilirsiniz.

lcd-helloworld

I2C Kurulumu

raspi-config ayarlarında I2C’yi etkinleştirmiş olmamız gerekiyor. Aşağıdaki adımları uygulayarak i2c kurulumunu tamamlayabilirsiniz.

pi@raspberrypi:~ $ sudo nano /etc/modules

bu dosyada i2c-dev satırının olduğundan emin olun. Eğer yok ise ekleyin. Başında # işareti varsa da silin. Ve dosyayı kaydedin.

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.i2c-dev

Eğer modüllerde bir değişiklik yaptıysanız; “Reboot candır”

Şimdi i2c araçları ve Python bağlantısını sistemimize kuralım.

pi@raspberrypi:~ $ sudo apt-get install python-smbus i2c-tools

Kurulum tamamlandıktan sonra aşağıdaki komutu yazarak aşağıdaki gibi bir çıktı almış olmanız gerekiyor.

pi@raspberrypi:~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — — — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — — — — — — — — —
70: — — — — — — — —

Son olarak pi kullanıcısını i2c grubuna ekleylim.

pi@raspberrypi:~ $ sudo adduser pi i2c

Ne diyorduk? Reboot candır 🙂

Arduino ve Pi – I2C Bağlantı Devresi ve Programlar

arduino-pi-lcd-i2cb

 

Ne çok şey yazdım ama hala bitmedi. Esas ilginç olansa bunu birisi okuyacak mı bilmiyorum. Ama en azından kendime rehber niteliğinde güzel notlar oldu…