【LoRaWAN】展厅的 LoRaWAN灯控项目部署及开发分享

2023-10-15 07:20

本文主要是介绍【LoRaWAN】展厅的 LoRaWAN灯控项目部署及开发分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 原理
  • 准备工作
    • 服务器搭建
    • 网关配置连接路由
    • 源码分析
  • 发布MQTT下行数据
    • Topic说明
    • 消息负载说明
  • MQTT客户端
  • 总结
  • 资料下载地址
  • 联系方式

原理

此示例使用LoRaWAN的传输,第三方客户端使用mqtt协议与LoRaWAN服务器进行交互,下发控制控制协议与下方节点通信,控制模块IO的例程,示例仅作为演示使用,内部握手交互逻辑单一较为简单,下面我们一起来分分析整个案例。

准备工作

服务器搭建

这里的服务器搭建我选择了免费测试的TTN服务器,申请账号——添加网关——添加节点模组即可,步骤如下
搜索ttn,https://www.thethingsnetwork.org/
创建账号
在这里插入图片描述
加入网关
记住这里的网关eui,请填写网关真正的eui参数
在这里插入图片描述

增加节点
节点加入方式是ABP,自动生成密钥,密钥在稍后的的的代码中会用到

在这里插入图片描述
至此我们的服务器搭建工作已经完成,我们添加了网关的必要参数eui,并且成功添加了一个使用ABP入网的设备,下一步我们配置网关参数,让网关连接我们的服务器

网关配置连接路由

这里我们使用RG-02网关,网关的参数连接如下RG-02网关
(1)连接网关热点,热点为AiThinker开头,密码为12345678
(2)访问网关后台,浏览器直接输入10.130.1.1:8000
(3)进入AP页面修改网关连接的热点,把它连接到公网路由上,之后就不需要连接热点访问了,访问地址可以改为路由分配给网关的地址了(局域网内)
(4)记得点击勾选和保存
在这里插入图片描述
配置网关连接服务器
(1)登入网关后台,进入lorawan配置界面
(2)lorawan界面可以查看网关的真实EUI,这个参数是我们服务器加入网关必填的真实参数
(3)更改网关的服务器接口,接口在TTN服务器内获取
(4)检查一遍lora的频段参数,一定设置未ttn的470段
如下图
在这里插入图片描述

源码分析

上面已经把服务器和网关搭建好了,接下来我们使用官方的SDK修改一份代码,代码内容包括节点密钥的填写,入网方式的更改
源码路径
在这里插入图片描述
入网配网参数修改
这里我们使用的ABP入网参数,参数需要与服务器节点设备设置的参数一致

#define LORAWAN_APP_PORT                            2static uint8_t DevEui[] = LORAWAN_DEVICE_EUI;
static uint8_t AppEui[] = LORAWAN_APPLICATION_EUI;
static uint8_t AppKey[] = LORAWAN_APPLICATION_KEY;#if( OVER_THE_AIR_ACTIVATION == 0 )static uint8_t NwkSKey[] = LORAWAN_NWKSKEY;
static uint8_t AppSKey[] = LORAWAN_APPSKEY;
static uint32_t DevAddr = LORAWAN_DEVICE_ADDRESS;

上行数据

/*!* \brief   Prepares the payload of the frame*/
static void PrepareTxFrame( uint8_t port )
{AppDataSize = 4;AppData[0] = 0x00;AppData[1] = 0x01;AppData[2] = 0x02;AppData[3] = 0x03;
}

下行数据

/*!* \brief   MCPS-Indication event function** \param   [IN] mcpsIndication - Pointer to the indication structure,*               containing indication attributes.*/
static void McpsIndication( McpsIndication_t *mcpsIndication )
{int i = 0;if( mcpsIndication->Status != LORAMAC_EVENT_INFO_STATUS_OK ){return;}printf( "receive data: rssi = %d, snr = %d, datarate = %d\r\n", mcpsIndication->Rssi, (int)mcpsIndication->Snr,(int)mcpsIndication->RxDatarate);switch( mcpsIndication->McpsIndication ){case MCPS_UNCONFIRMED:{break;}case MCPS_CONFIRMED:{break;}case MCPS_PROPRIETARY:{break;}case MCPS_MULTICAST:{break;}default:break;}// Check Multicast// Check Port// Check Datarate// Check FramePendingif( mcpsIndication->FramePending == true ){// The server signals that it has pending data to be sent.// We schedule an uplink as soon as possible to flush the server.OnTxNextPacketTimerEvent( );}// Check Buffer// Check BufferSize// Check Rssi// Check Snr// Check RxSlotif( mcpsIndication->RxData == true ){}if(mcpsIndication->BufferSize) {printf("Received: ");for(i=0; i<mcpsIndication->BufferSize; i++) {printf("%x ", mcpsIndication->Buffer[i]);}}printf("\r\n");
}

发布MQTT下行数据

阅读MQTT下行数据规则,TTN服务器mqtt规则

Topic说明

客户端订阅服务器Topic,进行数据交互
本次订阅的发布的top如下

v3/app1@tenant1/devices/dev1/down/push
例如:
v3/zt-smart-light-01@ttn/devices/eui-70b3d57ed005e33f/down/push
//说明:根据规则,我们将app1@tenant1替换成自己的设备名,dev1替换成我们真实的设备EUI,这些信息可以在我们的TTN服务器设备管理内获取到

消息负载说明

我们向这个上述Topic下发如下所示数据,通过更换负载payload信息来控制灯的亮灭,数据如下

{"downlinks": [{"frm_payload": "AA==", //负载信息,base格式的AA==表示关灯,AQ==则表示关灯"f_port": 15,          //端口"priority": "NORMAL","class_b_c": {"gateways": [{"gateway_ids": {"gateway_id": "eui-94c9604857123456" //这里根据自己的设备填写真实的网关EUI参数,可以在网关或者服务器上获取}}]}}]
}

MQTT客户端

MQTT客户端使用手机app,IOT MQTT面板
【软件名称】iot MQTT面板
【软件大小】19.04MB
【软件介绍】
基于MQTT协议的智能家居物联网遥控。
该应用程序允许您基于MQTT协议管理和可视化物联网项目。
有了这个应用程序,您可以在一分钟内制作DIY智能家居项目。配置非常简单。应用信息页面提供了详细记录的FAQ和用户指南。
1.支持MQTT(TCP)和Websocket(有用的特殊防火墙限制网络)协议。
2.用于安全通信的SSL。
3. JSON支持订阅和发布消息。
4.面板自动订阅和/或发布主题,因此实时更新
5.旨在有效地与公共经纪人合作(使用设备前缀)。
6.来自经纪人的已发送和已接收时间戳。
7.材料设计。
8.灵活的面板宽度,合并任何面板
9.超过250个图标可自定义特定面板。
10.黑暗主题,适合在低光照条件下使用。
11.克隆连接,设备或面板,轻松配置
12.导入/导出应用程序配置,以便与多个设备轻松共享。
13.在后台运行并自动重新连接。

在这里插入图片描述

总结

以上就是我们提供的一个mqtt控制LoRa的交互例程,涉及到

  • 网络服务器的配置(节点和网关的录入);

  • 网关后台信息的配置;

  • 节点源码例程的基础修改应用;

  • 以及MQTT控制协议的使用说明(推荐移动的mqtt客户端);
    如果想要自定义数据解析,握手交互控制等逻辑内容的话,还需要大家逐步完善开发适合自己的工程。

资料下载地址

IOT MQTT面板APP的下载链接:https://pan.baidu.com/s/1yfza8N96ZZ5eB_ZM0JrYFA
提取码:eky6

工程源码获取地址:https://github.com/Ai-Thinker-Open/Ai-Thinker-LoRaWAN-Ra-08.git

立创灯板硬件设计资料链接:https://oshwhub.com/aithinker/ra-08led
在这里插入图片描述

演示视频链接地址:https://www.bilibili.com/video/BV1qX4y1s7JE/?spm_id_from=333.337.search-card.all.click&vd_source=f382b4ec4a1207af4363c7e0e18dfaa1
在这里插入图片描述

联系方式

以上就是本期分享的内容,目的在于让大家快速适应新品方案的开发,更多资料可从我们官网上获取。

官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
技术支持:support@aithinker.com

这篇关于【LoRaWAN】展厅的 LoRaWAN灯控项目部署及开发分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/Boantong_/article/details/133266451
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/216234

相关文章

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事