lora sx1278 esp32 модулі дисплейі

lora sx1278 esp32 модулі дисплейі
жеке
блог

әл-Фараби атындағы Қазақ Ұлттық университеті, Ақпараттық технологиялар факультеті, Жасанды интеллект және Big Data кафедрасының меңгерушісі Мансурова М.Е. және аға эдвайзер Сакыпбекова М.Ж. бастамасымен екі апталық стажировка өтті. Бизнес аналитика және Big Data мамандығының 2 курс магистранты Тұрғынбек С.М. төмендегі құралдарды пайдаланып, лабораториялық жұмыс жасады. Lora SX1278 Esp32

 

Керекті құралдар:

2-Lora SX1278 Esp32

антена

Блок питания - 5А

Lora SX1278 Esp32--ESP-32, 240МГц екі ядролы процессордағы жаңа өңдеу, қуаты 600 DMIPS дейін, 520KB SRAM бортына дейін, 802.11 B / G / N HT40 Wi-Fi трансивер, базалық жолақ, стек протоколы және LwIP, интеграцияланған Bluetooth қос режимі ( дәстүрлі bluetooth және BLE төмен қуатты bluetooth). Бұл өнім Wi-Fi Kit 32-ге негізделген.

 

1. Lora SX1278 Esp32 ды кондыру.

 

1.1. Ардуино қондыру

https://biblprog.org.ua/ru/arduino_ide/

 

1.2. Lora SX1278 Esp32 – ды ашып, керекті операциялық жүйені таңдау

,

1.3. Lora SX1278 Esp32 жіберуші мен қабылдаушыны анықтау, қондыру.

 

2.Дисплейдың жұмысн тексеру.

 

3.Лораны автоматты түрде жұмыс жасауы үшін программалау.

 

4.Жұмыс барысын тексеру

 

5. Ақпаратты жіберу мен қабылдауды тексеру.

 

 

 

 

Нәтижесі:

Лаура дегеніміз не?

Бұл Semtech патенттелген және олардың SX1272, SX1276, SX1278 чиптерінде енгізілген Long Range байланыс технологиясы.LoRa - LoRaWAN сияқты жоғары деңгейлі протоколдарды іске асыруға болатын төменгі деңгейлі хаттама.

LoRa стандартының ерекшелігі - қуатты аз тұтынатын шағын деректер пакеттерін жіберу. Өндірушінің айтуынша, ашық аспан астындағы диапазон 10 км-ге жетеді, ал батареяның қызмет ету мерзімі бірнеше жыл болуы мүмкін. Жұмыс жиілігі елге байланысты және 433 немесе 868 МГц (ЕС нұсқасы) немесе 915 МГц (АҚШ нұсқасы) құрайды. Шындығында, бұл сандар мәлімделгендерден мүлдем өзгеше.

 

 

Диапазонды практикалық тексеру үшін модемдердің бірі пәтерде терезенің жанында қалды, екіншісі Raspberry Pi-ге қосылып, көшеге шығарылды. Кейбір ақпарат көздері қалалық жағдайда 3 шақырымдық диапазонға ие болады деп уәде етеді. Нәтиже, өкінішке орай, онша жақсы емес: іс жүзінде 868 МГц жиіліктегі максималды қуатта және антеннада шамамен 3 көпқабатты үйден кейін сигнал толығымен кептеліп қалады. Әрине, ашық жерлерде диапазон жоғары, бірақ сіз бұрылыс жасағанда, сигнал өте тез жоғалады. Жалпы, қалада 3 шақырымдық нәтиже антеннаны телемұнараға орнатқан кезде ғана мүмкін болады, шынымен де ең жақсы дегенде 300 м-ге сенуге болады. Бірақ бұл берілген сигналдың шамалы қуатын ескере отырып, онша жаман емес.

LoRa құрылғылары деректердің аз мөлшерін салыстырмалы түрде ұзақ (жүздеген метр-километр) қашықтыққа төмен жылдамдықпен жіберуге арналған ыңғайлы және дайын шешімді ұсынады. LoRa құрылғылары қуатты аз тұтынуға оңтайландырылған, бұл оларды батареямен немесе қайта зарядталатын батарея қуатымен жұмыс істеуге мүмкіндік береді (алайда, бұл деректерді беру жылдамдығы төмен). Мысалы, егер фермер жылыжайлардағы температураны үйдегі дисплейде көрсеткісі келсе, бұл LoRa үшін өте қолайлы болар еді - деректердің аз мөлшері, объектілерге қашықтық және көру сызығы. Модемдерді үлкен бөлмелерде де қолдануға болады - ангарларда, зауыттарда, датчиктерге сым тарту қиын немесе қымбат, ал деректер саны аз. Сондай-ақ оны үйде қолдануға болады, модульдердің жоғары сезімталдығы баспа платасында «зигзаг» түріндегі қысқа антенналарды да пайдалануға мүмкіндік береді. Қалада байланыс сапасы антенналар арасындағы радиобайланыстың болуына, антеннаның орналасу биіктігіне және т.б. тәуелді болады. Көбісі қазір «жаһандық» LoraWAN желілерінің мүмкіндіктерімен жігерленеді, бірақ антеннаны орналастыру мұндай желідегі ауқым үшін өте маңызды болады. Алайда, бұл кез-келген радио беру жүйесіне қатысты, сондықтан мұнда керемет болған жоқ.

Esp32 модулінің өзі туралы қысқаша:

 

 

 

Контроллердің өзіне esp32, oled дисплейі және 433MHz лора модулі кіреді

 

Wi-Fi 802.11 bgn 150 Мбит / с дейін

4 MAC интерфейсі

AMPDU

 

Bluetooth BR / EDR / LE қолдауы

1-сыныпқа да, 2-сыныпқа да таратқышты қолдау

 

400DMIPS дейін CPU екі ядролы Xtensa LX6

600DMIPS @ 1.2V ядросына дейін

Код мөлшері 15% кішірек

6 үзіліс деңгейі

 

Бағдарламалық жасақтаманың ішкі жедел жады 500 кБ, пайдаланушылар үшін 200 кБ

 

Flash 4MB кеңістігі

OTA үшін теңшелетін кесте дисплейі

 

Сыртқы Flash 1.8V / 3.3V үшін ішкі LDO

Терең ұйқы кезінде жарықты өшіруді қолдайды

 

SD / eMMC / SDIO Host иә

SPI 4

GPIO 32

DMA бар UART 2

 

Жарықдиодты жарықдиодты аппараттық құралдар, 16 арна қолдайды,

80 МГц жиіліктегі 20 биттік таймер

13 кбит дәлдігі 1 кГц

250 Гц жиіліктегі 15бит дәлдігі

 

Қозғалтқыш PWM плюс-есептегіші

Қашықтан басқаруды аппараттық құралдар қолдайды

Таймер 2 таймер 32 бит және 2 таймер 64 бит

1 RTC таймері 48 бит

 

Күзетші 2 жүйелік күзетші және 1 RTC күзетші ит

 

ADC 16 арнасы, 12 биттік, аналогтық күшейткіш төмен шуылдағы аналогтық күшейткішті қолдайды

 

DAC 2 арнасы, 10 бит

 

Ұйқы режиміне арналған 32к кристалды тірек

 

Сенсор сенсорына қолдау көрсетіледі, 10 арна

 

Температура сенсоры иә

 

Флэш шифрлауды аппараттық құралдар қолдайды

 

Электронды сақтандырғыш 1 кБ, MAC мекенжайларын қоса қолданушы жазған

 

AES-128, AES-192 және AES-256 FIPS PUB 197 үшін AES қолдау

 

SHA-1, SHA-256, SHA-384 және SHA-512 FIPS PUB 180-4 үшін SHA қолдау

 

Нұсқауларға сәйкес орындалған RTC 8Kbyte жадыны қалпына келтіру

 

 Программалау

ESP32 LORA Sender

 

//Libraries for LoRa

#include <SPI.h>

#include <LoRa.h>

 

//Libraries for OLED Display

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

 

//define the pins used by the LoRa transceiver module

#define SCK 5

#define MISO 19

#define MOSI 27

#define SS 18

#define RST 14

#define DIO0 26

 

//433E6 for Asia

//866E6 for Europe

//915E6 for North America

#define BAND 866E6

 

//OLED pins

#define OLED_SDA 4

#define OLED_SCL 15

#define OLED_RST 16

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels

 

//packet counter

int counter = 0;

 

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);

 

void setup() {

 

  //reset OLED display via software

  pinMode(OLED_RST, OUTPUT);

  digitalWrite(OLED_RST, LOW);

  delay(20);

  digitalWrite(OLED_RST, HIGH);

 

  //initialize OLED

  Wire.begin(OLED_SDA, OLED_SCL);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c, false, false)) { // Address 0x3C for 128x32

    Serial.println(F("SSD1306 allocation failed"));

    for(;;); // Don't proceed, loop forever

  }

 

  display.clearDisplay();

  display.setTextColor(WHITE);

  display.setTextSize(1);

  display.setCursor(0,0);

  display.print("LORA SENDER ");

  display.display();

 

  //initialize Serial Monitor

  Serial.begin(115200);

 

  Serial.println("LoRa Sender Test");

 

  //SPI LoRa pins

  SPI.begin(SCK, MISO, MOSI, SS);

  //setup LoRa transceiver module

  LoRa.setPins(SS, RST, DIO0);

 

  if (!LoRa.begin(BAND)) {

    Serial.println("Starting LoRa failed!");

    while (1);

  }

  Serial.println("LoRa Initializing OK!");

  display.setCursor(0,10);

  display.print("LoRa Initializing OK!");

  display.display();

  delay(2000);

}

 

void loop() {

  

  Serial.print("Sending packet: ");

  Serial.println(counter);

 

  //Send LoRa packet to receiver

  LoRa.beginPacket();

  LoRa.print("hello ");

  LoRa.print(counter);

  LoRa.endPacket();

 

  display.clearDisplay();

  display.setCursor(0,0);

  display.println("LORA SENDER");

  display.setCursor(0,20);

  display.setTextSize(1);

  display.print("LoRa packet sent.");

  display.setCursor(0,30);

  display.print("Counter:");

  display.setCursor(50,30);

  display.print(counter);     

  display.display();

 

  counter++;

 

  delay(10000);

}

 

ESP32 LoRA Receiver

 

//Libraries for LoRa

#include <SPI.h>

#include <LoRa.h>

 

//Libraries for OLED Display

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

 

//define the pins used by the LoRa transceiver module

#define SCK 5

#define MISO 19

#define MOSI 27

#define SS 18

#define RST 14

#define DIO0 26

 

//433E6 for Asia

//866E6 for Europe

//915E6 for North America

#define BAND 866E6

 

//OLED pins

#define OLED_SDA 4

#define OLED_SCL 15

#define OLED_RST 16

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels

 

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);

 

String LoRaData;

 

void setup() {

 

  //reset OLED display via software

  pinMode(OLED_RST, OUTPUT);

  digitalWrite(OLED_RST, LOW);

  delay(20);

  digitalWrite(OLED_RST, HIGH);

 

  //initialize OLED

  Wire.begin(OLED_SDA, OLED_SCL);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c, false, false)) { // Address 0x3C for 128x32

    Serial.println(F("SSD1306 allocation failed"));

    for(;;); // Don't proceed, loop forever

  }

 

  display.clearDisplay();

  display.setTextColor(WHITE);

  display.setTextSize(1);

  display.setCursor(0,0);

  display.print("LORA RECEIVER ");

  display.display();

 

  //initialize Serial Monitor

  Serial.begin(115200);

 

  Serial.println("LoRa Receiver Test");

 

  //SPI LoRa pins

  SPI.begin(SCK, MISO, MOSI, SS);

  //setup LoRa transceiver module

  LoRa.setPins(SS, RST, DIO0);

 

  if (!LoRa.begin(BAND)) {

    Serial.println("Starting LoRa failed!");

    while (1);

  }

  Serial.println("LoRa Initializing OK!");

  display.setCursor(0,10);

  display.println("LoRa Initializing OK!");

  display.display(); 

}

 

void loop() {

 

  //try to parse packet

  int packetSize = LoRa.parsePacket();

  if (packetSize) {

    //received a packet

    Serial.print("Received packet ");

 

    //read packet

    while (LoRa.available()) {

      LoRaData = LoRa.readString();

      Serial.print(LoRaData);

    }

 

    //print RSSI of packet

    int rssi = LoRa.packetRssi();

    Serial.print(" with RSSI ");   

    Serial.println(rssi);

 

   // Dsiplay information

   display.clearDisplay();

   display.setCursor(0,0);

   display.print("LORA RECEIVER");

   display.setCursor(0,20);

   display.print("Received packet:");

   display.setCursor(0,30);

   display.print(LoRaData);

   display.setCursor(0,40);

   display.print("RSSI:");

   display.setCursor(30,40);

   display.print(rssi);

   display.display();  

  }

}

 

 

 

Ақпарат дереккөзі: