آموزش الکترونیکآموزش رزبری پایپروژه الکترونیکپروژه های پایتونپروژه های رزبری پای

آموزش پیدا کردن آدرس آیپی IP رزبری پای با پایتون

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

یافتن آدرس آی پی عددی برد Raspberry pi با اسکریپت Python

یکی از اصلی ترین مشکلات در حین کار با Raspberry Pi ، آگاهی از آدرس IP است که استفاده از برخی سرویس گیرنده SSH یا انتقال فایل مورد نیاز خواهد بود. بنابراین در این آموزش ما با استفاده از اسکریپت پایتون آدرس آی پی محلی رزبری پای را در یک ال سی دی کاراکتری 16*2 نمایش میدهیم. همچنین با استفاده از Crontab، آدرس IP را هر 10 دقیقه بروز میکنیم.

راه اندازی ارتباطات ال سی دی کاراکتری 16*2 با رزبری پای

قبل از اینکه آدرس آی پی Raspberry PI را پیدا کنیم، ابتدا باید ال سی دی 16×2 را با Raspberry Pi همگام کنیم. در اینجا در این پروژه از یک کتابخانه Adafruit خارجی برای ارتباط  LCD 16×2 با Raspberry Pi استفاده کرده ایم که با استفاده از آنها نیازی به نوشتن کد های فراوان و پیچیده نیست و می توانید با استفاده از یک خط به طور مستقیم متن را بر روی 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 install

اکنون کتابخانه برای ال سی دی 16×2 نصب شده است و می توانید با وارد کردن این کتابخانه در برنامه پایتون خود با استفاده از خط زیر از توابع آن استفاده کنید:

import Adafruit_CharLCD as LCD

نمونه هایی از اسکریپت ها در داخل پوشه “Examples” وجود دارد که در پوشه کتابخانه (Adafruit_Python_CharLCD) موجود است. به طور مثال می توانید با اجرای اسکریپت char_lcd.py ، راه اندازی ال سی دی را آزمایش کنید. ابتدا باید مانند کد زیر، پین های مربوط به 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

همچنین می توانید LCD را به برخی دیگر از پین های GPIO رزبری پای متصل کنید. اکنون می توانید به طور مستقیم از توابع ارائه شده توسط کتابخانه Adafruit برای کنترل LCD استفاده کنید. برخی از توابع در زیر آورده شده است. می توانید در اسکریپت مثال های بیشتری مشاهده کنید:

  • lcd.message () = برای چاپ متن بر روی LCD
  • lcd.clear () = برای پاک کردن LCD
  • set_cursor () = مکان نما را به هر ستون و سطر منتقل کنید
  • lcd.blink () = برای چشمک زدن مکان نما (Trueیا False)
  • lcd.move_left () = برای حرکت دادن مکان نما به سمت چپ
  • lcd.move_right () = برای حرکت دادن مکان نما به راست
حتما ببینید :  راه اندازی استپر موتور با لانچ پد MSP430 (کنترل موتور پله ای)

اگر می خواهید ال سی دی را بدون استفاده از کتابخانه خارجی متصل کنید ، می توانید آموزش قبلی ما را بررسی کنید. ما تمام عملکردها قبلا را برای LCD 16×2 نوشته ایم. نحوه اتصال ال سی دی کاراکتری به رزبری پای و کد پایتون (آموزش Raspberry Pi #13)

شماتیک مدار

در تصویر زیر شماتیک مدار پروژه را مشاهده میکنید.

یافتن آدرس آی پی عددی برد Raspberry pi با اسکریپت Python

نمایش آدرس IP رزبری پای در LCD

پس از اتصال ال سی دی به رزبری پای ، اکنون باید آدرس آیپی Raspberry Pi را بدست آوریم و با استفاده از اسکریپت Python آن را روی LCD چاپ کنیم. روش های زیادی برای بدست آوردن آدرس IP محلی Raspberry Pi وجود دارد، در اینجا ما برای دریافت آدرس IP ، سه روش را توضیح میدهیم میتوانید از هر کدام از آنها استفاده کنید.

1. با استفاده از دستورات لینوکس

در ترمینال ، ما می توانیم به راحتی و با استفاده از دستور host -I ، آدرس IP را بدست آوریم ، بنابراین اگر بتوانیم دستور linux را در پایتون اجرا کنیم ، می توانیم آدرس IP را بدست آوریم. بنابراین برای اجرای دستورات لینوکس از پایتون باید کتابخانه ای به نام commands وارد کنیم . پس برنامه ما خواهد بود :

import time
import Adafruit_CharLCD as LCD
import commands

# پیکربندی پین های رزبری پای
lcd_rs = 18
lcd_en = 23
lcd_d4 = 24
lcd_d5 = 16
lcd_d6 = 20
lcd_d7 = 21
lcd_backlight = 2

# تعریف ستون و ردیف های ال سیدی
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()

همچنین میتوانید از دستور ifconfig استفاده کنید که قابل اطمینان تر است. کد زیر را بجای hostname –I قرار دهید.

حتما ببینید :  آموزش نصب واتساپ روی رزبری پای (ارسال و دریافت پیام)

lcd.message(commands.getoutput(‘ifconfig wlan0 | grep “inet\ addr” | cut -d: -f2 | cut -d” ” -f1’))

توجه: اگر Raspberry Pi در Ethernet قرار دارد ، “wlan0” را با “eth0” جایگزین کنید.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

2. با استفاده از برنامه نویسی سوکت

در این برنامه ما یک سوکت از خانواده AF_INET ایجاد می کنیم و با استفاده از این خط SOCK_DGRAM را تایپ می کنیم:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

سپس با استفاده از برخی از توابع مثل نام Host یا آدرس IP مانند 8.8.8.8 اتصال را از طریق سوکت ایجاد خواهیم کرد همچنین می توانید از وب سایت دیگری برای ارتباط با سوکت مانند gmail.com استفاده کنید.

import time
import Adafruit_CharLCD as LCD
import socket

# Raspberry Pi پیکربندی پین های
lcd_rs = 18
lcd_en = 23
lcd_d4 = 24
lcd_d5 = 16
lcd_d6 = 20
lcd_d7 = 21
lcd_backlight = 2

# تعریف ردیف و ستون های ال سی دی
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()[0]
 s.close()
 return ip_address
 
lcd.message('Local IP Address:\n') 
lcd.message(get_ip_address())
# 5 ثانیه صبر
time.sleep(10.0)
lcd.clear()

توجه: استفاده از دستور زیر همیشه آدرس آیپی محلی 127.0.0.1 را به شما می دهد.

socket.gethostbyname(socket.gethostname())

3. با استفاده از ماژول fcntl

این ماژول کنترل فایل و کنترل I/O را در توصیف کننده های فایل انجام می دهد. در اینجا از آن برای استخراج آدرس IP از پرونده های شبکه استفاده می شود.

import time
import Adafruit_CharLCD as LCD
import socket
import fcntl
import struct

# تعریف پین های رزبری پای
lcd_rs = 18
lcd_en = 23
lcd_d4 = 24
lcd_d5 = 16
lcd_d6 = 20
lcd_d7 = 21
lcd_backlight = 2

# تعریف ردیف و ستون 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(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', network[:15])
    )[20:24])

lcd.message('Local IP Address:\n') 
lcd.message(get_interface_ipaddress('wlan0'))
# صبر 5 ثانیه
time.sleep(10.0)
lcd.clear()

توجه: اگر Raspberry Pi در Ethernet قرار دارد ، “wlan0” را با “eth0” جاگزین کنید.

آموزش اجرای اسکریپت بصورت دوره ای با crontab

آموزش اجرای اسکریپت بصورت دوره ای با crontab

مرحله آخر اضافه کردن دستوری است که بتواند آیپی را هر 15 دقیقه بروزرسانی کند. برای این منظور باید فایل Cron را با استفاده از دستور زیر ویرایش کنیم.

crontab –e

و سپس در پایین فایل cron خط زیر را وارد کرده و با استفاده از CTRL + X و سپس Y آن را ذخیره کرده و سپس وارد کنید.

*/15 * * * * sudo python /home/pi/ip_address_lcd.py

می توانید آدرس را مطابق با موقعیت پرونده Python Script خود تغییر دهید و همچنین می توانید مدت زمانی را که می خواهید IP بروز شود را وارد کنید.

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن