資料介紹
描述
該項(xiàng)目的目標(biāo)是使用 LoRaWAN 上的物聯(lián)網(wǎng) MQTT 集成來監(jiān)控和控制基于 LoRa-E5 的物聯(lián)網(wǎng)設(shè)備。
LoRa-E5 模塊在其 LoRa 調(diào)制解調(diào)器旁邊有一個(gè)嵌入式 MCU,但是我對(duì) ESP32 最滿意,所以我將 LoRa-E5 用作帶有 ESP32 開發(fā)模塊的 LoRa 調(diào)制解調(diào)器。在幾款 LoRa-E5 板卡中,當(dāng)您只需要 LoRa-E5 作為調(diào)制解調(diào)器時(shí),推薦使用Grove LoRa E5模塊,因此在本項(xiàng)目中使用了相同的模塊。
最初,我只是想在兩個(gè) LoRa-E5 模塊之間交換消息,而不需要 LoRaWAN,因此我使用了 TEST 模式并使其成功運(yùn)行。如果您只想在 LoRa 模塊之間交換消息而無需設(shè)置網(wǎng)關(guān)(這稱為 TEST 模式),請(qǐng)查看此項(xiàng)目!
繼續(xù)實(shí)現(xiàn)該項(xiàng)目的目標(biāo),我將其分為以下里程碑
- 設(shè)置物聯(lián)網(wǎng)網(wǎng)關(guān) (LoRaWAN)
- 在物聯(lián)網(wǎng)上設(shè)置 LoRa-E5 設(shè)備
- 在 ESP32 上上傳固件以與 TTN 通信
- MQTT 集成
- 通過 Python 程序監(jiān)視和控制您的 LoRa 設(shè)備
?
設(shè)置物聯(lián)網(wǎng)網(wǎng)關(guān)
為了將數(shù)據(jù)包從我的 ESP32 發(fā)送到物聯(lián)網(wǎng),我需要一個(gè)支持與我的 LoRa-E5 模塊相同頻率的網(wǎng)關(guān)。這是我使用 Raspberry Pi + RAK2245 Pi HAT 的地方。
如果您有任何其他與您的 LoRa-E5 模塊頻率范圍相同的 LoRaWAN 網(wǎng)關(guān),并且能夠通過它連接到物聯(lián)網(wǎng),那就太好了!
要設(shè)置我的 Pi+RAK2245 LoRaWAN 網(wǎng)關(guān),我只需要按照RAK Wireless的官方指南進(jìn)行操作即可。
設(shè)置完成后,您將看到網(wǎng)關(guān)頁面如下
在物聯(lián)網(wǎng)上設(shè)置 LoRa-E5 設(shè)備
在物聯(lián)網(wǎng)上配置 LoRa-E5 設(shè)備時(shí),需要設(shè)備中的以下信息
- 開發(fā)EUI
- AppEUI
所有的 LoRa-E5 模塊都已經(jīng)有了這些信息。我們可以選擇使用已配置的內(nèi)容或生成新的 EUI 并使用它配置 LoRa-E5 模塊。我選擇使用預(yù)先配置在模塊上的 EUI。
要獲取 DevEUI 和 AppEUI,請(qǐng)?jiān)?ESP32 開發(fā)模塊上上傳串行直通固件,其連接如示意圖所示。請(qǐng)注意,LoRa-E5 模塊在 9600 波特上工作,因此請(qǐng)相應(yīng)地配置您的串行直通固件。
刷新 ESP32 開發(fā)模塊后,打開串行監(jiān)視器/CoolTerm 并發(fā)送以下命令
AT+ID
這將返回類似于以下內(nèi)容的內(nèi)容
+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
請(qǐng)注意此信息可能在記事本中的某處。我們將在接下來的步驟中需要它。
現(xiàn)在讓我們配置The Things Network (TTN),以便我們可以通過以下步驟在 ESP32+LoRa-E5 和 TTN 之間發(fā)送和接收數(shù)據(jù):
- 在Things Stack 控制臺(tái)上,選擇您選擇的區(qū)域并轉(zhuǎn)到 Applications 并創(chuàng)建一個(gè)新應(yīng)用程序
- 現(xiàn)在您已經(jīng)創(chuàng)建了一個(gè) Things Stack 應(yīng)用程序。進(jìn)入應(yīng)用程序控制臺(tái)后(如上所示),單擊+ 添加終端設(shè)備
- 我無法在 LoRaWAN 設(shè)備存儲(chǔ)庫中找到 LoRa-E5,因此我在手動(dòng)部分中手動(dòng)提供了信息
- 選擇 LoRa-E5 模塊的頻率計(jì)劃、LoRaWAN 版本(取決于您的網(wǎng)關(guān))、區(qū)域參數(shù)版本。我在這里找到了這個(gè)信息
- 現(xiàn)在,輸入您在前面步驟中記下的 DevEUI 和 AppEUI
- 生成一個(gè)新的 AppKey 并在某處記下它。
您的 Things Stack 控制臺(tái)配置已基本完成,可以在 ESP32+LoRa-E5 設(shè)備之間交換消息
在 ESP32 上上傳固件并與 TTN 通信
此固件在配置了 AppKey(如上所述)并上傳到 ESP32 后,會(huì)連接到附近的 LoRaWAN (TTN) 網(wǎng)關(guān),并每 5 秒發(fā)送一次以下 JSON 對(duì)象
{
"state": {
"temp": 27.4,
"humi": 89
}
}
目前,固件會(huì)向 TTN 發(fā)送恒定的溫度和濕度值,但是您可以修改固件以滿足您集成任何傳感器的要求,并改為發(fā)送這些值。
確保替換固件代碼第 101 行中先前步驟中記下的 AppKey。成功上傳代碼后,我在串行端口中看到以下內(nèi)容
JSON 被轉(zhuǎn)換為字節(jié)數(shù)組(即7B 22 73 74... )并發(fā)送到 TTN。您可以通過選擇終端設(shè)備的實(shí)時(shí)數(shù)據(jù)選項(xiàng)卡在 TTN 控制臺(tái)上查看此數(shù)據(jù)
如果您想以 JSON 格式查看字節(jié)數(shù)組中的數(shù)據(jù),請(qǐng)轉(zhuǎn)到 Payload formatters 選項(xiàng)卡并選擇 Formatter type as Javascript 并將 formatter 參數(shù)更改為以下
function decodeUplink(input) {
return {
data: JSON.parse(String.fromCharCode(...input.bytes)),
warnings: [],
errors: []
};
}
保存
返回實(shí)時(shí)數(shù)據(jù)選項(xiàng)卡,選擇“轉(zhuǎn)發(fā)上行鏈路數(shù)據(jù)消息”類型的條目,您現(xiàn)在應(yīng)該能夠以 JSON 格式查看發(fā)送的 LoRa 數(shù)據(jù)
就像固件允許您將數(shù)據(jù)從 ESP32 發(fā)送到 TTN 一樣,它也允許您從 TTN 接收 ESP32 中的數(shù)據(jù)。
要將數(shù)據(jù)從 TTN 發(fā)送到 ESP32,請(qǐng)轉(zhuǎn)到消息選項(xiàng)卡并選擇下行鏈路選項(xiàng)卡。我將以下 JSON 從 TTN 發(fā)送到 ESP32
{
"name": "Sufian",
"id": "sufiankaki"
}
TTN 控制臺(tái)具有以 JSON 和字節(jié)數(shù)組形式發(fā)送數(shù)據(jù)的選項(xiàng)。要發(fā)送 JSON 數(shù)據(jù),我們需要像之前所做的那樣修改 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: []
}
}
完成后,保存并轉(zhuǎn)到消息選項(xiàng)卡并選擇下行鏈路。選擇 JSON 并在 Payload 文本框中輸入數(shù)據(jù)并點(diǎn)擊 Schedule Downlink
在您的 Coolterm/Serial Monitor 上,您應(yīng)該會(huì)看到現(xiàn)在收到一條消息
現(xiàn)在您知道如何從 LoRa 模塊向 TTN 發(fā)送(上行鏈路)和接收(下行鏈路)數(shù)據(jù),修改固件并相應(yīng)地開發(fā)您的項(xiàng)目
MQTT 集成
雖然從 TTN 監(jiān)視和控制 LoRa 設(shè)備很簡(jiǎn)單,但我更喜歡從我的定制應(yīng)用程序中控制它。一旦這樣做的方法是使用 TTN 提供的 MQTT 集成。這允許使用 MQTT 客戶端與 LoRa 設(shè)備進(jìn)行交互
獲取 MQTT 客戶端的最簡(jiǎn)單方法之一是使用安裝在計(jì)算機(jī)中的Mosquitto (CLI)。或者,您可以嘗試任何MQTT Explorer與 GUI 交互。
要為 LoRa 終端設(shè)備啟用 MQTT 集成,請(qǐng)?jiān)?TTN 終端設(shè)備控制臺(tái)的菜單(左側(cè))上選擇集成選項(xiàng),然后選擇 MQTT
您將看到主機(jī)名、端口號(hào)和用戶名。單擊生成新的 API 密鑰,以便您也擁有密碼
除了您在 MQTT 集成頁面上看到的 4 個(gè)字段(主機(jī)名、端口、用戶名和密碼)之外,您還需要訂閱或發(fā)布到 TTN 的主題,具體取決于您是要從 LoRa 設(shè)備接收消息還是發(fā)送分別向 LoRa 設(shè)備發(fā)送消息。
要接收從 LoRa 設(shè)備發(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 設(shè)備到 TTN 的上行鏈路消息有關(guān)的終端設(shè)備、網(wǎng)關(guān)、元數(shù)據(jù)等的所有信息。
要從 MQTT 客戶端向 LoRa 設(shè)備發(fā)送數(shù)據(jù),您需要發(fā)布消息的主題是v3/
{
"downlinks":
[
{ "f_port": 1,
"frm_payload":"ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9",
"priority":"NORMAL"
}
]
}
您需要發(fā)送的消息應(yīng)該是 base64 編碼的。假設(shè)您要發(fā)送以下消息
{
"name": "Sufian",
"id": "sufiankaki"
}
你首先需要對(duì)它進(jìn)行base64編碼。我使用這個(gè)在線工具來轉(zhuǎn)換我的信息。對(duì)于上面的消息,我得到了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"}]}"
確保您轉(zhuǎn)義了消息中的雙引號(hào)。
有關(guān) MQTT 集成的更多信息,請(qǐng)查看官方文檔。我上面的解釋是針對(duì) Eclipse Mosquitto 的。
通過 Python 程序監(jiān)視和控制您的 LoRa 設(shè)備
使用 MQTT 集成,LoRa 設(shè)備也可以通過 python 程序進(jìn)行監(jiān)視和控制。我將使用 Eclipse Paho 庫從我的 Python 程序向 LoRa 設(shè)備發(fā)送和接收消息
從 LoRa 設(shè)備接收和打印消息的程序
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 設(shè)備發(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!")
- NET Core LoRaWAN客戶端使用Seeed LoRa E5模塊
- 使用LoRa E5的低功耗雪深傳感器
- 使用ST Cube編程器和IDE對(duì)LoRa E5迷你設(shè)備進(jìn)行編程
- 基于Seedstudio的LoRa E5迷你板 0次下載
- 微信小程序使用MQTT遠(yuǎn)程控制單片機(jī)——阿里云物聯(lián)網(wǎng)平臺(tái)
- 基于LORA+4G網(wǎng)關(guān)的油田物聯(lián)網(wǎng)系統(tǒng) 11次下載
- 基于以太坊區(qū)塊鏈的物聯(lián)網(wǎng)設(shè)備訪問控制機(jī)制 12次下載
- 鴻蒙開發(fā)板上使用MQTT協(xié)議、OneNET實(shí)現(xiàn)第一個(gè)物聯(lián)網(wǎng)項(xiàng)目 0次下載
- 如何使用MQTT客戶端連接阿里云MQTT服務(wù)器詳細(xì)教程說明
- Triscend E5單片機(jī)TrISC端E5可配置片上系統(tǒng)平臺(tái) 4次下載
- MQTT是什么?物聯(lián)網(wǎng)開發(fā)入門之物聯(lián)網(wǎng)標(biāo)準(zhǔn)通信協(xié)議-MQTT詳細(xì)資料概述 33次下載
- 物聯(lián)網(wǎng)全棧教程從云端到設(shè)備(十二)設(shè)備端的開發(fā)詳細(xì)資料免費(fèi)下載 14次下載
- 物聯(lián)網(wǎng)MQTT網(wǎng)關(guān)連接PLC配置全過程 30次下載
- 基于MQTT的工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)云平臺(tái) 33次下載
- MQTT物聯(lián)網(wǎng)網(wǎng)關(guān)的常見類型 31次下載
- 通過物聯(lián)網(wǎng)管理多臺(tái)MQTT設(shè)備-基于米爾T527開發(fā)板 505次閱讀
- MQTT和Modbus協(xié)議的區(qū)別 1899次閱讀
- 基于啟明RA6M5的物聯(lián)網(wǎng)居家環(huán)境健康監(jiān)控設(shè)備設(shè)計(jì) 703次閱讀
- paho-mqtt模塊實(shí)戰(zhàn) 1113次閱讀
- MQTT協(xié)議的概念和主要特性 MQTT協(xié)議于物聯(lián)網(wǎng)有何好處 2231次閱讀
- 【產(chǎn)品應(yīng)用】GLCOM-NET網(wǎng)關(guān)一分鐘實(shí)現(xiàn)LoRa轉(zhuǎn)MQTT(高階版) 2098次閱讀
- 如何使用M5Stamp PICO和Qubitro構(gòu)建物聯(lián)網(wǎng)門鎖監(jiān)控系統(tǒng) 1680次閱讀
- FLIR E4、E5、E6和E8紅外熱像儀的性能特點(diǎn)及應(yīng)用范圍 2665次閱讀
- 亞太天能科技E5/E5c指紋鎖簡(jiǎn)介 6552次閱讀
- 物聯(lián)網(wǎng)設(shè)備的安全問題深度分析 4649次閱讀
- 物聯(lián)網(wǎng)中的LoRa究竟是什么 7659次閱讀
- 物聯(lián)網(wǎng)的設(shè)備專業(yè)化和集成化兩個(gè)維度的發(fā)展規(guī)律 3229次閱讀
- 淺談lora物聯(lián)網(wǎng)技術(shù)及發(fā)展現(xiàn)狀 1.2w次閱讀
- NB-IoT與LoRa在消防物聯(lián)網(wǎng)中孰強(qiáng)孰弱? 5895次閱讀
- 物聯(lián)網(wǎng)應(yīng)用的支撐是5G網(wǎng)絡(luò)建設(shè)的主要目標(biāo)之一 3594次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多