该项目由使用Hoperf Lora RFM95W/RFM96W收音机的简单ATMEL ATMEGA328P节点组成。电池供电的节点测量温度,湿度和气压压力,具体取决于连接的硬件。外部动力的脉冲类型节点计数来自不同实用仪表的脉冲,并连接到Kamstrup多元能计。 Gateway从传感器节点接收并收集这些测量值,可以通过Modbus RTU协议通过两线RS-485或Common 3.3 Volt UART访问串行通信。这可以与许多DIY家庭自动化系统(例如Domoticz,Home Assistant and OpenHab)进行接口。传感器使用自定义电路板,但使用Arduino IDE编程。
该项目是一个完整的软件包:它包括硬件设计和软件。原理图包含PCB设计,因此您可以从工厂制造或订购PCB并焊接节点。软件可以按原样上传。如果您不想使用所提供的硬件设计,则应该能够使用,例如Arduino Pro Minis带有Proteoboards。浏览.INOS和原理图以找出PIN定义。如果使用Pro Minis或其他“全尺寸” Arduinos,请记住考虑使用电池。还请记住,所使用的组件大部分仅为3.3伏的耐受性,因此使用5伏Uno需要升高。
直接跳过说明,尽管我强烈建议您先阅读整个读书文件。
传感器需要一些外部组件才能工作:库为无线电通信和连接传感器提供功能,而硬件包装处理所需的保险丝可以与传感器使用的自定义板一起使用。仔细仔细遵循有关Radiohead和密码图库的说明,因为这些需要进行几个基础更改。
嵌入式微处理器的Radiohead数据包无线电库为RFM95W/RFM96W收音机(以及许多其他人)提供了支持。从airspayce.com下载。将库提取到您的Arduino IDE库文件夹后,您必须进行一次调整。在Radiohead/rh_rf95.h更改线的开头#define RH_RF95_FIFO_SIZE 255
到#define RH_RF95_FIFO_SIZE 64
没有这种变化,沟通将无效。您还可能没有此调整而冒出SRAM的可能性。
Arduino密码库包括对加密的支持。如果您不打算加密流量,则不需要此库。从github.com下载。您将需要将库的邮政编码下载到您的Arduino IDE库文件夹中。还要记住要在Radiohead/Radiohead.h的末尾删除以下行以启用加密:
//#define RH_ENABLE_ENCRYPTION_MODULE
您还需要在加密/rng.cpp的开头评论以下行来禁用看门狗熵收获,因为电池供电的节点已经使用了看门狗计时器:
#define RNG_WATCHDOG 1 // Harvest entropy from watchdog jitter.
如果您对所有这些都不知所措,则可能只希望根本不启用加密。毕竟,无论如何,传感器并不是很高的安全系统。
需要LowPowerLab SI7021库来与Silicon Labs SI7021温度和湿度传感器一起工作。从github.com下载。
Sparkfun BME280 Arduino库与Bosch Sensortech BME280温度,湿度和气压传感器的接口。 github.com上的文档。使用Arduino IDE库管理器安装。
传感器使用的硬件设计与常规Arduino板不同。例如,电池操作的节点在内部1 MHz时钟和网关上使用外部8 MHz晶体。他们也缺少引导加载程序(尽管您可以使用它,但硬件只是不提供串行引脚来使用Bootloader燃烧新的固件)。相反,通过ISP标头使用ICSP刷新程序。
您可以手动设置必要的保险丝,但是只需使用现成的硬件软件包就容易得多。麦杜德(McUdude)有一个很好的核心来做到这一点。从github.com下载McUdude的Minicore。
网关从节点收集数据,并充当Modbus网络的继电器。通过使用Maxim集成的Max3485 RS-485收发器网关可以连接到现有的RS-485 Modbus RTU网络作为从。省略收发器提供直接的TTL串行端口。可以通过另一个Arduino板,FTDI芯片或直接连接到Raspberry Pi进行访问。无论物理连接如何,都可以使用Modbus协议访问网关。网关需要受监管的3.3伏或(不受管制的)5-12伏直流电源。此外,Gateway具有三个脉冲输入(脉冲值定期保存到EEPROM并在电源上恢复),其中一个可以用作NTC热敏电阻输入。这些输入也可以通过modbus访问。
Modbus协议的一个缺点是,一个从无法告知主消息的新消息。为此,脉冲2可以作为外部中断起作用。该引脚的行为就像是模拟的开放器输出(但是,外部高状态电压限制为3.3伏)。当从重要的节点或任何节点收到消息时,将将引脚拉到地面,具体取决于网关设置。 Modbus读取完成后,该PIN将被设置回高阻抗状态。

警告: UART串行端口为3.3伏,因此请勿将其连接到5伏系统。
为什么要modbus? Modbus是一种易于使用和集成此类数据传输的协议。尽管它旧的功能有限,但仍然提供所有必要的东西,并在行业中广泛使用。访问它的库存在或多或少存在。此外,大多数DIY家庭自动化系统(家庭助理,Domoticz和OpenHab仅举几例)都有Modbus支持。
可以使用功能代码3(读取寄存寄存器)或4(读取输入寄存器)访问寄存器。两者都返回相同的寄存器值。请注意,无法读取未定义的寄存器。例如,尝试读取寄存器21-99或108-199将返回非法数据地址例外。
| 地址 | 数字 | 姓名 | 类型 /单元 | 笔记 |
|---|---|---|---|---|
| 0 | 30001 | modbus错误(CRC失败或损坏) | 柜台 | |
| 1 | 30002 | modbus溢出帧 | 柜台 | |
| 2 | 30003 | modbus非法功能读取 | 柜台 | |
| 3 | 30004 | modbus非法地址读取 | 柜台 | |
| 4 | 30005 | 接收的modbus框架 | 柜台 | |
| 5 | 30006 | 发送的modbus帧发送 | 柜台 | |
| 6 | 30007 | 最后一个小时的节点 | 柜台 | |
| 7 | 30008 | 在过去12个小时内节点 | 柜台 | |
| 8 | 30009 | 在过去24小时内节点 | 柜台 | |
| 9 | 30010 | 电池电量至少一个节点 | 布尔 | |
| 10 | 30011 | 门户不记忆力 | 布尔 | |
| 11 | 30012 | 网关正常运行时间 | 小时 | |
| 12 | 30013 | 固件版本 | 8 msb =主要,8 lsb =次要 | |
| 13 | 30014 | 地位 | 请参阅下面的位。 | |
| 14 | 30015 | 脉冲1 | 柜台 | 32位 |
| 16 | 30017 | 脉冲2 | 柜台 | 32位 |
| 18 | 30019 | 脉冲3 /温度 | 计数器 /°C | 32位 |
| 20 | 30021 | 最后收到的节点ID |
状态寄存器位(从LSB到MSB):
第一个地址是节点ID * 100 。例如,此表显示了节点ID 1的地址。类似地,节点ID 2的测量值在地址200开始,依此类推。
| 地址 | 数字 | 姓名 | 类型 /单元 | 笔记 |
|---|---|---|---|---|
| 100 | 30101 | 最后收到 | 分钟 | 节点是什么时候出现的。 |
| 101 | 30102 | 电池电压 | MV | 当前的电池电压。 |
| 102 | 30103 | 传输功率 | % | 相对发射功率。 |
| 103 | 30104 | 发送间隔 | 分钟 | 节点至少一次传输多久。 |
| 104 | 30105 | 标题 | 只有8个LSB,调试数据。请参阅下面的位。 | |
| 105 | 30106 | 温度 | °C | ×10 |
| 106 | 30107 | 相对湿度 | rh% | ×10。仅当节点具有SI7021或BME280时。 |
| 107 | 30108 | 气压 /温度 | HPA /°C | ×10。压力如果节点具有BME280,则温度如果节点具有SI7021和NTC。 |
标题寄存器位(从LSB到MSB):
第一个地址是节点ID * 100 。例如,此表显示了节点ID 2的地址。类似地,节点ID 3在地址300处开始的测量值,依此类推。
| 地址 | 数字 | 姓名 | 类型 /单元 | 笔记 |
|---|---|---|---|---|
| 200 | 30201 | 最后收到 | 分钟 | 节点是什么时候出现的。 |
| 201 | 30202 | 传输功率 | % | 相对发射功率。 |
| 202 | 30203 | 发送间隔 | 分钟 | 节点至少一次传输多久。 |
| 203 | 30204 | 标题 | 只有8个LSB,调试数据。请参阅下面的位。 | |
| 204 | 30205 | 脉冲1 | 柜台 | 32位 |
| 206 | 30207 | 脉冲2 | 柜台 | 32位 |
| 208 | 30209 | 脉冲3 /温度 | 计数器 /°C | 32位 |
标题寄存器位(从LSB到MSB):
第一个地址是节点ID * 100 。例如,此表显示了节点ID 3的地址。类似地,节点ID 4在地址400处开始的测量值,依此类推。
| 地址 | 数字 | 姓名 | 类型 /单元 | 笔记 |
|---|---|---|---|---|
| 300 | 30301 | 最后收到 | 分钟 | 节点是什么时候出现的。 |
| 301 | 30302 | 传输功率 | % | 相对发射功率。 |
| 302 | 30303 | 发送间隔 | 分钟 | 节点至少一次传输多久。 |
| 303 | 30304 | 标题 | 只有8个LSB,调试数据。请参阅下面的位。 | |
| 304 | 30305 | 脉冲1 | 柜台 | 32位 |
| 306 | 30307 | 脉冲2 | 柜台 | 32位 |
| 308 | 30309 | 脉冲3 /温度 | 计数器 /°C | 32位 |
| 310 | 30311 | 热能 | kwh | 32位 |
| 312 | 30313 | 实际流程 | l/h | 32位 |
| 314 | 30315 | 体积 | m³ | ×100。 32位 |
| 316 | 30317 | 实际功率 | KW | ×10。 32位 |
| 318 | 30319 | 实际t₁ | °C | ×100。 32位 |
| 320 | 30321 | 实际t₂ | °C | ×100。 32位 |
标题寄存器位(从LSB到MSB):
传感器包括两种主要节点类型:电池和脉冲。电池供电的低功率节点监测温度,湿度和压力。脉冲类型节点是外部动力的,并从实用仪表中计数脉冲。脉冲节点还支持连接一个NTC热电阻进行温度监测和RS-485 Modbus RTU。后者使节点可以连接到Kamstrup Multical 602 Energy Meter。
电池供电的传感器可提供简单的节点,以监测温度,湿度和气压压力。这些节点在两个普通的1.5伏AA碱性电池上运行。如果需要更长的寿命或将节点放置在寒冷的环境中,则还可以使用更昂贵的1.5伏型锂电池。
警告:硬件没有提供反向电压保护,以节省功率并保持零件数量最小,因此请确保在插入电池时观察极性,否则您将破坏节点。
节点大部分时间都在睡觉,只是醒来以进行测量并将值发送到网关。可以通过在代码文件开头的设置来控制频率。在阈值模式下,节点定期醒来并进行测量。如果值与以前发送的值足够不同,则会发送一条消息。如果没有,节点重新入睡。但是,有一个特定的力量时间控制新消息的频率至少无论门槛如何。如果节点未在阈值模式下运行,则每次醒来时都会发送一条消息。

节点支持三种类型的传感器:Silicon Labs SI7021,Bosch Sensortech BME280和公共NTC Thermistor。第一个具有温度和湿度,第二个增加了气压压力,而后者仅提供温度。节点可以同时具有一种传感器,也可以作为特殊情况。 PCB为所有人提供足迹,并且确切的类型是在运行时定义的。也就是说,每个节点都用相同的软件闪烁,并在启动时检查哪种传感器配置已连接。
SI7021传感器可以从eBay和类似地方以几美元的价格购买作为突破板购买。购买传感器时,请获取不包括电压调节器和I2C级别转换的一个。电池供电的节点在3.3伏上运行,因此可以直接喂食SI7021。没有(不必要的)调节器可节省电池电量。例如,建议这样做,虽然不是。
BME280传感器在eBay,aliexpress中也可用,并且与突破板相似。他们有点贵。如果没有机载调节器,这些似乎无法使用,因此,如果您想降低功耗,则唯一的选择是删除调节器。此处显示的删除调节器的示例图像。例如,该传感器已成功使用。
注意:中国卖家有时将BME280与较早的BMP280混合在一起。购买传感器时要小心。例如,有关此信息的信息。
可以从与其他传感器相同的位置购买NTC热敏电阻。购买热敏电阻时,请确保获得三个必要的值:标称电阻,标称温度和β系数。例如,该热敏电阻已成功使用并与默认值一起使用。
脉冲类型节点旨在通过脉冲输出的水,电力,气体或其他类型的仪表来测量脉冲。节点具有三个脉冲输入,其中一个可以用作NTC热敏电阻输入而不是脉冲输入。脉冲输入通过微控制器或可选的外部电阻在内部升高,并将连接的仪表拉到地面。脉冲值定期保存到EEPROM,并在电源上恢复。脉冲节点需要调节的3.3伏或(不受管制的)5-12伏直流电源。他们使用与网关相同的PCB。
这些节点是常规脉冲节点,并增加了对Kamstrup Multical 602能量表的支持。节点通过RS-485连接到多级602能量表,并定期从仪表中读取某些值。有关这些值,请参见上面的modbus寄存器列表。
注意: Multical 602似乎已停产并用Multical 603取代。根据DataSheet,Multical 603支持与旧602相同的Modbus寄存器。因此,节点应与较新的603s一起使用,但这未经测试。
PROTIP:以此节点为例,将某些其他类型的Modbus RTU设备连接到脉冲类型节点并相应地调整代码应该很容易。这样,您可以通过传感器节点读取任何其他modbus仪表或设备。
传感器利用Hoperf RFM95W和RFM96W Lora收音机。 RFM95W适用于868/915 MHz,RFM96W适用于433 MHz。这些是廉价的低功率收音机,范围非常好。电池节点使用电线或螺旋天线,而Gateway和Pulse节点具有SMA连接器,以更好地执行天线。选择频率范围,带宽,传输电源和其他无线电设置时,请考虑本地法规。节点会自动将电源调整为最低水平。
可达到的范围很大程度上取决于许多事情,但是我个人很容易通过钢筋混凝土墙和金属立面实现了一公里。这是在带有偶极子天线的门户和带有螺旋天线的电池节点之间。同一设置也通过建筑物更具建筑环境的建筑物达到200米。但是,与一般的无线通信一样,您的结果也会有所不同。
注意:在PCB上,旧的Hoperf RFM69HW收音机也有足迹。它应该起作用,但尚未经过测试,目前对此没有支持。随意创建一个新的分支并实施它。
以下是材料清单表。并非所有要素都需要所有组件,请参阅下面的这些部分的注释。大多数SMD组件是1206个包装,以便于手工焊接。网关和脉冲节点共享相同的PCB。
一些注释:
我已经成功从Seeed Studio订购了PCB。您可以以$ 9.80加邮费获得10个网关/脉冲节点和10个电池节点的板。当然,任何原型PCB工厂都可以使用。 PCB的设计不具有任何紧密的间距或需要严格的公差。对于网关和脉冲节点,选择1.6mm厚度(外壳将更好地保持PCB)。使用电池节点,板可以更薄(例如1.2mm效果很好)。默认值应该可以使用其他选项。
木板旨在适合表中提到的外壳。 Bud Industries DMB-4771是一个35mm的DIN导轨安装盒,而SuperTronic PP42是一个简单的壁挂式封面(使用双面胶带)。在原理图文件夹中,还有AP9_HOLDER.STL ,它是一个简单持有器的3D模型,可以将电池节点固定到ABB AP9接线盒中。如果您在外部安装节点并可以访问3D打印机,这特别方便。您将需要两个支架和一组小螺钉。您还需要有一种方法来使盒子防雨,但仍然可以让湿度和温度进入。将一些孔戳入膜电缆条目是一种方法,或者如果您想专业,请使用烧结的防护盖。事实证明,这可以正常工作:如果您将电线焊接到板上,则BME280分组板将仅适合内部。请记住,用一些绝缘胶带包裹突破板(但不是传感器本身),或使用热收缩来防止短路。该图像显示了为户外传感器使用准备的SI7021突破板。您还需要用防护盖的连接器从内部钻出塑料。在这里使用一些想象力。现成的防风雨传感器看起来像这样。如下所示,将NTC热敏电阻连接到足够长的电线将形成一个很好的水温节点。
| 部分 | 价值 | 设备 | 包裹 | 类型 | 笔记 |
|---|---|---|---|---|---|
| C1 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | |
| C2 | 22 pf | 水晶电容器 | 1206 | 陶瓷制品 | |
| C3 | 22 pf | 水晶电容器 | 1206 | 陶瓷制品 | |
| C4 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | 仅与RFM95W / RFM96W一起使用。 |
| C5 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | 仅与RFM69HW一起使用。 |
| C6 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | 仅与U2(MAX3485)一起使用。 |
| C7 | 1 UF | 电源输入电容器 | 1206 | 坦塔尔 | |
| C8 | 1 UF | 功率输出电容器 | 1206 | 坦塔尔 | |
| C9 | 10 UF | 功率输出电容器 | 1206 | 陶瓷制品 | |
| C10 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | 仅与23K256一起使用。 |
| C11 | 取决于 | 脉冲3平滑电容器 | 1206 | 陶瓷制品 | 如果计数错误的脉冲,请使用。 |
| C12 | 取决于 | 脉冲2平滑电容器 | 1206 | 陶瓷制品 | 如果计数错误的脉冲,请使用。 |
| C13 | 取决于 | 脉冲1平滑电容器 | 1206 | 陶瓷制品 | 如果计数错误的脉冲,请使用。 |
| R1 | 10科姆 | 重置上拉电阻 | 1206 | ||
| R2 | 10科姆 | 无线电奴隶选择上拉电阻 | 1206 | ||
| R3 | 120欧姆 | RS-485终止电阻 | 1206 | 仅与U2(MAX3485)一起使用。 | |
| R4 | 取决于 | 功率LED电阻 | 1206 | 根据使用中的LED选择值。 | |
| R5 | 取决于 | 活性LED电阻 | 1206 | 根据使用中的LED选择值。 | |
| R6 | 取决于 | 串行活动LED电阻器 | 1206 | 根据使用中的LED选择值。 | |
| R7 | 依赖 / 10 kohm | 脉冲3上拉 / NTC系列电阻器 | 1206 | 如果ATMEGA328P内部上拉电阻不够强,则使用NTC。 | |
| R8 | 取决于 | 脉冲2上拉电阻 | 1206 | 如果atmega328p内下拉电阻不够强大,请使用。 | |
| R9 | 取决于 | 脉冲1上拉电阻 | 1206 | 如果atmega328p内下拉电阻不够强大,请使用。 | |
| R10 | 10科姆 | SRAM奴隶选择上拉电阻 | 1206 | 仅与23K256一起使用。 | |
| D1 | 串行活动LED | 1206 | |||
| D2 | 电源LED | 1206 | |||
| D3 | 活动led | 1206 | |||
| Y1 | 8 MHz | HC-49US 8 MHz晶体 | |||
| S1 | 暂时的按钮 | 3x6毫米 | 例如,这个。 | ||
| x1 | SMA连接器 | 例如,这个。 | |||
| 标题 | ISP编程标头 | 2x3,0.1英寸的音高 | |||
| 标题 | 节点ID选择标头 | 2x5,0.1英寸的音高 | |||
| 标题 | RS-485终止和J1标头 | 2x2,0.1英寸的音高 | |||
| 螺丝端子 | 功率,串行,脉冲地面,脉冲输入 | 3x2 + 1x3,5.08mm螺距 | 例如,两个终端和三个端子。 | ||
| pwr_jmp | 焊接跳线 | 1206 | 简短或使用零欧姆电阻器(如果不使用U4),即提供外部调节的3.3伏。 | ||
| comm_jmp | 焊接跳线 | 简短,如果不使用U2,则使用直接UART。 | |||
| U1 | ATMEL ATMEGA328P微控制器 | DIP-28 | 最好使用插座。 | ||
| U2 | Maxim Max3485 RS-485收发器 | DIP-8 | 最好使用插座。仅当连接到RS-485网络时使用。 | ||
| U3 | Hoperf RFM95W/RFM96W/RFM69HW | ||||
| U4 | 微芯片MIC5209-3.3调节器 | SOT-223 | 可选(请参见上面的注释)。 | ||
| U5 | 微芯片23K256 SRAM | DIP-8 | 可选(请参见上面的注释)。最好使用插座。 | ||
| 外壳 | Bud Industries DMB-4771 |
| 部分 | 价值 | 设备 | 包裹 | 类型 | 笔记 |
|---|---|---|---|---|---|
| C1 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | |
| C2 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | 仅与RFM69HW一起使用。 |
| C3 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | 仅与RFM95W / RFM96W一起使用。 |
| C4 | 100 nf | 电源平滑电容器 | 1206 | 陶瓷制品 | |
| C5 | 10 UF | 电源平滑电容器 | 1206 | 陶瓷制品 | |
| C6 | 100 nf | 解耦电容器 | 1206 | 陶瓷制品 | |
| R1 | 取决于 | 活性LED电阻 | 1206 | 根据使用中的LED选择值。 | |
| R2 | 10科姆 | 重置上拉电阻 | 1206 | ||
| R3 | 10科姆 | NTC系列电阻 | 1206 | 仅与NTC一起使用。 | |
| R4 | 10科姆 | 无线电奴隶选择上拉电阻 | 1206 | ||
| D1 | 活动led | 1206 | |||
| S1 | 暂时的按钮 | 3x6毫米 | 例如,这个。 | ||
| 天线 | 用于使用频率的天线,螺旋或导线 | 例如,这个。 | |||
| 标题 | ISP编程标头 | 2x3,0.1英寸的音高 | |||
| 标题 | 节点ID选择标头 | 2x6,0.1英寸的音高 | |||
| 标题 | J1标头 | 1x2,0.1英寸的音高 | |||
| U1 | ATMEL ATMEGA328P微控制器 | DIP-28 | 最好使用插座。 | ||
| U2 / U3 | SI7021 / BME280传感器 | 两个针对不同针订单的足迹。有关更多信息,请参见支持的传感器。 | |||
| U4 | Hoperf RFM95W/RFM96W/RFM69HW | ||||
| NTC | NTC热敏电阻 | 提供标头。有关更多信息,请参见支持的传感器。 | |||
| 电池支架 | 两个AA尺寸电池的支架 | 例如,其中一对。 | |||
| 外壳 | Supertronic PP42 |
董事会有一些板载LED,以指示不同的事件。本章介绍了这些事件。所有板将在加速后眨眼当前的运行固件版本。
每当门户供电时, PWR都会点亮。当网关在Modbus网络中传输时, L2会闪烁。下表涉及L1 。
| 眨眼 | 间隔 | 描述 | 期间 | 笔记 |
|---|---|---|---|---|
| 1 | 2秒 | 非法ID集。 | 启动 | 检查ID标题并重新启动。 |
| 5 | 2秒 | 无法初始化无线电。 | 启动 | 检查连接。 |
| 1 | - | 从节点接收并保存了一条消息。 | 手术 | |
| 2 | - | 从节点收到一条消息,但内存已满。 | 手术 | 添加外部SRAM或较低的节点。 |
| 3 | - | 成功的modbus从主人那里读取。 | 手术 | |
| 4 | - | 失败的Modbus从Master读取。 | 手术 |
电池节点只有一个LED。
| 眨眼 | 间隔 | 描述 | 期间 | 笔记 |
|---|---|---|---|---|
| 1 | 2秒 | 非法ID集。 | 启动 | 检查ID标题并重新启动。 |
| 3 | 2秒 | 无法初始化适当的传感器配置。 | 启动 | 检查连接。 |
| 5 | 2秒 | 无法初始化无线电。 | 启动 | 检查连接。 |
| 1 | - | 成功传输。 | 手术 | 仅在调试模式或强制传输中。 |
| 2 | - | 输送失败。 | 手术 | 仅在调试模式或强制传输中。 |
Pulse节点与Gateway共享相同的板,因此它们也有三个LED。每当节点供电时, PWR会点亮。当节点在Modbus网络中传输时, L2会闪烁。下表涉及L1 。与电池节点不同,在脉冲节点中, L1始终闪烁,因为它们不受电池的限制。
| 眨眼 | 间隔 | 描述 | 期间 | 笔记 |
|---|---|---|---|---|
| 1 | 2秒 | 非法ID集。 | 启动 | 检查ID标题并重新启动。 |
| 5 | 2秒 | 无法初始化无线电。 | 启动 | 检查连接。 |
| 1 | - | 成功传输。 | 手术 | |
| 2 | - | 输送失败。 | 手术 | |
| 3 | - | 成功的modbus阅读。 | 手术 | |
| 4 | - | 失败的modbus读取。 | 手术 |
董事会有几个用户设置的标头。这些需要在董事会供电之前设置。每个设备还具有一个按钮。此外,网关和脉冲节点具有用于功率,串行通信和脉冲输入的螺钉端子。
网关中的按钮目前不在普通操作中。但是,如果您简短J1并在网关上供电时按钮,则将在EEPROM中保存的脉冲值将设置为零。
如果在应用电源时按下按钮,则将节点放入调试模式。在此模式下,节点每8秒发送一次新值,并眨眼地指示成功。不要长期使用,因为这会迅速排出电池。功率循环取消调试模式的节点。
在正常操作期间,按钮触发瞬时发送,并闪烁着指示成功的LED。用于快速测试节点是否在网关范围内。
如果在应用电源时按下按钮,则将节点放入调试模式。在此模式下,节点每8秒发送一次新值。不要长期使用,因为这将不必要地充血无线电网络。
在正常操作期间,按钮触发瞬时发送。用于快速测试节点是否在网关范围内。此外,如果您在节点上供电时缩短J1并按钮,则将在EEPROM中保存的脉冲值将设置为零。
有关制造板的详细说明和想法,请参阅原理图和PCB。所有的芯片都通过孔包装,以便于手工焊接。较小的组件主要是SMD,但它们足够大,因此即使是经验丰富的焊料也应该能够将其焊接。
下载存储库。将库的内容放在您的Arduino库文件夹中。还将Sensorsgateway , SensorsBattery和Sensorspulse文件夹复制到您的Arduino素描本。
您可以在Arduino IDE中使用董事会经理轻松安装Minicore 。遵循Minicore页面上的说明。
安装所有必要的外部库。请参阅图书馆部分以进行更多说明。如果您使用加密,请额外注意有关密码库的零件。
在每个。根据需要调整设置。请记住,频率,加密密钥和低率必须在同一网络中的每个设备上匹配或通信中都无法使用。
由于传感器使用的硬件与普通的Arduino板非常不同,因此必须使用一些特殊设置对微控制器进行编程。为此,您将需要外部AVR ISP程序员。幸运的是,如果您没有专用的ISP程序员,也可以使用另一个Arduino(例如,UNO或Pro Mini)。在Arduino.cc上按照说明进行接线并燃烧Arduinoisp草图。只有一个渔获物:无论您用什么编程新板的内容都必须为3.3伏。 Atmega328p可以使用5伏,但所有其他组件都以3.3伏的速度工作,因此向板提供5伏很可能会燃烧一些或所有组件。我建议的是Arduino Pro Mini或Pro Micro的3.3 Volt版本。
请按照上述说明进行操作,直到您打开程序引导加载程序为止。在工具>董事会和Minicore下方选择Atmega328 。选择其他选项如下:
接下来,点击Burn Boot Loader 。这实际上并没有燃烧任何引导加载程序,因为我们选择不使用引导加载程序,它只会燃烧必要的保险丝。自接下来我们将上传草图以来,保持两个板仍连接。
注意:每个新的微控制器只能完成一次。如果以后更改草图设置并上传新草图,则可以跳过步骤6并直接遵循步骤7。
随着两个板连接,如第6步中所述,Arduino IDE板设置和实际草图打开了,只需使用Sketch下的程序员上传。这将像其他任何Arduino草图一样上传草图。之后,您完成了。
将门户放置到中心位置,并将其连接到能够Modbus的网络。使用跳线标头,设置其modbus从地址并施加电源。
根据需要分发其他节点,首先选择跳线标头,然后连接外部电源或电池。使用节点上的按钮强制用全功率进行传输 - 通常节点自动调整其发射功率,以最低水平。板载LED的一眨眼表示成功的传输,两次眨眼都失败了。 LED仅在用按钮强迫传输时眨眼。您可以使用提供的Python脚本read_modbus.py从网关中读取数据以进行调试。
例如,开始将测量值记录到MySQL数据库( save_modbus_to_db.py为此提供了一个起点),并使用grafana绘制它,或将网关连接到Home Automation Hub并以此方式进行监视测量。
Note: Due to the changes, version 2 gateway is no longer compatible with nodes running lower versions. Messages will be delivered but because nodes expect different kind of acknowledgements, they will consider messages lost. This triggers retransmits, full transmit power and more battery usage.
Initial public release.