- Grensesnitt 16x2 LCD med Raspberry Pi:
- Kretsdiagram:
- Vis IP-adresse til Raspberry Pi på LCD:
- Utfør skript regelmessig ved å bruke 'crontab':
Hovedproblemet mens du jobber med Raspberry Pi er å kjenne IP-adressen til Raspberry Pi, som vil være nødvendig for å logge inn på den ved hjelp av en SSH- eller filoverføringsklient. Så i dag vil vi dele noen Python-skript for å finne den lokale IP-adressen til din Raspberry Pi på nettverket og vise den på 16x2 LCD-skjermen. Vi vil også legge til skriptet i Crontab slik at det kan kjøres hvert 10. minutt, og vi vil ha den oppdaterte IP-adressen hver gang.
Grensesnitt 16x2 LCD med Raspberry Pi:
Før vi finner IP-adressen til Raspberry PI, må vi først grensesnitt 16x2 LCD med Raspberry Pi. Her i dette prosjektet har vi brukt et eksternt Adafruit-bibliotek for å grensesnitt 16x2 LCD med Raspberry Pi, som du ikke trenger å skrive mange kodelinjer for å kjøre LCD-skjermen på, og du kan skrive ut direkte på LCD-skjermen ved å bare bruke en linje med kode. Dette biblioteket er imidlertid opprettet av Adafruit, men det kan brukes til alle LCD-moduler som har HD44780-kontroller.
For å bruke Adafruit Library, må vi først installere det ved å bruke kommandoene nedenfor. Første kommando vil klone CharLCD-depotet (av Adafruit) på din Raspberry Pi, den andre kommandoen tar deg inn i den nedlastede katalogen, og til slutt må vi utføre setup.py- skriptet, presentert i Adafruit_Python_CharLCD-katalogen, for å installere biblioteket.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Nå er biblioteket for 16x2 LCD installert, og du kan bruke funksjonene ved å bare importere dette biblioteket i pythonprogrammet ditt ved å bruke linjen nedenfor:
importer Adafruit_CharLCD som LCD
Det er noen eksempler på skripter i mappen "eksempler" som er tilstede i bibliotekmappen (Adafruit_Python_CharLCD). Du kan teste oppsettet ved å kjøre eksempelskriptet char_lcd.py. Men før det, må du koble LCD-pinnene til Raspberry Pi som angitt nedenfor i kretsskjemaet i neste avsnitt.
Du kan også koble LCD med noen andre GPIO-pinner på Raspberry Pi, alt du trenger for å nevne de riktige grensesnittpinnene i pythonprogrammet ditt som nedenfor. Lær mer om Raspberry Pi GPIO Pins her.
# Raspberry Pi pin-oppsett lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Nå kan du bruke funksjonene fra Adafruit Library direkte til å kontrollere LCD-skjermen. Noen av funksjonene er gitt nedenfor; du finner mer i eksemplet på skript:
- lcd.message (melding) = For å skrive ut teksten på LCD-skjermen.
- lcd.clear () = For å fjerne LCD-skjermen.
- set_cursor (col, row) = Flytt markøren til hvilken som helst posisjon i kolonne og rad.
- lcd.blink (True) = For å blinke markøren (True eller False)
- lcd.move_left () = For å flytte markøren til venstre med en posisjon.
- lcd.move_right () = For å flytte markøren til høyre en posisjon.
Hvis du vil koble LCD-skjermen uten å bruke noe eksternt bibliotek, kan du sjekke vår forrige opplæring, der vi har skrevet alle funksjonene for 16x2 LCD. Sjekk denne for å grensesnitt LCD-skjermen i 8-biters modus og denne for å grensesnitt LCD-skjermen i 4-biters modus.
Kretsdiagram:
Vis IP-adresse til Raspberry Pi på LCD:
Etter å ha koblet 16x2 LCD til Raspberry Pi, må vi nå få IP-adressen til Raspberry Pi og skrive den ut på LCD ved hjelp av Python Script. Det er mange måter å få den lokale IP-adressen til Raspberry Pi, her beskriver vi tre Python-skript for å få IP-adressen, du kan bruke hvilken som helst av dem.
Bruke Linux-kommandoer:
På terminalen kan vi enkelt få IP-adressen ved å bruke vertsnavn –I- kommandoen, så hvis vi kan kjøre linux-kommandoen fra pythonet, så kan vi få IP-adressen. Så for å kjøre Linux-kommandoer fra Python må vi importere et bibliotek med kommandoer, så hele programmet blir som nedenfor:
import tid import Adafruit_CharLCD som LCD import kommandoer # 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 # Definer LCD kolonne og radstørrelse for 16x2 LCD. lcd_columns = 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) lcd.message ('hostname -I')) time.sleep (10.0) # Vent 5 sekunder lcd.clear ()
Du kan også erstatte vertsnavnet –I- kommandoen i programmet med kommandoen nedenfor hvis du vil få IP-adressen ved å bruke mer pålitelig ifconfig- kommando:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - klipp -d: -f2 - klipp -d "" -f1'))
Bruke Socket-programmering:
Her i dette programmet vil vi lage en stikkontakt av familien AF_INET og skrive SOCK_DGRAM ved hjelp av denne linjen: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , så oppretter vi forbindelse gjennom kontakten ved hjelp av noe vertsnavn eller ip-adresse som 8.8.8.8, kan du også bruke et annet nettsted for å koble til kontakten som gmail.com. Så vi kan få den lokale IP-adressen til RPi fra kontakten som er opprettet for kommunikasjon mellom Raspberry Pi og dummy IP-adresse. Nedenfor er hele programmet:
import tid import Adafruit_CharLCD som LCD import stikkontakt # 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 # Definer LCD kolonne og radstørrelse for 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) 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 ()) # Vent 5 sekunder tid. sov (10.0) lcd.clear ()
Lær mer om Socket Programming i python her.
Ved hjelp av 'fcntl' modul:
Denne modulen utfører filkontroll og I / O-kontroll på filbeskrivere. Her brukes den til å trekke ut IP-adressen fra nettverksfilene. Nedenfor er den fullstendige Python-koden:
importtid import Adafruit_CharLCD som LCD import stikkontakt import fcntl import struktur # 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 # Definer LCD kolonne og radstørrelse for 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', network))) lcd.message ('Local IP Address: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Vent 5 sekunder tid. sov (10.0) lcd.clear ()
Lær mer om bruk av 'fcnfl' -modul her.
Utfør skript regelmessig ved å bruke 'crontab':
Det siste trinnet er å legge til oppføringen for å kjøre dette skriptet med jevne mellomrom hvert 15. minutt, slik at vi kan få oppdatert IP hver gang. For å gjøre dette må vi redigere cron-filen ved å bruke kommandoen nedenfor:
crontab –e
Og skriv deretter inn linjen nedenfor nederst i cron-filen og lagre den ved hjelp av CTRL + X, deretter Y, og skriv deretter inn.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Du kan endre adressen i henhold til plasseringen til Python Script-filen, og du kan også endre varigheten du vil kjøre skriptet gjentatte ganger for å få oppdatert IP.