- Sąsajos 16x2 LCD ekranas su „Raspberry Pi“:
- Grandinės schema:
- Rodyti „Raspberry Pi“ IP adresą LCD ekrane:
- Periodiškai vykdykite scenarijų naudodami „crontab“:
Pagrindinė problema dirbant su „Raspberry Pi“ yra žinoti „Raspberry Pi“ IP adresą, kurio reikės norint prisijungti prie jo naudojant tam tikrą SSH ar failų perkėlimo klientą. Taigi, šiandien mes pasidalinti kai Python scenarijus rasti vietos IP adresą jūsų Aviečių Pi tinkle ir rodyti jį ant 16x2 LCD ekranas. Taip pat pridėsime scenarijų „Crontab“, kad jį būtų galima paleisti kas 10 minučių ir kaskart turėtume atnaujintą IP adresą.
Sąsajos 16x2 LCD ekranas su „Raspberry Pi“:
Prieš rasdami „Raspberry PI“ IP adresą, pirmiausia turime susieti 16x2 LCD ekraną su „Raspberry Pi“. Šiame projekte mes naudojomės išorine „Adafruit“ biblioteka, kad susietume 16x2 skystųjų kristalų ekraną su „Raspberry Pi“. Naudodamiesi jums nereikia rašyti daug kodo eilučių, kad valdytumėte skystųjų kristalų ekraną, ir galite tiesiogiai atspausdinti skystųjų kristalų ekrane tiesiog naudodami vieną eilutę kodas. Tačiau šią biblioteką sukūrė „Adafruit“, tačiau ji gali būti naudojama bet kuriam LCD moduliui, turinčiam HD44780 valdiklį.
Norėdami naudoti „Adafruit“ biblioteką, pirmiausia turime ją įdiegti naudodami žemiau esančias komandas. Pirmoji komanda klonuos „CharLCD“ saugyklą („Adafruit“) jūsų „Raspberry Pi“, antroji komanda pateks į tą atsisiųstą katalogą ir galiausiai, norėdami įdiegti biblioteką, turime paleisti „ setup.py“ scenarijų, pateiktą „Adafruit_Python_CharLCD“ kataloge.
„git“ klonas https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py install
Dabar 16x2 LCD biblioteka yra įdiegta ir galite naudoti jos funkcijas tiesiog importuodami šią biblioteką į savo python programą naudodami šią eilutę:
importuokite „Adafruit_CharLCD“ kaip LCD
Yra keli pavyzdiniai scenarijų aplanke „pavyzdžiai“, kuris yra bibliotekos aplanke („Adafruit_Python_CharLCD“). Sąranką galite išbandyti paleidę char_lcd.py scenarijaus pavyzdį. Bet prieš tai turite prijungti LCD kaiščius su „Raspberry Pi“, kaip nurodyta toliau esančioje grandinės schemoje.
Taip pat galite prijungti LCD ekraną su kai kuriais kitais „Raspberry Pi“ GPIO kaiščiais. Viskas, ką jums reikia paminėti teisingus sąsajos kaiščius jūsų python programoje, kaip nurodyta toliau. Sužinokite daugiau apie „Raspberry Pi GPIO“ kaiščius čia.
# Aviečių Pi kaiščių nustatymas lcd_rs = 18 lcd_lt = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
Dabar galite valdyti „LCD ekraną“ tiesiogiai naudodamiesi „Adafruit Library“ teikiamomis funkcijomis. Kai kurios funkcijos pateiktos žemiau; daugiau galite rasti scenarijaus pavyzdyje:
- lcd.message (message) = Norėdami išspausdinti tekstą LCD ekrane.
- lcd.clear () = Norėdami išvalyti skystųjų kristalų ekraną.
- set_cursor (col, row) = Perkelkite žymeklį į bet kurią stulpelio ir eilutės padėtį.
- lcd.blink (True) = Norėdami mirksėti žymekliu (tiesa arba klaidinga)
- lcd.move_left () = Norėdami perkelti žymeklį į kairę viena pozicija.
- lcd.move_right () = Norėdami perkelti žymeklį į dešinę viena pozicija.
Jei norite prijungti skystųjų kristalų ekraną nenaudodami jokios išorinės bibliotekos, galite patikrinti ankstesnę mūsų pamoką, kurioje mes parašėme visas 16x2 skystųjų kristalų LCD funkcijas. Pažymėkite šį, kad susietumėte skystųjų kristalų ekraną 8 bitų režimu, o šį - sąsaja su 4 bitų režimu.
Grandinės schema:
Rodyti „Raspberry Pi“ IP adresą LCD ekrane:
Susiejus 16x2 skystųjų kristalų ekraną su „Raspberry Pi“, dabar turime gauti „Raspberry Pi“ IP adresą ir atsispausdinti ant skystųjų kristalų, naudodami „Python Script“. Yra daugybė būdų, kaip gauti vietinį „Raspberry Pi“ IP adresą, čia aprašome tris „Python“ scenarijus, kad gautume IP adresą, galite naudoti bet kurį iš jų.
„Linux“ komandų naudojimas:
Terminale mes galime lengvai gauti IP adresą naudodami komandą hostname-I , taigi, jei mes galime paleisti linux komandą iš pitono, mes galime gauti IP adresą. Taigi, norėdami paleisti „Linux“ komandas iš „Python“, turime importuoti biblioteką, pavadintą komandas, taigi visa programa bus tokia, kaip nurodyta toliau:
importavimo laikas importuoti „Adafruit_CharLCD“ kaip LCD importavimo 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 # Apibrėžkite LCD stulpelį ir eilučių dydį 16x2 LCD ekrane. 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_backage) lcd_backage) lcd_backage ('hostname -I')) time.sleep (10.0) # Palaukite 5 sekundes lcd.clear ()
Taip pat galite pakeisti programos hostname –I komandą žemiau esančia komanda, jei norite gauti IP adresą naudodami patikimesnę komandą „ ifconfig“ :
lcd.message (komandos.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
Programavimo „Socket“ naudojimas:
Čia šioje programoje sukursime šeimos AF_INET lizdą ir įveskite SOCK_DGRAM naudodami šią eilutę: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , tada mes sukursime ryšį per lizdą naudodami tam tikrą pagrindinio kompiuterio pavadinimą arba IP adresą, pvz., 8.8.8.8, taip pat galite naudoti kitą svetainę, kad prisijungtumėte prie lizdo, pvz., Gmail.com. Taigi vietinį RPi IP adresą galime gauti iš lizdo, kuris buvo sukurtas ryšiui tarp „Raspberry Pi“ ir manekeno IP adreso. Žemiau pateikiama visa programa:
importavimo laikas importuoti „Adafruit_CharLCD“ kaip LCD importavimo lizdą # 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 # Apibrėžkite LCD stulpelį ir eilučių dydį 16x2 LCD ekrane. 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 ('Vietinis IP adresas: \ n ') lcd.message (get_ip_address ()) # Palaukite 5 sekundes time.sleep (10.0) lcd.clear ()
Sužinokite daugiau apie „Socket“ programavimą „python“ čia.
Naudojant „fcntl“ modulį:
Šis modulis atlieka failų ir įvesties / išvesties valdymą failų aprašymuose. Čia jis naudojamas išgauti IP adresą iš tinklo failų. Žemiau yra visas „Python“ kodas:
importavimo laikas importuoti „Adafruit_CharLCD“ kaip LCD importavimo lizdą importuoti „fcntl“ importo struktūros # „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 # Apibrėžkite LCD stulpelį ir eilučių dydį 16x2 LCD ekranui. 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', tinklas))) lcd.message ('Vietinis IP adresas: \ n') lcd.message (get_interface_ipaddress („wlan0“)) # Palaukite 5 sekundes. miego laikas (10,0) lcd. aiškus ()
Sužinokite daugiau apie „fcnfl“ modulio naudojimą čia.
Periodiškai vykdykite scenarijų naudodami „crontab“:
Paskutinis žingsnis yra pridėti įrašą, kad šis scenarijus būtų vykdomas periodiškai kas 15 minučių, kad kiekvieną kartą galėtume gauti atnaujintą IP. Norėdami tai padaryti, turime redaguoti „cron“ failą naudodami žemiau esančią komandą:
crontab –e
Tada įveskite žemiau esančią eilutę „cron“ failo apačioje ir išsaugokite ją naudodami CTRL + X, tada Y, tada įveskite.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
Galite pakeisti adresą pagal „Python Script“ failo vietą ir taip pat galite pakeisti trukmę, per kurią norite pakartotinai paleisti scenarijų, kad gautumėte atnaujintą IP.