Menguji modem radio LoRa / LoRaWAN RN2483. Bagian 1, LoRa

Salah satu teknologi "Internet of Things" yang menarik adalah jaringan LoRa / LoRaWAN, tetapi dalam Runet mereka praktis tidak dijelaskan. Sudah waktunya untuk mengisi celah ini, dan yang lebih menarik untuk mencoba "hidup" cara kerjanya.



Apa itu LoRa?


Ini adalah teknologi komunikasi Jarak Jauh Semtech yang diimplementasikan dalam chip SX1272 dan SX1276. LoRa adalah protokol tingkat rendah di mana protokol tingkat yang lebih tinggi seperti LoRaWAN dapat diimplementasikan.

Fitur standar LoRa adalah transmisi paket data kecil dengan konsumsi daya yang rendah. Menurut pabrikan, jangkauan di udara terbuka bisa mencapai 10 km, dan masa pakai baterai bisa beberapa tahun. Frekuensi pengoperasian berbeda-beda di setiap negara dan 433 atau 868 MHz (versi UE) atau 915 MHz (versi AS).

Bagaimana cara kerjanya? Detail di bawah potongan.

Untuk pengujian, modul RN2483 dipilih. Mereka bagus karena mudah diprogram dan mendukung mode operasi yang berbeda. RN2483 berisi chip SX1276 dan pengontrol di satu rumah, dikendalikan oleh perintah UART, yang memungkinkan Anda untuk menghubungkannya ke perangkat apa pun (PC, Arduino, mikrokontroler, dll.). Anda dapat membeli modul tanpa pengikat, lebih murah, tetapi terlalu malas untuk disolder, jadi satu set beberapa papan siap pakai dipesan di eBay.

Ini memungkinkan Anda untuk menyambungkan modul ke PC melalui USB, dan ke perangkat apa pun.

Transfer data


Program Python sederhana ditulis untuk transfer:
Kode sumber
import serial
from time import sleep

def deviceSend(device, cmd):
        try:
	  print cmd
          device.write(cmd + "\r\n")
          line = device.readline()
          if line is not None and len(line) > 0: 
            r = line.decode('utf-8').strip()
            print "> " +r        
            return
        except Exception as e:
	  pass

if __name__ == "__main__":
  port = serial.Serial(port="COM20", baudrate=57600, timeout=5)
  deviceSend(port, "sys reset")
  sleep(2)
  deviceSend(port, "mac pause")
  deviceSend(port, "radio set freq 868000000")
  # Output power, -3..15
  deviceSend(port, "radio set pwr -3")
  deviceSend(port, "radio set mod lora")
  # sf12, sf7  
  deviceSend(port, "radio set sf sf7")
  # Bandwidth: with 125KHz the sensitivity is better but time on air is longer. Chip is capable from 125KHz to 500KHz.
  deviceSend(port, "radio set bw 125")
  deviceSend(port, "radio tx 0123456789")
  sleep(0.5)                             
  line = port.readline()
  print line.strip()
  deviceSend(port, "mac resume")


Kami akan menganalisis parameter utama secara lebih rinci.
pwr - power, dapat bervariasi dalam rentang
frekuensi -3..15dB - frekuensi transmisi
mac pause - menonaktifkan mode lorawan, mode transfer antara dua perangkat diaktifkan (p2p)
tx - paket data
mod - jenis modulasi. 2 jenis tersedia, lora atau fsk. bandwidth spektrum
bw , bisa 125, 250, 500KHz.
sf - spread factor, mempengaruhi durasi transmisi.
Seperti inilah spektrumnya dengan sf7 dan sf12 dengan jumlah data yang sama.


Seperti yang Anda lihat, data ditransmisikan dalam blok pendek. Ukuran paket maksimum tidak lebih dari 255 byte, setelah transmisi selesai, modem menerima konfirmasi bahwa data telah dikirim.

Penerimaan data


Untuk penerimaan, perlu untuk mengatur parameter yang sama seperti untuk transmisi, jika tidak, modem tidak akan "mendengar" satu sama lain. Kode diberikan di bawah ini, program dalam loop tanpa akhir "mendengarkan" data pada port serial.

Kode sumber
import serial
from time import sleep

def deviceSend(device, cmd):
        try:
	  print cmd
          device.write(cmd + "\r\n")
          line = device.readline()
          if line is not None and len(line) > 0: 
            r = line.decode('utf-8').strip()
            print "> " +r        
            return r
        except Exception as e:
	  pass
        return ""

if __name__ == "__main__":
  port = serial.Serial(port="COM20", baudrate=57600, timeout=5)
  deviceSend(port, "sys reset")
  sleep(2)
  deviceSend(port, "mac pause")
  deviceSend(port, "radio set freq 868000000")
  # Output power, -3..15dB
  deviceSend(port, "radio set pwr -3")
  deviceSend(port, "radio set mod lora")
  # sf12, sf7  
  deviceSend(port, "radio set sf sf7")
  # Bandwidth: with 125KHz the sensitivity is better but time on air is longer. Chip is capable from 125KHz to 500KHz.
  deviceSend(port, "radio set bw 125")
  # WDT: 5s wait for each data
  deviceSend(port, "radio set wdt 5000")

  print "Start listening"
  try:
     while True:
       ans = deviceSend(port, "radio rx 0")
       if ans == "ok":
         r = port.readline().strip()
         if r != "err" and len(r) > 0:
           print "> " + r
	 # We need time to prepare RN2483 for the next receiving
         sleep(0.1)

  except KeyboardInterrupt:
     pass

  deviceSend(port, "mac resume")


Seperti yang Anda lihat, semuanya sederhana, dan menggunakan modem tidak berbeda dari transmisi port serial lainnya. Kode program (dengan sedikit perbaikan) diluncurkan pada Raspberry Pi, penerimaan data dapat dilihat di layar.


Ada banyak perintah berbeda untuk mengonfigurasi RN2483; perintah ini dapat ditemukan di PDF "Panduan Pengguna Referensi Modul Modul Perintah Teknologi RR2903". Untuk penilaian perkiraan hasil, Anda juga dapat mengunduh program Kalkulator Semtech Lora , yang memungkinkan Anda untuk memasukkan pengaturan yang berbeda (lebar spektrum, frekuensi, dll.) Dan melihat hasilnya - bit rate, konsumsi saat ini, masa pakai baterai.

Sebagai contoh, waktu operasi yang dijanjikan dari chip SX1276 dari baterai 1000mAh akan menjadi sekitar 30 hari ketika ditransmisikan dalam blok 8 byte dengan interval 100 detik dan kekuatan 10dBm.

Untuk pemeriksaan jangkauan praktis, salah satu modem ditinggalkan di apartemen dekat jendela, yang kedua terhubung ke Raspberry Pi dan dibawa keluar ke jalan. Beberapa sumber menjanjikan jarak sekitar 3 km di daerah perkotaan. Hasilnya, sayangnya, tidak begitu baik: dalam praktiknya, pada daya maksimum dan antena pada 868 MHz, sinyal sudah benar-benar teredam setelah sekitar 3 bangunan apartemen. Tentu saja, di tempat-tempat terbuka, kisarannya lebih tinggi, tetapi perlu "berbelok", karena sinyal menghilang dengan sangat cepat. Secara umum, hasil 3km di kota mungkin dapat diperoleh hanya jika Anda menempatkan antena di menara TV, Anda benar-benar dapat mengandalkan 300m terbaik. Tapi ini tidak terlalu buruk, mengingat daya yang rendah dari sinyal yang ditransmisikan.

Harga masalah


Informasi untuk mereka yang ingin mengulangi eksperimen atau menggunakan LoRa dalam desain mereka. Harga set 2 modem rn2483 siap pakai di eBay adalah 80EUR. Secara terpisah, modul dengan SX1276 yang disolder dapat dibeli dari penjual dari China seharga $ 12 dengan pengiriman gratis. Chip SX1276 tanpa strapping dapat dibeli di sana dengan harga $ 9 (kode yang dijelaskan dalam artikel ini hanya cocok untuk RN2483, ketika menggunakan chip SX1276, itu harus diprogram pada tingkat yang lebih rendah).

Kesimpulan


Perangkat LoRa adalah solusi mudah dan siap pakai untuk transmisi data kecepatan rendah dalam jumlah kecil dengan jarak yang relatif besar (ratusan meter-kilometer). Perangkat LoRa dioptimalkan untuk konsumsi daya yang rendah, yang memungkinkannya digunakan dengan menggunakan baterai atau akumulator (namun, biaya untuk ini adalah tingkat transfer data yang rendah). Misalnya, jika seorang petani ingin menampilkan suhu di rumah kaca pada tampilan rumah, ini akan menjadi aplikasi yang hampir ideal untuk LoRa - sejumlah kecil data, jarak yang jauh dan visibilitas langsung ke objek. Modem juga dapat digunakan di ruangan besar - hangar, pabrik, di mana sulit atau mahal untuk menarik kabel ke sensor, dan volume data kecil. Dimungkinkan untuk digunakan di rumah,sensitivitas modul yang tinggi akan memungkinkan penggunaan antena pendek sekalipun dalam bentuk "zigzag" pada papan sirkuit tercetak. Di kota ini, kualitas komunikasi akan sangat tergantung pada keberadaan jarak pandang radio antara antena, ketinggian antena, dll. Banyak sekarang sangat terinspirasi oleh kemampuan jaringan LoraWAN "global", namun, masalah penempatan antena akan sangat penting untuk jangkauan dalam jaringan seperti itu. Namun, ini berlaku untuk sistem transmisi radio, sehingga keajaiban tidak terjadi di sini.ini berlaku untuk sistem transmisi radio mana pun, sehingga keajaiban tidak terjadi di sini.ini berlaku untuk sistem transmisi radio mana pun, sehingga keajaiban tidak terjadi di sini.

Bagian selanjutnya akan berbicara tentang menghubungkan RN2483 ke jaringan LoRaWAN.

Informasi lebih lanjut dapat ditemukan di tautan:
- Datasheet RN2483
ww1.microchip.com/downloads/en/DeviceDoc/40001784B.pdf
- FAQ LoRa
www.link-labs.com/lora-faqs
- Semtech SX1272
www.semtech.com/wireless -rf / rf-transceivers / sx1272
- Semtech LoRa Calculator
www.semtech.com/apps/filedown/down.php?file=SX1272LoRaCalculatorSetup1%271.zip

Perpustakaan untuk bekerja dengan RN2483 di Raspberry Pi dan Arduino dapat ditemukan di github.

Source: https://habr.com/ru/post/id398229/


All Articles