- Prepojenie 16x2 LCD s Raspberry Pi:
- Schéma zapojenia:
- Zobraziť IP adresu Raspberry Pi na LCD:
- Pravidelne spúšťajte skript pomocou programu „crontab“:
Hlavným problémom pri práci s Raspberry Pi je poznať IP adresu Raspberry Pi, ktorá bude potrebná na prihlásenie do nej pomocou nejakého SSH alebo klienta na prenos súborov. Takže dnes budeme zdieľať niektoré skripty Pythonu, aby sme našli lokálnu IP adresu vášho Raspberry Pi v sieti a zobrazili ju na 16x2 LCD obrazovke. Skript tiež pridáme do Crontabu, aby sa dal spustiť každých 10 minút, a zakaždým budeme mať aktualizovanú adresu IP.
Prepojenie 16x2 LCD s Raspberry Pi:
Predtým, ako nájdeme IP adresu Raspberry PI, je potrebné najskôr prepojiť 16x2 LCD s Raspberry Pi. Tu v tomto projekte sme použili externú knižnicu Adafruit na prepojenie 16x2 LCD s Raspberry Pi, pomocou ktorej nemusíte na písanie na LCD písať veľa riadkov kódu a môžete priamo tlačiť na LCD iba pomocou jedného riadku kód. Túto knižnicu však vytvára Adafruit, ale dá sa použiť pre akýkoľvek LCD modul, ktorý má radič HD44780.
Ak chcete používať knižnicu Adafruit, musíme si ju najskôr nainštalovať pomocou nižšie uvedených príkazov. Prvý príkaz naklonuje úložisko CharLCD (od spoločnosti Adafruit) na vašom Raspberry Pi, druhý príkaz vás prevedie dovnútra tohto stiahnutého adresára a nakoniec musíme na inštaláciu knižnice spustiť skript setup.py uvedený v adresári Adafruit_Python_CharLCD.
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Teraz je nainštalovaná knižnica pre 16x2 LCD a jej funkcie môžete využívať jednoduchým importom tejto knižnice do vášho pythonového programu pomocou nasledujúceho riadku:
importovať Adafruit_CharLCD ako LCD
V priečinku „examples“, ktorý sa nachádza v priečinku knižnice (Adafruit_Python_CharLCD), je niekoľko príkladov skriptov. Inštaláciu môžete otestovať spustením ukážkového skriptu char_lcd.py. Predtým je však potrebné pripojiť piny LCD k Raspberry Pi, ako je uvedené nižšie v schéme zapojenia v nasledujúcej časti.
Môžete tiež pripojiť LCD k niektorým ďalším pinom GPIO Raspberry Pi, všetko, čo musíte spomenúť na správne prepojovacie piny vo vašom pythonovom programe, ako je uvedené nižšie. Viac informácií o GPIO pinoch Raspberry Pi sa dozviete tu.
# Nastavenie pinov Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Teraz môžete na ovládanie LCD priamo používať funkcie poskytované knižnicou Adafruit. Niektoré z funkcií sú uvedené nižšie; viac nájdete v príklade skriptu:
- lcd.message (message) = Na vytlačenie textu na LCD.
- lcd.clear () = Vymazanie LCD.
- set_cursor (stĺpec, riadok) = Presuňte kurzor na ľubovoľné miesto v stĺpci a riadku.
- lcd.blink (True) = Na blikanie kurzora (True alebo False)
- lcd.move_left () = Ak chcete presunúť kurzor doľava o jednu pozíciu.
- lcd.move_right () = Ak chcete presunúť kurzor doprava o jednu pozíciu.
Ak chcete pripojiť LCD bez použitia akejkoľvek externej knižnice, môžete si pozrieť náš predchádzajúci návod, kde sme napísali všetky funkcie pre 16x2 LCD. Zaškrtnite toto, ak chcete prepojiť LCD v 8-bitovom režime, a toto, aby ste prepojili LCD v 4-bitovom režime.
Schéma zapojenia:
Zobraziť IP adresu Raspberry Pi na LCD:
Po prepojení LCD 16x2 s Raspberry Pi musíme teraz získať IP adresu Raspberry Pi a vytlačiť ju na LCD pomocou Python Script. Existuje veľa spôsobov, ako získať miestnu IP adresu Raspberry Pi, tu popisujeme tri skripty Python, aby ste získali IP adresu, môžete použiť ktorýkoľvek z nich.
Používanie príkazov Linux:
Na termináli môžeme ľahko získať IP adresu pomocou príkazu hostname –I , takže ak môžeme spustiť príkaz linux z pythonu, môžeme získať IP adresu. Aby sme mohli spúšťať príkazy Linuxu z Pythonu, musíme importovať knižnicu s názvom príkazy, takže celý program bude vyzerať takto:
import time import Adafruit_CharLCD as LCD import commands # 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 # Definujte veľkosť stĺpca a riadku LCD pre 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 \ lpd) ('hostname -I')) time.sleep (10.0) # Počkajte 5 sekúnd lcd.clear ()
Príkaz hostname –I v programe môžete nahradiť aj nasledujúcim príkazom, ak chcete získať IP adresu pomocou spoľahlivejšieho príkazu ifconfig :
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Používanie programovania soketov:
Tu v tomto programe vytvoríme soket rodiny AF_INET a pomocou tohto riadku napíšeme SOCK_DGRAM: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , potom vytvoríme spojenie cez soket pomocou nejakého názvu hostiteľa alebo adresy IP ako 8.8.8.8, na pripojenie k zásuvke ako gmail.com môžete použiť aj nejaký iný web. Takže môžeme získať lokálnu IP adresu RPi zo zásuvky, ktorá bola vytvorená pre komunikáciu medzi Raspberry Pi a atrapou IP adresy. Ďalej je uvedený celý program:
import time import Adafruit_CharLCD as LCD import socket # 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 # Definujte veľkosť stĺpca a riadku LCD pre 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 = 'ip_ad_ad_'; s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () s.close () návrat ip_address lcd.message ('lokálna adresa IP: \ n ') lcd.message (get_ip_address ()) # Počkajte 5 sekúnd time.sleep (10.0) lcd.clear ()
Viac informácií o programovaní zásuviek v pythone sa dozviete tu.
Pomocou modulu 'fcntl':
Tento modul vykonáva kontrolu súborov a I / O v deskriptoroch súborov. Tu sa používa na získanie adresy IP zo sieťových súborov. Ďalej je uvedený úplný kód Pythonu:
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 # Definujte veľkosť stĺpca a riadku LCD pre 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) ss return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', network))) lcd.message ('Lokálna adresa IP: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # Počkajte 5 sekúnd time.sleep (10.0) lcd.clear ()
Viac informácií o používaní modulu „fcnfl“ sa dozviete tu.
Pravidelne spúšťajte skript pomocou programu „crontab“:
Posledným krokom je pridanie položky na pravidelné spúšťanie tohto skriptu každých 15 minút, aby sme mohli zakaždým získať aktualizovanú adresu IP. Aby sme to dosiahli, musíme upraviť cron súbor pomocou príkazu dole:
crontab –e
Potom zadajte riadok dole v spodnej časti súboru cron a uložte ho pomocou kombinácie klávesov CTRL + X, potom Y a potom zadajte.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Adresu môžete zmeniť podľa umiestnenia súboru Python Script a môžete tiež zmeniť čas, v ktorom chcete skript opakovane spúšťať, aby ste získali aktualizovanú adresu IP.