من به دنبال راهی برای مدیریت ارتباطات بی سیم بین دو برد آردوینو بودم . گزینههای دیگر مانند Xbee یا بلوتوث ۵۰ تا بیش از ۱۰۰ دلار قیمت داشتند. سپس یک فرستنده و گیرنده RF ارزان در Sparkfun پیدا کردم . هزینه کل فقط 9 دلار است!
در اینجا چند محدودیت برای راه حل RF وجود دارد:
- ارتباطات تنها یک راه است. اگر می خواهید ارتباطات دو طرفه داشته باشید، باید دو گیرنده و دو فرستنده بخرید که هزینه را به 18 دلار افزایش می دهد. این هنوز هم ارزان تر از راه حل های دیگری است که من پیدا کردم.
- بهره متغیر روی گیرنده باعث می شود که نویز پس زمینه زیادی دریافت کند. من مجبور شدم با آردوینو پردازشی انجام دهم تا این نویز را فیلتر کنم. جزئیات بیشتر در مورد این در زیر در بخش کد.
- حداکثر پهنای باند 2400 bps است، اما نسخه ای با 4800 bps وجود دارد. بخش بزرگی از این پهنای باند برای پروتکل شبکه ای که نوشتم استفاده می شود که تشخیص خطا را کنترل می کند.
- برد به حداکثر 500 فوت محدود شده است.
مزایای آن ارزان بودن و استفاده از آن بسیار آسان است.
در زیر برخی از تصاویر نشان می دهد که چگونه گیرنده و فرستنده را به دو برد مختلف آردوینو وصل کردم. هنگام سیمکشی گیرنده/فرستنده فقط نیاز دارید که به آنها برق/زمین بدهید و سپس یک پین برای پین TX (فرستنده سریال) یا RX (دریافت سریال). من همچنین یک دکمه را به آردوینو که کار انتقال را انجام می دهد سیم کشی کردم و از LED روی پایه 13 که در بردهای آردوینو من روی گیرنده تعبیه شده است استفاده کردم تا بتوانم این تنظیمات را آزمایش کنم. وقتی دکمه ای روی برد فرستنده فشار داده می شود، برنامه آزمایشی فقط دکمه ای را روی برد گیرنده چشمک می زند.
کد
از آنجایی که گیرنده دائماً نویز تصادفی را دریافت می کند، من چند بایت اضافی به هر بسته داده اضافه می کنم. من دو بایت اضافه می کنم تا نشان دهنده شروع یک بسته داده باشد. سپس آدرس یک بایت را می فرستم. این آدرس به چندین دستگاه اجازه می دهد تا در یک منطقه بدون تداخل با یکدیگر کار کنند. بعدی داده است (در کد مثال من این یک int بدون علامت (2 بایت) است. در نهایت من یک چکسوم ارسال میکنم که یک xor ساده از تمام بایتهای داده است تا مطمئن شوم که دادهها بدون خراب شدن دریافت شدهاند.
کد آردوینو را به دو فایل تقسیم کردم. اگر تا به حال از دو فایل با آردوینو استفاده نکرده اید، تنها کاری که باید انجام دهید این است که هر دو فایل را در یک دایرکتوری نگه دارید و Arduino IDE آنها را برای شما ادغام می کند. در اینجا کد کامل برنامه اصلی است و در اینجا کد کاملی است که خطای شبکه را می گیرد .
برای جزئیات بیشتر: پیوند رادیویی بین دو برد آردوینو
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
I was looking for a way to handle wireless communications between two Arduino boards. Other options like Xbee or Bluetooth were going to cost $50 to over $100. Then I found a cheap RF transmitter and receiver at Sparkfun. The total cost is only $9!
Here are a few limitations to RF solution: