- 16x2 LCD saskarne ar Raspberry Pi:
- Ķēdes shēma:
- Parādīt Raspberry Pi IP adresi LCD:
- Periodiski izpildiet skriptu, izmantojot 'crontab':
Galvenā problēma, strādājot ar Raspberry Pi, ir zināt Raspberry Pi IP adresi, kas būs nepieciešama, lai tajā pieteiktos, izmantojot kādu SSH vai failu pārsūtīšanas klientu. Tāpēc šodien mēs kopīgosim dažus Python skriptus, lai tīklā atrastu jūsu Raspberry Pi vietējo IP adresi un parādītu to 16x2 LCD ekrānā. Mēs arī pievienosim skriptu Crontab, lai to varētu palaist ik pēc 10 minūtēm, un mums katru reizi būs atjaunināta IP adrese.
16x2 LCD saskarne ar Raspberry Pi:
Pirms mēs atradīsim Raspberry PI IP adresi, vispirms mums ir jāsavieno 16x2 LCD ar Raspberry Pi. Šajā projektā mēs esam izmantojuši ārēju Adafruit bibliotēku, lai savienotu 16x2 LCD ar Raspberry Pi, izmantojot kuru, lai vadītu LCD, jums nav jāraksta daudzas koda rindas, un jūs varat tieši drukāt uz LCD, vienkārši izmantojot vienu rindu kods. Tomēr šo bibliotēku ir izveidojis Adafruit, taču to var izmantot jebkuram LCD modulim, kuram ir HD44780 kontrolieris.
Lai izmantotu Adafruit bibliotēku, vispirms tā jāinstalē, izmantojot zemāk esošās komandas. Pirmā komanda klonēs CharLCD repozitoriju (pēc Adafruit) jūsu Raspberry Pi, otrā komanda jūs aizvedīs lejupielādētajā direktorijā, un visbeidzot, lai instalētu bibliotēku, mums ir jāizpilda setup.py skripts, kas parādīts Adafruit_Python_CharLCD direktorijā.
git klons https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Tagad 16x2 LCD bibliotēka ir instalēta, un jūs varat izmantot tās funkcijas, vienkārši importējot šo bibliotēku savā Python programmā, izmantojot šo rindiņu:
importējiet Adafruit_CharLCD kā LCD
Mapē "piemēri", kas atrodas bibliotēkas mapē (Adafruit_Python_CharLCD), ir daži skriptu piemēri . Iestatījumu var pārbaudīt, palaižot skripta char_lcd.py piemēru. Bet pirms tam jums ir jāpievieno LCD tapas ar Raspberry Pi, kā norādīts zemāk ķēdes shēmā nākamajā sadaļā.
Jūs varat arī savienot LCD ar dažām citām Raspberry Pi GPIO tapām, viss, kas jums nepieciešams, lai pieminētu pareizos saskarnes tapas savā python programmā, piemēram, zemāk. Uzziniet vairāk par Raspberry Pi GPIO Pins šeit.
# Aveņu Pi tapa iestatīšana lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Tagad LCD kontrolēšanai varat tieši izmantot Adafruit Library sniegtās funkcijas. Dažas no funkcijām ir norādītas zemāk; skripta piemērā varat atrast vairāk:
- lcd.message (message) = Lai tekstu izdrukātu uz LCD.
- lcd.clear () = Lai notīrītu LCD.
- set_cursor (col, row) = Pārvietojiet kursoru jebkurā pozīcijā kolonnā un rindā.
- lcd.blink (True) = Lai mirgot kursors (True vai False)
- lcd.move_left () = Lai pārvietotu kursoru pa kreisi pa vienu pozīciju.
- lcd.move_right () = Lai pārvietotu kursoru pa labi pa labi.
Ja vēlaties savienot LCD, neizmantojot ārēju bibliotēku, varat pārbaudīt mūsu iepriekšējo apmācību, kurā mēs esam uzrakstījuši visas 16x2 LCD funkcijas. Atzīmējiet šo, lai saskarnei pievienotu LCD 8 bitu režīmā, un šo, lai savienotu LCD 4 bitu režīmā.
Ķēdes shēma:
Parādīt Raspberry Pi IP adresi LCD:
Pēc 16x2 LCD saskarnes ar Raspberry Pi tagad mums jāiegūst Raspberry Pi IP adrese un jāizdrukā tā uz LCD, izmantojot Python Script. Ir daudz veidu, kā iegūt vietējo Raspberry Pi IP adresi, šeit mēs aprakstām trīs Python skriptus, lai iegūtu IP adresi, jūs varat izmantot jebkuru no tiem.
Linux komandu izmantošana:
Terminālā mēs varam viegli iegūt IP adresi, izmantojot komandu hostname – I , tādēļ, ja mēs varam palaist komandu Linux no pitona, mēs varam iegūt IP adresi. Tātad, lai palaistu Linux komandas no Python, mums jāimportē bibliotēka ar komandām, tāpēc visa programma būs šāda:
importēšanas laiks importēt Adafruit_CharLCD kā LCD importēšanas komandas # 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 # Definējiet LCD kolonnu un rindu izmēru 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) vietne (vietne) (vietne) ('resursdatora nosaukums -I')) time.sleep (10.0) # Pagaidiet 5 sekundes lcd.clear ()
Varat arī aizstāt komandu resursdatora nosaukums I ar zemāk esošo komandu, ja vēlaties iegūt IP adresi, izmantojot uzticamāku komandu ifconfig :
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Izmantojot Socket programmēšanu:
Šeit šajā programmā mēs izveidosim ģimenes AF_INET ligzdu un ierakstiet SOCK_DGRAM, izmantojot šo rindu: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , pēc tam mēs izveidosim savienojumu caur ligzdu, izmantojot kādu resursdatora vai ip adresi, piemēram, 8.8.8.8, varat izmantot arī kādu citu vietni, lai izveidotu savienojumu ar kontaktligzdu, piemēram, gmail.com. Tātad mēs varam iegūt vietējo RPi IP adresi no kontaktligzdas, kas izveidota saziņai starp Raspberry Pi un manekena IP adresi. Zemāk ir pilna programma:
importēšanas laiks importēt Adafruit_CharLCD kā LCD importēšanas ligzdu # 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 # Definējiet LCD kolonnu un rindu izmēru 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_ip_ad 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 ('Vietējā IP adrese: \ n ') lcd.message (get_ip_address ()) # Pagaidiet 5 sekundes time.sleep (10.0) lcd.clear ()
Uzziniet vairāk par Socket programmēšanu pitonā.
Izmantojot moduli 'fcntl':
Šis modulis veic failu un I / O kontroli failu aprakstos. Šeit to izmanto, lai no tīkla failiem iegūtu IP adresi. Zemāk ir pilns Python kods:
importēšanas laiks importēt Adafruit_CharLCD kā LCD importēšanas ligzdu importēt fcntl import struktūru # 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 # Definēt LCD kolonnu un rindas izmēru 16x2 LCD ekrānam. 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_rocket, lcd_back__LOCK_). return socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', tīkls))) lcd.message ('Vietējā IP adrese: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # # Pagaidiet 5 sekundes laiks. gulēt (10,0) lcd. skaidrs ()
Uzziniet vairāk par 'fcnfl' moduļa lietošanu šeit.
Periodiski izpildiet skriptu, izmantojot 'crontab':
Pēdējais solis ir pievienot ierakstu šī skripta periodiskai izpildīšanai ik pēc 15 minūtēm, lai mēs katru reizi varētu saņemt atjauninātu IP. Lai to izdarītu, mums ir jārediģē cron fails, izmantojot zemāk esošo komandu:
crontab –e
Pēc tam ievadiet zemāk esošo rindiņu cron faila apakšdaļā un saglabājiet to, izmantojot CTRL + X, pēc tam Y, pēc tam ievadiet.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Jūs varat mainīt adresi atbilstoši sava Python skripta faila atrašanās vietai, kā arī mainīt ilgumu, kurā vēlaties atkārtoti palaist skriptu, lai iegūtu atjauninātu IP.