- Gränssnitt 16x2 LCD med Raspberry Pi:
- Kretsschema:
- Visa IP-adress för Raspberry Pi på LCD:
- Utför skript regelbundet med 'crontab':
Det största problemet när du arbetar med Raspberry Pi är att känna till IP-adressen till Raspberry Pi, som kommer att behövas för att logga in på den med någon SSH- eller filöverföringsklient. Så idag delar vi några Python-skript för att hitta den lokala IP-adressen till din Raspberry Pi i nätverket och visa den på 16x2 LCD-skärmen. Vi kommer också att lägga till skriptet i Crontab så att det kan köras var tionde minut och vi kommer att ha den uppdaterade IP-adressen varje gång.
Gränssnitt 16x2 LCD med Raspberry Pi:
Innan vi hittar IP-adressen till Raspberry PI, måste vi först gränssnitt 16x2 LCD med Raspberry Pi. Här i det här projektet har vi använt ett externt Adafruit-bibliotek för gränssnitt mellan 16x2 LCD och Raspberry Pi, med vilken du inte behöver skriva många rader kod för att driva LCD-skärmen och du kan skriva ut direkt på LCD genom att bara använda en rad koda. Detta bibliotek är dock skapat av Adafruit men det kan användas för alla LCD-moduler som har HD44780-kontroller.
För att använda Adafruit Library måste vi först installera det med hjälp av kommandona nedan. Det första kommandot kommer att klona CharLCD-förvaret (av Adafruit) på din Raspberry Pi, det andra kommandot tar dig in i den nedladdade katalogen och slutligen måste vi köra setup.py- skriptet, presenterat i Adafruit_Python_CharLCD-katalogen för att installera biblioteket.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Nu har biblioteket för 16x2 LCD installerats och du kan använda dess funktioner genom att bara importera det här biblioteket i ditt pythonprogram med följande rad:
importera Adafruit_CharLCD som LCD
Det finns några exempelskript i mappen 'exempel' som finns i biblioteksmappen (Adafruit_Python_CharLCD). Du kan testa installationen genom att köra exemplet char_lcd.py. Men innan det måste du ansluta LCD-stiften till Raspberry Pi enligt nedan i kretsschemat i nästa avsnitt.
Du kan också ansluta LCD med några andra GPIO-stift på Raspberry Pi, allt du behöver för att nämna rätt gränssnittsstift i ditt pythonprogram som nedan. Läs mer om Raspberry Pi GPIO Pins här.
# Raspberry Pi pin-inställning lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Nu kan du direkt använda funktionerna från Adafruit Library för att styra LCD-skärmen. Några av funktionerna ges nedan; du kan hitta mer i exempelmanus:
- lcd.message (meddelande) = För att skriva ut texten på LCD-skärmen.
- lcd.clear () = För att rensa LCD-skärmen.
- set_cursor (col, row) = Flytta markören till valfri position vid kolumn och rad.
- lcd.blink (True) = För att blinka markören (True eller False)
- lcd.move_left () = För att flytta markören åt vänster med en position.
- lcd.move_right () = För att flytta markören åt höger med en position.
Om du vill ansluta LCD-skärmen utan att använda något externt bibliotek kan du kontrollera vår tidigare handledning, där vi har skrivit alla funktioner för 16x2 LCD. Kontrollera den här för att ansluta LCD-skärmen i 8-bitars läge och den här för att gränssnitt LCD-skärmen i 4-bitars läge.
Kretsschema:
Visa IP-adress för Raspberry Pi på LCD:
Efter att ha kopplat ihop 16x2 LCD med Raspberry Pi måste vi nu få IP-adressen till Raspberry Pi och skriva ut den på LCD med Python Script. Det finns många sätt att få den lokala IP-adressen till Raspberry Pi, här beskriver vi tre Python-skript för att få IP-adressen, du kan använda någon av dem.
Använda Linux-kommandon:
På terminalen kan vi enkelt få IP-adressen med hjälp av värdnamn –I- kommandot, så om vi kan köra linux-kommandot från pythonen kan vi få IP-adressen. Så för att köra Linux-kommandon från Python måste vi importera ett bibliotek med kommandon, så hela programmet blir som nedan:
importtid import Adafruit_CharLCD som LCD-importkommandon # Raspberry Pi pin-inställning lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definiera LCD-kolumn och radstorlek för 16x2 LCD. lcd_column = 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.mess Adress ('hostname -I')) time.sleep (10.0) # Vänta 5 sekunder lcd.clear ()
Du kan också ersätta värdnamnet –I- kommandot i programmet med kommandot nedan om du vill få IP-adressen med mer tillförlitligt ifconfig- kommando:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - klipp -d: -f2 - klipp -d "" -f1'))
Använda Socket-programmering:
Här i det här programmet skapar vi en sockel av familjen AF_INET och skriver SOCK_DGRAM med den här raden: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , då skapar vi anslutning via sockeln med hjälp av något värdnamn eller ip-adress som 8.8.8.8 kan du också använda någon annan webbplats för att ansluta till uttaget som gmail.com. Så vi kan hämta den lokala IP-adressen till RPi från uttaget som har skapats för kommunikation mellan Raspberry Pi och dummy IP-adress. Nedan är hela programmet:
importtid import Adafruit_CharLCD som LCD-importuttag # Raspberry Pi pin-inställning lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definiera LCD-kolumn och radstorlek för 16x2 LCD. lcd_column = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_column, lcd_rows, lcd_backlight) def get_ip_add 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 ('Local IP Address: \ n ') lcd.message (get_ip_address ()) # Vänta 5 sekunder tid. sömn (10.0) lcd.clear ()
Läs mer om Socket-programmering i python här.
Använda 'fcntl' -modulen:
Denna modul utför filkontroll och I / O-kontroll på filbeskrivare. Här används den för att extrahera IP-adressen från nätverksfilerna. Nedan är den fullständiga Python-koden:
importtid import Adafruit_CharLCD som LCD importuttag import fcntl import struktur # Raspberry Pi pin-inställning lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # Definiera LCD-kolumn och radstorlek för 16x2 LCD. lcd_column = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_column, lcd_rows, lcd_backlight) def get_interface_ return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', nätverk))) lcd.message ('Local IP Address: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Vänta 5 sekunder tid. sömn (10.0) lcd.clear ()
Läs mer om att använda 'fcnfl' -modulen här.
Utför skript regelbundet med 'crontab':
Sista steget är att lägga till posten för att köra detta skript regelbundet var 15: e minut så att vi kan få uppdaterad IP varje gång. För att göra detta måste vi redigera cron-filen med kommandot nedan:
crontab –e
Och ange sedan raden nedan längst ner i cron-filen och spara den med CTRL + X, sedan Y och ange sedan.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Du kan ändra adressen beroende på platsen för din Python Script-fil och du kan också ändra varaktigheten du vill köra skriptet upprepade gånger för att få den uppdaterade IP-adressen.