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();
}
}
Ақпарат дереккөзі: