該項目由使用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並以此方式進行監視測量。
注意:由於更改,版本2 Gateway不再與運行較低版本的節點兼容。消息將被傳遞,但是由於節點期望不同類型的確認,因此他們將考慮丟失的消息。這會觸發重傳,完全傳輸電源和更多的電池使用。
首次公開發布。