- Povezava 16x2 LCD z Raspberry Pi:
- Shema vezja:
- Prikaz naslova IP Raspberry Pi na LCD-ju:
- Izvajajte skripte občasno z uporabo 'crontab':
Glavna težava pri delu z Raspberry Pi je vedeti naslov IP Raspberry Pi, ki bo potreben za prijavo vanj z uporabo nekega SSH ali odjemalca za prenos datotek. Tako bomo danes delili nekaj skriptov Python, da bomo našli lokalni naslov IP vašega Raspberry Pi v omrežju in ga prikazali na LCD zaslonu 16x2. Skript bomo dodali tudi v Crontab, tako da ga bomo lahko izvajali vsakih 10 minut in vsakič bomo imeli posodobljen naslov IP.
Povezava 16x2 LCD z Raspberry Pi:
Preden bomo našli naslov IP Raspberry PI, moramo najprej povezati 16x2 LCD z Raspberry Pi. V tem projektu smo uporabili zunanjo knjižnico Adafruit za povezovanje 16x2 LCD z Raspberry Pi, pri čemer vam za pogon LCD-ja ni treba pisati veliko vrstic kode in lahko neposredno tiskate na LCD, tako da uporabite samo eno vrstico Koda. Vendar je to knjižnico ustvaril Adafruit, vendar jo je mogoče uporabiti za kateri koli LCD modul s krmilnikom HD44780.
Za uporabo knjižnice Adafruit jo moramo najprej namestiti z uporabo spodnjih ukazov. Prvi ukaz bo kloniral repozitorij CharLCD (avtor Adafruit) na vašem Raspberry Pi, drugi ukaz vas bo popeljal v ta preneseni imenik in končno moramo za namestitev knjižnice izvesti skript setup.py , predstavljen v imeniku Adafruit_Python_CharLCD
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Zdaj je nameščena knjižnica za LCD 16x2 in njene funkcije lahko uporabljate tako, da samo uvozite to knjižnico v svoj program python z uporabo spodnje vrstice:
uvozi Adafruit_CharLCD kot LCD
V mapi "examples", ki je v mapi knjižnice (Adafruit_Python_CharLCD), je nekaj primerov skriptov. Namestitev lahko preizkusite tako, da zaženete primer skripta char_lcd.py. Pred tem pa morate zatiče LCD povezati z Raspberry Pi, kot je prikazano spodaj v vezju v naslednjem razdelku.
LCD lahko povežete tudi z nekaterimi drugimi GPIO nožicami Raspberry Pi, pri čemer morate omeniti pravilne vmesniške nožice v vašem programu python, kot spodaj. Več o pinjih Raspberry Pi GPIO preberite tukaj.
# Nastavitev pin-a Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Zdaj lahko za nadzor LCD-prikazovalnika neposredno uporabljate funkcije knjižnice Adafruit. Nekatere funkcije so podane spodaj; več najdete v primeru skripta:
- lcd.message (sporočilo) = Za tiskanje besedila na LCD.
- lcd.clear () = Za čiščenje LCD zaslona.
- set_cursor (col, row) = Premakni kurzor na kateri koli položaj v stolpcu in vrstici.
- lcd.blink (True) = utripanje kurzorja (True ali False)
- lcd.move_left () = Premaknite kurzor v levo za en položaj.
- lcd.move_right () = Če želite premakniti kurzor v desno za en položaj.
Če želite LCD povezati brez kakršne koli zunanje knjižnice, si lahko ogledate našo prejšnjo vadnico, kjer smo zapisali vse funkcije za LCD 16x2. Označite to, če želite vklopiti LCD v 8-bitnem načinu, ta pa za vmesnik LCD v 4-bitnem načinu.
Shema vezja:
Prikaz naslova IP Raspberry Pi na LCD-ju:
Po povezovanju 16x2 LCD z Raspberry Pi moramo zdaj dobiti naslov IP Raspberry Pi in ga s pomočjo Python Scripta natisniti na LCD. Obstaja veliko načinov, kako pridobiti lokalni naslov IP Raspberry Pi, tukaj opisujemo tri skripte Python, da dobimo naslov IP, lahko uporabite katerega koli od njih.
Uporaba ukazov Linux:
Na terminalu lahko IP naslov zlahka dobimo z ukazom ime-gostitelja -I , tako da, če lahko iz pythona zaženemo ukaz linux, potem lahko dobimo naslov IP. Torej, če želimo zagnati ukaze za Linux iz Pythona, moramo uvoziti knjižnico z ukazi, tako da bo celoten program takšen kot spodaj:
uvozni čas uvoz Adafruit_CharLCD kot LCD ukazi za uvoz # nastavitev pin-a Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Določite velikost stolpca LCD in vrstico za 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) lcd.dad.data ' ('ime gostitelja -I')) time.sleep (10.0) # Počakajte 5 sekund lcd.clear ()
Če želite dobiti naslov IP z bolj zanesljivim ukazom ifconfig, lahko v programu nadomestite tudi ukaz ime gostitelja –I v programu:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Uporaba programiranja vtičnic:
Tukaj v tem programu bomo ustvarili družinsko vtičnico AF_INET in vtipkali SOCK_DGRAM s pomočjo te vrstice: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , nato bomo povezavo prek vtičnice ustvarili z uporabo nekega gostiteljskega imena ali ip naslova, kot je 8.8.8.8, lahko uporabite tudi katero drugo spletno mesto za povezavo z vtičnico, kot je gmail.com. Tako lahko dobimo lokalni naslov IP RPi iz vtičnice, ki je bila ustvarjena za komunikacijo med Raspberry Pi in lažnim naslovom IP. Spodaj je celoten program:
uvozni čas uvoz Adafruit_CharLCD kot vhodna vtičnica LCD # Nastavitev pin-a Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Določite velikost stolpca LCD in vrstico za 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) defad_dis_dress_d 'ipd: 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 ('Lokalni naslov IP: \ n ') lcd.message (get_ip_address ()) # Počakajte 5 sekund time.sleep (10.0) lcd.clear ()
Več o programiranju vtičnic v pythonu preberite tukaj.
Uporaba modula 'fcntl':
Ta modul izvaja nadzor datotek in nadzor V / I na deskriptorjih datotek. Tu se uporablja za pridobivanje naslova IP iz omrežnih datotek. Spodaj je celotna koda Pythona:
import time import Adafruit_CharLCD as LCD import socket 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 # Določite velikost stolpca in vrstic LCD za LCD 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_Cet.socket.GRD socket.GRD soset.GRD socket.GDF.SOKET.SODET.SOKET.SODET.SOKET.SOKET vrni socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', network))) lcd.message ('Local IP Address: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Počakajte 5 sekund time.sleep (10.0) lcd.clear ()
Več o uporabi modula 'fcnfl' preberite tukaj.
Izvajajte skripte občasno z uporabo 'crontab':
Zadnji korak je dodati vnos za redno izvajanje tega skripta vsakih 15 minut, da bomo lahko vsakič posodobili IP. Za to moramo urediti datoteko cron z uporabo spodnjega ukaza:
crontab –e
In nato vnesite spodnjo vrstico na dnu datoteke cron in jo shranite s tipkama CTRL + X, nato Y, nato pa enter.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Naslov lahko spremenite glede na lokacijo datoteke Python Script in spremenite lahko tudi trajanje, v katerem želite večkrat zagnati skript, da dobite posodobljen IP.