- ממשק LCD 16x2 עם פטל פטל:
- תרשים מעגל:
- הצג כתובת IP של Raspberry Pi על גבי LCD:
- בצע סקריפט מעת לעת באמצעות 'crontab':
הבעיה העיקרית בזמן העבודה עם Raspberry Pi היא לדעת את כתובת ה- IP של ה- Raspberry Pi, אשר יהיה צורך בכניסה אליו באמצעות לקוח SSH או העברת קבצים. אז היום נשתף כמה סקריפטים של פיתון כדי למצוא את כתובת ה- IP המקומית של ה- Raspberry Pi שלך ברשת ולהציג אותה על גבי מסך LCD 16x2. נוסיף את הסקריפט גם ב- Crontab כך שניתן יהיה להריץ אותו כל 10 דקות ותהיה לנו כתובת ה- IP המעודכנת בכל פעם.
ממשק LCD 16x2 עם פטל פטל:
לפני שנמצא את כתובת ה- IP של ה- Raspberry PI, ראשית עלינו לממשק LCD 16x2 עם Raspberry Pi. כאן בפרויקט זה השתמשנו בספריית Adafruit חיצונית להתממשקות LCD 16x2 עם Raspberry Pi, באמצעותה אינך צריך לכתוב שורות קוד רבות בכדי להניע את ה- LCD ותוכל להדפיס ישירות על LCD באמצעות רק שורה אחת של קוד. עם זאת ספריה זו נוצרה על ידי Adafruit אך היא יכולה לשמש לכל מודול LCD שיש לו בקר HD44780.
כדי להשתמש בספריית Adafruit, ראשית עלינו להתקין אותה באמצעות הפקודות הבאות. פקודה ראשונה תשבט את מאגר CharLCD (על ידי Adafruit) ב- Raspberry Pi שלך, פקודה שנייה תעביר אותך לספרייה שהורדת ולבסוף עלינו לבצע סקריפט setup.py , המוצג בספריה Adafruit_Python_CharLCD, כדי להתקין את הספרייה.
שיבוט git https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py להתקין
כעת הותקנה הספרייה עבור 16x2 LCD ותוכלו להשתמש בפונקציות שלה על ידי ייבוא ספרייה זו לתוכנית הפיתון שלכם באמצעות השורה הבאה:
ייבא את Adafruit_CharLCD כ- LCD
יש כמה סקריפטים לדוגמה בתיקיית 'דוגמאות' שנמצאת בתיקיית הספרייה (Adafruit_Python_CharLCD). אתה יכול לבדוק את ההתקנה על ידי הפעלת סקריפט לדוגמה char_lcd.py. אך לפני כן, עליך לחבר את סיכות ה- LCD עם ה- Raspberry Pi כמפורט להלן בתרשים המעגל בסעיף הבא.
אתה יכול גם לחבר LCD עם כמה סיכות GPIO אחרות של Raspberry Pi, כל מה שאתה צריך להזכיר את סיכות הממשק הנכונות בתוכנית הפיתון שלך כמו להלן. למידע נוסף על Raspberry Pi GPIO Pins כאן.
# הגדרת פינים של פטל Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2
עכשיו אתה יכול להשתמש ישירות בפונקציות המסופקות על ידי ספריית Adafruit כדי לשלוט על ה- LCD. חלק מהפונקציות מפורטות להלן; תוכל למצוא עוד בתסריט לדוגמה:
- lcd.message (הודעה) = להדפסת הטקסט על גבי LCD.
- lcd.clear () = לניקוי ה- LCD.
- set_cursor (col, שורה) = העבר את הסמן לכל מיקום בעמודה ובשורה.
- lcd.blink (True) = להבהוב הסמן (נכון או לא נכון)
- lcd.move_left () = כדי להזיז את הסמן שמאלה במיקום אחד.
- lcd.move_right () = כדי להזיז את הסמן ימינה במיקום אחד.
אם ברצונך לחבר את ה- LCD מבלי להשתמש בספרייה חיצונית כלשהי, תוכל לבדוק את ההדרכה הקודמת שלנו, שם כתבנו את כל הפונקציות עבור 16x2 LCD. בדוק את זה כדי לממשק את ה- LCD במצב 8 סיביות ואת זה כדי לממשק את ה- LCD במצב של 4 סיביות.
תרשים מעגל:
הצג כתובת IP של Raspberry Pi על גבי LCD:
לאחר שהתממשק 16x2 LCD עם Raspberry Pi, כעת עלינו לקבל את כתובת ה- IP של Raspberry Pi ולהדפיס אותו על LCD באמצעות סקריפט Python. יש הרבה דרכים להשיג את כתובת ה- IP המקומית של Raspberry Pi, כאן אנו מתארים שלושה סקריפטים של פייתון כדי לקבל את כתובת ה- IP, אתה יכול להשתמש בכל אחד מהם.
שימוש בפקודות לינוקס:
במסוף, אנו יכולים להשיג את כתובת ה- IP בקלות באמצעות פקודת host –I , כך שאם נוכל להריץ את הפקודה linux מהפיתון אז נוכל לקבל את כתובת ה- IP. אז כדי להפעיל פקודות לינוקס מ- Python עלינו לייבא ספרייה בשם פקודות, כך שהתוכנית השלמה תהיה כמו להלן:
ייבוא זמן ייבוא Adafruit_CharLCD כפקודות ייבוא LCD # הגדרת פין פטל lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # הגדר עמוד LCD וגודל שורה עבור 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) כתובת lcd.mc: ('שם מארח-אני')) time.sleep (10.0) # המתן 5 שניות lcd.clear ()
באפשרותך גם להחליף את הפקודה hostname –I בתוכנית בפקודה שלמטה אם ברצונך לקבל את כתובת ה- IP באמצעות פקודת ifconfig מהימנה יותר:
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - cut -d: -f2 - cut -d "" -f1'))
שימוש בתכנות שקעים:
כאן בתוכנית זו ניצור שקע של המשפחה AF_INET ונקליד SOCK_DGRAM באמצעות שורה זו: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) , ואז ניצור חיבור דרך השקע באמצעות שם מארח כלשהו או כתובת IP כמו 8.8.8.8, אתה יכול גם להשתמש באתר אחר כדי להתחבר לשקע כמו gmail.com. כדי שנוכל לקבל את כתובת ה- IP המקומית של RPi מהשקע שנוצר לתקשורת בין פטל פי וכתובת IP דמה. להלן התוכנית המלאה:
ייבוא זמן ייבוא Adafruit_CharLCD כשקע ייבוא LCD # הגדרת סיכת פטל lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # הגדר עמוד LCD וגודל שורה עבור 16x2 LCD. lcd_column = 16 lcd_rows = 2 lcd = LCD. s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () s.close () להחזיר ip_address lcd.message ('כתובת IP מקומית: \ n ') lcd.message (get_ip_address ()) # המתן זמן של 5 שניות. שינה (10.0) lcd.clear ()
למידע נוסף על תכנות שקעים בפייתון כאן.
שימוש במודול 'fcntl':
מודול זה מבצע בקרת קבצים ובקרת קלט / פלט בתיאורי קבצים. כאן הוא משמש לחילוץ כתובת ה- IP מקבצי הרשת. להלן קוד הפייתון המלא:
ייבוא זמן ייבוא Adafruit_CharLCD כמו שקע ייבוא LCD ייבוא fcntl ייבוא מבנה # 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 # הגדר עמוד LCD וגודל שורה עבור 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) שקע כתובת. השב socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', רשת))) lcd.message ('כתובת IP מקומית: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # המתן זמן של 5 שניות. שינה (10.0) lcd.clear ()
למידע נוסף על השימוש במודול 'fcnfl' כאן.
בצע סקריפט מעת לעת באמצעות 'crontab':
השלב הסופי הוא להוסיף את הערך להפעלת סקריפט זה מעת לעת בכל רבע שעה כדי שנוכל לקבל IP מעודכן בכל פעם. לשם כך עלינו לערוך את קובץ ה- cron באמצעות הפקודה הבאה:
crontab –e
ואז הזן את השורה למטה בתחתית קובץ ה- cron ושמור אותה באמצעות CTRL + X, ואז Y ואז הזן.
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
באפשרותך לשנות את הכתובת בהתאם למיקום קובץ ה- Python Script שלך ותוכל גם לשנות את משך הזמן שבו תרצה להפעיל שוב ושוב את הסקריפט כדי לקבל את ה- IP המעודכן.