Raspberry with Python (LED & Mail)

Bu makalede, Raspberry Pi fiziksel pinleri kullanılarak LED yakma ve yanan LED’in durumunu mail atma ile alakalı küçük bir uygulama bulacaksınız. Öncelikle Pi üzerinde bulunan pinleri iyi anlamalıyız.

Burada unutulmaması gereken bir nokta, uygulamanızı programlarken eğer BOARD kullanıyorsanız pin#, BCM kullanıyorsanız GPIO# pinlerini takip etmelisiniz (What is the difference between BOARD and BCM for GPIO pin numbering?). Aşağıdaki görselde çeşitli LED’ler için değişken voltaj değerlerini görüyorsunuz. Bu değerler için uygun direnç (ohm Ω) kullanmalısınız. 1R 1/2W fazlasıyla işinizi görecektir.

Pi’a SSH üzerinden bağlantı kurup(Connect to Raspberry Pi 3 Model B with SSH), LX Terminal’ı açıyoruz ve “nano example.py” komutu ile LX Terminal üzerinden dosyamızın içine girip komutlarımızı yazıyoruz.

import smtplib
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)
num=0
led=raw_input("Do you want to turn on LED?") #raw_input function for version 2
if led == 'yes': #if statement
num=1
while num > 0: #infinite loop
GPIO.output(11,1) #GPIO.output(11,True)
server = smtplib.SMTP('smtp provider', 587)
server.starttls() #secure connection
server.login("your email address", "your password")
msg = "your message"
server.sendmail("your email address", "the email address to send to", msg)
server.quit()
continue
else:
GPIO.output(11,0) #GPIO.output(11,False)
GPIO.cleanup() #clean up all the ports you’ve used

Not #1: pi@raspberrypi kullanıcısının genellikle GPIO pinlerine erişim izni yoktur. Bu sebepten dolayı programımızı run ederken sudo (superuser) olarak run etmeliyiz. Yani, nano example.py olarak içine girdiğimiz dosyamızı Ctrl+o ile save edip, Ctrl+x ile tekrar LX Terminal ekranına dönüp, son olarak sudo python example.py komutunu kullanmalıyız. 

Not #2: Email gönderirken şifrenizi açıkca giriyorsunuz ancak server.starttls() ile encrypted şekilde authenticate oluyorsunuz. SMTP olarak Gmail kullanıyorsanız Allowing less secure apps to access your account linkinden izin vermeniz gerekmekte. Diğer SMTP sağlayıcıların böyle bir uygulaması bulunmuyor. Program ile biraz daha oynayıp şifreniz hashlenip saklanabilir.    

Not #3: Yanıp sönen (blink) LED programı yazmak için for loop kullanmalısınız. İlk olarak import time kütüphanesini eklemelisiniz.