当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]BACnet 是一种国际标准的楼宇自动化通信协议,可使来自不同制造商的设备(如供暖、通风、空调、照明和安防系统)能够相互通信。目前的 BACnet 系统通常使用以太网作为传输介质(BACnet/IP),而较早的系统则通常采用 RS485(BACnet MSTP)作为第0层通信方式。

BACnet 是一种国际标准的楼宇自动化通信协议,可使来自不同制造商的设备(如供暖、通风、空调、照明和安防系统)能够相互通信。目前的 BACnet 系统通常使用以太网作为传输介质(BACnet/IP),而较早的系统则通常采用 RS485(BACnet MSTP)作为第0层通信方式。

由于BACnet堆栈非常庞大,因此对RAM和程序内存的要求较高,这使得在小型微控制器上集成BACnet服务器变得困难。

BACnet 采用客户端-服务器模式运行。BACnet 服务器在楼宇自动化网络中提供数据(如温度、传感器读数或开关状态),而 BACnet 客户端则是接收设备或控制软件,用于主动获取这些数据或将命令发送给服务器。

在本教程中,我将向您展示如何在ESP32(Huzzah 32 Feather开发板)上实现一个简单的BACnet MSTP服务器,并额外添加一个RS485扩展板。

布线

至于BACnet MS/TP,最常见的连接方式是菊花链总线配置,即使用单根RS485电缆将网络中的所有设备按线性链式连接。

为此,请将每个设备的“+”和“-”端子相互连接。RS485机翼配备有5针连接器,其中两个引脚标有“A”和“B”。A引脚必须连接到其他设备的“+”端子,B引脚则连接到“-”端子。

对于较远距离,建议使用双绞线电缆。通过RS485可实现最长一英里的传输距离。

配置RS485翼板

对于BACnet MSTP通信,RS485侧的DIP开关和跳线必须正确配置。

羽翼有两个DIP开关和一个滑动开关,必须相应设置才能正常工作。

S1 DIP开关可用于选择收发切换的控制方式。我们让机翼自动切换发射/接收方向,这意味着今后在软件中无需再为此担心。因此,S1设置为OFF - ON - ON - OFF。

该引脚可通过S4配置为半双工或全双工模式。S4还可用于开启上拉和下拉电阻,以实现安全偏置。

我们需要半双工的RS485功能,并且要启用偏置。因此,所有S4开关均设置为ON。

终端电阻可通过滑动开关S2进行接通。只有当机翼连接到总线线路的两个端点之一时才需要启用,否则S2保持关闭状态。

软件

Harish Patel 的 BACnetLight 库提供了一个简化版的 BACnet 栈,可在微控制器上运行。尽管该栈最初是为 ESP32 设计的,但其他微控制器也能正常运行,毫无问题。

由于目前无法通过库管理器安装此库,因此我们必须先从 GitHub 下载该库,并将其解压到 Arduino\Library 目录中。

作为初步测试,我创建了一个小型示例程序,包含一个带有两个数据点的简单BACnet MSTP服务器。

一个数据点是一个模拟输入,在我们的例子中,它从温度传感器接收数据(传感器的数值由程序随机生成)。

另一个数据点是二进制输出,在我们的示例中,它被实现为一个虚拟“继电器”,并通过调试接口输出继电器的切换状态。

测试MSTP服务器

我们现在拥有一台简单的BACnet MSTP服务器,可以集成到现有系统中。但为了测试设备,我们仍然需要一个客户端。

您可以使用免费软件YABE(Yet Another BACnet Explorer)轻松在Windows或Linux电脑上设置客户端。为了使YABE能够通过BACnet MSTP进行通信,我们还需要一个标准的USB转RS485适配器。

安装完成后,我们就可以启动 YABE。首先,进入“功能”→“添加 BACnet 通道”:

现在,在窗口的右侧区域,找到“BACnet/MSTP 串行”下方,设置所连接的RS485适配器的COM端口(我的情况是COM12),并根据需要设置波特率及其他参数:

我们的BACnet设备现在会自动被检测并显示在通道下。如果双击已检测到的设备,我们将在“对象”窗口中看到三个项目:设备属性、模拟值和二进制输出。

当你点击某个对象时,其属性会显示在右侧的“属性”窗口中,你也可以修改这些属性。例如,如果我们点击 BINARY_OUTPUT,就可以通过修改属性窗口中的“当前值”变量来改变继电器状态(0 表示继电器断开,1 表示继电器闭合)。

然后我们可以在Arduino IDE的调试输出中看到结果:

代码

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

随着智能家居设备(IoT)的普及,我们的家庭和企业网络已成为静默漏洞的高危地带。智能电视、老旧的IP摄像头以及路由器经常运行未经加密的旧式服务,例如Telnet(端口23)或FTP(端口21)。

关键字: 智能家居 摄像头 路由器 ESP32

我的歌唱机器人是一种交互式音乐表演系统,由手持控制器、四个无线机器人节点和一台笔记本电脑图形用户界面组成。用户可通过4步音序器开启或关闭每个机器人,调节节拍(BPM),并使用控制器上的旋转编码器改变各机器人的音高,来创作...

关键字: 机器人 LED灯 扬声器 ESP32

该项目介绍了一款集成了传感器的手套,通过手势来执行键盘和鼠标操作。该系统将指尖上的压力传感器与手掌背面的惯性测量单元(IMU)相结合,将手指轻触和手部动作转化为键盘和鼠标的控制指令。这使得用户可以在任何表面上进行完整打字...

关键字: 传感器 力敏电阻 ESP32

很长一段时间里,我总是需要反复按下Alt键切换到任务管理器或系统监控工具,才能查看电脑资源的使用情况。尤其是在进行大量渲染或游戏时,如果能一目了然地看到这些信息,就能大大减少猜测的时间。一个小巧而专用的显示屏,能够实时显...

关键字: LCD ESP32 CPU

我设计了这款STM32F401开发板,旨在获得微控制器硬件设计和PCB开发的实际经验。与其使用市面上的现成开发板,我希望从零开始理解一个微控制器系统的完整设计过程,包括电源设计、时钟电路、复位电路、USB接口以及接口引脚...

关键字: 嵌入式开发 STM32F401 开发板

我们已经这样临时搭建的花园喷泉好几年了。我妻子用几件陶瓷器皿组装而成,我在下层水盆里加了一台小巨型水泵,用来将水输送到上层水盆的喷嘴处。

关键字: 智能插座 压力传感器 ESP32

在我的一些之前视频中,我向大家展示了如何在不同显示屏上模拟制作模拟VU表。这次我将讲解如何制作这样一个项目,但使用的是包含几乎所有元件(包括MCU)的显示模块。只需添加几个无源元件和一个LED,即可作为峰值表来工作。

关键字: 显示屏 LED ESP32

我创建了BEAPER Nano,旨在为初学者的电子学和计算机技术课程提供一个多功能的教学平台。其功能也使其成为帮助任何人专注于学习微控制器编程的理想平台,无需在搭建和调试面包板电路时受到干扰。

关键字: 微控制器 机器人 ESP32

目前,“美加墨”世界杯正如火如荼的进行。除了围在电视前观赏这场国际盛事以外,还有不少幸运儿能够到现场观摩。但伴随着汹涌的人潮,运营商需要直面一个头疼的问题——手机因海量用户同时接入而无法上网。

关键字: 传输网 服务器 小基站

黑胶唱片的物理仪式感有一种无可替代的魅力——手中唱片的重量,放置时的刻意动作,以及音乐开始前那份期待。数字音乐为我们提供了无限的选择,却也夺走了这种仪式感。

关键字: Wi-Fi 蓝牙 扬声器 ESP32
关闭