<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>انجمن های تخصصی برق و الکترونیک ECA - ماژول های RF - ISM Band و بلوتوث</title>
		<link>https://forum.eca.ir/</link>
		<description><![CDATA[<div dir="rtl" style="text-align:right; line-height:1.8;">
  <div>راه‌اندازی ماژول‌های RF در باندهای ISM، ارتباطات LoRa و Zigbee، بلوتوث کلاسیک و BLE؛ انتقال داده، شبکه‌های مش، انتخاب آنتن و بهینه‌سازی برد و مصرف توان.</div>
  <div style="margin-top:4px;">
    <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#007785" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" style="vertical-align:middle; margin-left:5px;"><path d="M2 3h3l3 12h11l3-9H6"/><circle cx="9" cy="20" r="1"/><circle cx="19" cy="20" r="1"/></svg>
    <a href="https://eshop.eca.ir/112-ریموت-و-ماژول-های-ارتباطی-rf" target="_blank" rel="noopener" style="display:inline-block; color:#007785; text-decoration:none;">ریموت و ماژول‌های RF</a>&nbsp; | &nbsp;<a href="https://eshop.eca.ir/216-ماژول-بلوتوث-bluetooth" target="_blank" rel="noopener" style="display:inline-block; color:#007785; text-decoration:none;">ماژول‌های بلوتوث</a>
  </div>
</div>]]></description>
		<language>fa</language>
		<lastBuildDate>Sat, 14 Nov 2026 21:49:38 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>https://forum.eca.ir/images/logo/apple-touch-icon.png</url>
			<title>انجمن های تخصصی برق و الکترونیک ECA - ماژول های RF - ISM Band و بلوتوث</title>
			<link>https://forum.eca.ir/</link>
		</image>
		<item>
			<title>چرا CC2541 با گوشی اطلاعات رد و بدل میکنه ولی توی لیست دستگاه های Pair شده دیده نمیشه؟</title>
			<link>https://forum.eca.ir/forum/ماژول-ها-و-سنسورهای-الکترونیکی-و-مخابراتی/ماژول-های-rf-ism-band-و-بلوتوث/1166911-چرا-cc2541-با-گوشی-اطلاعات-رد-و-بدل-میکنه-ولی-توی-لیست-دستگاه-های-pair-شده-دیده-نمیشه؟</link>
			<pubDate>Sat, 14 Nov 2026 12:11:49 GMT</pubDate>
			<description>یکی از عجیب ترین اتفاقاتی که موقع کار با ماژول های BLE ممکنه پیش بیاد اینه که گوشی به ماژول وصل میشه و اطلاعات هم بدون مشکل رد و بدل میشن ولی وقتی...</description>
			<content:encoded><![CDATA[<br />
یکی از عجیب ترین اتفاقاتی که موقع کار با ماژول های BLE ممکنه پیش بیاد اینه که گوشی به ماژول وصل میشه و اطلاعات هم بدون مشکل رد و بدل میشن ولی وقتی وارد تنظیمات بلوتوث گوشی میشیم هیچ خبری از اسم ماژول توی لیست دستگاه های Pair شده نیست!<br />
<br />
اینجاست که آدم با خودش میگه مگه میشه دوتا دستگاه با هم ارتباط داشته باشن ولی Pair نشده باشن؟ ????<br />
<br />
اتفاقا میشه و این موضوع در BLE کاملا طبیعیه.<br />
<br />
<span style="color:#000000"><b>داستان از تفاوت BLE با بلوتوث کلاسیک شروع میشه</b></span><br />
<br />
ماژول CC2541 از Bluetooth Low Energy نسخه 4.0 استفاده میکنه.<br />
<br />
این تراشه برخلاف ماژول هایی مثل HC-05 که با بلوتوث کلاسیک کار میکنن برای ارتباط کم مصرف طراحی شده.<br />
<br />
توی بلوتوث کلاسیک معمولا وقتی گوشی رو به یه ماژول سریال مثل HC-05 وصل میکنیم اول عملیات Pairing انجام میشه و دستگاه توی فهرست دستگاه های جفت شده قرار میگیره.<br />
<br />
اما توی BLE برای برقراری ارتباط و تبادل اطلاعات همیشه نیازی به Pairing نداریم.<br />
<br />
<b><span style="color:#ff0000">پس گوشی چطوری بدون Pair شدن اطلاعات میفرسته؟</span></b><br />
<br />
برای فهمیدن ماجرا باید 3 تا مفهوم رو از هم جدا کنیم.<br />
<br />
اولی Connection هست که یعنی گوشی و ماژول یه ارتباط BLE با هم برقرار کردن.<br />
<br />
دومی Pairing هست که طی اون دو دستگاه درباره روش امنیتی توافق میکنن و در صورت نیاز کلیدهای رمزنگاری ارتباط رو ایجاد میکنن.<br />
<br />
سومی Bonding هست که باعث میشه اطلاعات امنیتی و کلیدهای لازم برای ارتباط های بعدی ذخیره بشن.<br />
<br />
نکته جالب اینجاست که اتصال GATT و تبادل اطلاعات از طریق Characteristic هایی که نیاز به احراز هویت یا رمزنگاری ندارن میتونه بدون Pairing و Bonding انجام بشه.<br />
<br />
یعنی گوشی میتونه به CC2541 متصل بشه و از طریق Read و Write یا Notification اطلاعات بفرسته و دریافت کنه بدون اینکه دستگاه توی فهرست Pair شده ها ثبت بشه.<br />
<br />
پس این رفتار لزوما نشونه خرابی ماژول نیست.<br />
<br />
<span style="color:#ff0000"><b>حالا چرا بعضی وقت ها اسم ماژول توی تنظیمات بلوتوث هم دیده نمیشه؟</b></span><br />
<br />
اینجا باید یه تفاوت دیگه رو هم در نظر بگیریم.<br />
<br />
گوشی های اندرویدی و آیفون برای پیدا کردن دستگاه های BLE از مکانیزم اسکن مخصوص این فناوری استفاده میکنن.<br />
<br />
برنامه هایی مثل nRF Connect میتونن پیام های Advertising ماژول رو اسکن کنن و سرویس ها و Characteristic های اون رو نمایش بدن.<br />
<br />
ولی صفحه تنظیمات بلوتوث گوشی قرار نیست همیشه تمام دستگاه های BLE اطراف رو مثل ماژول های بلوتوث کلاسیک نشون بده.<br />
<br />
بسته به سیستم عامل و نوع دستگاه ممکنه ماژول توی برنامه اسکن BLE دیده بشه ولی توی لیست دستگاه های جفت شده وجود نداشته باشه.<br />
<br />
حتی در بعضی شرایط وقتی برنامه به ماژول وصل شده ممکنه خود ماژول دیگه Advertising قابل اتصال نفرسته و از لیست اسکن هم ناپدید بشه.<br />
<br />
این موضوع رو نباید با قطع شدن ارتباط اشتباه بگیریم.<br />
<br />
<span style="color:#ff0000"><b>چطوری بفهمیم ارتباط واقعا برقرار شده؟</b></span><br />
<br />
برای بررسی بهتر میشه از برنامه nRF Connect استفاده کرد.<br />
<br />
اول ماژول رو روشن میکنیم و با گوشی اسکن BLE انجام میدیم.<br />
<br />
اگه ماژول Advertising داشته باشه و قابل شناسایی باشه باید بتونیم اون رو داخل برنامه پیدا کنیم.<br />
<br />
بعد از اتصال میتونیم سرویس های GATT رو بررسی کنیم و ببینیم کدوم Characteristic قابلیت Read یا Write یا Notification داره.<br />
<br />
اگه اطلاعات از طریق همین بخش ها رد و بدل میشن یعنی ارتباط BLE برقرار شده و لازم نیست حتما اسم ماژول توی فهرست Pair شده های گوشی وجود داشته باشه.<br />
<br />
برای گوشی اندرویدی یه روش دقیق تر هم هست.<br />
<br />
میشه داخل برنامه وضعیت Bonding رو با دستور getBondState بررسی کرد.<br />
<br />
اگه نتیجه BOND_NONE باشه یعنی دستگاه Bond نشده و کلید امنیتی ذخیره شده مشترک نداره.<br />
<br />
اگه نتیجه BOND_BONDED باشه یعنی عملیات Bonding با موفقیت انجام شده.<br />
<br />
جالب اینجاست که ممکنه ارتباط GATT برقرار باشه ولی وضعیت همچنان BOND_NONE باقی بمونه.<br />
<br />
<span style="color:#ff0000"><b>اگه بخوایم CC2541 حتما Pair بشه باید چیکار کنیم؟</b></span><br />
<br />
اینجا همه چیز به فریمور ماژول بستگی داره.<br />
<br />
خود تراشه CC2541 از امکانات امنیتی BLE و مکانیزم Pairing و Bonding پشتیبانی میکنه ولی اینکه ماژول آماده ما این قابلیت ها رو چطور پیاده سازی کرده باشه به برنامه داخلی اون مربوط میشه.<br />
<br />
مثلا در فریمورهای مبتنی بر استک Texas Instruments تنظیماتی برای فعال کردن Bonding و تعیین روش Pairing وجود داره.<br />
<br />
اما نباید فرض کنیم تمام بردهای CC2541 موجود در بازار دقیقا از دستورات AT ماژول HM-10 پشتیبانی میکنن.<br />
<br />
برای همین اگه هدف پروژه ذخیره اطلاعات جفت سازی یا برقراری ارتباط رمزنگاری شده باشه باید اول فریمور ماژول شناسایی بشه و مشخص بشه قابلیت Bonding و تنظیمات امنیتی اون در دسترس هست یا نه.<br />
<br />
در ضمن Pair شدن به تنهایی به معنی امن بودن کامل تبادل اطلاعات نیست. سطح امنیت به روش احراز هویت و تنظیمات رمزنگاری هم بستگی داره.<br />
<br />
<b>یه نکته مهم برای پروژه های اندروید و iOS</b><br />
<br />
اگه داریم یه اپلیکیشن اختصاصی برای ارتباط با CC2541 مینویسیم بهتره از API مخصوص BLE استفاده کنیم.<br />
<br />
در اندروید این کار معمولا با BluetoothGatt انجام میشه و در iOS از CoreBluetooth استفاده میکنیم.<br />
<br />
برای پیدا کردن و اتصال به ماژول هم نباید صرفا به لیست دستگاه های Pair شده تکیه کنیم.<br />
<br />
مخصوصا در پروژه هایی که فقط قراره اطلاعات سنسور دریافت بشه یا چند فرمان کنترلی ارسال کنیم ممکنه اصلا نیازی به Bonding نداشته باشیم.<br />
<br />
البته اگه اطلاعات حساس باشن یا بخوایم فقط گوشی های مجاز به دستگاه دسترسی داشته باشن باید امنیت ارتباط رو جداگانه طراحی کنیم.]]></content:encoded>
			<category domain="https://forum.eca.ir/forum/ماژول-ها-و-سنسورهای-الکترونیکی-و-مخابراتی/ماژول-های-rf-ism-band-و-بلوتوث">ماژول های RF - ISM Band و بلوتوث</category>
			<dc:creator>دکتر شیبابا</dc:creator>
			<guid isPermaLink="true">https://forum.eca.ir/forum/ماژول-ها-و-سنسورهای-الکترونیکی-و-مخابراتی/ماژول-های-rf-ism-band-و-بلوتوث/1166911-چرا-cc2541-با-گوشی-اطلاعات-رد-و-بدل-میکنه-ولی-توی-لیست-دستگاه-های-pair-شده-دیده-نمیشه؟</guid>
		</item>
	</channel>
</rss>
