شبکه سازی ماژول های nrf24l01 توسط avr
با سلام خدمت هموطنان گرامی
در این مطلب آموزش راه اندازی ماژول nrf24l01 رو خدمت دوستان عرض میکنم و همچنین کتابخونه ای حرفه ای برای این ماژول تنظیم شده رو برای دانلود قرار می دهم و در پایان هم پروژه شبکه سازی ماژول های nrf رو ارائه خواهم کرد…
در این کتابخانه که برای ماژول های سری nrf تنظیم شده شما میتونید پایه های ماژول رو به هر پایه دلخواه میکرو متصل کنید و ضمن اینکه در این کتابخانه ما از پایه IRQ ماژول استفاده نخواهیم کرد…
خصوصیات ماژول های nrf که به صورت زیر است:
چیپ NRF24L01 نمونه تصحیح شده با امکانات بیشتر و دیتاریت بالاتر چیپ NRF2401 است که توسط شرکت Nordic در اوایل سال ۲۰۰۸ معرفی شد.
این چیپ درواقع یک ماژول بسیار عالی برای ارسال و دریافت اطلاعات بدون خطا است چیزی که در ماژولهای HMTR یا حتی در RFMXX ها یا بهکلی وجود نداشت یا اینکه مشکلات خاص خود را داشت.
مدولاسیون ارتباطی این ماژول بهصورت GFSK است, همان مدولاسیونی که در تکنولوژی بلوتوث استفادهشده و بهصورت انحصاری در دست چند شرکت بزرگ مثل بلوتوث و Nordic Semiconductor و Texas Instrument و چند شرکت دیگر قرار دارد. فرکانس ارتباطی این چیپ ۲٫۴ گیگاهرتز است که این خاصیت آن ویژگیهای زیادی را برای ما به ارمغان میآورد. ازجمله کوچک شدن سایز آنتن که حتی میتوان از خود PCB بهصورت یک آنتن استفاده کرد, مورد دیگر هم به دلیل فرکانس بالا بسیار راحتتر از دیوار یا اجسام دیگر عبور میکند و باعث میشود که برد بیشتری هم به ما بدهد, میتوانید فرکانس RFM12 یا HMTR را با این چیپ مقایسه کنید. میبینید که فرکانس این چند حداقل چند برابر آنها است. این چیپ بهصورت دوطرفه کار میکند و در کل شما فقط به ۲ عدد از این چیپ ها برای ارتباط لازم دارید (مشابه RDM12)
دیتاریت این چیپ حداکثر ۲ مگابیت بر ثانیه است که میتوان از آن برای انتقال اطلاعات سنگینی مشابه صوت و یا حتی ویدئو استفاده کرد.
ویژگیهای خاص:
- حداکثر دیتاریت تا ۲ مگابیت بر ثانیه در هوا
- بسیار کم مصرف
- جریان مصرفی در هنگام ارسال دیتا در ۰ دسیبل فقط ۱۱٫۳ میلیآمپر
- جریان مصرفی در حالت دریافت دیتا با ۲ مگابیت بر ثانیه دیتاریت، فقط ۱۲٫۳ میلیآمپر
- جریان مصرفی در هنگام Power-Down900 نانو آمپر
- جریان مصرفی در هنگام آمادهباش ۲۲ میکرو آمپر
- بدون نیاز به ولتاژهای مختلف به همراه رگلاتور داخلی
- محدوده ولتاژ تغذیه چیپ از ۱٫۹ تا ۳٫۶ ولت که با افزایش ولتاژ برد بیشتری را باید در انتظار داشت
- مجهز به تکنولوژِی پیشرفته Shockburst
- آمادهسازی بستههای دیتا بهصورت خودکار
- لوله دیتا Multiceiver برای ارتباط چند ماژول به یکدیگر و ایجاد یک شبکه محلی
- تست شده برای ارسال و دریافت دیتا که سالم بودن تمامی چیپ ها ۱۰۰% است
- یک چیپ فرکانسی کمهزینه
- نیاز به یک کریستال اسیلاتور ۱۶ مگاهرتزی کوارتز برای ایجاد فرکانس ۲٫۴ گیگاهرتزی
- ورود ولتاژ بر روی پینهای دیتا حداکثر تا ۵ ولت امکانپذیر است
- سایز کوچک چیپ و نیاز به قطعات کم خارجی
موارد استفاده:
- قطعات کامپیوتری وایرلس مانند موس یا کیبورد یا قطعات دیگر
- هدست های بیسیم مانند Voip Headset
- دستههای بیسیم کنسولهای بازی مانند PS3
- ساعتهای ورزشی یا سنسورها
- ریموت کنترل برای مصارف الکترونیکی
- اتوماسیون خانگی (خانه هوشمند) که فرضاً تمامی ارتباطات الکتریکی فرضاً برای روشنایی بهصورت بیسیم است
- در شبکههایی که نیاز به یک ارتباط وایرلس بسیار کممصرف است
- سیستمهای مسیریاب مانند GPS
مزیتهای ماژول:
در محیط با مانع از این ماژول بیشتر در پروژههایی که قابلیت اطمینان (Reliability) باید بالا باشد و کاربردش بیشتر درجاهای صنعتی و پر نویز و جاهای حساس که اشتباه باعث خسارت میشود (یک لینک کاملاً مطمئن برایتان ایجاد میکند) استفاده میکنیم و به خاطر داشتن قابلیتهایAuto Acknowlegement و Auto Aetransmition و Error Checking و فرستادن اطلاعات همراه با یکی از بهترین استانداردهای ECC (Error Correcting Code) CRC در عمل فوقالعاده خوب جواب داده و اصلاً عمل پیشبینی نشده، انجام نداده است. دقیقاً هر کاری بخواهید و از آن انتظار دارید انجام میدهد. تغذیه خود آی سی با ۳٫۳ ولت است اما پایههای ورودی خروجی آن توان کار کردن تا ۵ ولت را دارند (تغذیه آی سی را با ۳٫۳ V راه میاندازید اما اگر ورودی خروجیهایش به مداری که ۵ ولت است وصل شود، آی سی نمیسوزد و میتواند با سطح لاجیک TTL کار کند)
این ماژول ۶۰ میلی وات و برد آن در فضای باز حدوداً ۴۰ مترمی باشد که اگر آنتن برای آن نصب کنید (آنتن معمولی) حداکثر بردش به ۷۰ متر میرسد.
برای مصارفی با مسافت کم، استفاده از چیپ بر روی PCB اصلی پروژه (نه ماژول) بسیار ایده آل است و همچنین میشود کانال ارسال دیتا را عوض کرد.
برای ارسال فلگ تأیید دریافت دارد. همینطور امکان ارسال مجدد (Restry در صورت نرسیدن دیتا به مقصد)
سرعت انتقال:
سرعت انتقال در ماژولهای۲۴L01P NRF قابل تنظیم است و میتوان در سه حالت ۲۵۶kbps و ۱ Mbps و ۲ Mbps تنظیم نمود (هرچه سرعت بالاتر تنظیم شود برد کمتر میشود)
چطور میتوانیم سرعت را از ۱M به ۲M تغییر بدهیم؟
بهصورت دستی هدر فایل را تغییر دهید. خط ۲۰۹ هدر فایل را به ;Command_Buff =0X07 تغییر بدهید. (سرعت بیشتر = برد کمتر)
این چیپ حالت صرفهجویی در مصرف یا Lowe Power هم دارد؟
با این پین و رجیسترهای PWR_UP, PRIM_RX 2 مد Standby و یک مد Power Down دارد.
یکی از ویژگیهای خیلی جالب این ماژول مصرف بسیار پائین آن نسبت به ماژولهای مشابه هست که در مواقعی که مجبور به استفاده از باتری هستید از کممصرف بودن این ماژول حیرتزده میشوید.
در نسخه پلاس این ماژول مد اسلیپ ماژول بسیار هوشمند عمل میکند و مصرف را در حد ۹۰۰ نانو آمپر قرار میدهد یعنی ماژول روشن است ولی فقط ۹۰۰ نانو آمپر مصرف میکند و فقط موقع ارسال مصرفش به حدود ۱۳ میلیآمپر میرسد.
این ماژولها امکان شبکه کردن هم دارند؟
شبکه کردن یعنی آدرس دادن به ماژولها بهطوریکه فقط با ماژولی که میخواهید ارتباط برقرار کنید (جدا کردن از طریق آدرسدهی)
شما با تغییر در آرایه ۵ بایتی آدرس (۴۰ بیتی) میتوانید به ماژول یک آدرس دلخواه نسبت دهید که میتوانید تا ۱ تریلیون (۱ ترا = ۲ به توان ۴۰) آدرس متفاوت ایجاد کنید. ولی شما نمیتوانید در حین اجرا آدرس را تغییر بدهید و حتماً تغییرات باید در زمان کامپایل باشد یعنی درزمانی که کد مینویسید شما یک آدرس مشخصی از ۰x0000000000 تا ۰ xFFFFFFFFFF را به ماژول نسبت میدهید و وقتی برنامه را داخل میکرو پروگرام کردید ماژول همین آدرس را دارد. اگر میخواهید آن را عوض کنید باید دوباره میکرو را با آدرس جدید پروگرام کنید هر ماژول با هرچند تا ماژول که در دیدش باشد شبکه میشود که البته با تنظیماتی میشود این را نقض کرد یعنی مثلاً ما ۱۰۰ تا ماژول در یکجا داریم که همه در برد هم هستند ولی طوری باشند که ۱۰ تا ۱۰ تا باهم در ارتباط باشند و گروههای دیگر را اصلاً نبینند و در کار هم مشکل به وجود نیاورند. مثلاً اگر شما با شبکه کامپیوتر آشنا باشید، هر شبکه از ۵ لایه تشکیلشده (لایهبندی osi یا tcp/ip) با این ماژول میتوانید ارتباط تا دو لایه زیرین Data Link Layer و Physical Layer داشته باشید؛ که در لایه دیتا لینک میتوانید ارتباط بهصورت ارتباط مطمئن (Peliable Data Transfer) تضمین کنید. شبکه کردن، هیچ کاری ندارد وقتی شما یک لینک مطمئن دارید شبکه یعنی یک سری پروتکل که خودتان قرار میدید. بهعنوانمثال شما یک بخش همیشه ثابت در ارائهای که میفرستید میگذارید (مثلاً یک بایت) و این را بهعنوان آدرس فرستنده تلقی میکنید؛ و یک بایت هم برای گیرنده. حالا شما اطلاعاتتان را در بسته (Packet) های ۳۲ بایتی درون شبکه میریزید که ۳۰ بایت آنها دیتای اصلی یا Payload هستند.
شما میتوانید در یک شبکه پایپ به ۶ ماژول دیگر اطلاعات را ارسال کنید و از ۶ ماژول دیگر اطلاعات را دریافت کنید فقط باید دقت کنید برای هر ماژول یک آدرس ۳۲ بیتی جداگانه بگذارید.
بررسی دیتاشیت ماژول و توضیح پایههای آن:
کارکرد پایهها:
IRQ: ماژول توسط این پایه به میکرو وقفه میدهد (در حالت عادی پایه High است) و low شدن IRQ یکی از این حالتها را میرساند:(در کتابخانه فوق ازاین پایه استفاده نشده است)
۱- در گیرنده یک پکت دریافت شده است.
۲- در فرستنده پکت بهدرستی ارسالشده ACK تصدیق دریافت شد
۳- در فرستنده یک پکت چند بار ارسالشده (Retransmition) ولی تصدیقی دریافت نکرده پس عمل فرستادن اطلاعات بهدرستی انجام نشده است.
CE: همان Chip Enable است. در حالت عادی Low است وقتی بخواهیم اطلاعات را با ماژول بفرستیم یا دریافت کنیم باید این پین را High کنیم تا ماژول از مد استندبای (۱) به Active TX یا Active RX برود. میتوانید این پین را به VCC وصل کنید تا همیشه در حالت High باشد.
CSN: در ارتباط SPI بهمنظور پین CS یا SS استفاده میشود. در حالت عادی باید ۱ باشد و وقتی با SPI میخواهیم چیزی به ماژول بفرستیم باید آن را ۰ کنیم.
MOSI, MISO, CLK, CS: MOSI, MISO, CLK, CS برای ارتباط SPI هستند و به پایههای متناظرشان در میکرو MISO و MOSI بهصورت ضربدری وصل میشوند.
VCC : GND VCC و GND هم تغذیه ماژول است ماژول به ولتاژ معکوس و ولتاژ زیاد روی VCC و GND حساس است همچنین به دمای زیاد روی پایهها بهوسیله هویه حساس است (چون پایهها مستقیم به آی سی وصل است). حتماً از رگلاتور LF33 استفاده کنید و بین مثبت و منفی ماژول حتماً از خازن( ۲۲۰uf ) استفاده کنید اگر از خازن در ورودی استفاده نکنید ماژول بهدرستی کانفیگ میشود ولی زمانی که میخواهد اطلاعات را بفرستید بهکلی ریست میشود.
() void nrf24_setupPins
}
set_bit(DDRB,1); // CE output
set_bit(DDRB,2); // CSN output
set_bit(DDRB,5); // SCK output
set_bit(DDRB,3); // MOSI output
clr_bit(DDRB,4); // MISO input
{
نمونه ای از نحوه اتصال ماژول به میکرو :
شما در فایل های کتابخانه، فایل radioPinFunctions.c را باز کنید و پایه های دلخواه میکرو را برای ماژول انتخاب کنید.
پروژه شبکه سازی ماژول nrf24l01 با یک سرور و ۴ عدد کلاینت به این صورت که مدار سرور با استفاده از رابط سریال کامند هارا دریافت می کند و و از کلاینت ها درخواست دریافت اطلاعات می کند و دیتای دریافتی را به ترمینال سریال می فرستد
در این پروژه برای هر کلاینت یک سنسور دیجیتال دمای ds18b20 تعبیه شده است و همچنین برای آن قابلیت اتصال lcd نیز در نظر گرفته شده است که با استفاده از سرور هم میتوان دمای کلاینت های A,B,C,D را دریافت کرد و هم میتوان برای آن ها رنج دمایی تعریف کرد که این رنج بالا و پایین دما در حافظه ایپرام هر کلاینت ذخیره می شوند تا با قطع برق از بین نروند.
کامند های درخواست دما از کلاینت ها(به عنوان مثال کلاینت B )
*BT*
*AT* ->for get point A temp
*BT* -> for get point B temp
and more…
مقدار دما از کلاینت A توسط سرور دریافت می شود و به صورت زیر به ترمینال سریال فرستاده می شود
B_TEMP POINT=22.25C
برای تعیین رنج دمایی برای هر کلاینت کامند زیر را از طریق سریال به میکروی سرور میفرستیم و سرور رنج دمایی را روی کلاینت مورد نظر تنظیم میکند
#AU=25&D=12#
در کامند فوق عدد ۲۵ رنج بالایی دما(UP) و عدد ۱۲ رنج پایینی دما (DOWN) برای کلاینت A تعریف شده است.
تصویر مدار ساخته شده و تست شده روی برد بورد به صورت شکل زیر است:
شامل دو بخش سرور و کلاینت است.
ال سی دی را به صورت دلخواه میتوان به کلاینت ها متصل کرد.
کلاینت شماره ۴ نیز تست شده است.
همانطور که در تصویر بالا میبینید از ال سی دی کاراکتری و میکرو مگا ۳۲ و ماژول NRF24L01 و رگولاتور ۳٫۳ ولت برای بخش سرور استفاده شده است و برای بخش کلاینت نیز از میکروی مگا ۸ و سنسور دمای DS18B20 و ال سی دی کاراکتری اختیاری استفاده شده است و همچنین برنامه به زبان سی در کامپایلر کدویژن نوشته شده است و برای شماتیک نیز فایل پروتئوس در داخل فایل های پروژه قرار دارد.
برای خرید فایل های پروژه میتوانید از طریق زیر اقدام کنید:
سلام این کتابخانه در اتمل استودیو هم کار میکنه؟
بله در هرجایی به راحتی میتونید استفاده کنید
سلام.
شما برای شبکه سازی ماژول nrf کتابخانه مجزا تهیه کردید؟
من فایل کدویژن شبکه سازی ماژول nrf را لازم دارم که گویا لینک خرید و دانلود شما خراب است لطفا راهنمایی کنید از کجا می توانم خریداری کنم؟
سلام، بله این فایل فرق میکنه با اون کتابخونه آماده کدویژن، به راحتی قابل اجرا و شبکه سازی هست، اگر لینکی مشکل داره میتونید به تلگرام من پیام بدید
@microdroidprj
با سلام . مهندس شما کتابخانه ای برای شبکه سازی تعداد زیادی nrf با استفاده از وقفه برای کدویژن دارین.
در صورت امکان چه جوری میتونم تهیه کنم
سلام . لینک دانلود خرابه؟
سلام نه خراب نیست اما قعطی موقت هاست دانلود پیش میاد . اگر مشکلی برای دانلود داشتید میتونید در تلگرام یا واتساپ با من در ارتباط باشید