برنامه نویسی

چشمک زدن LED مبتنی بر نزدیکی BLE در زمان واقعی با BleuIO: یک راهنمای عملی

Summarize this content to 400 words in Persian Lang
BleuIO، یک دانگل USB همه کاره BLE، توسعه برنامه BLE را با دستورات قدرتمند AT و سازگاری بین پلتفرم ساده می کند. این آموزش نحوه استفاده از BleuIO با پایتون را برای ساختن یک سیستم کنترل LED مبتنی بر مجاورت BLE در زمان واقعی نشان می دهد.

در این مثال، ما بر نظارت بر RSSI (نشانگر قدرت سیگنال دریافتی) یک دستگاه خاص BLE و کنترل نرخ چشمک زدن LED BleuIO بر اساس مجاورت تمرکز می‌کنیم. هر چه دستگاه نزدیکتر باشد، سرعت چشمک زدن سریعتر است. این اسکریپت همچنین پایان تمیز را تضمین می کند و LED را هنگام خروج از برنامه خاموش می کند.

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

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

دانگل USB BleuIO Pro BLE

پایتون نصب شد (پیتون 3.6 یا جدیدتر توصیه می شود)
کتابخانه Python BleuIO
کتابخانه را با استفاده از
pip install bleuio

کد منبع
کد منبع کامل را از GitHub دریافت کنید: GitHub Repository

حالت استفاده: چشمک زدن ال ای دی بیدرنگ بر اساس مجاورت

هدف:

مقدار RSSI یک دستگاه خاص BLE را به طور مداوم نظارت کنید.
میزان چشمک زدن LED دانگل BleuIO را بر اساس نزدیکی دستگاه تنظیم کنید.
اطمینان حاصل کنید که LED هنگام پایان اسکریپت خاموش می شود.

گردش کار:

دستگاه های BLE را اسکن کنید: دستگاه مورد نظر را با استفاده از آدرس MAC آن شناسایی کنید.
مقادیر RSSI را بخوانید: داده های قدرت سیگنال در زمان واقعی را واکشی کنید.
LED کنترل: نرخ چشمک زدن را بر اساس مجاورت تنظیم کنید:

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

خروج برازنده: وقتی اسکریپت تمام شد LED را خاموش کنید.

اسکریپت پایتون

اسکریپت کامل این پروژه در زیر آمده است:

import time
import json
import atexit
from bleuio_lib.bleuio_funcs import BleuIO

rssi_value = None
dongle = None

def scan_callback(scan_input):
global rssi_value
try:
device_data = json.loads(scan_input[0])
if device_data.get(“addr”) == “[1]6B:C0:5C:BD:CF:14”:
rssi_value = device_data[“rssi”] print(f”\nDevice Found! Address: {device_data[‘addr’]}, RSSI: {rssi_value}”)
except json.JSONDecodeError as e:
print(f”Error decoding JSON: {e}”)
except Exception as e:
print(f”Unexpected error: {e}”)

def send_led_command(dongle, rssi):
if rssi is not None:
if rssi > -40:
print(f”RSSI: {rssi} | Sending LED Command: 50/50″)
dongle.at_led(toggle=”T”, on_period=”50″, off_period=”50″)
elif -60 <= rssi <= -40:
print(f”RSSI: {rssi} | Sending LED Command: 100/100″)
dongle.at_led(toggle=”T”, on_period=”100″, off_period=”100″)
elif -90 <= rssi < -60:
print(f”RSSI: {rssi} | Sending LED Command: 200/200″)
dongle.at_led(toggle=”T”, on_period=”200″, off_period=”200″)
else:
print(f”RSSI: {rssi} | Sending LED Command: 300/300″)
dongle.at_led(toggle=”T”, on_period=”300″, off_period=”300″)
else:
print(“No RSSI value available for LED command.”)

def cleanup():
if dongle:
print(“\n— Turning off LED and cleaning up —“)
dongle.at_led(0)

# Main logic
def main():
global rssi_value, dongle
dongle = BleuIO()

atexit.register(cleanup)

dongle.register_scan_cb(scan_callback)

print(“\n— Starting BLE Task —\n”)

print(“Setting device role to Central…”)
central_response = dongle.at_central()

try:
while True:
print(“\nStarting scan for 2 seconds…”)
dongle.at_gapscan(2)
time.sleep(3)

send_led_command(dongle, rssi_value)

print(“\nScan cycle completed. Restarting…\n”)
time.sleep(1)
except KeyboardInterrupt:
print(“\n— Script Terminated by User —“)

# Run the main function
if __name__ == “__main__”:
main()

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چگونه کار می کند

مقداردهی اولیه: اسکریپت دانگل BleuIO را مقداردهی اولیه می کند و آن را برای اسکن روی نقش مرکزی تنظیم می کند.
اسکن برگشت به تماس: scan_callback تابع مقدار RSSI دستگاه مورد نظر را در زمان واقعی استخراج می کند.
کنترل LED: بر اساس مقدار RSSI:

RSSI > -40: چشمک زدن سریع (50 میلی ثانیه روشن/خاموش).
-60

BleuIO، یک دانگل USB همه کاره BLE، توسعه برنامه BLE را با دستورات قدرتمند AT و سازگاری بین پلتفرم ساده می کند. این آموزش نحوه استفاده از BleuIO با پایتون را برای ساختن یک سیستم کنترل LED مبتنی بر مجاورت BLE در زمان واقعی نشان می دهد.

در این مثال، ما بر نظارت بر RSSI (نشانگر قدرت سیگنال دریافتی) یک دستگاه خاص BLE و کنترل نرخ چشمک زدن LED BleuIO بر اساس مجاورت تمرکز می‌کنیم. هر چه دستگاه نزدیکتر باشد، سرعت چشمک زدن سریعتر است. این اسکریپت همچنین پایان تمیز را تضمین می کند و LED را هنگام خروج از برنامه خاموش می کند.

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

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

  1. دانگل USB BleuIO Pro BLE
  2. پایتون نصب شد (پیتون 3.6 یا جدیدتر توصیه می شود)
  3. کتابخانه Python BleuIO
    کتابخانه را با استفاده از
    pip install bleuio

  4. کد منبع
    کد منبع کامل را از GitHub دریافت کنید: GitHub Repository

حالت استفاده: چشمک زدن ال ای دی بیدرنگ بر اساس مجاورت

هدف:

  1. مقدار RSSI یک دستگاه خاص BLE را به طور مداوم نظارت کنید.
  2. میزان چشمک زدن LED دانگل BleuIO را بر اساس نزدیکی دستگاه تنظیم کنید.
  3. اطمینان حاصل کنید که LED هنگام پایان اسکریپت خاموش می شود.

گردش کار:

  1. دستگاه های BLE را اسکن کنید: دستگاه مورد نظر را با استفاده از آدرس MAC آن شناسایی کنید.
  2. مقادیر RSSI را بخوانید: داده های قدرت سیگنال در زمان واقعی را واکشی کنید.
  3. LED کنترل: نرخ چشمک زدن را بر اساس مجاورت تنظیم کنید:
    • خیلی نزدیک: چشمک زدن سریع
    • بستن: چشمک زدن متوسط.
    • دور: پلک زدن آهسته
    • خیلی دور: پلک زدن بسیار کند.
  4. خروج برازنده: وقتی اسکریپت تمام شد LED را خاموش کنید.

اسکریپت پایتون

اسکریپت کامل این پروژه در زیر آمده است:

import time
import json
import atexit
from bleuio_lib.bleuio_funcs import BleuIO

rssi_value = None
dongle = None  

def scan_callback(scan_input):
    global rssi_value  
    try:
        device_data = json.loads(scan_input[0])  
        if device_data.get("addr") == "[1]6B:C0:5C:BD:CF:14":
            rssi_value = device_data["rssi"]  
            print(f"\nDevice Found! Address: {device_data['addr']}, RSSI: {rssi_value}")
    except json.JSONDecodeError as e:
        print(f"Error decoding JSON: {e}")
    except Exception as e:
        print(f"Unexpected error: {e}")

def send_led_command(dongle, rssi):
    if rssi is not None:  
        if rssi > -40:
            print(f"RSSI: {rssi} | Sending LED Command: 50/50")
            dongle.at_led(toggle="T", on_period="50", off_period="50")
        elif -60 <= rssi <= -40:
            print(f"RSSI: {rssi} | Sending LED Command: 100/100")
            dongle.at_led(toggle="T", on_period="100", off_period="100")
        elif -90 <= rssi < -60:
            print(f"RSSI: {rssi} | Sending LED Command: 200/200")
            dongle.at_led(toggle="T", on_period="200", off_period="200")
        else:
            print(f"RSSI: {rssi} | Sending LED Command: 300/300")
            dongle.at_led(toggle="T", on_period="300", off_period="300")
    else:
        print("No RSSI value available for LED command.")


def cleanup():
    if dongle:
        print("\n--- Turning off LED and cleaning up ---")
        dongle.at_led(0)

# Main logic
def main():
    global rssi_value, dongle  
    dongle = BleuIO()

    atexit.register(cleanup)

    dongle.register_scan_cb(scan_callback)

    print("\n--- Starting BLE Task ---\n")

    print("Setting device role to Central...")
    central_response = dongle.at_central()

    try:
        while True:
            print("\nStarting scan for 2 seconds...")
            dongle.at_gapscan(2)  
            time.sleep(3)  

            send_led_command(dongle, rssi_value)

            print("\nScan cycle completed. Restarting...\n")
            time.sleep(1)
    except KeyboardInterrupt:
        print("\n--- Script Terminated by User ---")

# Run the main function
if __name__ == "__main__":
    main()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چگونه کار می کند

  1. مقداردهی اولیه: اسکریپت دانگل BleuIO را مقداردهی اولیه می کند و آن را برای اسکن روی نقش مرکزی تنظیم می کند.
  2. اسکن برگشت به تماس: scan_callback تابع مقدار RSSI دستگاه مورد نظر را در زمان واقعی استخراج می کند.
  3. کنترل LED: بر اساس مقدار RSSI:
    • RSSI > -40: چشمک زدن سریع (50 میلی ثانیه روشن/خاموش).
    • -60 <= RSSI <= -40: چشمک زدن متوسط ​​(100 میلی ثانیه روشن/خاموش).
    • -90 <= RSSI < -60: چشمک زدن آهسته (200 میلی ثانیه روشن/خاموش).
    • RSSI < -90: چشمک زدن بسیار آهسته (300 میلی ثانیه روشن/خاموش).
  4. خاتمه برازنده: اسکریپت با خاتمه دادن به LED LED را خاموش می کند Ctrl + C.

خروجی

این مثال نشان می دهد که استفاده از BleuIO برای برنامه های BLE چقدر آسان است. چه در حال ساخت راه‌حل‌های مبتنی بر مجاورت باشید و چه در حال بررسی قابلیت‌های BLE باشید، دستورات AT BleuIO و کتابخانه Python شروع به کار را ساده می‌کنند.

این اسکریپت را بگیرید، آن را با نیازهای خود تطبیق دهید و پتانسیل BLE را با BleuIO باز کنید!

نوشته های مشابه

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

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

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