Mục lục:

Lora Gateway dựa trên MicroPython ESP32: 10 bước (có hình ảnh)
Lora Gateway dựa trên MicroPython ESP32: 10 bước (có hình ảnh)

Video: Lora Gateway dựa trên MicroPython ESP32: 10 bước (có hình ảnh)

Video: Lora Gateway dựa trên MicroPython ESP32: 10 bước (có hình ảnh)
Video: ESP32 - Micropython - Bài 9: BLE - ESP32 2024, Tháng bảy
Anonim
Lora Gateway dựa trên MicroPython ESP32
Lora Gateway dựa trên MicroPython ESP32
Lora Gateway dựa trên MicroPython ESP32
Lora Gateway dựa trên MicroPython ESP32

Lora đã rất nổi tiếng trong những năm gần đây. Mô-đun giao tiếp không dây sử dụng công nghệ này thường rẻ (sử dụng phổ tần miễn phí), kích thước nhỏ, tiết kiệm năng lượng và có khoảng cách truyền thông xa và chủ yếu được sử dụng để giao tiếp lẫn nhau giữa các thiết bị đầu cuối IoT hoặc trao đổi dữ liệu với máy chủ. Có rất nhiều mô-đun LoRa trên thị trường, chẳng hạn như RFM96W, được trang bị chip SX1278 (tương thích), rất nhỏ. Tôi sử dụng nó với MakePython ESP32 như một cổng vào.

Tiếp theo, tôi sẽ sử dụng hai nút LoRa để gửi dữ liệu nhiệt độ và độ ẩm đến cổng kết nối, sau đó tải lên Internet thông qua cổng kết nối. Ở đây bạn sẽ học cách tải dữ liệu từ xa của nhiều nút LoRa lên đám mây thông qua cổng.

Bước 1: Nguồn cung cấp

Quân nhu
Quân nhu

1 * MakePython ESP32

MakePython ESP32 là bo mạch ESP32 với màn hình OLED SSD1306 tích hợp.

2 * Đài phát thanh Maduino LoRa

Maduino Lora Radio là một Giải pháp IoT (Internet vạn vật) dựa trên mô-đun MCU và Lora của Atmel’s Atmega328P. Nó có thể là một dự án thực sự cho các dự án IoT (đặc biệt là ứng dụng tầm xa, công suất thấp)

2 * DHT11

1 * MakePython Lora

Bước 2: Nút LoRa

Nút LoRa
Nút LoRa
Nút LoRa
Nút LoRa

Đây là sơ đồ của Đài phát thanh Maduino Lora.

Mô-đun Arduino Lora Radio dưới dạng nút LoRa, chúng tôi sử dụng nó để gửi dữ liệu nhiệt độ và độ ẩm tới cổng.

(WiKi này giới thiệu cách sử dụng Maduino Lora Radio và gửi và nhận dữ liệu)

Bước 3: Kết nối nút và cảm biến

Kết nối nút và cảm biến
Kết nối nút và cảm biến
Kết nối nút và cảm biến
Kết nối nút và cảm biến

VCC và GND của DHT11 được kết nối với 3V3 và GND của Maduino, và chân DATA được kết nối với D4 của Maduino.

Nút 0 ở công viên, nút 1 ở tòa nhà văn phòng gần công ty, chúng cách nhau khoảng 2 km, sau đó mình lấy dữ liệu nhiệt độ và độ ẩm của chúng ở nhà

Bước 4: Gửi dữ liệu đến Gateway

Tải xuống TransmitterDHT11.ino, mở nó trên Arduino IDE.

Khi thêm một nút, hãy sửa đổi số nút cho phù hợp. Ví dụ: bây giờ sử dụng 2 nút, nút đầu tiên sửa đổi nodenum = 0 để chạy chương trình, nút thứ hai sửa đổi nodenum = 1 để chạy chương trình, v.v., bạn có thể thêm nhiều nút hơn.

int16_t packetnum = 0; // bộ đếm gói, chúng tôi tăng mỗi lần truyền

int16_t nodenum = 0; // Sửa đổi số nút

Thu thập dữ liệu và in nó

Thông báo chuỗi = "#" + (Chuỗi) nodenum + "Độ ẩm:" + (Chuỗi) độ ẩm + "% Nhiệt độ:" + (Chuỗi) nhiệt độ + "C" + "num:" + (Chuỗi) packnum; Serial.println (thông báo); packnum ++;

Gửi tin nhắn tới rf95_server

uint8_t radioPacket [message.length () + 1];

message.toCharArray (radioPacket, message.length () + 1); radioPacket [message.length () + 1] = '\ 0'; rf95.send ((uint8_t *) radioPacket, message.length () + 1);

Mở màn hình nối tiếp, bạn có thể xem dữ liệu nhiệt độ và độ ẩm đã thu thập và gửi nó ra ngoài.

# 0 Độ ẩm: 6.00% Nhiệt độ: 27.00C num: 0

Truyền: Đang gửi đến rf95_server Đang gửi… Đang đợi gói hoàn tất… Đang chờ trả lời… Không có trả lời, có người nghe xung quanh không?

Bỏ nó sang một bên, bây giờ chúng ta cần làm Cổng Lora.

Bước 5: MakePython Lora

MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora

Đây là chân tương ứng của mô-đun RFM96W và MakePython ESP32. Để tạo điều kiện kết nối với MakePython ESP32, tôi đã tạo một bảng mạch với mô-đun RFM96W. Có, có hai RFM96W trên đó, có thể gửi và nhận dữ liệu cùng một lúc, nhưng bây giờ tôi chỉ cần một.

Bước 6: Cổng LoRaWAN

Cổng LoRaWAN
Cổng LoRaWAN

LoRaWAN là mạng diện rộng công suất thấp dựa trên LoRa, có thể cung cấp một mạng: tiêu thụ điện năng thấp, khả năng mở rộng, chất lượng dịch vụ cao và mạng không dây đường dài an toàn.

Kết hợp MakePython Lora và ESP32 để tạo một cổng có thể nhận dữ liệu từ xa và tải dữ liệu đó lên Internet.

Bước 7: Tải xuống mã

Tải xuống tất cả các tệp ‘xxx.py’ từ WiKi và tải chúng lên ESP32.

Mở tệp LoRaDuplexCallback.py, Bạn cần thực hiện một số điều chỉnh để ESP32 của bạn có thể kết nối mạng và tải dữ liệu lên máy chủ.

Sửa đổi API_KEY bạn lấy được trong ThingSpeak (Tôi sẽ giới thiệu cách lấy nó sau)

#https://thingspeak.com/channels/1047479

API_KEY = 'UBHIRHVV9THUJVUI'

Sửa đổi SSID và PSW để kết nối WiFi

ssid = "Makerfabs"

pswd = "20160704"

Bước 8: Nhận dữ liệu

Tìm hàm on_receive (lora, payload) trong tệp LoRaDuplexCallback.py, nơi bạn có thể cho ESP32 biết phải làm gì sau khi nhận dữ liệu. Đoạn mã sau phân tích cú pháp và hiển thị dữ liệu nhiệt độ và độ ẩm đã nhận.

def on_receive (lora, payload):

lora.blink_led () rssi = lora.packetRssi () try: length = len (payload) -1 myStr = str ((payload [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1 + 1):(length1 + 6)] myNum2 = myStr [(length1 + 20):(length1 + 25)] print ("*** Đã nhận tin nhắn *** / n {}". format (payload)) if config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (payload [4: length])), rssi) if wlan.isconnected (): global msgCount print ('Đang gửi tới mạng…') node = int (str (payload [5: 6], 'utf-8')) nếu node == 0: URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 = "+ myNum1 +" & field2 = "+ myNum2 res = urequests.get (URL) print (res.text) elif node == 1: URL =" https://api.thingspeak.com/update?api_key= "+ API_KEY +" & field3 = "+ myNum1 +" & field4 = "+ myNum2 res = urequests.get (URL) print (res.text) ngoại trừ Exception as e: print (e) print (" with RSSI {} n ".format (rssi))

Đánh giá số lượng để phân biệt các nút và tải dữ liệu lên Internet thông qua URL, chúng tôi có thể theo dõi dữ liệu từ xa của các nút khác nhau bất kỳ lúc nào. Bạn có thể thêm nhiều nút hơn và thực hiện các thay đổi tương tự đối với mã.

nếu nút == 0:

URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 =" + myNum1 + "& field2 =" + myNum2 res = urequests.get (URL) print (res.text)

Bước 9: Sử dụng ThingSpeak IoT

Sử dụng ThingSpeak IoT
Sử dụng ThingSpeak IoT
Sử dụng ThingSpeak IoT
Sử dụng ThingSpeak IoT
Sử dụng ThingSpeak IoT
Sử dụng ThingSpeak IoT

Các bước:

  1. Đăng ký tài khoản tại https://thingspeak.com/. Nếu bạn đã có, hãy đăng nhập trực tiếp.
  2. Nhấp vào Kênh mới để tạo kênh ThingSpeak mới.
  3. Nhập tên, Mô tả, Chọn Trường 1. Sau đó lưu kênh ở dưới cùng.
  4. Nhấp vào tùy chọn API Keys, sao chép API Key, chúng tôi sẽ sử dụng nó trong chương trình.

Bước 10: Kết quả

Kết quả
Kết quả
Kết quả
Kết quả
Kết quả
Kết quả

Bạn có thể thấy dữ liệu của nút 0 và nút 1 trên màn hình, mặc dù chúng cách nhau 2 km.

Đăng nhập vào tài khoản ThingSpeak của bạn và nhấp vào kênh bạn đã tạo, bạn có thể xem dữ liệu nhiệt độ và độ ẩm đã tải lên.

Đồ thị trường 1 và đồ thị trường 2 là dữ liệu độ ẩm và nhiệt độ của nút Lora 0, và đồ thị trường 3 và đồ thị trường 4 là dữ liệu độ ẩm và nhiệt độ của nút Lora 1.

Đề xuất: