- Memadankan LCD 16x2 dengan Raspberry Pi:
- Rajah Litar:
- Paparkan Alamat IP Raspberry Pi di LCD:
- Jalankan Skrip Berkala menggunakan 'crontab':
Masalah utama semasa bekerja dengan Raspberry Pi adalah mengetahui alamat IP Raspberry Pi, yang diperlukan untuk masuk ke dalamnya menggunakan beberapa SSH atau klien pemindahan fail. Jadi hari ini kami akan berkongsi beberapa skrip Python untuk mencari alamat IP tempatan Raspberry Pi anda di rangkaian dan memaparkannya pada Skrin LCD 16x2. Kami juga akan menambahkan skrip di Crontab sehingga dapat dijalankan setiap 10 minit dan kami akan mempunyai alamat IP yang dikemas kini setiap saat.
Memadankan LCD 16x2 dengan Raspberry Pi:
Sebelum kita akan menemui alamat IP Raspberry PI, pertama kita perlu menyambungkan LCD 16x2 dengan Raspberry Pi. Di sini dalam Projek ini kami telah menggunakan Perpustakaan Adafruit luaran untuk menghubungkan LCD 16x2 dengan Raspberry Pi, yang mana anda tidak perlu menulis banyak baris kod untuk menggerakkan LCD dan anda boleh mencetak secara langsung pada LCD dengan hanya menggunakan satu baris kod. Walau bagaimanapun Perpustakaan ini dibuat oleh Adafruit tetapi dapat digunakan untuk mana-mana modul LCD yang mempunyai pengawal HD44780.
Untuk menggunakan Perpustakaan Adafruit, pertama kita perlu memasangnya dengan menggunakan perintah di bawah. Perintah pertama akan mengklon repositori CharLCD (oleh Adafruit) pada Raspberry Pi anda, perintah kedua akan membawa anda ke dalam direktori yang dimuat turun dan akhirnya kita perlu melaksanakan skrip setup.py , yang disajikan di dalam direktori Adafruit_Python_CharLCD, untuk memasang perpustakaan.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py pasang
Sekarang perpustakaan untuk 16x2 LCD telah dipasang dan anda boleh menggunakan fungsinya dengan hanya mengimport perpustakaan ini dalam program python anda menggunakan baris di bawah:
import Adafruit_CharLCD sebagai LCD
Terdapat beberapa skrip contoh di dalam folder 'contoh' yang terdapat di folder perpustakaan (Adafruit_Python_CharLCD). Anda boleh menguji persediaan dengan menjalankan contoh skrip char_lcd.py. Tetapi sebelum itu, anda perlu menyambungkan pin LCD dengan Raspberry Pi seperti yang diberikan di bawah dalam rajah litar di bahagian seterusnya.
Anda juga boleh menyambungkan LCD dengan beberapa pin GPIO Raspberry Pi yang lain, yang perlu anda nyatakan pin antara muka yang betul dalam program python anda seperti di bawah. Ketahui lebih lanjut mengenai Pin GPIO Raspberry Pi di sini.
# Penyediaan pin Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Kini anda secara langsung dapat menggunakan fungsi yang disediakan oleh Adafruit Library untuk mengawal LCD. Beberapa fungsi diberikan di bawah; anda boleh mendapatkan lebih banyak lagi dalam contoh skrip:
- lcd.message (message) = Untuk mencetak teks pada LCD.
- lcd.clear () = Untuk membersihkan LCD.
- set_cursor (col, baris) = Gerakkan kursor ke kedudukan mana pun di lajur dan baris.
- lcd.blink (True) = Untuk mengedipkan kursor (Betul atau Salah)
- lcd.move_left () = Untuk menggerakkan kursor ke Kiri dengan satu kedudukan.
- lcd.move_right () = Untuk menggerakkan kursor ke Kanan dengan satu kedudukan.
Sekiranya anda ingin menyambungkan LCD tanpa menggunakan perpustakaan luaran, anda boleh menyemak tutorial sebelumnya, di mana kami telah menulis semua fungsi untuk LCD 16x2. Periksa yang ini untuk menyambungkan LCD dalam Mod 8-bit dan yang ini untuk menghubungkan LCD dalam mod 4-bit.
Rajah Litar:
Paparkan Alamat IP Raspberry Pi di LCD:
Setelah menghubungkan LCD 16x2 dengan Raspberry Pi, sekarang kita perlu mendapatkan alamat IP Raspberry Pi dan mencetaknya di LCD menggunakan Skrip Python. Terdapat banyak cara untuk mendapatkan alamat IP tempatan Raspberry Pi, di sini kita menerangkan tiga Skrip Python untuk mendapatkan alamat IP, anda boleh menggunakan salah satu daripadanya.
Menggunakan Perintah Linux:
Di terminal, kita dapat dengan mudah mendapatkan alamat IP dengan menggunakan perintah hostname –I , jadi jika kita dapat menjalankan perintah linux dari python maka kita dapat memperoleh alamat IP. Oleh itu, untuk menjalankan arahan Linux dari Python, kita perlu mengimport pustaka bernama perintah, jadi program yang lengkap akan seperti di bawah:
import time import Adafruit_CharLCD sebagai arahan import LCD # Penyediaan pin Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Tentukan lajur LCD dan ukuran baris untuk LCD 16x2. 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) ('hostname -I')) time.sleep (10.0) # Tunggu 5 saat lcd.clear ()
Anda juga boleh mengganti perintah hostname –I dalam program dengan arahan di bawah ini jika anda ingin mendapatkan alamat IP dengan menggunakan perintah ifconfig yang lebih dipercayai:
lcd.message (command.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Menggunakan pengaturcaraan Socket:
Di sini dalam program ini kita akan membuat soket AF_INET keluarga dan menaip SOCK_DGRAM menggunakan baris ini: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , maka kita akan membuat sambungan melalui soket menggunakan beberapa nama host atau alamat ip seperti 8.8.8.8, anda juga boleh menggunakan beberapa laman web lain untuk berhubung dengan soket seperti gmail.com. Oleh itu, kita boleh mendapatkan alamat IP RPi tempatan dari soket yang telah dibuat untuk komunikasi antara Raspberry Pi dan alamat IP dummy. Berikut adalah Program penuh:
import time import Adafruit_CharLCD sebagai soket import LCD # Penyediaan pin Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Tentukan lajur LCD dan ukuran baris untuk LCD 16x2. 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) ldd) 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 ('Alamat IP Tempatan: \ n ') lcd.message (get_ip_address ()) # Tunggu masa 5 saat. tidur (10.0) lcd.clear ()
Ketahui lebih lanjut mengenai Pengaturcaraan Socket di python di sini.
Menggunakan Modul 'fcntl':
Modul ini melakukan kawalan fail dan kawalan I / O pada deskriptor fail. Di sini digunakan untuk mengekstrak alamat IP dari fail rangkaian. Berikut adalah kod Python penuh:
import time import Adafruit_CharLCD sebagai socket import LCD import fcntl import struct # Raspberry Pi pin setup lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Tentukan lajur LCD dan ukuran baris untuk 16x2 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_ socket_d) socket kembali socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', network))) lcd.message ('Alamat IP Tempatan: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Tunggu masa 5 saat. tidur (10.0) lcd.clear ()
Ketahui lebih lanjut mengenai penggunaan Modul 'fcnfl' di sini.
Jalankan Skrip Berkala menggunakan 'crontab':
Langkah terakhir adalah menambahkan entri untuk menjalankan skrip ini secara berkala setiap 15 minit sehingga kita dapat mendapatkan IP yang dikemas kini setiap masa. Untuk melakukan ini, kita perlu mengedit fail cron menggunakan arahan di bawah:
crontab –e
Dan kemudian masukkan baris bawah di bahagian bawah fail cron dan simpan menggunakan CTRL + X, kemudian Y, kemudian masukkan.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Anda boleh menukar alamat mengikut lokasi fail Skrip Python anda dan anda juga dapat mengubah tempoh di mana anda ingin menjalankan skrip berulang kali untuk mendapatkan IP yang dikemas kini.