- Összekötő 16x2 LCD és Raspberry Pi:
- Kördiagramm:
- A Raspberry Pi IP-címének megjelenítése az LCD-n:
- A Script rendszeres végrehajtása a „crontab” használatával:
A Raspberry Pi-vel való munka során a fő probléma a Raspberry Pi IP-címének ismerete, amelyre szükség lesz valamilyen SSH vagy fájlátviteli kliens használatával. Tehát ma megosztunk néhány Python-szkriptet, hogy megtaláljuk a Raspberry Pi helyi IP-címét a hálózaton, és megjelenítsük a 16x2-es LCD képernyőn. A szkriptet hozzáadjuk a Crontab-hoz is, hogy 10 percenként futtatható legyen, és minden alkalommal megkapjuk a frissített IP-címet.
Összekötő 16x2 LCD és Raspberry Pi:
Mielőtt megtalálnánk a Raspberry PI IP-címét, először össze kell illesztenünk a 16x2 LCD-t a Raspberry Pi-vel. Ebben a projektben egy külső Adafruit könyvtárat használtunk a 16x2-es LCD és a Raspberry Pi összeköttetéséhez, amellyel az LCD meghajtó használatához nem kell sok kódsort írni, és közvetlenül az LCD-re nyomtathat csupán kód. Ezt a könyvtárat azonban az Adafruit készítette, de bármely olyan LCD modulhoz használható, amely HD44780 vezérlővel rendelkezik.
Az Adafruit könyvtár használatához először telepítenünk kell az alábbi parancsok használatával. Első parancs klónozására CharLCD adattár (a Adafruit) a Raspberry Pi, második parancs elviszi belül, hogy a letöltött könyvtárat, és végül meg kell végrehajtani setup.py script, kerülnek be a Adafruit_Python_CharLCD könyvtár, telepítsd a könyvtárat.
git klón https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Most telepítve van a 16x2 LCD könyvtár, és használhatja a funkcióit, ha csak importálja ezt a könyvtárat a python programba az alábbi sor segítségével:
importálja az Adafruit_CharLCD-t LCD-ként
Van néhány példa szkript a 'példa' mappában, amely a könyvtár mappában található (Adafruit_Python_CharLCD). A beállítást a char_lcd.py példaszkript futtatásával tesztelheti. De ezt megelőzően össze kell kapcsolnia az LCD-tűket a Raspberry Pi-vel, az alábbiakban megadott kapcsolási rajz szerint.
Csatlakoztathatja az LCD-t a Raspberry Pi néhány más GPIO-csatlakozójához is, csak annyit kell tennie, hogy megemlítse a python programban található megfelelő interfész-érintkezőket. Tudjon meg többet a Raspberry Pi GPIO csapokról itt.
# Málna Pi tű beállítása lcd_rs = 18 lcd_hu = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Most már közvetlenül használhatja az Adafruit Library által biztosított funkciókat az LCD vezérléséhez. Néhány funkciót az alábbiakban adunk meg; többet talál a szkriptben:
- lcd.message (message) = A szöveg nyomtatása az LCD-re.
- lcd.clear () = Az LCD törlése.
- set_cursor (oszlop, sor) = Vigye a kurzort az oszlop és a sor tetszőleges helyzetébe.
- lcd.blink (True) = A kurzor villogása (igaz vagy hamis)
- lcd.move_left () = A kurzor balra mozgatása egy pozícióval.
- lcd.move_right () = A kurzor jobbra mozgatása egy pozícióval.
Ha külső könyvtár használata nélkül szeretné csatlakoztatni az LCD-t, akkor ellenőrizheti korábbi oktatóanyagunkat, ahol a 16x2 LCD-hez írtuk az összes funkciót. Jelölje be ezt, hogy 8 bites módban csatlakozzon az LCD-hez, ezt pedig 4 bites módban.
Kördiagramm:
A Raspberry Pi IP-címének megjelenítése az LCD-n:
Miután összekötöttük a 16x2 LCD-t a Raspberry Pi-vel, most meg kell szereznünk a Raspberry Pi IP-címét, és a Python Script segítségével ki kell nyomtatnunk LCD-re. Sokféle módon lehet megszerezni a Raspberry Pi helyi IP-címét, itt három Python-szkriptet írunk le az IP-cím megszerzéséhez, bármelyiket használhatja.
Linux parancsok használata:
A terminálon könnyen megkapjuk az IP-címet a hostname –I parancs használatával, tehát ha a linux parancsot a pythonból tudjuk futtatni, akkor megkapjuk az IP-címet. Tehát a Linux parancsok Python futtatásához importálnunk kell egy parancsok nevű könyvtárat , így a teljes program az alábbiak szerint alakul:
import idő importálása Adafruit_CharLCD LCD importparancsként # 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 # Definiálja az LCD oszlopot és a sor méretét a 16x2 LCD-hez. 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) helyi "cím" ('hostname -I')) time.sleep (10.0) # Várjon 5 másodpercet lcd.clear ()
A program hostname –I parancsát az alábbi paranccsal is kicserélheti, ha megbízhatóbb ifconfig parancs használatával szeretné megkapni az IP-címet:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
A Socket programozás használata:
Itt, ebben a programban, létrehozunk egy AF_INET család foglalatot, és a következővel írjuk be a SOCK_DGRAM parancsot: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , majd létrehozunk egy kapcsolatot a foglalaton keresztül valamilyen hosztnév vagy ip cím használatával, például 8.8.8.8, más webhelyeket is használhat a csatlakozáshoz, például a gmail.com. Tehát megszerezhetjük az RPi helyi IP-címét a Raspberry Pi és a dummy IP-cím közötti kommunikációhoz létrehozott foglalatból. Az alábbiakban a teljes program található:
import idő importálás Adafruit_CharLCD LCD import aljzatként # 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 # Definiálja az LCD oszlopot és a sor méretét a 16x2 LCD-hez. lcd_columns = 16 lcd_rows = 2 lcd = LCD. Adafruit_CharLCD (lcd_rs, lcd_hu, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) defd_pill s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_cím = s.getsockname () s.close () return ip_cím lcd.message ('Helyi IP-cím: \ n ') lcd.message (get_ip_address ()) # Várjon 5 másodpercet time.sleep (10.0) lcd.clear ()
További információ a Socket programozásról a pythonban itt található.
Az 'fcntl' modul használata:
Ez a modul fájl- és I / O vezérlést hajt végre a fájlleírókon. Itt használják az IP-cím kibontására a hálózati fájlokból. Az alábbiakban a teljes Python-kód található:
import idő importálása Adafruit_CharLCD mint LCD import aljzat 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 # Definiálja az LCD oszlopot és a sor méretét a 16x2 LCD-hez. 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 (hálózati): s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', hálózat))) lcd.message ('Helyi IP-cím: \ n') lcd.message (get_interface_ipaddress (Várjon 5 másodpercet time.sleep (10.0) lcd.clear ()
Tudjon meg többet az 'fcnfl' modul használatáról itt.
A Script rendszeres végrehajtása a „crontab” használatával:
Az utolsó lépés az, hogy hozzáadjuk a szkript időszakos futtatásához szükséges bejegyzést 15 percenként, hogy minden alkalommal frissített IP-címet kapjunk. Ehhez szerkesztenünk kell a cron fájlt az alábbi paranccsal:
crontab –e
Ezután írja be az alábbi sort a cron fájl aljára, és mentse a CTRL + X, majd az Y gombbal, majd írja be.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Megváltoztathatja a címet a Python Script fájl helye szerint, és megváltoztathatja azt az időtartamot is, amelyben a parancsfájlt ismételten futtatni szeretné a frissített IP megszerzéséhez.