چیپ
NRF24L01 نمونه
تصحیح شده با امکانات بیشتر و دیتا ریت بالاتر چیپ
NRF2401 است
که توسط شرکت NORDIC در
اوایل سال 2008 معرفی شد.
Send AMS1117-3.3 3.3V LDO Voltage Regulator tube
2.4G operating frequency, the transmission distance is about the open distance
40 meters!
NRF24L01 basic characteristics:
1.2Mbit/s received under rates peak at 12.5mA
2. @0dBm 2Mbit/s rate output peak current 11mA
3. power off mode power consumption of 400nA
4. the power consumption in standby mode 32uA
5.130us quick switch and wake up
6. has the on-chip voltage regulator oltage regulators
7.1.9 to 3.6V low-voltage operation 8. MultiCeiverMT hardware 6 receiver
functions at, 2Mbit/s makes it possible to high quality VoIP
مزیت های ماژول :
در محیط با مانع از این ماژول بیشتر در پروژه هایی که قابلیت اطمینان ( reliability) باید بالا باشد و کاربردش بیشتر در جاهای صنعتی و پر نویزه و جاهای حساس که اشتباه باعث خسارت میشود. ( یک لینک کاملا مطمئن براتون ایجاد میکنه ( استفاده میکنیم وبه خاطرداشتن قابلیت های auto acknowlegement و auto retransmition و error checking و فرستادن اطلاعات همراه با یکی از بهترین استانداردهای ECC (Error Correcting Code ) CRC در عمل فوق العاده خوب جواب داده و اصلا عمل پیش بینی نشده ، انجام نداده. دقیقا هرکاری بخواهید و ازش انتظار دارید انجام میدهد. ( در عمل مهم اینکه دیوایس، عکس العمل غیر منتظره ای از خودش بروز ) .
تغذیه خود آی سی با 3.3 ولت هست اما پایه های ورودی خروجی آن توان کار کردن تا 5 ولت رو دارند ( تغذیه IC را با 3.3 V راه می اندازید اما اگر ورودی خروجی هاش به مداری که 5 ولت هست وصل بشه، آی سی نمی سوزه و میتواند با سطح لاجیک TTL کار کنند )
این ماژول 60 میلی وات و بردآن در فضای باز حدودا 40 مترمی باشد که اگر
آنتن برای آن نصب کنید ( آنتن معمولی! ) حداکثر بردش به 70 متر میرسد ....
برای مصارفی
با مسافت کم ، استفاده از چیپ بر روی PCB اصلی پروژه ( نه ماژول )
بسیار ایده آل می باشد و همچنین میشود کانال ارسال دیتا را عوض کرد !
برای ارسال فلگ تایید دریافت دارد . همینطور امکان ارسال مجدد ( ( restry در صورت نرسیدن دیتا به مقصد!
کارکرد پایه ها
IRQ : ماژول توسط این پایه به میکرو وقفه میدهد ( در حالت عادی پایه high است
) و low
شدن IRQ یکی
از این حالت ها را می رساند :
1- در گیرنده یک پکت دریافت شده
2- در فرستنده پکت بدرستی ارسال شده ACK ) تصدیق دریافت شد )
3- در فرستنده یک پکت چندبار ارسال شده (
retransmition ) ولی
تصدیقی دریافت نکرده پس عمل فرستادن اطلاعات به درستی انجام نشده است.
CE : همان
chip enable می
باشد. در حالت عادی low
است وقتی
بخواهیم اطلاعات با ماژول بفرستیم یا دریافت کنیم باید این پین را high کنیم تا
ماژول از مد استندبای ( 1 ) به active tx یا
active rx برود
( میتونید این پین را به VCC وصل کنید تا همیشه در حالت high باشد.
CSN : در ارتباط spi به منظور پین CS یا ss استفاده میشود . در حالت عادی باید 1 باشد و وقتی با spi می خواهیم چیزی به ماژول بفرستیم باید آن را 0 کنیم
MOSI, MISO, CLK, CS : MOSI, MISO, CLK, CS برای ارتباط SPI هستند و به پایه های متناظرشون در میکرو. MISO و MOSI به صورت ضربدری وصل میشوند.
: VCC , GND VCC و GND هم تغذیه ماژول می باشد ماژول به ولتاژ معکوس و ولتاژ زیاد روی vcc و gnd حساس می باشد همچنین دمای زیاد روی پایه ها بوسیله هویه ( چون پایه ها مستقیم به آیسی وصل می باشد ) . حتما از رگلاتور lf33 استفاده کنید وبین مثبت ومنفی ماژول حتما از خازن استفاده کنید ا گر از خازن در ورودی استفاده نکنید ماژول بدرستی کانفیگ میشود ولی زمانی که میخواهد اطلاعات را بفرستید به کلی ریست میشود.
سرعت انتقال :
سرعت انتقال درماژول های nrf24l01p قابل تنظیم می باشد و میتوان در سه حالت 256kbps و 1 Mbps و 2 Mbps تنظیم نمود (هرچه سرعت بالاتر تنظیم شود برد کمتر میشود(
چطوری
میتونیم سرعت رو از 1M به 2M تغییر بدیم ؟
به صورت دستی
هدر فایل رو تغییر بدید. خط 209 هدر فایل را به command_buff = 0x07; تغییر
بدید. ( سرعت بیشتر = برد کمتر )
" payload" چی هست ؟
payload یک اصطلاح در شبکه است ،
یک پکت دیتا تشکیل شده است از چندین قسمت که یک قسمتش
payload میباشد
، در این قسمت دیتای اصلی شما قرار میگیرد. ( این قسمت اصلی و بقیه بالا سری ( overhead ) پکت
هستند که شامل آدرس و pid و
sequence و...
( .
فرقnRF24L01 با nRF24LE1 چیست ؟
nRF24l01+ یه آی سی transciever برای انتقال داده بیسیم در باند 2.4 GHz است .
nRF24LE1
این ماژول ترکیب همون
nRF24l01p بعلاوه ی یک سری
چیز دیگس:
که این چیزها شامل:
1ـ
cpu هشت
بیتی که با همون 8051 معروف سازگار است. ( پس همینجا نتیجه میگیریم این آیسی به
تنهایی قابل استفاده است و دیگه نیاز نیست با میکرو درایوش کنیم چون خودش واحد
پردازشگر inteligent device ) ) دارد
2ـ
1kB + 256B رم داره که این رم همون حافظه ای است که باید کنار cpu باشه.
3ـ
یک فلش مموری 16 کیلو بایتی داره که میتونید توش داده ها و دستورات را ذخیره کنید (
بعد از قطع برقم نمیپره )
4ـ
یک مقایسه گر ( ADC ) دوازده بیتی داره!!
همچنین سه تا
اینترفیس ارتباط spi و uart
و TWI رو
هم داره (یه جورایی همه چی تمومه ،خودش یه میکرو کنترلره) ) گفته اوسیلاتور داخلی
هم داره ( که خوب معلومه باید داشته باشه چون cpu
داره (
این چیپ حالت صرفه جویی در مصرف یا
lowe power هم داره ؟
با این
پین و رجسترهای PWR_UP , PRIM_RX
2تا مد standby
داره و یه مد
power down
یکی
از ویژگی های خیلی جالب این ماژول مصرف بسیار پائین اون نسبت به ماژول های مشابه
هست که در مواقعی که مجبور به استفاده از باتری هستین از کم مصرف بودن این ماژول
حیرت زده میشید
تو نسخه پلاس
این ماژول مد اسلیپ ماژول بسیار هوشمند عمل میکنه و مصرف رو در حد ۹۰۰ نانو آمپر
قرار میده یعنی ماژول روشنه ولی داره فقط ۹۰۰ نانو آمپر مصرف میکنه و فقط موقع
ارسال مصرفش به حدود ۱۳ میلی آمپر میرسه
Enhanced ShockBurst چیست
؟
یک مد که توی این نوع آیسی ها معرفی شده . اولا که با استفاده از این مد میتونید
با میکرو کنتزلرهای کند مثل avr و صف های موجود در
خود آیسی ، به سرعت های بالا ( سرعت انتقال در هوا ( air ) ) دست
یابید همچنین اگر با شبکه آشنا باشید ، خیلی شبیه به
پروتکل TCP در لایه ی transport در
مدل های لایه بندی
TCP/IP و OSI می باشد. که با
استفاده از قابلیت های
auto acknowledgment و autoretransmition یک لینک
کاملا مطمئن برای شما فراهم میکند. (به زبون ساده بعد از هر ارسال گیرنده به
فرستنده میگه پکت بهم رسیده یا نه و اگر نرسیده باشه یا حتی پیام رسیدن بر نگرده ،
فرستنده دوباره ارسال میکند ( در شبکه به آن پیام تصدیق یا همون ACK گفته می شود ) Enhanced
ShockBurst یه پروتکلی 2 سویه
است که برای چلوگیری از دست رفتن اطلاعات بین فرستنده و گیرنده استفاده میشود به
این صورت که اگر پکت ارسالی به درستی دریافت نشود دوباره توسط فرستنده ارسال می گردد.
یک چیز جالب
در مورد این ماژول هوشمند بودنش هست مثلا شما از عدد ۱ تا ۱۰۰۰ رو میفرستید تا با
دور کردن گیرنده برد ماژول رو به دست بیارید چیزی که خیلی جالبه اینه که مثلا اگر
اطلاعات دریافتی گیرنده بر روی عدد ۵۴۶ متوقف بشود وقتی به ماژول فرستنده نزدیک می
شوید از عدد ۵۴۷ شروع به ارسال میکند و به عبارتی هیچ اطلاعاتی تا وقتی گیرنده
دریافت آن را تائید نکند از دست نمی رود و تا زمانی که از سمت گیرنده پیام تائید
دریافت نکند اطلاعات بعدی را ارسال نمی کند
و به ارسال مجدد ادامه میدهد و این حالت به صورت پیشفرض در ماژول فعال است و به
طور پیشفرض ۱۰ بار در فاصله زمانی مشخص
انجام میدهد , میتوانید با تنظیمات رجیستر های
ماژول تعداد و مدت زمانی که بین هر ارسال باید صبر کند را تغییر دهید
این ماژول ها امکان شبکه کردن هم دارند ؟
شبکه کردن یعنی آدرس دادن به ماژول ها به طوری که فقط با ماژولی که میخواهید
ارتباط برقرار کنید (جدا کردن از طریق آدرسدهی )
شما با تغییردر آرایه 5 بایتی آدرس (40
بیتی ) میتوانید به ماژول یک آدرس دلخواه نسبت دهید که می توانید تا 1 ترلیون ( یا 1 ترا = 2 به
توان 40 ) آدرس متفاوت ایجاد کنید. ولی شما نمی توانید در حین
اجرا آدرس را تغییر بدید و حتما تغییرات باید در زمان کامپایل باشد یعنی در زمانی
که کد مینویسید شما یک آدرس مشخصی از 0x0000000000 تا 0 xFFFFFFFFFF به ماژول نسبت
میدهید و وقتی برنامه را داخل میکرو پروگرم کردید ماژول همین آدرس را دارد . اگر
می خواهید آن را عوض کنید باید دوباره میکرو رو با آدرس جدید پروگرام کنیدهر ماژول با هر چندتا
ماژول که در دیدش باشه شبکه میشود که البته با
تنظیماتی میشود این را نقض کرد یعنی مثلا ما 100 تا ماژول در یکجا داریم که همه در
برد هم هستند ولی جوری باشند که 10 تا 10 تا باهم در ارتباط باشند و گروه های دیگر
را اصلا نبینند و در کار هم مشکل بوجود نیاورند . مثلا اگر شما با شبکه کامپیوتر
آشنا باشید ، هر شبکه از 5 لایه تشکیل شده ( لایه بندی osi یا tcp/ip ( با این ماژول می توانید ارتباط تا دو لایه زیرین ( Data Link Layer و ( Physical Layer داشته باشید. که در
لایه دیتا لینک می توانید ارتباط به صورت rdt ( reliable data transfer ارتباط مطمئن ) تضمین کنید. شبکه کردن ،هیچ کاری ندارد
وقتی شما یک لینک مطمئن دارید شبکه یعنی یک سری پروتکل که خودتان قرار میدید .به
عنوان مثال شما یک بخش همیشه ثابت تو ارایه ای که میفرستید میگذارید ( مثلا یک
بایت ) و این رو به عنوان آدرس فرستنده
تلقی میکنید. و یک بایت هم برای گیرنده . حالا شما اطلاعاتتون رو در بسته ( packet ) های 32 بایتی درون شبکه میریزید که 30 بایت اونها
دیتای اصلی یا
payload هستند. به همین
راحتی .
شما میتونید در
یک شبکه پایپ به ۶ تا ماژول دیگه اطلاعات رو ارسال کنید و از ۶ تا ماژول دیگه
اطلاعات رو دریافت کنید فقط باید دقت کنید واسه هر ماژول یک آدرس ۳۲ بیتی جداگانه
بگذارید
مهمترین قسمتهای دیتا شیت کجا است ؟
شما
اول باید جدیدترین دیتاشیت را دانلود کنید ----> September 2008
Product Specification v1.0
صفحه 75 را بیارید و از اول بخونید. شما
نمیخواد کل دیتاشیت را بلد باشید ، فقط همین صفحه را خوب درک کنید. تو این صفحه
به یکسری کلمات و اصطلاحات برمیخورید که کلیدین و مخصوص همین دیتاشیتن، برای
فهمیدن این کلمات به صفحات 51 و 57 به بعد ( کل
register map ) ) رجوع کنید. به یک کلمه نامفهوم که تو 75
میرسید یه جوری خودتون با چشم تو صفحه هایی که گفتم پیدا کنید و بخونید. تا
آخر صفحه همین کار رو کنید و بعد برید برای صفحه 76 دیدیم که 75 و 76 صفحه های
کلیدی بودن ، یک صفحه کلیدی دیگه هم وجود داره که میتونه به درک بیشترتون کمک کنه:
شکل صفحه 22 و تمام
عالی بود
با تشکر ثبت نام می کنم
مانند همیشه بسیار عالی
ممنون از توضیحات بسیار مفیدتون منتظر قسمت های بعدی در این مورد هستم
با سلام
من نمی تونم با این ماژول ها(nrf24l01+( کار کنم.
نمی دونم مشکل کارم دقیقا کجاست...حتی نمی دونم سالم هست
یانه؟
ممنون می شم کمکم کنید....
سلام خسته نباشید
من نمیتونم با این ماژول کار کنم
اولا که پایه هاش ادم و گیج میکنخ
یعنی
تو برنامه ای که دانلود کردم واسه پایه ss یه پایه از میکرو رو تعیین کرده این در حالیه که میکرو خودش این پایه رو داره
دوما هیچ جا ندیدم که پایه های MISO و MOSi رو به صورت ضربدری وصل کنن اما شما گفتین ضربدری
چطور میشه تستش کرد؟ حتما باس دو تاش درایو بشه تا تست کنیم؟ اخه تو درایو کردنش موندم
ماژول من nrf24l01 ولتاژ تغدیه شو 3.6 وصل کردمو میشه 5 ولت بش بدم؟
کارم بدجور گیره این ماژوله لطفا کمک کنید
ما کماکان منتظر قسمت دوم هستیم.