- การเชื่อมต่อ LCD 16x2 กับ Raspberry Pi:
- แผนภูมิวงจรรวม:
- แสดงที่อยู่ IP ของ Raspberry Pi บน LCD:
- เรียกใช้สคริปต์เป็นระยะโดยใช้ 'crontab':
ปัญหาหลักในขณะทำงานกับ Raspberry Pi คือการรู้ที่อยู่ IP ของ Raspberry Pi ซึ่งจะต้องใช้เพื่อเข้าสู่ระบบโดยใช้ SSH หรือไคลเอนต์การถ่ายโอนไฟล์ ดังนั้นวันนี้เราจะแบ่งปันบางงูหลามสคริปต์เพื่อหาสิ่งที่อยู่ในท้องถิ่นของราสเบอร์รี่ Pi ของคุณบนเครือข่ายและแสดงบนหน้าจอแอลซีดี 16x2 นอกจากนี้เราจะเพิ่มสคริปต์ใน Crontab เพื่อให้สามารถทำงานได้ทุกๆ 10 นาทีและเราจะมีที่อยู่ IP ที่อัปเดตทุกครั้ง
การเชื่อมต่อ LCD 16x2 กับ Raspberry Pi:
ก่อนที่เราจะได้พบกับที่อยู่ IP ของราสเบอร์รี่ PI, แรกที่เราต้องติดต่อ 16x2 LCD พร้อมด้วยราสเบอร์รี่ Pi ในโครงการนี้เราได้ใช้ Adafruit Library ภายนอกเพื่อเชื่อมต่อ LCD 16x2 กับ Raspberry Pi ซึ่งคุณไม่จำเป็นต้องเขียนโค้ดหลายบรรทัดเพื่อขับเคลื่อน LCD และคุณสามารถพิมพ์บน LCD ได้โดยตรงโดยใช้เพียงบรรทัดเดียว รหัส. อย่างไรก็ตามไลบรารีนี้สร้างขึ้นโดย Adafruit แต่สามารถใช้กับโมดูล LCD ใดก็ได้ที่มีคอนโทรลเลอร์ HD44780
การใช้ไลบรารี Adafruit อันดับแรกเราจำเป็นต้องติดตั้งได้โดยใช้คำสั่งดังต่อไปนี้คำสั่งแรกจะโคลนที่เก็บ CharLCD (โดย Adafruit) บน Raspberry Pi ของคุณคำสั่งที่สองจะนำคุณเข้าไปในไดเร็กทอรีที่ดาวน์โหลดมาและสุดท้ายเราต้องเรียกใช้สคริปต์ setup.py ซึ่งนำเสนอภายในไดเร็กทอรี Adafruit_Python_CharLCD เพื่อติดตั้งไลบรารี
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd./Adafruit_Python_CharLCD sudo python setup.py ติดตั้ง
ตอนนี้ไลบรารีสำหรับ 16x2 LCD ได้รับการติดตั้งแล้วและคุณสามารถใช้ฟังก์ชันต่างๆได้โดยการนำเข้าไลบรารีนี้ในโปรแกรม python ของคุณโดยใช้บรรทัดด้านล่าง:
นำเข้า Adafruit_CharLCD เป็น LCD
มีสคริปต์ตัวอย่างบางส่วนในโฟลเดอร์ 'ตัวอย่าง' ซึ่งอยู่ในโฟลเดอร์ไลบรารี (Adafruit_Python_CharLCD) คุณสามารถทดสอบการตั้งค่าได้โดยเรียกใช้สคริปต์ตัวอย่างchar_lcd.py แต่ก่อนหน้านั้นคุณต้องเชื่อมต่อพิน LCD กับ Raspberry Pi ตามที่ระบุด้านล่างในแผนภาพวงจรในส่วนถัดไป
คุณยังสามารถเชื่อมต่อ LCD กับพิน GPIO อื่น ๆ ของ Raspberry Pi ได้ทั้งหมดที่คุณต้องพูดถึงพินเชื่อมต่อที่ถูกต้องในโปรแกรม python ของคุณดังต่อไปนี้ เรียนรู้เพิ่มเติมเกี่ยวกับ Raspberry Pi GPIO Pins ที่นี่
# การตั้งค่าขา Raspberry 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, row) = เลื่อนเคอร์เซอร์ไปที่ตำแหน่งใดก็ได้ที่คอลัมน์และแถว
- lcd.blink (True) = เพื่อกะพริบเคอร์เซอร์ (True หรือ False)
- lcd.move_left () = เพื่อเลื่อนเคอร์เซอร์ไปทางซ้ายทีละตำแหน่ง
- lcd.move_right () = เพื่อเลื่อนเคอร์เซอร์ไปทางขวาทีละตำแหน่ง
หากคุณต้องการเชื่อมต่อ LCD โดยไม่ใช้ไลบรารีภายนอกใด ๆ คุณสามารถตรวจสอบบทช่วยสอนก่อนหน้าของเราซึ่งเราได้เขียนฟังก์ชันทั้งหมดสำหรับ LCD 16x2 ตรวจสอบอันนี้เพื่อเชื่อมต่อ LCD ในโหมด 8 บิตและอันนี้เพื่อเชื่อมต่อ LCD ในโหมด 4 บิต
แผนภูมิวงจรรวม:
แสดงที่อยู่ IP ของ Raspberry Pi บน LCD:
หลังจากเชื่อมต่อ LCD 16x2 กับ Raspberry Pi แล้วตอนนี้เราจำเป็นต้องได้รับที่อยู่ IP ของ Raspberry Pi และพิมพ์บน LCD โดยใช้ Python Script มีหลายวิธีในการรับที่อยู่ IP ในเครื่องของ Raspberry Pi ที่นี่เรากำลังอธิบายสคริปต์ Python สามตัวเพื่อรับที่อยู่ IP คุณสามารถใช้สิ่งเหล่านี้ได้
การใช้คำสั่ง Linux:
บนเทอร์มินัลเราสามารถรับที่อยู่ IP ได้อย่างง่ายดายโดยใช้คำสั่ง hostname –I ดังนั้นหากเราสามารถรันคำสั่ง linux จาก pythonเราก็จะได้รับที่อยู่ IP ดังนั้นในการเรียกใช้คำสั่ง Linux จาก Python เราต้องนำเข้าไลบรารีชื่อ คำสั่ง ดังนั้นโปรแกรมที่สมบูรณ์จะเป็นดังนี้:
เวลานำเข้า Adafruit_CharLCD เป็นคำสั่งนำเข้า LCD # การตั้งค่าขา Raspberry Pi lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # กำหนดคอลัมน์ LCD และขนาดแถวสำหรับ 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) lcd.message ('Local IP Address: \ n') lcd.message (commands.getoutput ('hostname -I')) time.sleep (10.0) # รอ 5 วินาที lcd.clear ()
คุณยังสามารถแทนที่คำสั่ง hostname –I ในโปรแกรมด้วยคำสั่งด้านล่างหากคุณต้องการรับที่อยู่ IP โดยใช้ คำ สั่ง ifconfig ที่ เชื่อถือได้มากขึ้น
lcd.message (commands.getoutput ('ifconfig wlan0 - grep "inet \ addr" - ตัด -d: -f2 - ตัด -d "" -f1'))
การใช้โปรแกรม Socket:
ในโปรแกรมนี้เราจะสร้างซ็อกเก็ตของตระกูล AF_INET และพิมพ์ SOCK_DGRAM โดยใช้บรรทัดนี้: s = socket.socket (socket.AF_INET, socket.SOCK_DGRAM) จากนั้นเราจะสร้างการเชื่อมต่อผ่านซ็อกเก็ตโดยใช้ชื่อโฮสต์หรือที่อยู่ IP เช่น 8.8.8.8 คุณสามารถใช้เว็บไซต์อื่นเพื่อเชื่อมต่อกับซ็อกเก็ตเช่น gmail.com ดังนั้นเราจึงสามารถรับที่อยู่ IP ท้องถิ่นของ RPi จากซ็อกเก็ตซึ่งสร้างขึ้นเพื่อการสื่อสารระหว่าง Raspberry Pi และที่อยู่ IP จำลอง ด้านล่างนี้คือโปรแกรมฉบับเต็ม:
เวลานำเข้า Adafruit_CharLCD เป็นซ็อกเก็ตนำเข้า LCD # Raspberry Pi การตั้งค่าพิน lcd_rs = 18 lcd_en = 23 lcd_d4 = 24 lcd_d5 = 16 lcd_d6 = 20 lcd_d7 = 21 lcd_backlight = 2 # กำหนดคอลัมน์ LCD และขนาดแถวสำหรับ 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 ()) # รอ 5 วินาที time.sleep (10.0) lcd.clear ()
เรียนรู้เพิ่มเติมเกี่ยวกับ Socket Programming ใน python ที่นี่
การใช้โมดูล 'fcntl':
โมดูลนี้ดำเนินการควบคุมไฟล์และการควบคุม I / O บนตัวอธิบายไฟล์ ที่นี่ใช้เพื่อแยกที่อยู่ IP ออกจากไฟล์เครือข่าย ด้านล่างนี้คือรหัส Python แบบเต็ม:
เวลานำเข้า Adafruit_CharLCD เป็นซ็อกเก็ตนำเข้า LCD นำเข้า 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 # กำหนดคอลัมน์ LCD และขนาดแถวสำหรับ 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_interface_ipaddress (network): s = socket.socket (socket.AF_INET, socket) ส่งคืน socket.inet_ntoa (fcntl.ioctl (s.fileno (), 0x8915, # SIOCGIFADDR struct.pack ('256s', เครือข่าย))) lcd.message ('ที่อยู่ IP ในเครื่อง: \ n') lcd.message (get_interface_ipaddress ('wlan0')) # รอ 5 วินาที time.sleep (10.0) lcd.clear ()
เรียนรู้เพิ่มเติมเกี่ยวกับการใช้โมดูล 'fcnfl' ที่นี่
เรียกใช้สคริปต์เป็นระยะโดยใช้ 'crontab':
ขั้นตอนสุดท้ายคือการเพิ่มรายการสำหรับเรียกใช้สคริปต์นี้เป็นระยะ ๆ ทุกๆ 15 นาทีเพื่อให้เราได้รับการอัปเดต IP ทุกครั้ง ในการทำสิ่งนี้เราต้องแก้ไขไฟล์ cron โดยใช้คำสั่งด้านล่าง:
crontab –e
จากนั้นป้อนบรรทัดด้านล่างที่ด้านล่างของไฟล์ cron และบันทึกโดยใช้ CTRL + X จากนั้น Y จากนั้นป้อน
* / 15 * * * * sudo python /home/pi/ip_address_lcd.py
คุณสามารถเปลี่ยนที่อยู่ตามตำแหน่งของไฟล์ Python Script ของคุณและคุณยังสามารถเปลี่ยนระยะเวลาที่คุณต้องการเรียกใช้สคริปต์ซ้ำ ๆ เพื่อรับ IP ที่อัปเดต