آموزش SDK EC200 قسمت پنجم- بلوتوث و صدا

آموزش SDK EC200 قسمت پنجم- بلوتوث و صدا
smem
18 بازدید
۱۴۰۴-۰۴-۲۳
11 دقیقه
  • نویسنده: آرویدتک
  • درباره نویسنده: www.arvidtek.com | گروه مهندسی آرویدتک | فعال حوزه الکترونیک و مخابرات | فروشگاه تخصصی قطعات الکترونیک

بلوتوث یک فناوری ارتباطی بی‌سیم کوتاه‌برد است که از سال ۱۹۹۴ به عنوان جایگزینی برای کابل‌های داده معرفی شد و امروزه به یکی از پرکاربردترین پروتکل‌های ارتباطی در دستگاه‌های هوشمند تبدیل شده است. بلوتوث امکان برقراری ارتباط بین دستگاه‌ها را بدون نیاز به زیرساخت پیچیده فراهم می‌کند و به دلیل مصرف انرژی پایین و پیاده‌سازی ساده، جایگاه ویژه‌ای در پروژه‌های اینترنت اشیا (IoT) یافته است. در پروژه‌های IoT، بلوتوث به‌ویژه در کاربردهایی مانند حسگرهای پوشیدنی، گجت‌های خانگی هوشمند، تجهیزات پزشکی قابل‌حمل و سیستم‌های ردیابی استفاده می‌شود. پروتکل‌هایی مانند Bluetooth Low Energy (BLE) امکان ارسال داده با مصرف انرژی بسیار پایین را فراهم می‌کنند که برای دستگاه‌های باتری‌محور ایده‌آل است. به طور خلاصه دلایل استفاده از بلوتوث در IoT به شرح زیر است:

⚡مصرف انرژی کم: نسخه‌های جدید مانند BLE به‌طور خاص برای کاربردهای IoT طراحی شده‌اند و عمر باتری دستگاه‌ها را به‌طور قابل‌توجهی افزایش می‌دهند.

⚡هزینه پیاده‌سازی پایین: ماژول‌های بلوتوث مقرون‌به‌صرفه هستند و نیاز به زیرساخت پیچیده ندارند.

⚡سادگی اتصال و جفت‌سازی: راه‌اندازی و اتصال دستگاه‌ها با بلوتوث سریع و کاربرپسند است.

⚡پشتیبانی گسترده: اکثر گوشی‌های هوشمند، تبلت‌ها و لپ‌تاپ‌ها از بلوتوث پشتیبانی می‌کنند و این امر یکپارچگی با سایر سیستم‌ها را آسان می‌کند.

⚡امنیت نسبی: با استفاده از رمزگذاری اطلاعات میتواند امنیت نسبی برای ما فراهم کند

بلوتوث به‌ویژه در نسخه‌های جدید مانند Bluetooth Low Energy (BLE) طوری طراحی شده که مصرف انرژی را به حداقل برساند؛ بنابراین دستگاه‌های کوچک و قابل‌حمل مثل گجت‌های پوشیدنی یا حسگرهای محیطی می‌توانند مدت‌ها بدون نیاز به شارژ مجدد کار کنند. از طرفی هزینه پایین ماژول‌های بلوتوث و عدم نیاز به زیرساخت شبکه پیچیده باعث می‌شود پیاده‌سازی این فناوری در پروژه‌های IoT مقرون‌به‌صرفه باشد. برای مثال، برای ساخت یک ردیاب دمای هوشمند خانگی، کافی است یک ماژول بلوتوث کوچک را روی برد نصب کنید تا داده‌های حسگر بدون هیچ سیم‌کشی اضافی و از طریق بلوتوث به گوشی همراه منتقل شود.

سادگی در اتصال و جفت‌سازی هم یکی دیگر از نقاط قوت بلوتوث است؛ کاربران می‌توانند دستگاه‌های IoT خود را به‌سرعت به گوشی یا لپ‌تاپ متصل کنند و نیازی به تنظیمات دشوار ندارند. این موضوع با توجه به پشتیبانی گسترده بلوتوث در اغلب گوشی‌های هوشمند و تجهیزات همراه، یکپارچگی با سایر سیستم‌ها را بسیار راحت کرده است.

همچنین برد عملیاتی بلوتوث که معمولاً حدود ۱۰ متر است، برای بیشتر کاربردهای خانگی و محیطی کافی به نظر می‌رسد و در نسخه‌های BLE حتی می‌تواند بیشتر هم باشد. امنیت نسبی با رمزگذاری ارتباطات، مقیاس‌پذیری و امکان اتصال چندین دستگاه به‌طور همزمان، از دیگر ویژگی‌هایی است که بلوتوث را به انتخابی مطمئن برای انتقال داده‌های کم‌حجم و بلادرنگ در پروژه‌های IoT تبدیل می‌کند. به همین دلیل امروزه بلوتوث را می‌توان در انواع کاربردها مشاهده کرد؛ از مچ‌بندهای ورزشی و سیستم‌های روشنایی هوشمند گرفته تا تجهیزات پزشکی و حسگرهای صنعتی. این ویژگی‌ها، بلوتوث را به پلی ساده، کم‌هزینه و کم‌مصرف برای اتصال دنیای واقعی به دنیای دیجیتال در اینترنت اشیا تبدیل کرده‌اند.

راه اندازی بلوتوث

برای استفاده از بلوتوث در مود (Serial Port Profile) از دایرکتوری (/components/ql-application/init/ql_init.c) باید تابع زیر را از حالت کامنت خارج کنید.

تابع مهمی که در کد وجود دارد تابع ql_bt_spp_event است که اتصال بلوتوث را مدیریت میکند. این تابع در تابع اصلی به طور مداوم در یک لوپ بینهایت صدا زده میشود.

در این تابع (ql_bt_spp_event) چند حالت مختلف وجود دارد: حالت اول QUEC_BT_START_STATUS_IND که مربوط به راه اندازی بلوتوث است. بلوتوث در چهار مود مختلف قابل استفاده است که در اینجا از مود (QL_BT_PAGE_AND_INQUIRY_ENABLE) استفاده میکنیم که در این مود قابلیت مشاهده و اتصال بلوتوث فعال است.

ضمنا شما میتوانید در فایل (bt_demo.c) در استراکچر (ql_bt_ble_local_name_s bt_local_name ) اسم بلوتوث خود را تغییر دهید سپس این تابع (ql_bt_demo_set_local_name) نامی که برای بلوتوث خود انتخاب کردید را تنظیم میکند. تابع دیگری به نام (ql_classic_bt_start_inquiry) وجود دارد که نوع سرویس دهی بلوتوث را مشخص میکند. دستگاه ما از چهارده مدل پروفایل مختلف پشتیبانی میکند که در اینجا ما روی مود (QL_BT_SERVICE_ALL) قرار میدهیم.
حالت دوم QUEC_BT_BLE_ERROR_IND و حالت سوم QUEC_BT_BLE_RESET_IND برای زمانی است که مشکلی پیش آمده و باعث متوقف شدن فرایند میشوند. حالت چهارم (QUEC_BT_INQUIRY_IND) و پنجم (QUEC_BT_INQUIRY_END_IND) برای نمایش جزییات دستگاه متصل شده و وضعیت آن است. حالت ششم تا آخر مربوط به QUEC_BT_SPP است که در حال بررسی آن هستیم. لیست پروفایلهای بلوتوث که در ابتدا اشاره کردیم به شکل زیر است:

QL_BT_SERVICE_HANDSET

هدست (HSP): نسخه ساده‌تر از HFP، فقط انتقال صدای ورودی/خروجی.

هدست بلوتوث تک‌گوش برای تماس.

QL_BT_SERVICE_OPP

Object Push Profile: ارسال فایل (عکس، مخاطب و…) بین دو دستگاه.

ارسال عکس از گوشی به گوشی دیگر با بلوتوث.

QL_BT_SERVICE_FTP

File Transfer Profile: دسترسی به فایل‌های دستگاه از راه دور.

مدیریت فایل‌های حافظه موبایل از لپ‌تاپ.

QL_BT_SERVICE_A2DP

Advanced Audio Distribution Profile: پخش صدای استریو باکیفیت به سمت گیرنده.

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

QL_BT_SERVICE_AVRCP

Audio/Video Remote Control Profile: کنترل از راه دور پخش چندرسانه‌ای.

کنترل موزیک پلیر گوشی با دکمه‌های هندزفری.

QL_BT_SERVICE_SPP

Serial Port Profile: ارتباط سریال شبیه RS232 برای داده‌های سفارشی.

اتصال ماژول بلوتوث به MCU برای تبادل دیتا.

QL_BT_SERVICE_A2DP_SRC

A2DP Source: نقش فرستنده‌ی A2DP.

موبایل به عنوان منبع پخش موزیک برای هدفون.

QL_BT_SERVICE_AVRCP_TG

AVRCP Target: نقش دریافت فرمان از کنترل از راه دور.

گوشی فرمان‌های هدست را برای کنترل موزیک می‌پذیرد.

QL_BT_SERVICE_MAP_SERVER

Message Access Profile Server: اشتراک‌گذاری پیامک‌ها بین دستگاه‌ها.

خودرو پیامک‌های دریافتی گوشی را می‌خواند.

QL_BT_SERVICE_PBAP_SERVER

Phone Book Access Profile Server: اشتراک‌گذاری دفترچه تلفن.

نمایش مخاطبین گوشی روی صفحه نمایش خودرو.

QL_BT_SERVICE_HANDFREE_GATEWAY

Gateway برای HFP: مثل یک پل برای تماس هندزفری.

گوشی به‌عنوان درگاه تماس برای هندزفری خودرو.

QL_BT_SERVICE_HEADSET_GATEWAY

Gateway برای HSP: نسخه ساده‌تر گیت‌وی تماس.

گوشی به‌عنوان گیت‌وی هدست ساده تک‌گوش.

QL_BT_SERVICE_BLE_HID

BLE Human Interface Device: اتصال دستگاه‌های ورودی کم‌مصرف مثل کیبورد و موس.

موس یا کیبورد بلوتوث به تبلت وصل می‌شود.

این لیست نشان دهنده قابلیتهای مختلف بلوتوث ماژول است.

من برای دیدن داده های (لاگ) برنامه از UART استفاده میکنم که آموزش آن در قسمتهای قبل وجود دارد. پس از اینکه کد را کامپایل و نصب کنید (به روشی که در آموزشهای قبل مشاهده کردید) و به دستگاه متصل شوید خروجی مانند زیر خواهید داشت.

راه اندازی بلوتوث

برای فعال کردن بلوتوث در مود (HFP) کد زیر را در دایرکتوری (/components/ql-application/init/ql_init.c) از حالت کامن خارج کنید.

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

راه اندازی بلوتوث

کار با SDCard

در پروژه‌های اینترنت اشیاء (IoT)، ذخیره‌سازی داده‌ها یکی از نیازهای اساسی محسوب می‌شود؛ چرا که دستگاه‌های IoT اغلب وظیفه جمع‌آوری حجم زیادی از داده‌های حسگرها، گزارش‌های عملکرد، لاگ‌های سیستمی یا حتی فایل‌های چندرسانه‌ای را بر عهده دارند. استفاده از SD Card در چنین پروژه‌هایی، راهکاری ساده، ارزان و انعطاف‌پذیر برای ذخیره‌سازی محلی فراهم می‌کند.

این حافظه‌ها به دلیل ظرفیت بالا، مصرف توان پایین و قابلیت جابه‌جایی آسان، این امکان را به توسعه‌دهندگان می‌دهند تا بدون نیاز به اتصال دائمی به شبکه، اطلاعات حیاتی را ثبت و در زمان مناسب انتقال یا پردازش کنند. علاوه بر این، SD Card می‌تواند در سناریوهایی که دسترسی به اینترنت محدود یا پرهزینه است، نقش یک حافظه پشتیبان مطمئن را ایفا کند و امنیت داده‌ها را افزایش دهد. به همین دلیل، ادغام قابلیت ذخیره‌سازی با SD Card در طراحی سیستم‌های IoT، نه‌تنها قابلیت اطمینان و مقیاس‌پذیری پروژه را بالا می‌برد، بلکه مدیریت داده‌ها را نیز انعطاف‌پذیرتر می‌سازد.

برای استفاده از Sdcard لازم است از فایل (/components/ql-application/init/ql_init.c) تابع زیر را از حالت کامنت خارج کنید

برای مشخص کردن آدرس فایل باید از این قسمت استفاده کنید (#define QL_SDMMC_FILE_PATH “SD:sisoog.txt”) . تابعی که برای ما کار Mount کردن SDcard را انجام میدهد تابع (ql_sdmmc_mount_demo) است که اگر کارش با موفقیت انجام دهد پیام (Mount succeed) را خواهید گرفت. برای تست قابلیتهای مختلف برنامه لازم است تنظیمات مربوط به آن را با استفاده از تعاریف پایین که اول کد مشاهده میکنید انجام دهید.

در اینجا تنظیم مربوط به (QL_SDMMC_FS_TEST) را یک کردیم تا در کد کامپایل شود. برنامه چیزی که اینجا (char *str = QL_SDMMC_TEST_STR;) مشخص کردیم را با استفاده از تابع (ql_fwrite) روی SDcard مینویسد. اگر کد را کامپایل و نصب کنید خروجی مانند زیر خواهید داشت.

کار با SDCard

کار با SDCard

راه اندازی قسمت صوت

صوت در بسیاری از پروژه ها کاربرد زیادی دارد. به عنوان مثال:

۱. برقراری تماس صوتی (Voice Call)

در برخی پروژه‌های IoT، دستگاه نیاز دارد تماس تلفنی برقرار کند. به عنوان مثال یک دستگاه دزدگیر خودرو که وقتی سرقت تشخیص داد، با صاحب خودرو تماس می‌گیرد و او را با پیام صوتی آگاه می‌کند.

۲. ارسال و دریافت پیام‌های صوتی (Voice Message)

برخی دستگاه‌ها می‌توانند پیام صوتی ضبط کنند و بفرستند یا پیام صوتی دریافت کنند.  به عنوان مثال سیستم‌های اعلام هشدار روستایی که وضعیت خطر (مثل سیل یا آتش‌سوزی) را به‌صورت پیام صوتی به افراد محلی اطلاع‌رسانی می‌کنند.

۳. کاربردهای اینترکام و دستیار صوتی

گاهی نیاز است افراد از راه دور با هم صحبت کنند.  به عنوان مثال دستگاه‌های اینترکام هوشمند ساختمان که با سیم‌کارت کار می‌کنند و امکان مکالمه صوتی بین نگهبان و ساکن را فراهم می‌کنند.

۴. کنترل صوتی و دستورات صوتی

بعضی ماژول‌ها می‌توانند ورودی صوتی را تحلیل کنند (تشخیص گفتار). به عنوان مثال دستگاه‌های کشاورزی هوشمند که کشاورز با دستور صوتی پمپ آب را روشن می‌کند.

۵. کاربرد در پایانه‌های پرداخت (PoS) و خدمات مشتری

در برخی PoSهای سیم‌کارت‌خور قدیمی، گاهی نیاز است از طریق صوت با اپراتور تماس گرفته شود. به عنوان مثال خودپرداز یا پایانه فروشگاهی که در صورت خطا، مشتری مستقیماً با پشتیبانی تماس بگیرد.

برای راه اندازی صوت لازم است از فایل (/components/ql-application/init/ql_init.c) تابع زیر را از حالت کامنت خارج کنید

این تابع برای تست تمام قابلیتهای صوتی ماژول کافی میباشد به طوری که دارای توابعی مانند PCM و Record و Stream و Ring و Set Audio Quality است که میتوانید با خارج کردن آنها از حالت کامنت از آنها استفاده کنید. اینجا برای سادگی سراغ تابعی جهت پخش فایل موسیقی که از قبل آماده شده میرویم. برای اینکار ابتدا در کد تابع (test_play_file(TEST_PLAY_FILE_NAME); ) را از حالت کامنت خارج کنید و نام فایلی که میخواهید پخش شود را در این قسمت (#define TEST_PLAY_FILE_NAME “UFS:rec.wav”) تغییر دهید. دقت کنید که محل حافظه با کلمات (UFS) برای NOR Flash داخلی و (SD) برای SD Card و (EXNAND) برای Nand Flash خارجی مشخص میشود.

اگر فایل شما مانند من در SDcard قرار دارد لازم است ابتدا با استفاده از تابع (ql_sdmmc_app_init();) که در قسمت SDcard با آن کار کردیم SDcard را Mount کنیم که اینکار باید قبل از تابع پخش موسیقی ما باشد. همچنین فایلی که من جهت پخش انتخاب کردم یک موسیقی با فرمت MP3 بود به همین دلیل این قسمت کد را به این صورت تغییر دادم.

پس از اینکه کد را کامپایل و روی برد نصب کنید موسیقی شروع به پخش میشود.

راه اندازی قسمت صوت

در تست دوم با خارج کردن این تابع از حالت کامنت (test_record_file) از حالت ضبط و پخش استفاده کردیم. تابع به صورت زیر است:

من برای دیدن داده های (لاگ) برنامه از UART استفاده میکنم که آموزش آن در قسمتهای قبل وجود دارد. بعد از اینکه تابع را از حالت کامنت خارج و کد را کامپایل و نصب کردید چنانچه برنامه به درستی کار کند خروجی مانند زیر خواهید داشت:

آموزش SDK EC200 قسمت پنجم- بلوتوث و صدا

اطلاعات
18
0
0
لینک و اشتراک
profile

آرویدتک

متخصص الکترونیک

وبسایت: http://www.arvidtek.com

www.arvidtek.com | گروه مهندسی آرویدتک | فعال حوزه الکترونیک و مخابرات | فروشگاه تخصصی قطعات الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ
سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله