17 Mart 2020 Salı

Raspberry Pi Python Script ile İnternet Bağlantı Kontrolü

Aşağıdaki python kodları ile Raspberry'nin internete bağlı olup olmadığını kontrol edebilirsiniz.

import time
import socket
REMOTE_SERVER = "one.one.one.one"
def is_connected(hostname):
  try:
    # DNS kontrolu
    host = socket.gethostbyname(hostname)
    # hosta baglan - erisilebilir mi
    s = socket.create_connection((host, 80), 2)
    s.close()
    return True
  except:
     pass
  return False
#timeit is_connected(REMOTE_SERVER)
#> 10 loops, best of 3: 42.2 ms per loop
while True:
    if is_connected(REMOTE_SERVER)==True:
        print("Internet var")
        time.sleep(1)
     
    else:
        print("Internet yok")
        time.sleep(1)

16 Mart 2020 Pazartesi

Raspberry Pi Üzerinden Mail Gönderme (MSMTP)

sudo apt install msmtp msmtp-mta
komutu ile msmtp'yi yüklüyoruz.

sudo nano /etc/msmtprc
komutu /etc klasörü içinde msmtprc isimli dosya oluşturuyoruz.

Bu dosyanın içine aşağıda örnekte verildiği gibi verileri dolduruyoruz.

/etc/msmtprc

# Tum hesaplar icin varsayilan degerler.
defaults
auth           on
tls            on
tls_starttls   on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Gmail hesap ornegi
account        gmail
auth           on
host           smtp.gmail.com
port           587
from           mailadresiniz@gmail.com
user           kullanici adiniz
password   sifreniz

# Varsayilan hesap ayarlama
account default : gmail

sudo chmod a+w /etc/msmtprc
ile gerekli izinleri veriyoruz.

ls -la /usr/sbin/sendmail
 komutu ile msmtprc kullanıp kullanmadığını öğreniyoruz.

lrwxrwxrwx 1 root root 12 nov.  28  2016 /usr/sbin/sendmail -> ../bin/msmtp
bu çıktıyı alıyoruz.
echo 'message' | msmtp user@domain.com
komutu ile mail denemesi yapılabilir.


diğer bir yöntem ise

home/pi klasörü içine .msmtprc isimli dosya oluşturarak yapmak.

/home/pi/.msmtprc

account default
host smtp.gmail.com
from mailadresiniz@gmail.com
auth on
port 587
user mailadresiniz@gmail.com
password sifreniz
logfile ~/.msmtp.log
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt


account custom
tls off
tls_starttls off
host smtp.gmail.com
from mailadresiniz@gmail.com
auth plain
port 25
user mailadresiniz@gmail.com
passwordeval gpg -q --for-your-eyes-only --no-tty -d .mutt/.pass.gpg | awk '/email@youremailhost.com:/ {print $2}'
logfile ~/.msmtp.log

Raspberry Pi I2C LCD Sıcaklık Gösterimi DS18B20 ile




Merhaba, daha önce yayınladığım Raspberry Pi ile I2C LCD modül kullanımı ve DS18B20 ile sıcaklık ölçümü sayfalarını inceleyebilirsiniz. Bu iki projenin birleşimi ile DS18B20 ile ölçtüğünüz sıcaklığı I2C modül ile kullandığınız LCD'de gösterebilirsiniz.

https://kendante.blogspot.com/2020/03/raspberry-pi-i2c-lcd.html
https://kendante.blogspot.com/2020/03/raspberry-pi-veds18b20-ile-sicaklik.html


Örnek Kod: 

#LCD----------------------------
import RPi_I2C_driver
mylcd = RPi_I2C_driver.lcd()
#DS18B20------------------------
import os
import glob
import time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

def read_temp_raw():
    f = open(device_file, 'r')
    lines = f.readlines()
    f.close()
    return lines

def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        #temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_c#, temp_f
 
while True:
    print(read_temp())
    time.sleep(1)
    mylcd.lcd_display_string("Temp: %.2f" %(read_temp())+ unichr(223) + "C", 1)
    mylcd.lcd_display_string("Kendante", 2)

    time.sleep(2) # 2 sec delay


RASPBERRY PI ve DS18B20 İLE SICAKLIK ÖLÇÜMÜ


RASPBERRY PI ve DS18B20 İLE SICAKLIK ÖLÇÜMÜ



Raspberry Pi ve DS18B20 ile sıcaklık ölçümünü anlatacağız.

Adım 1: Öncelikle Raspberry Pi ile DS18B20 bağlantılarını yapalım. DS18B20’nin Vdd ve DQ pinleri arasına 4.7 k ohm direnç bağlamalısınız.


Raspberry Pi
DS18B20
3.3V (Pin 1)
Vdd (Pin 3)
Ground (Pin 6 – Pin – 9 – Pin 14) Herhangi bir grounda pin
GND
GPIO  4 (Pin 7)
DQ



Adım 2:

-         Komut ekranına
sudo nano /boot/config.txt
yazıyoruz.

-         Gelen ekranda en alt satıra “dtoverlay=w1-gpio” yazıyoruz. Daha sonra ctrl+x à E àEnter yaparak yazdığımızı dosya içine kaydediyoruz.

-         “sudo reboot” yazarak raspberry’yi yeniden başlatıyoruz.

-          Doğru modülleri yüklemek için modprobe komutunu kullanıyoruz.

o   “sudo modprobe w1-gpio”

o   “sudo modprobe w1-therm” yazıyoruz.

-          Daha sonra komut ekranına

o   “cd /sys/bus/w1/devices”

o   “ls” yazıyoruz.

-          Ekranda çıkan verinin cd komutu ile tekrar içine giriyoruz.

o   “cd 28-041….”

o   cat w1_slave komutunu çalıştırıyoruz.

o Resimde gördüğünüz gibi olması gerekiyor.






Adım 3:

-          Komut ekranına

git clone https://github.com/pimylifeup/temperature_sensor.git
       yazarak örnek script ve kütüphaneyi edinebilirsiniz.

-          cd komutu ile dosyanın indiği klasör içine girerek, sudo python komutu ile örneği çalıştırabilirsiniz.



İyi çalışmalar dilerim.

RASPBERRY PI PAROLA SIFIRLAMA


Bu yazıda Raspberry pi’da unutulan parolayı sıfırlamayı açıklayacağız.
-        Raspberry pi kapatıyoruz. SD kartı Raspberry Pi’den çıkartıp bilgisayara takıyoruz.
-        SD kart içinde bulunan cmdline.txt adlı dosyayı açıyoruz.
-        Text dosyasının en sonuna init=/bin/sh ekliyoruz. Text dosyası buna benzer şekilde  görünmeli “dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait init=/bin/sh
-        SD kartı bilgisayardan güvenli çıkardıktan sonra tekrar Raspberry Pi’ye takıyoruz.
-        Komut ekranı geldikten sonra “su” yazarak root olarak devam ediyoruz.
-         “passwd pi” yazıyoruz ve yeni parolamızı giriyoruz. Parolanız ekranda yazılmıyor gibi     görünebilir. Bu sizi yanıltmasın parolanız yazılıyor.
-        Raspberry pi’yi kapatıp SD Kartı çıkartıyoruz. Bilgisayara takıp cmdline.txt dosyasının sonuna eklediğimiz init=/bin/sh siliyoruz.

Eğer yetkiniz yok veya root= PARTUUID… gibi hata alıyorsanız cmdline.txt içinde root=/dev/mmcblk0p2 değişikliğini yapmalısınız.
-          Komut ekranı geldiğinde mount –o remount, rw / yazmalısınız
-          Daha sonra “passwd pi”
-          Yeni şifremizi girdikten sonra
o   Sync
o   Exec /sbin/init
Yazıyoruz. Raspberry pi yeniden başlayacaktır. Raspberry pi’yi kapattıktan sonra SD kartı çıkartıp tekrardan bilgisayara takıp cmdline.txt dosyasının sonuna eklediğimiz init=/bin/sh siliyoruz.

RASPBERRY PI ile I2C LCD MODÜL KULLANIMI


RASPBERRY PI I2C LCD

 Raspberry Pi ile I2C LCD modül kullanımını anlatacağız

Adım 1:

                Öncelikle Raspberry Pi üzerinde I2C’yi aktif hale getirmemiz gerekiyor. Bunun için farklı yöntemler vardır.

1.       İlk yöntemde “Tercihler” sekmesinde bulunan Raspberry Pi Configuration à Interface à Enable I2C seçeneğini seçip OK diyoruz.





2.       İkinci yöntemde terminal ekranına “sudo raspi-config” yazıyoruz. Gelen ekranında Interfacing Optionsà I2C Enable diyoruz.










Adım 2:

                Raspberry Pi ile I2C LCD bağlantımızı yapıyoruz.

Raspberry Pi
I2C
5V (Pin 2)
VCC
GROUND (Pin 6)
GND
SDA (BCM 2 – Pin 3)
SDA
SCL (BCM 3 – Pin 5)
SCL



Adım 3:

bu çıktıyı alıyoruz.
sudo apt-get install i2c-tools
 komutu ile I2C dosyalarını Raspberry Pi’ye yüklüyoruz.

sudo
apt-get install python-smbus
 komutu ile bus ayarlarını yapıyoruz.

-       Raspberry Pi’yi yeniden başlatıyoruz.

-       LCD ayarlarının doğru yapılıp yapılmadığından emin olmak için komut satırına

i2cdetect –y 1
 yazıyoruz. Buna benzer bir ekran alırsınız. Bende çıkan “27” değeri önemli. Bu bağladığınız LCD'nin adresidir. I2C_ADDR = 0x27



Adım 4:
          
           -   https://gist.github.com/DenisFromHR/cc863375a6e19dce359d#file-examples-py“ buradan kütüphane ve örnek scripti indirebilirsiniz.




Bundan sonraki kodlar size kalmıştır. İyi çalışmalar dilerim.