- Interfață LCD 16x2 cu Raspberry Pi:
- Diagrama circuitului:
- Afișați adresa IP a Raspberry Pi pe ecranul LCD:
- Executați scriptul periodic folosind „crontab”:
Principala problemă în timp ce lucrați cu Raspberry Pi este să cunoașteți adresa IP a Raspberry Pi, care va fi necesară pentru a vă conecta utilizând un SSH sau un client de transfer de fișiere. Așadar, astăzi vom împărtăși câteva scripturi Python pentru a găsi adresa IP locală a Raspberry Pi în rețea și a o afișa pe ecranul LCD 16x2. Vom adăuga, de asemenea, scriptul în Crontab, astfel încât să poată fi rulat la fiecare 10 minute și vom avea adresa IP actualizată de fiecare dată.
Interfață LCD 16x2 cu Raspberry Pi:
Înainte de a găsi adresa IP a Raspberry PI, mai întâi trebuie să interfațăm LCD 16x2 cu Raspberry Pi. Aici, în acest proiect, am folosit o bibliotecă externă Adafruit pentru interfața LCD 16x2 cu Raspberry Pi, folosind care nu este nevoie să scrieți multe linii de cod pentru a conduce LCD-ul și puteți imprima direct pe LCD folosind doar o linie de cod. Cu toate acestea, această bibliotecă este creată de Adafruit, dar poate fi utilizată pentru orice modul LCD care are controler HD44780.
Pentru a utiliza Biblioteca Adafruit, trebuie mai întâi să o instalăm folosind comenzile de mai jos. Prima comandă va clona depozitul CharLCD (de Adafruit) pe Raspberry Pi, a doua comandă vă va duce în acel director descărcat și în cele din urmă trebuie să executăm scriptul setup.py , prezentat în directorul Adafruit_Python_CharLCD, pentru a instala biblioteca.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Acum biblioteca pentru 16x2 LCD a fost instalată și puteți utiliza funcțiile sale doar importând această bibliotecă în programul dvs. Python folosind linia de mai jos:
importați Adafruit_CharLCD ca LCD
Există câteva exemple de scripturi în folderul „exemple” care este prezent în folderul bibliotecii (Adafruit_Python_CharLCD). Puteți testa configurarea executând scriptul de exemplu char_lcd.py. Dar înainte de aceasta, trebuie să conectați pinii LCD cu Raspberry Pi așa cum este prezentat mai jos în schema circuitului din secțiunea următoare.
De asemenea, puteți conecta LCD-ul cu alți pini GPIO ai Raspberry Pi, tot ce trebuie să menționați pinii de interfață corecți în programul dvs. Python, cum ar fi mai jos. Aflați mai multe despre Raspberry Pi GPIO Pins aici.
# 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
Acum puteți utiliza direct funcțiile oferite de Adafruit Library pentru a controla ecranul LCD. Unele dintre funcții sunt date mai jos; puteți găsi mai multe în exemplul de script:
- lcd.message (message) = Pentru a imprima textul pe ecranul LCD.
- lcd.clear () = Pentru a șterge ecranul LCD.
- set_cursor (col, rând) = Mutați cursorul în orice poziție din coloană și rând.
- lcd.blink (True) = Pentru a clipi cursorul (True sau False)
- lcd.move_left () = Pentru a muta cursorul la stânga cu o poziție.
- lcd.move_right () = Pentru a muta cursorul în dreapta cu o poziție.
Dacă doriți să conectați ecranul LCD fără a utiliza nicio bibliotecă externă, puteți consulta tutorialul nostru anterior, unde am scris toate funcțiile pentru ecranul LCD 16x2. Bifați-l pentru a interfața LCD în modul 8 biți și acesta pentru a interfața LCD în modul 4 biți.
Diagrama circuitului:
Afișați adresa IP a Raspberry Pi pe ecranul LCD:
După interfața LCD 16x2 cu Raspberry Pi, acum trebuie să obținem adresa IP a Raspberry Pi și să o imprimăm pe LCD folosind Python Script. Există multe modalități de a obține adresa IP locală a Raspberry Pi, aici descriem trei scripturi Python pentru a obține adresa IP, puteți utiliza oricare dintre ele.
Utilizarea comenzilor Linux:
La terminal, putem obține cu ușurință adresa IP utilizând comanda hostname –I , deci dacă putem executa comanda linux din python, atunci putem obține adresa IP. Deci, pentru a rula comenzi Linux din Python, trebuie să importăm o bibliotecă numită comenzi, deci programul complet va fi ca mai jos:
timp de import Adafruit_CharLCD ca comenzi de import LCD # 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ți coloana LCD și dimensiunea rândului pentru 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_columns, lcd_rows, lcd_backlight) lcd.message ('Comandă IP lcd: \ n' ('hostname -I')) time.sleep (10.0) # Așteptați 5 secunde lcd.clear ()
De asemenea, puteți înlocui comanda nume - gazdă-I din program cu comanda de mai jos dacă doriți să obțineți adresa IP utilizând o comandă ifconfig mai fiabilă:
lcd.message (comenzi.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Utilizarea programării Socket:
Aici, în acest program, vom crea un socket al familiei AF_INET și vom tasta SOCK_DGRAM folosind această linie: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , apoi vom crea conexiunea prin socket folosind un anumit nume de gazdă sau o adresă IP precum 8.8.8.8, puteți utiliza și alte site-uri web pentru a vă conecta la soclu, cum ar fi gmail.com. Deci, putem obține adresa IP locală a RPi de la socketul care a fost creat pentru comunicarea dintre Raspberry Pi și adresa IP falsă. Mai jos este programul complet:
timp de import Adafruit_CharLCD ca soclu de import LCD # 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ți coloana LCD și dimensiunea rândului pentru 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) def get_ip_address (): ip_address =); 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 ()) # Așteptați timp de 5 secunde.sleep (10.0) lcd.clear ()
Aflați mai multe despre programarea Socket în python aici.
Utilizarea modulului „fcntl”:
Acest modul efectuează controlul fișierelor și controlul I / O pe descriptorii de fișiere. Aici este folosit pentru a extrage adresa IP din fișierele de rețea. Mai jos este codul complet Python:
import timp import Adafruit_CharLCD ca socket import 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ți dimensiunea coloanei și rândului LCD pentru 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_columns, lcd_rows, lcd_backlight) def get_interface_ipaddress (socket): socket (Socket): 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')) # Așteptați timp de 5 secunde.sleep (10.0) lcd.clear ()
Aflați mai multe despre utilizarea modulului „fcnfl” aici.
Executați scriptul periodic folosind „crontab”:
Pasul final este să adăugați intrarea pentru a rula periodic acest script la fiecare 15 minute, astfel încât să putem obține IP actualizat de fiecare dată. Pentru a face acest lucru, trebuie să edităm fișierul cron folosind comanda de mai jos:
crontab –e
Și apoi introduceți linia de mai jos în partea de jos a fișierului cron și salvați-o folosind CTRL + X, apoi Y, apoi introduceți.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Puteți schimba adresa în funcție de locația fișierului dvs. Python Script și puteți schimba, de asemenea, durata în care doriți să rulați în mod repetat scriptul pentru a obține actualizarea IP.