پروژه ماژول ارتباطی وایرلس Nrf توسط stm32
با سلام خدمت همه دوستان
در این مطلب قصد دارم پروژه ارتباط کامل و دو طرفه nrf رو با stm32 خدمت دوستان معرفی کنم.
در این پروژه که من بخش ارتباط nrf رو توسط دو میکرو stm32f103c8t6 روی برد بورد انجام میدم و نحوه عملکرد برنامه و مدار رو خدمتتون عرض میکنم.
و در نهایت یک برد صنعتی طراحی کردم و این سورس کد را گسترش دادم و عملکردی بسیار پایدار دارد.
چند نکته:
-این ماژول ها قابلیت شبکه سازی نیز دارند.
-شما اگر یک فرستنده داشته باشید و چند گیرنده با ادرس یکسان، همه گیرنده ها به یک زمان دیتا را از فرستنده دریافت میکنند.
-شما اگر یک گیرنده داشته باشید و چندین فرستنده، گیرنده در یک زمان فقط از یک فرستنده دیتا دریافت میکند.
-برنامه فرستنده چند بار سعی میکند دیتا را بفرستد و گیرنده اگر دیتا را دریافت کند فرستنده مجدد دیتا میفرستد اگر گیرنده خاموش شود یا از کار بیفتد،برنامه فرستنده در وایل متوقف میشود تا زمانی که گیرنده فعال شود و دیتارا دریافت کند.
اگر فرستنده به مشکل بخورد و خاموش شود برنامه گیرنده در وایل متوقف میشود و منتظر دیتا میماند.
اگر خوده ماژول nrf خراب باشد یا در محل به درستی نصب نشده باشد کد به صورت فری ران میشود، در صورتی که فقط برد تکی روشن است یعنی فرستنده یا گیرنده به صورت تکی روشن است نباید کد حلقه وایل به صورت فری ران شود.
برای تست این کار یک led در وایل تاگل کنید، میتوانید از طریق آن متوجه شوید که ارتباط میکرو تا nrf به درستی برقرار است یا خیر، که من در کد پیوستی این مورد را در نظر گرفته ام.
جهت راه اندازی ماژول های nrf از پروتکل spi استفاده می شود(واحد spi سخا افزاری یا نرم افزاری)
ارتباط SPI :
ارتباط SPI یک روش ارتباط سنکرون درون خطی است و توسط تعدادی از دستگاهها از جمله سنسورها، نمایشگرهای TFT، توسعه دهنده GPIO، کنترل کننده PWM، تراشههای حافظه، دستگاه های پشتیبانی افزونه و غیره استفاده میشود.
همیشه یک مستر در باس ارتباطی SPI وجود دارد که کلاک را تولید میکند و slave ها را انتخاب میکند. مستر دستورات را به slave ها میفرستد و slaveها به دستورات ارسالی از طرف مستر پاسخ میدهند. تعداد slave ها در باس SPI نامحدود است. به جز پین انتخاب تراشه، تمامی دستگاههای SPI در یک باس میتوانند کلاک و پینهای اطلاعاتی مشابه را به اشتراک بگذارند.
باس SPI دوبلکس به چهار پین ورودی / خروجی نیاز دارد:
- (Master-Out-Slave-In (MOSI متصل به (Slave-Data-In (SDI.
- (Master-In-Slave-Out (MIS0 متصل به (Slave-Data-Out (SD0.
- سریال کلاک (SCLK) متصل به (Clock Slave (SCK.
- (Slave Select (SS متصل به (Chip Select (CS.
نحوه ارتباط واحد spi به صورت زیر است:
و نحوه تبادل دیتا و خط کلاک در واحد spi به صورت زیر است:
از انجایی که ارتباط spi قابلیت شبکه شدن را دارد یعنی میتوان تعداد زیادی اسلیو را به یک مستر متصل کرد و نحوه ارتباط هم به دو صورت است
۱- در همه اسلیو ها یک پایه به نام ss قرار دارد و هر زمان مستر بخواهد با اسلیو تبادل دیتا کند باید ان پایه را صفر کند،به صورت زیر :
۲-همه پین ها ss را بهم وصل میکنیم و توسز مستر زمین میکنیم در این حالت اگر مستر دیتایی بفرستد همه دریافت میکنند اما یک id برای هر اسلیو تعریف میکنیم که مستر با ان id اسلیو هارا صدا میزند ،به صورت زیر :
نحوه تبادل دیتا نیز به صورت شکل زیر است :
در مورد نحوه کار و عملکرد ماژول های nrf اینجا توضیح دادم.
مدار بسته شده روی برد بورد به صورت شکل زیر است:
کد به این صورت است که در بخش فرستنده دو ارایه وجود دارد که در وایل با یک تاخیری منظم ارسال می شوند و در بخش گیرنده دیتا دریافت می شود و از طریق یوزارت یک به مبدل ارسال و سپس در ترمینال یوزارت در لبتاب نمایش داده می شود.
در ارتباط دهی nrf ها هیچ فرقی از لحاظ راه اندازی بین ماژول های دارای انتن و بدون انتن وجود ندارد.
ویدئو عملکرد مدار به صورت زیر است:
برنامه فرستنده و گیرنده به زبان سی در کامپایلر کیل نوشته شده است.
همچنین از نرم افزار کیوب و توابع هال بهره گرفته شده است.
کد بسیار پایدار و به راحتی قابل ارتقا است و میتوانید در پروژه های صنعتی خود از آن استفاده کنید.
تصویری از مدار گیرنده و فرستنده طراحی شده توسط التیوم و میکروی stm32
فرستنده و گیرنده دارای مدار شارژ و دشارژ باتری و قابلیت پیامک.
جهت تهیه سورس کد میتوانید از طریق لینک زیر اقدام کنید.
در صورت داشتن هرگونه سوال میتوانید به تلگرام بنده مراجعه کنید.
شاد و سربلند باشید.
مطالب پیشنهادی :