فناوری LoRa (Long Range) به عنوان راهی قدرتمند و سریع برای ارتباطات در فواصل بلند در اینترنت اشیا (IoT) استفاده میشود. قابلیت فراهم کردن یک اتصال پایدار در فواصل چند کیلومتری با مصرف کمینه انرژی، استفاده از این فناوری را ایدهآل میکند.
در این پست آموزشی، قصد داریم با استفاده از فناوری لورا و پروتکل LoRaWAN بین دو برد Arduino Uno و MKR WAN 1300 اتصال ایجاد کنیم.
MKR WAN 1300 از خانواده MKR هاست که با مجهز بودن به یک ماژول LoRa و قابلیت پشتیبانی از پروتکل LoRaWAN بهطور خاص برای ارتباطات در فواصل بلند طراحی شده، درحالی که آردوینو Uno به عنوان یک میکروکنترلر چند منظوره عمل میکند و برای برقراری ارتباط لورا نیاز به یک ماژول خارجی LoRa دارد.[2]
در ادامه این پست، به اصول اساسی فناوری LoRa، درک چگونگی کارکرد ارتباط LoRa به کمک پروتکل LoRaWAN و سپس به راهاندازی یک اتصال اولیه لورا بین آردوینو Uno و MKR WAN 1300 میپردازیم، که به آنها امکان تبادل دادهها را به صورت بیسیم در فواصل بلند را میدهد.
چگونگی کارکرد ارتباط LoRa:
اتصال لورا یا “اتصال بلندبرد”، یک فناوری ارتباطات بیسیم است که برای ارسال و دریافت دادهها در فواصل بلند استفاده میشود. این فناوری از فرکانسهای رادیویی با پهنای باند پایین استفاده میکند که به ارسال داده در فواصل بلند کمک میکند. در واقع، با استفاده از فناوری LoRa، میتوان دادهها را تا برد چند کیلومتری و با مصرف بسیار کم انرژی ارسال و دریافت کرد. شکل کلی کارکرد این فناوری به صورت زیر است.[3]
راهاندازی ارتباط LoRa بین دو برد آردوینو:
همانطور که پیشتر اشاره شد، در این بخش به نحوه راهاندازی ارتباط LoRa بین دو برد Arduino Uno و MKR WAN 1300 با استفاده از پروتکل LoRaWAN میپردازیم.
از آنجایی که Arduino Uno از ارتباط LoRa پشتیبانی نمیکند، برای ایجاد این ارتباط نیاز به یک ماژول خارجی LoRa داریم. در این پست از LoRa Shield v1.4، که تصویر آن را در زیر مشاهده میکنید، برای این منظور استفاده شده.[5]
نحوه اتصال این شیلد به برد Uno به صورت زیر است. این شیلد به طور کامل برروی Uno سوار میشود و اغلب دارای یک آنتن نیز هست.
پس از اتصال شیلد به Uno نوبت به آپلود کد بر روی بردها و دریافت خروجیست. در این پست از برد WAN 1300 برای ارسال داده و از Uno به عنوان دریافت کننده استفاده میشود. کدهای استفاده شده به همراه خروجی به صورت زیر هستند:
ارسال کننده:
این کد با استفاده از پروتکل LoRaWAN داده “hello” را به برد Uno میفرستد. [1]
برای آپلود کد بر روی برد به صورت زیر عمل میکنیم:
- از اتصال شیلد به برد اطمینان حاصل میکنیم.
- کتابخانه مورد نیاز که در اینجا LoRa میباشد را از طریق Sketch> Include Library> Manage اضافه میکنیم(کتابخانه SPI به صورت پیش فرض بر روی Arduino IDE نصب شده است)
- پکیج مربوط به برد (SAMD) MKR را از مسیر Tools> Board< Board Manager نصب میکنیم.
- کد را بر روی برد آپلود میکنیم.
دریافت کننده:
این کد نیز با استفاده از پروتکل LoRaWAN داده فرستاده شده از طرف WAN 1300 را دریافت میکند.[4]
خروجی دریافت شده:
منابع:
1) Karl Söderby. Send Data Using LoRa® with MKR WAN 1300. Arduino docs. Weblog. Available from: https://docs.arduino.cc/tutorials/mkr-wan-1300/lora-send-and-receive/ [accessed 28th Feb 2024]
2) Arduino Docs. MKR WAN 1300. Arduino docs. Weblog. Available from: https://docs.arduino.cc/hardware/mkr-wan-1300 [accessed 28th Feb 2024]
3) Lora Alliance. What is LoRaWAN Specification. Lora alliance. Weblog. Available from: https://lora-alliance.org/about-lorawan/ [ accessed 1st Mar 2024]
4) Arduino. SPI. Arduino. Weblog. Available from: https://www.arduino.cc/reference/en/language/functions/communication/spi/ [accessed 3rd Mar 2024]
5) Dragino. LoRa shield v1.4 schematic. Github. Weblog. Available from: https://github.com/dragino/Lora/blob/master/Lora%20Shield/hardware/v1.4/Lora%20Shield%20v1.4.sch.pdf [accessed 15th Mar 2024]