資料介紹
描述
該項目的目標是使用 LoRaWAN 上的物聯(lián)網 MQTT 集成來監(jiān)控和控制基于 LoRa-E5 的物聯(lián)網設備。
LoRa-E5 模塊在其 LoRa 調制解調器旁邊有一個嵌入式 MCU,但是我對 ESP32 最滿意,所以我將 LoRa-E5 用作帶有 ESP32 開發(fā)模塊的 LoRa 調制解調器。在幾款 LoRa-E5 板卡中,當您只需要 LoRa-E5 作為調制解調器時,推薦使用Grove LoRa E5模塊,因此在本項目中使用了相同的模塊。

最初,我只是想在兩個 LoRa-E5 模塊之間交換消息,而不需要 LoRaWAN,因此我使用了 TEST 模式并使其成功運行。如果您只想在 LoRa 模塊之間交換消息而無需設置網關(這稱為 TEST 模式),請查看此項目!
繼續(xù)實現(xiàn)該項目的目標,我將其分為以下里程碑
- 設置物聯(lián)網網關 (LoRaWAN)
- 在物聯(lián)網上設置 LoRa-E5 設備
- 在 ESP32 上上傳固件以與 TTN 通信
- MQTT 集成
- 通過 Python 程序監(jiān)視和控制您的 LoRa 設備
?
設置物聯(lián)網網關
為了將數(shù)據包從我的 ESP32 發(fā)送到物聯(lián)網,我需要一個支持與我的 LoRa-E5 模塊相同頻率的網關。這是我使用 Raspberry Pi + RAK2245 Pi HAT 的地方。
如果您有任何其他與您的 LoRa-E5 模塊頻率范圍相同的 LoRaWAN 網關,并且能夠通過它連接到物聯(lián)網,那就太好了!
要設置我的 Pi+RAK2245 LoRaWAN 網關,我只需要按照RAK Wireless的官方指南進行操作即可。
設置完成后,您將看到網關頁面如下

在物聯(lián)網上設置 LoRa-E5 設備
在物聯(lián)網上配置 LoRa-E5 設備時,需要設備中的以下信息
- 開發(fā)EUI
- AppEUI
所有的 LoRa-E5 模塊都已經有了這些信息。我們可以選擇使用已配置的內容或生成新的 EUI 并使用它配置 LoRa-E5 模塊。我選擇使用預先配置在模塊上的 EUI。
要獲取 DevEUI 和 AppEUI,請在 ESP32 開發(fā)模塊上上傳串行直通固件,其連接如示意圖所示。請注意,LoRa-E5 模塊在 9600 波特上工作,因此請相應地配置您的串行直通固件。
刷新 ESP32 開發(fā)模塊后,打開串行監(jiān)視器/CoolTerm 并發(fā)送以下命令
AT+ID
這將返回類似于以下內容的內容
+ID: DevAddr, 25:1B:2E:11
+ID: DevEui, 2C:F7:F1:21:42:60:90:CE
+ID: AppEui, 80:00:00:00:00:00:00:06

請注意此信息可能在記事本中的某處。我們將在接下來的步驟中需要它。
現(xiàn)在讓我們配置The Things Network (TTN),以便我們可以通過以下步驟在 ESP32+LoRa-E5 和 TTN 之間發(fā)送和接收數(shù)據:
- 在Things Stack 控制臺上,選擇您選擇的區(qū)域并轉到 Applications 并創(chuàng)建一個新應用程序

- 現(xiàn)在您已經創(chuàng)建了一個 Things Stack 應用程序。進入應用程序控制臺后(如上所示),單擊+ 添加終端設備
- 我無法在 LoRaWAN 設備存儲庫中找到 LoRa-E5,因此我在手動部分中手動提供了信息
- 選擇 LoRa-E5 模塊的頻率計劃、LoRaWAN 版本(取決于您的網關)、區(qū)域參數(shù)版本。我在這里找到了這個信息
- 現(xiàn)在,輸入您在前面步驟中記下的 DevEUI 和 AppEUI
- 生成一個新的 AppKey 并在某處記下它。

您的 Things Stack 控制臺配置已基本完成,可以在 ESP32+LoRa-E5 設備之間交換消息
在 ESP32 上上傳固件并與 TTN 通信
此固件在配置了 AppKey(如上所述)并上傳到 ESP32 后,會連接到附近的 LoRaWAN (TTN) 網關,并每 5 秒發(fā)送一次以下 JSON 對象
{
"state": {
"temp": 27.4,
"humi": 89
}
}
目前,固件會向 TTN 發(fā)送恒定的溫度和濕度值,但是您可以修改固件以滿足您集成任何傳感器的要求,并改為發(fā)送這些值。
確保替換固件代碼第 101 行中先前步驟中記下的 AppKey。成功上傳代碼后,我在串行端口中看到以下內容

JSON 被轉換為字節(jié)數(shù)組(即7B 22 73 74... )并發(fā)送到 TTN。您可以通過選擇終端設備的實時數(shù)據選項卡在 TTN 控制臺上查看此數(shù)據

如果您想以 JSON 格式查看字節(jié)數(shù)組中的數(shù)據,請轉到 Payload formatters 選項卡并選擇 Formatter type as Javascript 并將 formatter 參數(shù)更改為以下
function decodeUplink(input) {
return {
data: JSON.parse(String.fromCharCode(...input.bytes)),
warnings: [],
errors: []
};
}

保存
返回實時數(shù)據選項卡,選擇“轉發(fā)上行鏈路數(shù)據消息”類型的條目,您現(xiàn)在應該能夠以 JSON 格式查看發(fā)送的 LoRa 數(shù)據

就像固件允許您將數(shù)據從 ESP32 發(fā)送到 TTN 一樣,它也允許您從 TTN 接收 ESP32 中的數(shù)據。
要將數(shù)據從 TTN 發(fā)送到 ESP32,請轉到消息選項卡并選擇下行鏈路選項卡。我將以下 JSON 從 TTN 發(fā)送到 ESP32
{
"name": "Sufian",
"id": "sufiankaki"
}
TTN 控制臺具有以 JSON 和字節(jié)數(shù)組形式發(fā)送數(shù)據的選項。要發(fā)送 JSON 數(shù)據,我們需要像之前所做的那樣修改 Payload 格式化程序(用于下行鏈路)。將現(xiàn)有腳本更改為
function encodeDownlink(input) {
return {
bytes: JSON.stringify(input),
fPort: 1,
warnings: [],
errors: []
};
}
function decodeDownlink(input) {
return {
data: {
bytes: input.bytes
},
warnings: [],
errors: []
}
}

完成后,保存并轉到消息選項卡并選擇下行鏈路。選擇 JSON 并在 Payload 文本框中輸入數(shù)據并點擊 Schedule Downlink

在您的 Coolterm/Serial Monitor 上,您應該會看到現(xiàn)在收到一條消息

現(xiàn)在您知道如何從 LoRa 模塊向 TTN 發(fā)送(上行鏈路)和接收(下行鏈路)數(shù)據,修改固件并相應地開發(fā)您的項目
MQTT 集成
雖然從 TTN 監(jiān)視和控制 LoRa 設備很簡單,但我更喜歡從我的定制應用程序中控制它。一旦這樣做的方法是使用 TTN 提供的 MQTT 集成。這允許使用 MQTT 客戶端與 LoRa 設備進行交互
獲取 MQTT 客戶端的最簡單方法之一是使用安裝在計算機中的Mosquitto (CLI)。或者,您可以嘗試任何MQTT Explorer與 GUI 交互。
要為 LoRa 終端設備啟用 MQTT 集成,請在 TTN 終端設備控制臺的菜單(左側)上選擇集成選項,然后選擇 MQTT
您將看到主機名、端口號和用戶名。單擊生成新的 API 密鑰,以便您也擁有密碼

除了您在 MQTT 集成頁面上看到的 4 個字段(主機名、端口、用戶名和密碼)之外,您還需要訂閱或發(fā)布到 TTN 的主題,具體取決于您是要從 LoRa 設備接收消息還是發(fā)送分別向 LoRa 設備發(fā)送消息。
要接收從 LoRa 設備發(fā)送到 TTN 的消息,您需要訂閱的主題是v3/
mosquitto_sub -h eu1.cloud.thethings.network -p 1883 -u test-app-868@ttn -P NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJTFUUY.BZSNJY6HJ2KRF36XOPLXZF45AGFZSR2AYTT4L3HF45BBSGH4RG6Q -t 'v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/up'
訂閱后,您將收到如下消息(JSON)

這包含與從 LoRa 設備到 TTN 的上行鏈路消息有關的終端設備、網關、元數(shù)據等的所有信息。
要從 MQTT 客戶端向 LoRa 設備發(fā)送數(shù)據,您需要發(fā)布消息的主題是v3/
{
"downlinks":
[
{ "f_port": 1,
"frm_payload":"ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9",
"priority":"NORMAL"
}
]
}
您需要發(fā)送的消息應該是 base64 編碼的。假設您要發(fā)送以下消息
{
"name": "Sufian",
"id": "sufiankaki"
}
你首先需要對它進行base64編碼。我使用這個在線工具來轉換我的信息。對于上面的消息,我得到了ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9
我的 base64 編碼字符串
因此我的 MQTT 發(fā)布消息看起來像
mosquitto_pub -h eu1.cloud.thethings.network -p 1883 -u test-app-868@ttn -P NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJTFUUY.BZSNJY6HJ2KRF36XOPLXZF45AGFZSR2AYTT4L3HF45BBSGH4RG6Q -t 'v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/down/push' -m "{"downlinks":[{"f_port": 1, "frm_payload":"ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9", "priority":"NORMAL"}]}"
確保您轉義了消息中的雙引號。
有關 MQTT 集成的更多信息,請查看官方文檔。我上面的解釋是針對 Eclipse Mosquitto 的。
通過 Python 程序監(jiān)視和控制您的 LoRa 設備
使用 MQTT 集成,LoRa 設備也可以通過 python 程序進行監(jiān)視和控制。我將使用 Eclipse Paho 庫從我的 Python 程序向 LoRa 設備發(fā)送和接收消息
從 LoRa 設備接收和打印消息的程序
import paho.mqtt.client as mqtt
import json
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/up")
def on_message(client, userdata, msg):
messg = json.loads(msg.payload)
print(messg['uplink_message']['decoded_payload'])
client = mqtt.Client()
client.username_pw_set("test-app-868@ttn", "NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJT..")
client.on_connect = on_connect
client.on_message = on_message
client.connect("eu1.cloud.thethings.network", 1883, 60)
client.loop_forever()
?
向 LoRa 設備發(fā)送消息的程序
import paho.mqtt.client as mqtt
import json
import base64
from time import sleep
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/up")
def on_message(client, userdata, msg):
messg = json.loads(msg.payload)
print('Received: ' + str(messg['uplink_message']['decoded_payload']))
client = mqtt.Client()
client.username_pw_set("test-app-868@ttn", "NNSXS.IG5UN5CKVNA7IWCQBLS5XXCEGRKNKBEDIJT...")
client.on_connect = on_connect
client.on_message = on_message
client.connect("eu1.cloud.thethings.network", 1883, 60)
client.loop_start()
try:
while True:
topic = "v3/test-app-868@ttn/devices/eui-70b3d57ed004d84c/down/push"
js = {'name': 'Sufian', 'id': 'sufiankaki'}
str_js = json.dumps(js)
x = {}
x["f_port"] = 1
x["frm_payload"] = base64.b64encode(str.encode(str_js)).decode()
x["priority"] = "NORMAL"
message = {}
message["downlinks"] = []
message["downlinks"].append(x)
client.publish(topic, json.dumps(message))
print('Published: ' + json.dumps(message))
sleep(5)
except KeyboardInterrupt:
client.loop_stop()
print("Stopped the client!")
- MQTT調試助手中文版(物聯(lián)網開發(fā)必備) 7次下載
- NET Core LoRaWAN客戶端使用Seeed LoRa E5模塊
- 使用LoRa E5的低功耗雪深傳感器
- 使用ST Cube編程器和IDE對LoRa E5迷你設備進行編程
- 基于Seedstudio的LoRa E5迷你板 0次下載
- 微信小程序使用MQTT遠程控制單片機——阿里云物聯(lián)網平臺
- 基于LORA+4G網關的油田物聯(lián)網系統(tǒng) 11次下載
- 基于以太坊區(qū)塊鏈的物聯(lián)網設備訪問控制機制 12次下載
- 鴻蒙開發(fā)板上使用MQTT協(xié)議、OneNET實現(xiàn)第一個物聯(lián)網項目 0次下載
- 如何使用MQTT客戶端連接阿里云MQTT服務器詳細教程說明
- Triscend E5單片機TrISC端E5可配置片上系統(tǒng)平臺 4次下載
- MQTT是什么?物聯(lián)網開發(fā)入門之物聯(lián)網標準通信協(xié)議-MQTT詳細資料概述 33次下載
- 物聯(lián)網MQTT網關連接PLC配置全過程 30次下載
- 基于MQTT的工業(yè)物聯(lián)網數(shù)據云平臺 33次下載
- MQTT物聯(lián)網網關的常見類型 31次下載
- 【教程】設備通過MQTT協(xié)議接入OneNET平臺,建立可視化界面 1029次閱讀
- 通過物聯(lián)網管理多臺MQTT設備-基于米爾T527開發(fā)板 730次閱讀
- MQTT和Modbus協(xié)議的區(qū)別 3111次閱讀
- 基于啟明RA6M5的物聯(lián)網居家環(huán)境健康監(jiān)控設備設計 954次閱讀
- paho-mqtt模塊實戰(zhàn) 1369次閱讀
- MQTT協(xié)議的概念和主要特性 MQTT協(xié)議于物聯(lián)網有何好處 2557次閱讀
- 【產品應用】GLCOM-NET網關一分鐘實現(xiàn)LoRa轉MQTT(高階版) 2261次閱讀
- 如何使用M5Stamp PICO和Qubitro構建物聯(lián)網門鎖監(jiān)控系統(tǒng) 1853次閱讀
- FLIR E4、E5、E6和E8紅外熱像儀的性能特點及應用范圍 2884次閱讀
- 亞太天能科技E5/E5c指紋鎖簡介 6792次閱讀
- 物聯(lián)網設備的安全問題深度分析 4818次閱讀
- 物聯(lián)網中的LoRa究竟是什么 7873次閱讀
- 物聯(lián)網的設備專業(yè)化和集成化兩個維度的發(fā)展規(guī)律 3326次閱讀
- 淺談lora物聯(lián)網技術及發(fā)展現(xiàn)狀 1.2w次閱讀
- 物聯(lián)網應用的支撐是5G網絡建設的主要目標之一 3688次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論