- 16x2 LCD'yi Raspberry Pi ile arayüzleme:
- Devre şeması:
- Raspberry Pi'nin IP Adresini LCD'de Göster:
- Düzenli olarak 'crontab' kullanarak Komut Dosyasını çalıştırın:
Raspberry Pi ile çalışırken asıl sorun, Raspberry Pi'nin IP adresini bilmektir; bu, bazı SSH veya dosya aktarım istemcileri kullanarak giriş yapmak için gerekli olacaktır. Bu yüzden bugün , Raspberry Pi'nizin ağdaki yerel IP adresini bulmak ve 16x2 LCD Ekranda görüntülemek için bazı Python komut dosyalarını paylaşacağız. Ayrıca komut dosyasını Crontab'a ekleyeceğiz, böylece her 10 dakikada bir çalıştırılabilir ve her seferinde güncellenmiş IP adresine sahip oluruz.
16x2 LCD'yi Raspberry Pi ile arayüzleme:
Raspberry PI'nin IP adresini bulmadan önce, ilk olarak 16x2 LCD'yi Raspberry Pi ile arayüzlememiz gerekiyor. Bu Projede, 16x2 LCD'yi Raspberry Pi ile arayüzlemek için harici bir Adafruit Kitaplığı kullandık, bunu kullanarak LCD'yi çalıştırmak için çok sayıda kod satırı yazmanıza gerek kalmaz ve yalnızca bir satır kullanarak LCD'ye doğrudan yazdırabilirsiniz. kodu. Ancak bu Kitaplık Adafruit tarafından oluşturulmuştur ancak HD44780 denetleyiciye sahip herhangi bir LCD modülü için kullanılabilir.
Adafruit Kütüphanesi'ni kullanmak için öncelikle aşağıdaki komutları kullanarak kurmamız gerekiyor. İlk komut, Raspberry Pi'nizde CharLCD deposunu (Adafruit tarafından) klonlayacak, ikinci komut sizi indirilen dizine götürecektir ve son olarak, kütüphaneyi kurmak için Adafruit_Python_CharLCD dizininde sunulan setup.py betiğini çalıştırmamız gerekir.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Artık 16x2 LCD için kütüphane kuruldu ve bu kütüphaneyi python programınıza aşağıdaki satırı kullanarak içe aktararak işlevlerini kullanabilirsiniz:
Adafruit_CharLCD'yi LCD olarak içe aktar
Kitaplık klasöründe (Adafruit_Python_CharLCD) bulunan 'örnekler' klasörünün içinde bazı örnek komut dosyaları vardır. Kurulumu char_lcd.py örnek komut dosyasını çalıştırarak test edebilirsiniz. Ancak bundan önce LCD pinlerini bir sonraki bölümde devre şemasında aşağıda verildiği gibi Raspberry Pi ile bağlamanız gerekmektedir.
LCD'yi Raspberry Pi'nin diğer bazı GPIO pinlerine de bağlayabilirsiniz, tüm yapmanız gereken python programınızda aşağıdaki gibi doğru arayüz pinlerinden bahsetmektir. Raspberry Pi GPIO Pinleri hakkında buradan daha fazla bilgi edinin.
# Raspberry Pi pin ayarı lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Artık LCD'yi kontrol etmek için Adafruit Kütüphanesi tarafından sağlanan işlevleri doğrudan kullanabilirsiniz. Fonksiyonlardan bazıları aşağıda verilmiştir; örnek komut dosyasında daha fazlasını bulabilirsiniz:
- lcd.message (message) = Metni LCD üzerine yazdırmak için.
- lcd.clear () = LCD'yi temizlemek için.
- set_cursor (col, row) = İmleci sütun ve satırdaki herhangi bir konuma taşıyın.
- lcd.blink (True) = İmleci yanıp sönmek için (True veya False)
- lcd.move_left () = İmleci bir konum sola hareket ettirmek için.
- lcd.move_right () = İmleci Sağa bir konum taşımak için.
Herhangi bir harici kitaplık kullanmadan LCD'yi bağlamak istiyorsanız, 16x2 LCD için tüm fonksiyonları yazdığımız önceki eğitimimize bakabilirsiniz. LCD ile 8-bit Modunda arayüz oluşturmak için bunu ve LCD ile 4-bit modunda arayüz oluşturmak için bunu işaretleyin.
Devre şeması:
Raspberry Pi'nin IP Adresini LCD'de Göster:
16x2 LCD'yi Raspberry Pi ile arayüzledikten sonra, şimdi Raspberry Pi'nin IP adresini almamız ve Python Script kullanarak LCD'ye yazdırmamız gerekiyor. Raspberry Pi'nin yerel IP adresini almanın birçok yolu vardır, burada IP adresini almak için üç Python Scripts'i açıklıyoruz, bunlardan herhangi birini kullanabilirsiniz.
Linux Komutlarını Kullanma:
Terminalde, hostname –I komutunu kullanarak IP adresini kolayca alabiliriz, yani eğer python'dan linux komutunu çalıştırabilirsek, IP adresini alabiliriz. Dolayısıyla, Python'dan Linux komutlarını çalıştırmak için komutlar adlı bir kitaplığı içe aktarmamız gerekir , bu nedenle tüm program aşağıdaki gibi olacaktır:
içe aktarma zamanı içe aktarma Adafruit_CharLCD'yi LCD içe aktarma komutları olarak içe aktarın # Raspberry Pi pin ayarı lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # 16x2 LCD için LCD sütun ve satır boyutunu tanımlayın. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) lcd.message ('Yerel IP Adresi: \ n') lcd.message (commands.getoutput ('hostname -I')) time.sleep (10.0) # 5 saniye bekleyin lcd.clear ()
Daha güvenilir ifconfig komutunu kullanarak IP adresini almak istiyorsanız, programdaki hostname –I komutunu aşağıdaki komutla da değiştirebilirsiniz:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - kes -d "" -f1'))
Soket programlamayı kullanma:
Burada bu programda AF_INET ailesinden bir soket oluşturacağız ve şu satırı kullanarak SOCK_DGRAM yazacağız : s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , ardından 8.8 gibi bir ana bilgisayar adı veya ip adresi kullanarak soket aracılığıyla bağlantı oluşturacağız..8.8, gmail.com gibi sokete bağlanmak için başka bir web sitesini de kullanabilirsiniz. Böylelikle Raspberry Pi ile sahte IP adresi arasında iletişim için oluşturulmuş olan soketten RPi'nin yerel IP adresini alabiliriz. Programın tamamı aşağıdadır:
içe aktarma zamanı içe aktarım Adafruit_CharLCD'yi LCD içe aktarma soketi olarak # Raspberry Pi pin ayarı lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # 16x2 LCD için LCD sütun ve satır boyutunu tanımlayın. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) def get_ip_address (): ip_address = ''; s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () s.close () return ip_address lcd.message ('Yerel IP Adresi: \ n ') lcd.message (get_ip_address ()) # 5 saniye bekleyin time.sleep (10.0) lcd.clear ()
Python'da Soket Programlama hakkında daha fazla bilgiyi burada bulabilirsiniz.
'Fcntl' Modülünü Kullanma:
Bu modül, dosya tanımlayıcıları üzerinde dosya kontrolü ve G / Ç kontrolü gerçekleştirir. Burada IP adresini ağ dosyalarından çıkarmak için kullanılır. Aşağıda tam Python kodu verilmiştir:
içe aktarma zamanı içe aktar Adafruit_CharLCD'yi LCD içe aktarma soketi olarak içe aktar fcntl içe aktarma yapısı # Raspberry Pi pin ayarı lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # 16x2 LCD için LCD sütun ve satır boyutunu tanımlayın lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) def get_interface_ipaddress (ağ): sAM.socket (soket.AF_GRINET) dönüş soketi.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', ağ))) lcd.message ('Yerel IP Adresi: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # 5 saniye bekleyin time.sleep (10.0) lcd.clear ()
Burada 'fcnfl' Modülünü kullanma hakkında daha fazla bilgi edinin.
Düzenli olarak 'crontab' kullanarak Komut Dosyasını çalıştırın:
Son adım, bu komut dosyasını periyodik olarak her 15 dakikada bir çalıştırmak için girişi eklemektir, böylece her seferinde güncellenmiş IP alabiliriz. Bunu yapmak için aşağıdaki komutu kullanarak cron dosyasını düzenlememiz gerekir:
crontab –e
Ve sonra cron dosyasının altındaki aşağıdaki satırı girin ve CTRL + X, ardından Y, ardından girin.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Adresi Python Script dosyanızın konumuna göre değiştirebilir ve güncellenmiş IP'yi almak için betiği tekrar tekrar çalıştırmak istediğiniz süreyi de değiştirebilirsiniz.