Lora RA-02 giao tiếp ESP8266, Thu phát RF Lora SX1278 433Mhz + ESP

thu-phat-rf-lora-la-02-spi-433mhz-giao-tiep-esp8266-doc-nhiet-do-do-am-dht11-hien-thi-oled-2

Lora RA-02 giao tiếp ESP8266 sử dụng Mạch thu phát RF SPI Lora SX1278 433Mhz Ra-02 Ai-Thinker được sản xuất bởi Ai-Thinker sử dụng chip SX1278 của nhà sản xuất SEMTECH chuẩn giao tiếp LORA (Long Range), chuẩn LORA mang đến hai yếu tố quan trọng là tiết kiệm năng lượng và khoảng cách phát siêu xa ( Ultimate long range wireless solution), ngoài ra nó còn có khả năng cấu hình để tạo thành mạng truyền nhận nên hiện tại được phát triển và sử dụng rất nhiều trong các nghiên cứu về IoT. 

Liên hệ làm Đồ án và Mạch điện tử

 

Table of Contents

1. Linh kiện cần thiết làm mạch truyền nhận không dây bằng Thu phát Lora RA-02 giao tiếp ESP8266

1.1 Vi điều khiển ESP trong mạch truyền nhận không dây bằng Thu phát Lora RA-02 giao tiếp ESP8266

a. Giới thiệu

Kít ESP8266 là kít phát triển dựa trên nền chíp Wifi SoC ESP8266 với thiết kế dễ dàng sửa dụng vì tích hợp sẵn mạch nạp sử dụng chíp CP2102 trên borad. Bên trong ESP8266 có sẵn một lõi vi sử lý vì thế bạn có thể trực tiếp lập trình cho ESP8266 mà không cần thêm bất kì con vi sử lý nào nữa. Hiện tại có hai ngôn ngữ có thể lập trình cho ESP8266, sử dụng trực tiếp phần mềm IDE của Arduino để lập trình với bộ thư viện riêng hoặc sử dụng phần mềm node MCU NodeMCU ESP8266 Lua CP2102 là kit phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản.

NodeMCU ESP8266 Lua CP2102 sử dụng chip nạp và giao tiếp UART mới và ổn định nhất là CP2102 có khả năng tự nhận Driver trên tất cả các hệ điều hành Window và Linux, đây là phiên bản nâng cấp từ các phiên bản sử dụng IC nạp giá rẻ CH340. NodeMCU ESP8266 Lua CP2102 đã được ra chân đầy đủ nhất trong các Version của ESP8266 với 9 chân GPIO , 1 chân ADC, 1 giao tiếp UART, 1 giao tiếp SPI và hỗ trợ PWM. cam-bien-do-am-nhiet-do-sht75-giao-tiep-esp8266-node-mcu-hien-thi-lcd1602

các ứng dụng của vi điều khiển

b. Chức năng của Arduino R3:

Chúng ta biết rằng ở mỗi chân trên vi điều khiển có thể thực hiện nhiều chức năng khác nhau,  NodeMCU có tổng cộng 13 chân GPIO tuy nhiên một số chân được dùng cho những mục đích quan trọng khác vì vậy chúng ta phải lưu ý khi sử dụng như sau:

  • Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở kéo xuống GND). Người dùng có thể cấu hình kích hoạt hoặc không kích hoạt trở kéo này.
  • GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0, NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO này.
  • GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi là strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW. Vì vậy khi muốn sử dụng các chân này ở vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột đến quá trình nạp code. Các bạn có thể tham khảo nguyên lý thiết kế mạch
  • GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được (đã test thực nghiệm).

Như vậy, các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình thường. cam-bien-do-am-nhiet-do-sht75-giao-tiep-esp8266-node-mcu-hien-thi-lcd1602-1  

 

c.Thông số kỹ thuật ESP8266 Node MCU (Dip)

  • Chip: ESP8266EX SoC Wifi
  • Băng tần WiFi: 2.4 GHz chuẩn 802.11 b/g/n
  • Phiên bản firmware: NodeMCU V1.0
  • Điện áp hoạt động: 3.3V
  • Điện áp vào: 5V
  • Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
  • Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
  • Bộ nhớ Flash: 4MB
  • Chip giao tiếp UART: CP2102
  • Giao tiếp: Cable Micro USB
  • Hỗ trợ bảo mật: WPA/WPA2
  • Tích hợp giao thức TCP/IP
  • Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua

d. Power

  • LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D16. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
  • VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 5VDC).
  • 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là 50mA).
  • GND: Là chân mang điện cực âm trên board.
  • IOREF: Điệp áp hoạt động của vi điều khiển trên ESP8266 và có thể đọc điện áp trên chân IOREF. Chân IOREF không dùng để làm chân cấp nguồn.

e.Bộ nhớ

Vi điều khiển ATmega328:
  • 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
  • 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
  • 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.

f. Các chân đầu vào và đầu ra

Trên Board ESP8266 Node MCU có các chân Digital được sử dụng để làm chân đầu vào và đầu ra và chúng sử dụng các hàm pinMode(), digitalWrite(), digitalRead(). Giá trị điện áp trên mỗi chân là 5V, dòng trên mỗi chân là 20mA và bên trong có điện trở kéo lên là 20-50 ohm. Dòng tối đa trên mỗi chân I/O không vượt quá 40mA để tránh trường hợp gây hỏng board mạch. Ngoài ra, một số chân Digital có chức năng đặt biệt:
  • Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và truyền dữ liệu (TX) TTL.
  • PWM: Từ D1 – D7 đều có chức năng PWM.
  • SPI:  D7 (MOSI), D6 (MISO), D5 (SCK). Các chân này hỗ trợ giao tiếp SPI bằng thư viện SPI.
  • LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D0. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
  • TWI/I2C: D2 (SDA) và D1 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

g. Các chân không khởi động được khi

Chân ký hiệu thực tếChân GPIOKhông cho phép khi khởi động
D0GPIO16Lỗi nếu kéo xuống thấp
D3GPIO0Lỗi nếu kéo xuống thấp
D4GPIO2Lỗi khi kéo xuống thấp
D8GPIO15Lỗi khi kéo lên cao

 

1.2 Module Thu phát Lora RA-02 giao tiếp ESP8266 truyền nhận không dây

a. Giới thiệu Thu phát Lora RA-02

Mạch thu phát RF SPI Lora SX1278 433Mhz Ra-02 Ai-Thinker được sản xuất bởi Ai-Thinker sử dụng chip SX1278 của nhà sản xuất SEMTECH chuẩn giao tiếp LORA (Long Range), chuẩn LORA mang đến hai yếu tố quan trọng là tiết kiệm năng lượng và khoảng cách phát siêu xa ( Ultimate long range wireless solution), ngoài ra nó còn có khả năng cấu hình để tạo thành mạng truyền nhận nên hiện tại được phát triển và sử dụng rất nhiều trong các nghiên cứu về IoT. Mạch thu phát RF SPI Lora SX1278 433Mhz Ra-02 Ai-Thinker có thiết kế nhỏ gọn dạng module giúp dễ dàng tích hợp trong các thiết kế mạch, mạch được thiết kế và đo đạc chuẩn để có thể đạt công suất và khoảng cách truyền xa nhất, ngoài ra mạch còn có chất lượng linh kiện và gia công tốt cho nên có độ bền cao và khả năng hoạt động ổn định. thu-phat-rf-lora-la-02-spi-433mhz-giao-tiep-esp8266-doc-nhiet-do-do-am-dht11-hien-thi-oled-1

b. Thông số kỹ thuật Thu phát Lora RA-02 giao tiếp ESP8266

  • IC chính: SX1278 từ SEMTECH.
  • Truyền thông phổ LoRaT + 20dBm – 10mW. Công suất đầu ra RF ổn định khi điện áp đầu vào thay đổi
  • Truyền thông SPI bán song công
  • Tốc độ bit có thể lập trình có thể đạt tới 300kbps
  • Hỗ trợ Chế độ điều chế FSK, GFSK, MSK, GMSK, LoRaTM và OOK
  • Phạm vi sóng 127dB RSSI.
  • Tự động phát hiện tín hiệu RF, chế độ CAD và AFC tốc độ siêu cao
  • Với công cụ dữ liệu CRC 256 byte
  • Gói nửa lỗ (lỗ đúc)
  • Với vỏ bảo vệ kim loại
  • Chốt pin: 2.0mm
  • Chứng nhận: FCC / CE
  • Chuẩn không dây: 433 MHz
  • Dải tần: 420 – 450 MHz
  • Cổng: SPI / GPIO
  • Điện áp hoạt động: 1.8 – 3.7V, mặc định 3.3V
  • Công việc hiện tại:
  • nhận: dưới 10.8mA (LnaBoost đã đóng, Băng 1)
  • truyền: dưới 120mA (+ 20dBm)
  • Mô hình ngủ: 0,2uA
  • Nhiệt độ làm việc: -40- +85 độ.

c. Sơ đồ chân vào chức năng Thu phát Lora RA-02thu-phat-rf-lora-la-02-spi-433mhz-giao-tiep-esp8266-doc-nhiet-do-do-am-dht11-hien-thi-oled

d. Ứng dụng Thu phát Lora RA-02 giao tiếp ESP8266

  • Bàn phím, chuột không dây
  • Game controller
  • Điều khiển từ xa
  • Nhà thông minh và tự động hóa
  • Hệ thống giám sát không dây
  • Hệ thống cảm biến tiết kiệm điện
  • Internet of Things

e. Lưu ý khi sử dụng Thu phát Lora RA-02

  • VCC chỉ được sử dụng trong dải 1.9V~3.6V.
  • Ngoài trừ VCC, các pin khác của module có thể nối trực tiếp đến GPIO của Microprocessor có điện áp 5V. Mặc định là 3.3V.
  • Nếu Microprocessor không có phần cứng giao tiếp SPI, có thể mô phỏng với GPIO thông thường.
  • Nếu kết nối với các MCU họ 51 ở pin P0 thì cần phải có trở 10k kéo lên nguồn.
  • Nếu GPIO của Microprocessor có dòng lớn hơn 10mA, cần kết nối qua trở 2k trước khi vào module này. Riêng họ AVR thì có thể kết nối trực tiếp được.

1.3 Oled cho đề tài mạch truyền nhận không dây bằng Thu phát Lora RA-02 giao tiếp ESP8266

a. Giới thiệu

Màn hình Oled 1.3 inch giao tiếp I2C cho khả năng hiển thị đẹp, sang trọng, rõ nét vào ban ngày và khả năng tiết kiệm năng lượng tối đa với mức chi phí phù hợp, màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO. Màn hình OLED SH1106 với kích thước 1.3 inch, cho khả năng hiển thị hình ảnh tốt với khung hình 128×64 pixel. Ngoài ra, màn hình còn tương thích với hầu hết các vi điều khiển hiện nay thông qua giao tiếp SPI. Màn hình sử dụng driver SH1106 cùng thiết kế nhỏ gọn sẽ giúp bạn phát triển các sản phẩm DIY hoặc các ứng dụng khác một cách nhanh chóng. màn hình oled 1.3in chuẩn i2c

Màn hình Oled chuẩn truyền I2C

màn hình oled chuẩn truyền SPI

Màn hình Oled chuẩn truyền SPI

b. Thông số kỹ thuật

  • Điện áp sử dụng: 2.2~5.5VDC
  • Công suất tiêu thụ: 0.04w
  • Góc hiển thị: lớn hơn 160 độ
  • Số điểm hiển thị: 128×64 điểm.
  • Độ rộng màn hình: 1.3 inch.
  • Màu hiển thị: Trắng / Xanh Dương.
  • Giao tiếp: I2C hoặc SPI tùy loại
  • Driver: SH1106
  • Kích thước 1.3 inch (128x64px)
  • Góc nhìn tối đa: 160°
  • Nhiệt độ làm việc: -30°V đến 80°C
  • Tương thích với hầu hết các board như: Arduino, ESP8266, ESP32, STM32,

Lưu ý khi dùng Oled 1.3in Hiện trên thị trường sẽ có: +  2 loại chính là 0.96in1.3in +  2 mã số là SH1106SH1306 +  2 chuẩn truyền SPII2C Vì thế việc lựa chọn đúng đối tượng để lập trình mới có thể hiển thị được thông tin mong muốn.

1.4 Cảm biến DHT11 dùng thu phát Lora RA-02 giao tiếp ESP8266

a. Giới thiệu DHT11

Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào. So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng đo và độ chính xác kém hơn rất nhiều.

Cảm biến dht11 Sim800C giao tiếp STM32

b. Thông số kỹ thuật DHT11

  • Nguồn: 3 -> 5 VDC.
  • Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
  • Đo tốt ở độ ẩm 2080%RH với sai số 5%.
  • Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C.
  • Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)
  • Kích thước 15mm x 12mm x 5.5mm.
  • 4 chân, khoảng cách chân 0.1”.

Lưu ý: Cảm biến này khi làm các bạn phải để ý chân, vì rất dễ chết khi các bạn cấp sai.

2. Hướng dẫn đồ án thu phát Lora RA-02 giao tiếp ESP8266 đọc dht11 hiển thị Oled

Phần này chưa được chia sẻ.

LIÊN HỆ thông tin ở TẠI ĐÂY để được hổ trợ tốt hơn.

Phần cứng

thu-phat-rf-lora-la-02-spi-433mhz-giao-tiep-esp8266-doc-nhiet-do-do-am-dht11-hien-thi-oled-3

Phần mềm

Bên phát có cảm biến nhiệt độ, độ ẩm dht11
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET LED_BUILTIN // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define DHTPIN 0 //pin where the dht11 is connected
#define ss 15
#define rst 16
#define dio0 2
int counter = 0;

DHT dht(DHTPIN, DHT11);
void setup() 
{
Serial.begin(115200);
dht.begin();

// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}

while (!Serial);
Serial.println("LoRa Sender");
LoRa.setPins(ss, rst, dio0);
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
delay(100);
while (1);
}

display.display();
delay(2);
display.clearDisplay();
}

void loop() 
{
float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) 
{
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" degrees Celcius, Humidity: ");
Serial.println(h);
Serial.println();
Serial.print("Sending packet: ");
Serial.println(counter);

display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(WHITE); // Draw white text
display.setCursor(0,0); // Start at top-left corner
display.print(F("Pkt No:"));
display.print(counter);

display.setCursor(0,20); 
display.print("Tem:");
display.print(t);
display.print("C");

display.setCursor(0,40); 
display.print("Hum:");
display.print(h);
display.print("%");
display.display();

// send packet
LoRa.beginPacket();
LoRa.print(F("Pkt No:"));
LoRa.println(counter);

LoRa.print("Temp: ");
LoRa.print(t);
LoRa.println("°C");

LoRa.print("Hum: ");
LoRa.print(h);
LoRa.print("%");
LoRa.println("");

LoRa.endPacket();

counter++;

delay(3000);
}
Bên thu hiển thị LCD1602
#include <SPI.h>
#include <LoRa.h>
 
#define ss 15
#define rst 16
#define dio0 4
 
void setup() {
  Serial.begin(115200);
  while (!Serial);
 
  Serial.println("LoRa Receiver Callback");
 
  LoRa.setPins(ss, rst, dio0);
 
  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
 
  // register the receive callback
  LoRa.onReceive(onReceive);
 
  // put the radio into receive mode
  LoRa.receive();
}
 
void loop() {
  // do nothing
}
 
void onReceive(int packetSize) {
  // received a packet
  Serial.println("Received packet '");
 
  // read packet
  for (int i = 0; i < packetSize; i++) {
    Serial.print((char)LoRa.read());
  }
}

3. Hoạt động của mạch truyền nhận dữ liệu không dây bằng Thu phát Lora RA-02 giao tiếp ESP8266

Khi cấp điện hệ thống hoạt động, vi điều khiển đưa tín hiệu ban đầu cho oled hiển thị thông tin người dùng, lúc này vi điều khiển kiểm tra có Thu phát Lora RA-02 được sử dụng không, nếu không có thì sẽ báo lỗi và chờ đến khi được gắn vào, ngược lại thì vi điều khiển cho phép truyền hoặc nhận tùy theo bên thu hoặc bên phát đã được quy định từ trước. Khi nhận được tín hiệu từ bên phát gửi qua bên thu thông qua việc nút nhấn thì Thu phát Lora RA-02 đưa dữ liệu vào vi điều khiển xử lý và xuất ra ngoài màn hình để hiển thị theo những gì đã được quy định bên mạch phát. 

4. Cụ thể hoạt động của mạch truyền nhận không dây bằng Thu phát Lora RA-02 giao tiếp ESP8266

Chúc các bạn thành công…!!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *