رباتیک و هوافضا

پیدا کردن آدرس آی پی یک رزبری پای با استفاده از کد پایتون

به نام خدا

پیدا کردن آدرس آی پی یک رزبری پای با استفاده از کد پایتون

در این قسمت قصد داریم تا به طور تخصصی بر روی پیدا کردن آدرس آی پی رزبری پای بپردازیم. به این آی پی نیاز داریم تا از طریق SSH به رزبری پای وارد شویم. برای اینکار از کد های مختلفی استفاده می کنیم تا آی پی را بر روی ال سی دی ۲ در ۱۶ نمایش دهد. همچنین از کدی استفاده کردیم تا هر ده دقیقه یک بار آی پی را بررسی کند تا در صورت بروز شدن آن متوجه شویم.

 

اتصال ای سی دی:

ابتدا باید ال سی دی را به رزبری پای وصل کنیم. در این برنامه قصد داریم تا از یک کتابخانه ی خارجیی استفاده کنیم. برای دانلود از لینک زیر استفاده می کنیم.

external Adafruit Library

حال برای نصب این کتابخانه از دستور زیر استفاده می کنیم.

git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
cd ./Adafruit_Python_CharLCD
sudo python setup.py install

حال کتابخانه نصب شده است و شما تنها با استفاده از کد زیر این کتابخانه را به برنامه ی پایتون خود اضافه کنید :

import Adafruit_CharLCD as LCD

در کد زیر نیز اتصال پین های رزبری پای و ال سی دی تعریف شده است.

بیشتر بخوانید...  در باز کن اتوماتیک با آردوینو

# 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

شماتیک مدار پیدا کردن آدرس آی پی یک رزبری پای با استفاده از کد پایتون:

در شکل زیر شماتیک مدار مورد نظر را مشاهده می کنید.

 

نمایش آدرس آی پی رزبری پای بر روی ال سی دی:

بعد از راه اندازی ال سی دی حال باید آدرس آی پی رزبری پای را دریافت کنیم و بر روی ال سی دی نمایش دهیم. راه های مختلفی برای دریافت آدرس آی پی می باشد که در اینجا ما سه راه را بررسی می کنیم.

استفاده از دستورات لینوکس:

در پنجره ی ترمینال رزبری پای به راحتی می توانیم با استفاده از دستور hostname –I command می توانید دستور لینوکس از رزبری پای اجرا کرده و آدرس آی پی را دریافت کنیم. برای اینکار از دستور زیر استفاده می کنیم :

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

# Define LCD column and row size for 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('Local IP Address:\n')
lcd.message(commands.getoutput('hostname -I'))

time.sleep(10.0)  # Wait 5 seconds
lcd.clear()

همچنین می توانید با تغییر hostname –I command در برنامه با استفاده از کد زیر به آدرس آی پی مورد نظر خود دسترسی پیدا کنید :

بیشتر بخوانید...  مبانی پایه شل اسکریپت و کاربرد آنهادبر روی رزبری پای

lcd.message(commands.getoutput('ifconfig wlan0 | grep "inet\ addr" | cut -d: -f2 | cut -d" " -f1'))

استفاده از ماژول  ‘fcntl’ :

این مازول عمل کنترل را بر ورودی و خروجی انجام می دهد. با استفاده از کد زیر میتوانید به راحتی آدرس آی پی را استخراج کنید :

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

# Define LCD column and row size for 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_interface_ipaddress(network):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        ۰x8915,  # SIOCGIFADDR
        struct.pack('256s', network[:15])
    )[۲۰:۲۴])

lcd.message('Local IP Address:\n') 
lcd.message(get_interface_ipaddress('wlan0'))
# Wait 5 seconds
time.sleep(10.0)
lcd.clear()

 

 

 

 

 

 

در یافت آی پی هر ۱۵ دقیقه یکبار:

در این قسمت می خواهیم آدرس آی پی را به طورخودکار برای هر ۱۵ دقیقه یکبار به دست آوریم. برای اینکار باید از کد زیر را در پنجره ی فرمان تایپ کنیم

crontab –e

سپس کد زیر را در پنجره ی باز شده وارد کنید و سپس آن را سیو و سپس اجرا کنید.

*/۱۵ * * * * sudo python /home/pi/ip_address_lcd.py

دیدگاه‌ها (0)

*
*