تحلیل کتابخانه

تحلیل و بررسی کتابخانه LoRa.h

نوشته شده توسط معین صابری

ماژول های لورا، یکی از پرکاربردترین ماژول های مخابراتی بیسیم در زمینه اینترنت اشیا به شمار می روند. سادگی در راه اندازی، توان مصرفی مناسب و برد بالا سبب شده که این ماژول در طراحی سیستم های مبتنی بر فناوری اینترنت اشیا، مورد توجه طراحان این حوزه قرار گیرد. ماژول های لورا معمولا از پروتکل SPI جهت ارتباط با میکروکنترلرها بهره می برند. از  همین جهت، این ماژول ها با بردهای آردوینو نظیر UNO و MEGA سازگار هستند. جهت راه اندازی و کار با این ماژول های مخابراتی، کتابخانه های بسیار توسعه یافته اند. به لطف وجود کتابخانه های لورا، راه اندازی و کار با این ماژول ها، تسهیل و تسریع می گردد. پیشتر در این آموزش(لینک آموزش، کلیک کنید) همکارم طی یک پروژه، ارتباط بین برد رزبری پای و آردوینو را از طریق ماژول لورا Lora فراهم نموده است. در این آموزش، همانند سلسله آموزش های تحلیل کتابخانه، به تشریح و تحلیل توابع کتابخانه LoRa.h می پردازیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


نصب کتابخانه LoRa.h


اولین قدم در استفاده از یک کتابخانه، نصب آن در محیط آردوینو است. برای نصب کتابخانه، دو روش دستی و خودکار وجود دارد. در روش دستی، پس از دانلود فایل های کتابخانه، می بایست آن را در مسیر نصب آردویینو قرار دهید. اما در روش خودکار، تنها با تایپ نام کتابخانه در قسمت مدیریت کتابخانه ها، کتابخانه مورد نظر به صورت خودکار در مخازن آردوینو جستجو شده و پس از یافتن آن، نصب خواهد شد. به همین منظور، ابتدا مطابق تصویر زیر، در نرم افزار آردوینو، بر روی گزینه Tools و سپس Manage Libraries کلید کنید.

روش نصب کتابخانه در آردوینو Arduino - دیجی اسپارک

 

با کلیک بر روی گزنیه Manage Libraries، می توانید وضعیت کتابخانه های نصب شده و لیستی از کتابخانه های جدید و بروز را مشاهده کنید. این مورد در تصویر زیر، قابل مشاهده است.

دانلود کتابخانه LoRa.h - دیجی اسپارک

 

مطابق فلش قرمز رنگ تصویر فوق، در کادر جستجو، با تایپ نام کتابخانه، می توان آن را یافته و سپس نصب نمود. در اینجا ما عبارت “LoRa.h” را تایپ می کنیم. پس از چند لحظه، تعداد زیادی از کتابخانه های مخصوص لورا مطابق زیر نمایش داده می شود.  مطابق کادر قرمز رنگ، کتابخانه لورا که توسط “Sandeep Mistry” توسعه یافته است را با کلیک بر روی عبارت install، کتابخانه نصب نمایید.

دانلود کتابخانه لورا Lora.h آردوینو - دیجی اسپارک

 

پس از اینکه کتابخانه با موفقیت نصب شد، نوبت به استفاده از آن می رسد. به همین منظور، ابتدا به بررسی الزامات فنی و بردهای مورد پشتیبانی کتابخانه LoRa.h می پردازیم. پس از آن، به معرفی توابع کلیدی و کاربردی پرداخته و در نهایت با ارائه مثالی، به نحوه استفاده از توابع در پروژه های عملی خواهیم پرداخت.

 


نکات فنی کتابخانه LoRa.h


کتابخانه LoRa مورد بحث این آموزش، برای ماژول های مخابراتی لورا، تحت تکنولوژی سری های زیر، قابل استفاده است.

  • SX1276
  • SX1277
  • SX1278
  • SX1279

با توجه به سری ماژول های یاد شده، این کتابخانه با یکی از پرکاربردترین ماژول های لورا، LoRa RA-02 سازگاری کامل دارد. از طرف دیگر، با توجه به استفاده این کتابخانه از پورت SPI سخت افزاری، می توان از آن در بردهای آردوینو نظیر UNO، بهره گیری نمود. در ادامه، جهت افزایش برد ماژول های لورا، می توانید از آنتن های مناسب آن استفاده نمایید. همچنین در هنگام راه اندازی، جهت اطمینان بیشتر، حتما تمام پایه های GND ماژول، به GND تغذیه متصل گردند. در نهایت، جهت اتصال ماژول لورا Lora به آردوینو، به شکل زیر عمل کنید.

جدول اتصالات ماژول لورا به برد آردوینو - دیجی اسپارک

پس از بررسی نکات و الزامات، نوبت به معرفی و تحلیل توابع کتابخانه می رسد. بنابراین، در قسمت بعدی، به معرفی توابع پرداخته و در نهایت ضمن ارائه مثالی از نحوه کاربرد، به بحث خاتمه خواهیم داد.

 


توابع کلیدی کتابخانه LoRa.h


پس از بررسی الزامات و نکات فنی، نوبت به بررسی توابع کلیدی کتابخانه لورا می رسد. جدول زیر، لیستی از مهم ترین توابع این کتابخانه را نمایش می دهد. در نظر داشته باشید که در این جدول، ورودی های توابع از سمت چپ به راست، ورودی اول، ورودی دوم، ورودی سوم و… نام گذاری می شوند.

تابع ورودی ها شرح
int begin(long frequency) ورودی از نوع long جهت تعیین فرکانس کاری ماژول این تابع به راه اندازی اولیه ماژول با فرکانسی که در ورودی قرار گرفته، می پردازد.
  void end() بدون ورودی خاتمه دادن به روند ارسال و دریافت
int beginPacket() بدون ورودی آماده سازی جهت ارسال

خروجی این تابع، در صورتیکه ماژول در حال ارسال باشد ۰ و در غیر اینصورت ۱ خواهد بود.

int endPacket() بدون ورودی خاتمه ارسال داده

توجه: این تابع ممکن است کمی زمانبر شود. زمانیکه با موفقیت اجرای تابع به پایان رسید، خروجی ۱ تولید خواهد شد.

print(data)

 

ورودی از انواع مختلف کتابخانه LoRa.h در حقیقت یک کلاس است. این کلاس، از متدهای کلاس Stream استفاده می نماید. بنابراین دو تابع print و write در این کتابخانه قابل استفاده هستند. به کمک این توابع می توانیم داده ها را ارسال نماییم.
int parsePacket() بدون ورودی این تابع حجم داده دریافتی را در خروجی خود قرار می دهد.
int available() بدون ورودی در صورتیکه داده های دریافت شود، خروجی این تابع غیر از بزرگتر از صفر خواهد بود. این
int read() بدون ورودی به کمک این تابع می توانیم داده های دریافت شده را بخوانیم. توجه کنید که برای دریافت از نوع کاراکتر، حتما خروجی این تابع را به character، تبدیل(cast) نمایید.

 

 


اجرای نمونه برنامه جهت ارسال داده ها


پس از معرفی توابع کلیدی و کاربردی کتابخانه LoRa، نوبت به اجرای یک نمونه برنامه کاربردی می رسد. در این قسمت، یک برنامه جهت ارسال داده ها را مشاهده می نمایید. در این برنامه، متغیر counter هر بار یک واحد افزایش یافته و سپس ارسال می شود.

#include <SPI.h>   //کتابخانه SPI
#include <LoRa.h>   //کتابخانه LORA

int counter = 0;   // این متغیر هر دفعه یک واحد افزایش یافته و سپس ارسال می شود

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Sender");

  if (!LoRa.begin(433E6)) {     //آماده سازی و راه اندازی لورآ توجه:از آنجاییکه فرکانس کاری ماژول lora-a02 بین ۴۱۰ الی ۵۲۵ مگاهرتز است، در اینجا برای تعیین فرکان ابتدا فرکان سمورد نظر و سپس عدد 
                                 //E6 برای فرکانس تعیین می شود
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  // send packet
  LoRa.beginPacket();   //آماده سازی جهت ارسال پکت(داده)
  LoRa.print("hello ");   //ارسال پیغام متنی 
  LoRa.print(counter);   //ارسال متغیر عددی
  LoRa.endPacket();   //خاتمه ارسال جهت آماده سازی برای ارسال در دفعات بعدی

  counter++;

  delay(5000);
}

 

 


اجرای نمونه برنامه جهت دریافت داده ها


پس از بررسی یک نمونه برنامه جهت ارسال، نوبت به اجرای یک نمونه برنامه جهت دریافت داده ها می رسد. در این این برنامه، داده ها به کمک تابع read دریافت و در سریال مانیتور، نمایش داده می شوند.

#include <SPI.h>   //فراخوانی کتایخانه SPI جهت ارتباط با ماژول لورا
#include <LoRa.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(433E6)) {    //نظیم فرکانس کاری ماژول همانند حالت فرستنده
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();    //بررسی میزان حجم داده های دریافتی
  if (packetSize) {   //در صورتیکه داده دریافت شود، حجم غیر از صفر خواهد بود. بنابراین برنامه وارد شرط می شود
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {    //تا زمانیکه داده جهت دریافت وجود دارد.
      Serial.print((char)LoRa.read());   //دریافت و نمایش داده ها
    }
  }
}

 


وسایل مورد نیاز


ماژول لورا LORA-RA02

برد آردوینو UNO

 


جمع بندی


در این آموزش به بررسی کتابخانه LoRa.h جهت کار با ماژول های مخابراتی لورا پرداختیم. ماژول های لورا، یکی از پرکاربردترین ابزارها جهت ارسال و دریافت بی سیم داده ها به شمار می روند. این ماژول ها که در فرکانس های مختلفی تولید و عرضه می شوند، قادرند تا داده ها را به صورت بی سیم و با بردهای بالا، ارسال نمایند. برای راه اندازی و کار با این ماژول ها، کتابخانه های متعددی توسعه یافته که در این آموزش به شرح، معرفی و الزامات کار با آن پرداختیم. از آنجاییکه رکن اصلی هر کتابخانه توابع آن به شمار می رود، در این آموزش ضمن معرفی توابع کلیدی، دو برنامه کامل جهت دریافت و ارسال داده ها، ارائه گردید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۶ دیدگاه

  • سلام وقتتون بخیر.من قایل ها رو روی دونا سیستم اپلود کردم بخش سندر کامل کار میکنه ولی بخش رسیور داخل سریال ماتنیور هیچی نشون نمیده انگار دریافت نمیکنه
    حتی انتن هم وصل کردم جای سندر و رسیور رو عوض کردم ولی باز هم بخش رسیور هیچی نمایش نمیده
    ممنون میشم راهنمایی کنید

    • با سلام
      کاربر گرامی این آموزش در خصوص کتابخانه لورا است. با توجه به اینکه نسبت به بردهای شما و روش راه اندازی شما اطلاعی نداریم. طبیعتا امکان راهنمایی هم فراهم نیست.

      • سلام سیم بندی ها دقیقا شبیه به توضیحات بالا بود و ماژول هم همینطور و اردوینو هم از UNO استفاده کرده ایم