資料介紹
描述
該項目的目標是使用 LoRaWAN 上的物聯網 MQTT 集成來監控和控制基于 LoRa-E5 的物聯網設備。
LoRa-E5 模塊在其 LoRa 調制解調器旁邊有一個嵌入式 MCU,但是我對 ESP32 最滿意,所以我將 LoRa-E5 用作帶有 ESP32 開發模塊的 LoRa 調制解調器。在幾款 LoRa-E5 板卡中,當您只需要 LoRa-E5 作為調制解調器時,推薦使用Grove LoRa E5模塊,因此在本項目中使用了相同的模塊。
最初,我只是想在兩個 LoRa-E5 模塊之間交換消息,而不需要 LoRaWAN,因此我使用了 TEST 模式并使其成功運行。如果您只想在 LoRa 模塊之間交換消息而無需設置網關(這稱為 TEST 模式),請查看此項目!
繼續實現該項目的目標,我將其分為以下里程碑
?
設置物聯網網關
為了將數據包從我的 ESP32 發送到物聯網,我需要一個支持與我的 LoRa-E5 模塊相同頻率的網關。這是我使用 Raspberry Pi + RAK2245 Pi HAT 的地方。
如果您有任何其他與您的 LoRa-E5 模塊頻率范圍相同的 LoRaWAN 網關,并且能夠通過它連接到物聯網,那就太好了!
要設置我的 Pi+RAK2245 LoRaWAN 網關,我只需要按照RAK Wireless的官方指南進行操作即可。
設置完成后,您將看到網關頁面如下
在物聯網上設置 LoRa-E5 設備
在物聯網上配置 LoRa-E5 設備時,需要設備中的以下信息
- 開發EUI
- AppEUI
所有的 LoRa-E5 模塊都已經有了這些信息。我們可以選擇使用已配置的內容或生成新的 EUI 并使用它配置 LoRa-E5 模塊。我選擇使用預先配置在模塊上的 EUI。
要獲取 DevEUI 和 AppEUI,請在 ESP32 開發模塊上上傳串行直通固件,其連接如示意圖所示。請注意,LoRa-E5 模塊在 9600 波特上工作,因此請相應地配置您的串行直通固件。
刷新 ESP32 開發模塊后,打開串行監視器/CoolTerm 并發送以下命令
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
請注意此信息可能在記事本中的某處。我們將在接下來的步驟中需要它。
現在讓我們配置The Things Network (TTN),以便我們可以通過以下步驟在 ESP32+LoRa-E5 和 TTN 之間發送和接收數據:
- 在Things Stack 控制臺上,選擇您選擇的區域并轉到 Applications 并創建一個新應用程序
- 現在您已經創建了一個 Things Stack 應用程序。進入應用程序控制臺后(如上所示),單擊+ 添加終端設備
- 我無法在 LoRaWAN 設備存儲庫中找到 LoRa-E5,因此我在手動部分中手動提供了信息
- 選擇 LoRa-E5 模塊的頻率計劃、LoRaWAN 版本(取決于您的網關)、區域參數版本。我在這里找到了這個信息
- 現在,輸入您在前面步驟中記下的 DevEUI 和 AppEUI
- 生成一個新的 AppKey 并在某處記下它。
您的 Things Stack 控制臺配置已基本完成,可以在 ESP32+LoRa-E5 設備之間交換消息
在 ESP32 上上傳固件并與 TTN 通信
此固件在配置了 AppKey(如上所述)并上傳到 ESP32 后,會連接到附近的 LoRaWAN (TTN) 網關,并每 5 秒發送一次以下 JSON 對象
{
"state": {
"temp": 27.4,
"humi": 89
}
}
目前,固件會向 TTN 發送恒定的溫度和濕度值,但是您可以修改固件以滿足您集成任何傳感器的要求,并改為發送這些值。
確保替換固件代碼第 101 行中先前步驟中記下的 AppKey。成功上傳代碼后,我在串行端口中看到以下內容
JSON 被轉換為字節數組(即7B 22 73 74... )并發送到 TTN。您可以通過選擇終端設備的實時數據選項卡在 TTN 控制臺上查看此數據
如果您想以 JSON 格式查看字節數組中的數據,請轉到 Payload formatters 選項卡并選擇 Formatter type as Javascript 并將 formatter 參數更改為以下
function decodeUplink(input) {
return {
data: JSON.parse(String.fromCharCode(...input.bytes)),
warnings: [],
errors: []
};
}
保存
返回實時數據選項卡,選擇“轉發上行鏈路數據消息”類型的條目,您現在應該能夠以 JSON 格式查看發送的 LoRa 數據
就像固件允許您將數據從 ESP32 發送到 TTN 一樣,它也允許您從 TTN 接收 ESP32 中的數據。
要將數據從 TTN 發送到 ESP32,請轉到消息選項卡并選擇下行鏈路選項卡。我將以下 JSON 從 TTN 發送到 ESP32
{
"name": "Sufian",
"id": "sufiankaki"
}
TTN 控制臺具有以 JSON 和字節數組形式發送數據的選項。要發送 JSON 數據,我們需要像之前所做的那樣修改 Payload 格式化程序(用于下行鏈路)。將現有腳本更改為
function encodeDownlink(input) {
return {
bytes: JSON.stringify(input),
fPort: 1,
warnings: [],
errors: []
};
}
function decodeDownlink(input) {
return {
data: {
bytes: input.bytes
},
warnings: [],
errors: []
}
}
完成后,保存并轉到消息選項卡并選擇下行鏈路。選擇 JSON 并在 Payload 文本框中輸入數據并點擊 Schedule Downlink
在您的 Coolterm/Serial Monitor 上,您應該會看到現在收到一條消息
現在您知道如何從 LoRa 模塊向 TTN 發送(上行鏈路)和接收(下行鏈路)數據,修改固件并相應地開發您的項目
MQTT 集成
雖然從 TTN 監視和控制 LoRa 設備很簡單,但我更喜歡從我的定制應用程序中控制它。一旦這樣做的方法是使用 TTN 提供的 MQTT 集成。這允許使用 MQTT 客戶端與 LoRa 設備進行交互
獲取 MQTT 客戶端的最簡單方法之一是使用安裝在計算機中的Mosquitto (CLI)。或者,您可以嘗試任何MQTT Explorer與 GUI 交互。
要為 LoRa 終端設備啟用 MQTT 集成,請在 TTN 終端設備控制臺的菜單(左側)上選擇集成選項,然后選擇 MQTT
您將看到主機名、端口號和用戶名。單擊生成新的 API 密鑰,以便您也擁有密碼
除了您在 MQTT 集成頁面上看到的 4 個字段(主機名、端口、用戶名和密碼)之外,您還需要訂閱或發布到 TTN 的主題,具體取決于您是要從 LoRa 設備接收消息還是發送分別向 LoRa 設備發送消息。
要接收從 LoRa 設備發送到 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 的上行鏈路消息有關的終端設備、網關、元數據等的所有信息。
要從 MQTT 客戶端向 LoRa 設備發送數據,您需要發布消息的主題是v3/
{
"downlinks":
[
{ "f_port": 1,
"frm_payload":"ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9",
"priority":"NORMAL"
}
]
}
您需要發送的消息應該是 base64 編碼的。假設您要發送以下消息
{
"name": "Sufian",
"id": "sufiankaki"
}
你首先需要對它進行base64編碼。我使用這個在線工具來轉換我的信息。對于上面的消息,我得到了ewogICAgIm5hbWUiOiAiU3VmaWFuIiwKICAgICJpZCI6ICJzdWZpYW5rYWtpIgp9
我的 base64 編碼字符串
因此我的 MQTT 發布消息看起來像
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 程序監視和控制您的 LoRa 設備
使用 MQTT 集成,LoRa 設備也可以通過 python 程序進行監視和控制。我將使用 Eclipse Paho 庫從我的 Python 程序向 LoRa 設備發送和接收消息
從 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 設備發送消息的程序
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對LoRa E5迷你設備進行編程
- 基于Seedstudio的LoRa E5迷你板 0次下載
- 微信小程序使用MQTT遠程控制單片機——阿里云物聯網平臺
- 基于LORA+4G網關的油田物聯網系統 11次下載
- 基于以太坊區塊鏈的物聯網設備訪問控制機制 12次下載
- 鴻蒙開發板上使用MQTT協議、OneNET實現第一個物聯網項目 0次下載
- 如何使用MQTT客戶端連接阿里云MQTT服務器詳細教程說明
- Triscend E5單片機TrISC端E5可配置片上系統平臺 4次下載
- MQTT是什么?物聯網開發入門之物聯網標準通信協議-MQTT詳細資料概述 33次下載
- 物聯網全棧教程從云端到設備(十二)設備端的開發詳細資料免費下載 14次下載
- 物聯網MQTT網關連接PLC配置全過程 30次下載
- 基于MQTT的工業物聯網數據云平臺 33次下載
- MQTT物聯網網關的常見類型 31次下載
- 通過物聯網管理多臺MQTT設備-基于米爾T527開發板 505次閱讀
- MQTT和Modbus協議的區別 1899次閱讀
- 基于啟明RA6M5的物聯網居家環境健康監控設備設計 703次閱讀
- paho-mqtt模塊實戰 1113次閱讀
- MQTT協議的概念和主要特性 MQTT協議于物聯網有何好處 2231次閱讀
- 【產品應用】GLCOM-NET網關一分鐘實現LoRa轉MQTT(高階版) 2098次閱讀
- 如何使用M5Stamp PICO和Qubitro構建物聯網門鎖監控系統 1680次閱讀
- FLIR E4、E5、E6和E8紅外熱像儀的性能特點及應用范圍 2665次閱讀
- 亞太天能科技E5/E5c指紋鎖簡介 6552次閱讀
- 物聯網設備的安全問題深度分析 4649次閱讀
- 物聯網中的LoRa究竟是什么 7659次閱讀
- 物聯網的設備專業化和集成化兩個維度的發展規律 3229次閱讀
- 淺談lora物聯網技術及發展現狀 1.2w次閱讀
- NB-IoT與LoRa在消防物聯網中孰強孰弱? 5895次閱讀
- 物聯網應用的支撐是5G網絡建設的主要目標之一 3594次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 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開發指南
- 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數字電路基礎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次下載 | 免費
評論
查看更多