โครงการนี้ประกอบด้วยโหนด Atmel ATMEGA328P แบบง่าย ๆ โดยใช้ Hoperf Lora RFM95W/RFM96W วิทยุ โหนดที่ใช้พลังงานจากแบตเตอรี่วัดอุณหภูมิความชื้นและความดันบารอมิเตอร์ขึ้นอยู่กับฮาร์ดแวร์ที่เชื่อมต่อ โหนดชนิดพัลส์ที่ขับเคลื่อนด้วยภายนอกนับพัลส์จากเครื่องวัดยูทิลิตี้ที่แตกต่างกันและยังเชื่อมต่อกับ Kamstrup Multical Energy Meters เกตเวย์ได้รับและรวบรวมการวัดเหล่านี้จากโหนดเซ็นเซอร์และสามารถเข้าถึงได้โดยการสื่อสารแบบอนุกรมโดยใช้โปรโตคอล Modbus RTU ผ่านทาง RS-485 สองสายหรือ 3.3 Volt UART ทั่วไป สิ่งนี้ช่วยให้สามารถเชื่อมต่อกับระบบอัตโนมัติในบ้าน DIY หลายระบบเช่น Domoticz, Home Assistant และ OpenHab เซ็นเซอร์ใช้แผงวงจรที่กำหนดเอง แต่ถูกตั้งโปรแกรมด้วย Arduino IDE
โครงการนี้เป็นแพ็คเกจที่สมบูรณ์: มีทั้งการออกแบบฮาร์ดแวร์และซอฟต์แวร์ แผนผัง ประกอบด้วยการออกแบบ PCB เพื่อให้คุณสามารถผลิตหรือสั่งซื้อ PCB จากโรงงานและประสานโหนด ซอฟต์แวร์พร้อมที่จะอัปโหลดตามที่เป็นอยู่ หากคุณไม่ต้องการใช้การออกแบบฮาร์ดแวร์ที่มีให้คุณควรใช้ตัวอย่างเช่น Arduino Pro Minis ด้วย protoboard แทน เรียกดู. INOS และแผนผังเพื่อค้นหาคำจำกัดความของ PIN อย่าลืมคำนึงถึงการใช้แบตเตอรี่หากใช้ Pro Minis หรือ Arduinos "ขนาดเต็ม" อื่น ๆ โปรดจำไว้ว่าส่วนประกอบที่ใช้ส่วนใหญ่มีความทนทานต่อ 3.3 โวลต์เท่านั้นดังนั้นการใช้ UNO 5 โวลต์ต้องเปลี่ยนระดับ
ข้ามไปยังคำแนะนำโดยตรงแม้ว่าฉันขอแนะนำให้อ่าน readme ทั้งหมดก่อน
เซ็นเซอร์ต้องการส่วนประกอบภายนอกสองสามอย่าง: ไลบรารีให้ฟังก์ชั่นสำหรับการสื่อสารทางวิทยุและเซ็นเซอร์ที่เชื่อมต่อในขณะที่แพ็คเกจฮาร์ดแวร์จัดการฟิวส์ที่จำเป็นเพื่อทำงานกับบอร์ดที่กำหนดเองที่ใช้โดยเซ็นเซอร์ ปฏิบัติตามอย่างรอบคอบโดยเฉพาะอย่างยิ่งคำแนะนำเกี่ยวกับห้องสมุดเรดิโอเฮดและการเข้ารหัสเนื่องจากสิ่งเหล่านี้ต้องมีการเปลี่ยนแปลงพื้นฐานสองประการ
Radiohead Packet Radio Library สำหรับไมโครโปรเซสเซอร์แบบฝัง ให้การสนับสนุนวิทยุ RFM95W/RFM96W (และอื่น ๆ อีกมากมายเช่นกัน) ดาวน์โหลดจาก airspayce.com หลังจากแยกไลบรารีไปยังโฟลเดอร์ Arduino IDE Libraries ของคุณคุณจะต้องทำการปรับเปลี่ยนหนึ่งครั้ง ในจุดเริ่มต้นของ Radiohead/rh_rf95.h เส้นเปลี่ยน
#define RH_RF95_FIFO_SIZE 255
ถึง
#define RH_RF95_FIFO_SIZE 64
การสื่อสารจะไม่ทำงานหากไม่มีการเปลี่ยนแปลงนี้ นอกจากนี้คุณยังเสี่ยงต่อการหมด SRAM โดยไม่มีการปรับนี้
ห้องสมุด Cryptography Arduino รวมถึงการสนับสนุนสำหรับการเข้ารหัส หากคุณไม่ได้วางแผนที่จะเข้ารหัสทราฟฟิกคุณจะไม่ต้องการห้องสมุดนี้ ดาวน์โหลดจาก github.com คุณจะต้องดาวน์โหลดซิปและแยกเนื้อหาของ ไลบรารี ไปยังโฟลเดอร์ Arduino IDE Libraries ของคุณ อย่าลืมที่จะไม่เขียนบทต่อไปนี้ที่ส่วนท้ายสุดของ Radiohead/Radiohead.h เพื่อเปิดใช้งานการเข้ารหัส:
//#define RH_ENABLE_ENCRYPTION_MODULE
คุณจะต้องปิดใช้งานการเก็บเกี่ยวเอนโทรปีของสุนัขเฝ้าบ้านโดยแสดงความคิดเห็นบรรทัดต่อไปนี้ที่จุดเริ่มต้นของ crypto/rng.cpp เนื่องจากตัวจับเวลานาฬิกาจับเวลาถูกใช้โดยโหนดแบตเตอรี่ที่ใช้พลังงานแล้ว:
#define RNG_WATCHDOG 1 // Harvest entropy from watchdog jitter.
หากคุณถูกครอบงำโดยทั้งหมดนี้คุณอาจไม่ต้องการเปิดใช้งานการเข้ารหัสเลย ท้ายที่สุดเซ็นเซอร์ก็ไม่ได้เป็นระบบรักษาความปลอดภัยสูงอย่างแน่นอน
ห้องสมุด LowPowerLab SI7021 เป็นสิ่งจำเป็นในการทำงานกับเซ็นเซอร์อุณหภูมิและเซ็นเซอร์ความชื้น SI7021 SI7021 ดาวน์โหลดจาก github.com
SparkFun BME280 Arduino Library Interfaces กับ Bosch Sensortech BME280 อุณหภูมิความชื้นและเซ็นเซอร์ความดันบารอมิเตอร์ เอกสารที่ github.com ติดตั้งโดยใช้ Arduino IDE Library Manager
เซ็นเซอร์ใช้การออกแบบฮาร์ดแวร์ที่แตกต่างจากบอร์ด Arduino ทั่วไปเล็กน้อย ตัวอย่างเช่นโหนดที่ใช้แบตเตอรี่ทำงานบนนาฬิกา 1 MHz ภายในและเกตเวย์ใช้คริสตัลภายนอก 8 MHz พวกเขายังขาด bootloader (แม้ว่าคุณสามารถใช้งานได้ แต่ฮาร์ดแวร์ก็ไม่ได้ให้พินอนุกรมเพื่อเผาเฟิร์มแวร์ใหม่โดยใช้ bootloader ต่อไป) แต่โปรแกรมจะถูกฉายโดยใช้ส่วนหัว ICSP ผ่าน ISP
คุณสามารถตั้งค่าฟิวส์ที่จำเป็นด้วยตนเอง แต่มันง่ายกว่ามากที่จะใช้แพ็คเกจฮาร์ดแวร์สำเร็จรูป McUdude มีแกนกลางที่ดีในการทำเช่นนี้ ดาวน์โหลด minicore ของ McUdude จาก github.com
Gateway รวบรวมข้อมูลจากโหนดและทำหน้าที่เป็นรีเลย์ไปยังเครือข่าย Modbus ด้วยการใช้ Maxim Max3485 RS-485 Transceiver Gateway สามารถเชื่อมต่อกับเครือข่าย RS-485 Modbus RTU ที่มีอยู่ในปัจจุบันเป็นทาส การละเว้นตัวรับส่งสัญญาณให้พอร์ตอนุกรม TTL โดยตรง สิ่งนี้สามารถเข้าถึงได้เช่นบอร์ด Arduino อีกอันหนึ่ง, ชิป FTDI หรือเชื่อมต่อโดยตรงกับ Raspberry Pi เกตเวย์สามารถเข้าถึงได้โดยใช้โปรโตคอล Modbus เกตเวย์ต้องมีการควบคุม 3.3 โวลต์หรือ (ไม่ได้ควบคุม) แหล่งจ่ายไฟ DC 5-12 โวลต์ นอกจากนี้เกตเวย์ยังมีอินพุตพัลส์สามตัว (ค่าชีพจรจะถูกบันทึกไว้เป็นระยะเป็น EEPROM และกู้คืนเมื่อใช้พลังงาน) ซึ่งหนึ่งในนั้นสามารถใช้เป็นอินพุตเทอร์มิสเตอร์ NTC อินพุตเหล่านี้สามารถเข้าถึงได้ผ่าน Modbus
ข้อเสียเปรียบอย่างหนึ่งของโปรโตคอล Modbus คือทาสไม่สามารถแจ้งข้อความหลักของข้อความใหม่ได้ สำหรับสิ่งนี้พัลส์ 2 สามารถเปิดใช้งานเพื่อทำงานเป็นอินเตอร์รัปต์ภายนอก พินนี้ทำงานเหมือนเอาต์พุตตัวสะสมแบบเปิดที่เลียนแบบ (แรงดันไฟฟ้าสถานะสูงภายนอกถูก จำกัด ไว้ที่ 3.3 โวลต์) พินจะถูกดึงลงไปที่พื้นเมื่อได้รับข้อความจากโหนด สำคัญ หรือโหนดใด ๆ ขึ้นอยู่กับการตั้งค่าเกตเวย์ หลังจากการอ่าน Modbus เสร็จแล้ว PIN นี้จะถูกตั้งกลับสู่สถานะความต้านทานสูง

คำเตือน: พอร์ตอนุกรม UART คือ 3.3 โวลต์ดังนั้นอย่าเชื่อมต่อกับระบบ 5 โวลต์
ทำไม Modbus? Modbus เป็นโปรโตคอลที่ใช้งานง่ายและรวมเข้ากับการถ่ายโอนข้อมูลประเภทนี้ แม้ว่ามันจะเก่าและค่อนข้าง จำกัด ในคุณสมบัติ แต่ก็ยังให้สิ่งที่จำเป็นทั้งหมดและใช้กันอย่างแพร่หลายในอุตสาหกรรม ห้องสมุดเพื่อเข้าถึงมีอยู่มากหรือน้อยทุกแพลตฟอร์ม นอกจากนี้ระบบระบบอัตโนมัติ Home DIY ส่วนใหญ่ (Home Assistant, 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 = MAJOR, 8 LSB = เล็กน้อย | |
| 13 | 30014 | สถานะ | ดูด้านล่างสำหรับบิต | |
| 14 | 30015 | ชีพจร 1 | เคาน์เตอร์ | 32 บิต |
| 16 | 30017 | ชีพจร 2 | เคาน์เตอร์ | 32 บิต |
| 18 | 30019 | ชีพจร 3 / อุณหภูมิ | เคาน์เตอร์ / ° C | 32 บิต |
| 20 | 30021 | รหัสโหนดที่ได้รับล่าสุด |
บิตลงทะเบียนสถานะ (จาก LSB ถึง MSB):
ที่อยู่แรกคือ Node ID * 100 ตัวอย่างเช่นตารางนี้แสดงที่อยู่สำหรับรหัสโหนด 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):
ที่อยู่แรกคือ Node ID * 100 ตัวอย่างเช่นตารางนี้แสดงที่อยู่สำหรับรหัสโหนด 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):
ที่อยู่แรกคือ Node ID * 100 ตัวอย่างเช่นตารางนี้แสดงที่อยู่สำหรับรหัสโหนด 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 | พลังที่แท้จริง | กิโลวัตต์ | × 10. 32 บิต |
| 318 | 30319 | t₁ที่แท้จริง | ° C | × 100 32 บิต |
| 320 | 30321 | t₂ที่แท้จริง | ° C | × 100 32 บิต |
ส่วนหัวลงทะเบียนบิต (จาก LSB ถึง MSB):
เซ็นเซอร์ประกอบด้วยโหนดหลักสองประเภท: แบตเตอรี่และชีพจร โหนดพลังงานต่ำที่ใช้พลังงานจากแบตเตอรี่ตรวจสอบอุณหภูมิความชื้นและความดัน โหนดประเภทพัลส์ขับเคลื่อนภายนอกและนับพัลส์จากเครื่องวัดยูทิลิตี้ โหนดพัลส์ยังรองรับการเชื่อมต่อเทอร์มิสเตอร์ NTC หนึ่งตัวสำหรับการตรวจสอบอุณหภูมิและ RS-485 Modbus RTU หลังเปิดใช้งานโหนดที่จะเชื่อมต่อกับ Kamstrup Multical Multical 602 Energy Meter
เซ็นเซอร์ที่ใช้พลังงานจากแบตเตอรี่ให้โหนดง่าย ๆ ในการตรวจสอบอุณหภูมิความชื้นและความดันบารอมิเตอร์ โหนดเหล่านี้ทำงานบนแบตเตอรี่อัลคาไลน์ AA AA ปกติ 1.5 โวลต์สองตัว หากต้องการอายุการใช้งานที่ยาวนานขึ้นหรือหากวางโหนดในสภาพแวดล้อมที่หนาวเย็นก็สามารถใช้แบตเตอรี่ลิเธียมขนาด AA ขนาด 1.5 โวลต์ได้
คำเตือน: ฮาร์ดแวร์ไม่มีการป้องกันแรงดันไฟฟ้าย้อนกลับเพื่อประหยัดพลังงานและรักษาจำนวนชิ้นส่วนให้น้อยที่สุดดังนั้น อย่าลืมสังเกตขั้วเมื่อแทรกแบตเตอรี่หรือคุณจะทำลายโหนด
โหนดใช้เวลาส่วนใหญ่นอนหลับเพียงเพื่อตื่นขึ้นมาเพื่อทำการวัดและส่งค่าไปยังเกตเวย์ ความถี่สามารถควบคุมได้ผ่านการตั้งค่าที่จุดเริ่มต้นของไฟล์รหัส ในโหมดเกณฑ์โหนดตื่นขึ้นมาเป็นระยะและทำการวัด หากค่าแตกต่างจากที่ส่งก่อนหน้านี้ข้อความจะถูกส่ง ถ้าไม่โหนดกลับไปนอน อย่างไรก็ตามมีเวลาบังคับให้ควบคุมความถี่ที่ส่งข้อความใหม่อย่างน้อยอย่างน้อยโดยไม่คำนึงถึงเกณฑ์ หากโหนดไม่ทำงานในโหมดเกณฑ์จะส่งข้อความทุกครั้งที่ตื่นขึ้นมา

โหนดรองรับเซ็นเซอร์สามประเภท: Silicon Labs SI7021, Bosch Sensortech BME280 และเทอร์มิสเตอร์ NTC ทั่วไป คนแรกมีอุณหภูมิและความชื้นอันที่สองเพิ่มความดันบารอมิเตอร์และหลังมีอุณหภูมิเท่านั้น โหนดสามารถมีเซ็นเซอร์ชนิดเดียวหรือเป็นกรณีพิเศษทั้ง SI7021 และ NTC ในเวลาเดียวกัน PCB ให้รอยเท้าสำหรับทุกคนและประเภทที่แน่นอนถูกกำหนดไว้ในรันไทม์ นั่นคือทุกโหนดจะถูกกระพริบด้วยซอฟต์แวร์เดียวกันและตรวจสอบเมื่อ bootup เชื่อมต่อการกำหนดค่าเซ็นเซอร์ชนิดใด
เซ็นเซอร์ SI7021 สามารถซื้อเป็นกระดานฝ่าวงล้อมจาก eBay และสถานที่ที่คล้ายกันได้สองสามดอลลาร์ เมื่อซื้อเซ็นเซอร์ให้รับหนึ่งที่ไม่รวมตัวควบคุมแรงดันไฟฟ้าและการขยับระดับ I2C โหนดที่ใช้พลังงานจากแบตเตอรี่ทำงานบน 3.3 โวลต์ดังนั้น SI7021 จึงสามารถป้อนได้โดยตรง ไม่มีตัวควบคุม (ไม่จำเป็น) ช่วยประหยัดพลังงานแบตเตอรี่ ตัวอย่างเช่นแนะนำอันนี้ในขณะที่อันนี้ไม่ได้
เซ็นเซอร์ BME280 ยังมีอยู่ใน eBay, Alixpress และคล้ายกับกระดานฝ่าวงล้อม พวกเขามีราคาแพงกว่าเล็กน้อย สิ่งเหล่านี้ดูเหมือนจะไม่สามารถใช้ได้หากไม่มีตัวควบคุมออนบอร์ดดังนั้นหากคุณต้องการลดการใช้พลังงานตัวเลือกเดียวของคุณคือการลบตัวควบคุม ตัวอย่างภาพของตัวควบคุมที่ถูกลบแสดงที่นี่ ตัวอย่างเช่นเซ็นเซอร์นี้ถูกนำมาใช้สำเร็จ
หมายเหตุ: บางครั้งผู้ขายชาวจีนผสม BME280 เข้ากับ BMP280 ก่อนหน้านี้และน้อยกว่า ระวังเมื่อซื้อเซ็นเซอร์ ข้อมูลเกี่ยวกับเรื่องนี้เช่นที่นี่และที่นี่
เทอร์มิสเตอร์ NTC สามารถซื้อได้จากสถานที่เดียวกันกับเซ็นเซอร์อื่น ๆ เมื่อซื้อเทอร์มิสเตอร์ตรวจสอบให้แน่ใจว่าคุณได้รับค่าที่จำเป็นสามค่า: ความต้านทานเล็กน้อย อุณหภูมิเล็กน้อย และ ค่าสัมประสิทธิ์เบต้า ตัวอย่างเช่นเทอร์มิสเตอร์นี้ใช้งานได้สำเร็จและทำงานกับค่าเริ่มต้น
โหนดชนิดพัลส์มีวัตถุประสงค์เพื่อวัดพัลส์จากน้ำไฟฟ้าก๊าซหรือมิเตอร์ชนิดอื่น ๆ ที่มีเอาต์พุตพัลส์ โหนดมีอินพุตพัลส์สามตัวซึ่งหนึ่งในนั้นสามารถใช้เป็นอินพุตเทอร์มิสเตอร์ NTC แทนอินพุตพัลส์ อินพุตพัลส์ถูกดึงสูงภายในโดยไมโครคอนโทรลเลอร์หรือมีตัวต้านทานภายนอกเสริมและมิเตอร์ที่เชื่อมต่อจะดึงต่ำลงสู่พื้น ค่าชีพจรจะถูกบันทึกเป็นระยะ ๆ ไปยัง EEPROM และกู้คืนเมื่อเพิ่มพลัง โหนดพัลส์ต้องการการควบคุม 3.3 โวลต์หรือ (ไม่ได้ควบคุม) 5-12 โวลต์แหล่งจ่ายไฟ DC พวกเขาใช้ PCB เดียวกับเกตเวย์
โหนดเหล่านี้เป็นโหนดพัลส์ปกติพร้อมรองรับเพิ่มเติมสำหรับ Kamstrup Multical Multical 602 Energy Meter โหนดเชื่อมต่อกันด้วย RS-485 กับมิเตอร์พลังงานหลาย 602 Multial และอ่านค่าบางอย่างจากมิเตอร์เป็นระยะ ดูรายชื่อ Modbus Register ด้านบนสำหรับค่าเหล่านี้
หมายเหตุ: ดูเหมือนว่า Multical 602 จะถูกยกเลิกและแทนที่ด้วย Multical 603 ตามแผ่นข้อมูล Multical 603 รองรับการลงทะเบียน Modbus เดียวกันกับ 602 เก่าดังนั้นโหนดควรทำงานกับ 603s ที่ใหม่กว่า แต่ยังไม่ผ่านการทดสอบ
Protip: การใช้โหนดนี้เป็นตัวอย่างมันควรจะเชื่อมต่ออุปกรณ์ที่มีความสามารถ Modbus RTU ชนิดอื่น ๆ เข้ากับโหนดประเภทพัลส์และปรับรหัสตามลำดับ วิธีนี้คุณสามารถอ่านมิเตอร์ modbus อื่น ๆ หรืออุปกรณ์ผ่านโหนดเซ็นเซอร์
เซ็นเซอร์ใช้ประโยชน์จาก Hoperf RFM95W และ RFM96W LORA Radios RFM95W สำหรับ 868/915 MHz และ RFM96W สำหรับ 433 MHz เหล่านี้เป็นวิทยุพลังงานต่ำราคาถูกและมีช่วงที่ดีมาก โหนดแบตเตอรี่ใช้สายไฟหรือเสาอากาศแบบขดลวดในขณะที่เกตเวย์และโหนดพัลส์มีตัวเชื่อมต่อ SMA สำหรับเสาอากาศที่ทำงานได้ดีขึ้น โปรดพิจารณากฎระเบียบในท้องถิ่นเมื่อเลือกช่วงความถี่แบนด์วิดท์ส่งกำลังและการตั้งค่าที่เกี่ยวข้องกับวิทยุอื่น ๆ โหนดจะปรับกำลังการส่งผ่านให้อยู่ในระดับต่ำสุดโดยอัตโนมัติ
ช่วงที่บรรลุได้นั้นขึ้นอยู่กับสิ่งต่าง ๆ มากมาย แต่โดยส่วนตัวแล้วฉันประสบความสำเร็จได้อย่างง่ายดายมากกว่าหนึ่งกิโลเมตรผ่านผนังคอนกรีตเสริมและซุ้มโลหะ นี่คือระหว่างเกตเวย์ที่มีเสาอากาศ Dipole SMA และโหนดแบตเตอรี่ที่มีเสาอากาศแบบเกลียว การตั้งค่าเดียวกันก็ถึงกว่า 200 เมตรผ่านอาคารในสภาพแวดล้อมที่สร้างขึ้นมากขึ้น อย่างไรก็ตามเช่นเดียวกับการสื่อสารไร้สายโดยทั่วไปผลลัพธ์ของคุณจะแตกต่างกันไป
หมายเหตุ: บน PCB มีรอยเท้าสำหรับวิทยุที่เก่ากว่า Hoperf RFM69HW เช่นกัน ควรใช้งานได้ แต่ยังไม่ได้รับการทดสอบและปัจจุบันยังไม่มีการสนับสนุนในซอฟต์แวร์สำหรับเรื่องนี้ อย่าลังเลที่จะสร้างสาขาใหม่และนำไปใช้
ต่อไปนี้เป็นตารางของ Bill of Materials ไม่จำเป็นต้องใช้ส่วนประกอบทั้งหมดดูบันทึกด้านล่างสำหรับชิ้นส่วนเหล่านี้ ส่วนประกอบ SMD ส่วนใหญ่เป็นแพ็คเกจ 1206 สำหรับการบัดกรีมือที่ง่ายขึ้น เกตเวย์และโหนดพัลส์แบ่งปัน PCB เดียวกัน
หมายเหตุบางอย่าง:
ฉันได้สั่ง PCBs สำเร็จจาก Seeed Studio คุณสามารถรับบอร์ดสำหรับ 10 เกตเวย์/พัลส์โหนดและโหนดแบตเตอรี่ 10 โหนดราคา $ 9.80 บวกไปรษณีย์ แน่นอนว่าโรงงาน PCB ต้นแบบใด ๆ จะทำงานได้ PCBs ได้รับการออกแบบมาเพื่อไม่ให้มีช่องว่างที่แน่นหนาหรือจำเป็นสำหรับความคลาดเคลื่อนที่เข้มงวด สำหรับเกตเวย์และโหนดพัลส์เลือกความหนา 1.6 มม. (สิ่งที่แนบมาจะทำให้ PCB ดีขึ้น) ด้วยโหนดแบตเตอรี่บอร์ดอาจบางลง (ตัวอย่างเช่น 1.2 มม. ทำงานได้ดี) ตัวเลือกอื่น ๆ ควรจะโอเคกับค่าเริ่มต้น
บอร์ดได้รับการออกแบบให้พอดีกับสิ่งที่กล่าวถึงในตาราง Bud Industries DMB-4771 เป็นกล่องรถไฟ DIN ขนาด 35 มม. ในขณะที่ Supertronic PP42 เป็นตู้ติดผนังที่เรียบง่าย (ใช้เทปสองด้าน) ในโฟลเดอร์ Schematics ยังมี AP9_holder.stl ซึ่งเป็นรุ่น 3 มิติของผู้ถือง่ายเพื่อแก้ไขโหนดแบตเตอรี่ลงในกล่อง Junction 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 Kohm | รีเซ็ตตัวต้านทานแบบดึงขึ้น | 1206 | ||
| R2 | 10 Kohm | Radio Slave เลือกตัวต้านทานแบบดึงขึ้น | 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 Kohm | SRAM SLAVE SECTION ATHISTOR PULL-UP | 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.08 มม. | ตัวอย่างเช่นเทอร์มินัลสองเทอร์มินัลและสามขั้ว | ||
| pwr_jmp | จัมเปอร์บัดกรี | 1206 | สั้นหรือใช้ตัวต้านทาน Zero-OHM หากไม่ได้ใช้ U4, IE Board นั้นมีการควบคุมภายนอก 3.3 โวลต์ | ||
| comm_jmp | จัมเปอร์บัดกรี | สั้นถ้าไม่ได้ใช้ U2 คือใช้ UART โดยตรง | |||
| U1 | Atmel Atmega328p ไมโครคอนโทรลเลอร์ | จุ่ม 28 | ควรใช้ซ็อกเก็ต | ||
| U2 | ตัวรับส่งสัญญาณ Maxim Max3485 RS-485 | จุ่ม 8 | ควรใช้ซ็อกเก็ต ใช้เฉพาะในกรณีที่เชื่อมต่อกับเครือข่าย RS-485 | ||
| U3 | Hoperf RFM95W/RFM96W/RFM69HW | ||||
| U4 | Microchip MIC5209-3.3 ตัวควบคุม | SOT-223 | ไม่บังคับ (ดูหมายเหตุด้านบน) | ||
| U5 | Microchip 23K256 SRAM | จุ่ม 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 Kohm | รีเซ็ตตัวต้านทานแบบดึงขึ้น | 1206 | ||
| R3 | 10 Kohm | ตัวต้านทานซีรีส์ NTC | 1206 | ใช้กับ NTC เท่านั้น | |
| R4 | 10 Kohm | Radio Slave เลือกตัวต้านทานแบบดึงขึ้น | 1206 | ||
| D1 | LED กิจกรรม | 1206 | |||
| S1 | ปุ่มกดชั่วขณะ | 3x6 มม. | ตัวอย่างเช่นอันนี้ | ||
| เสาอากาศ | เสาอากาศสำหรับความถี่ในการใช้งานขดลวดหรือลวด | ตัวอย่างเช่นอันนี้ | |||
| ส่วนหัว | ส่วนหัวการเขียนโปรแกรม ISP | 2x3, 0.1 "พิทช์ | |||
| ส่วนหัว | ส่วนหัวการเลือกโหนด ID | 2x6, 0.1 "พิทช์ | |||
| ส่วนหัว | ส่วนหัว J1 | 1x2, 0.1 "พิทช์ | |||
| U1 | Atmel Atmega328p ไมโครคอนโทรลเลอร์ | จุ่ม 28 | ควรใช้ซ็อกเก็ต | ||
| u2 / u3 | เซ็นเซอร์ SI7021 / BME280 | สองรอยเท้าสำหรับคำสั่ง PIN ที่แตกต่างกัน ดูเซ็นเซอร์ที่รองรับสำหรับข้อมูลเพิ่มเติม | |||
| U4 | Hoperf RFM95W/RFM96W/RFM69HW | ||||
| NTC | NTC Thermistor | ส่วนหัวที่ให้ไว้ ดูเซ็นเซอร์ที่รองรับสำหรับข้อมูลเพิ่มเติม | |||
| ที่ใส่แบตเตอรี่ | ผู้ถือแบตเตอรี่ขนาด AA สองตัว | ตัวอย่างเช่นคู่ของเหล่านี้ | |||
| สิ่งที่แนบมา | supertronic pp42 |
บอร์ดมีไฟ LED ออนบอร์ดสองสามตัวเพื่อระบุเหตุการณ์ที่แตกต่างกัน บทนี้อธิบายเหตุการณ์เหล่านี้ บอร์ดทั้งหมดจะกะพริบเวอร์ชันเฟิร์มแวร์ปัจจุบันหลังจากเปิดเครื่อง
PWR จะสว่างเมื่อใดก็ตามที่เกตเวย์ขับเคลื่อน L2 กระพริบเมื่อเกตเวย์กำลังส่งในเครือข่าย Modbus ตารางต่อไปนี้เกี่ยวข้องกับ L1
| กระพริบตา | ช่วงเวลา | คำอธิบาย | ในระหว่าง | หมายเหตุ |
|---|---|---|---|---|
| 1 | 2 วินาที | ชุดรหัสที่ผิดกฎหมาย | การเริ่มต้น | ตรวจสอบส่วนหัว ID และรีบูต |
| 5 | 2 วินาที | ไม่สามารถเริ่มต้นวิทยุ | การเริ่มต้น | ตรวจสอบการเชื่อมต่อ |
| 1 | - | ได้รับและบันทึกข้อความจากโหนด | การดำเนินการ | |
| 2 | - | ได้รับข้อความจากโหนด แต่หน่วยความจำเต็ม | การดำเนินการ | เพิ่ม SRAM ภายนอกหรือจำนวนโหนดที่ต่ำกว่า |
| 3 | - | Modbus ที่ประสบความสำเร็จอ่านจาก Master | การดำเนินการ | |
| 4 | - | Modbus ล้มเหลวอ่านจาก Master | การดำเนินการ |
โหนดแบตเตอรี่มี LED เพียงหนึ่งเดียว
| กระพริบตา | ช่วงเวลา | คำอธิบาย | ในระหว่าง | หมายเหตุ |
|---|---|---|---|---|
| 1 | 2 วินาที | ชุดรหัสที่ผิดกฎหมาย | การเริ่มต้น | ตรวจสอบส่วนหัว ID และรีบูต |
| 3 | 2 วินาที | ไม่สามารถเริ่มต้นการกำหนดค่าเซ็นเซอร์ที่เหมาะสม | การเริ่มต้น | ตรวจสอบการเชื่อมต่อ |
| 5 | 2 วินาที | ไม่สามารถเริ่มต้นวิทยุ | การเริ่มต้น | ตรวจสอบการเชื่อมต่อ |
| 1 | - | การส่งผ่านที่ประสบความสำเร็จ | การดำเนินการ | เฉพาะในโหมดดีบักหรือการส่งสัญญาณบังคับ |
| 2 | - | การส่งผ่านล้มเหลว | การดำเนินการ | เฉพาะในโหมดดีบักหรือการส่งสัญญาณบังคับ |
โหนดพัลส์แบ่งปันบอร์ดเดียวกันกับเกตเวย์ดังนั้นพวกเขาจึงมีไฟ LED สามตัว PWR จะสว่างเมื่อใดก็ตามที่มีการขับเคลื่อนโหนด L2 กระพริบเมื่อโหนดกำลังส่งในเครือข่าย Modbus ตารางต่อไปนี้เกี่ยวข้องกับ L1 แตกต่างจากในโหนดแบตเตอรี่ในโหนดพัลส์ L1 กระพริบอยู่เสมอเนื่องจากไม่ จำกัด ด้วยแบตเตอรี่
| กระพริบตา | ช่วงเวลา | คำอธิบาย | ในระหว่าง | หมายเหตุ |
|---|---|---|---|---|
| 1 | 2 วินาที | ชุดรหัสที่ผิดกฎหมาย | การเริ่มต้น | ตรวจสอบส่วนหัว ID และรีบูต |
| 5 | 2 วินาที | ไม่สามารถเริ่มต้นวิทยุ | การเริ่มต้น | ตรวจสอบการเชื่อมต่อ |
| 1 | - | การส่งผ่านที่ประสบความสำเร็จ | การดำเนินการ | |
| 2 | - | การส่งผ่านล้มเหลว | การดำเนินการ | |
| 3 | - | Modbus ที่ประสบความสำเร็จอ่าน | การดำเนินการ | |
| 4 | - | Modbus ล้มเหลวอ่าน | การดำเนินการ |
บอร์ดมีส่วนหัวของผู้ใช้ที่สามารถตั้งค่าได้ จำเป็นต้องตั้งค่าเหล่านี้ก่อนที่จะใช้พลังงานบอร์ด แต่ละอุปกรณ์ยังมีปุ่มเดียว นอกจากนี้โหนดเกตเวย์และพัลส์มีขั้วสกรูสำหรับพลังงานการสื่อสารอนุกรมและอินพุตพัลส์
ปุ่มในเกตเวย์ไม่ได้ใช้งานในการทำงานปกติ อย่างไรก็ตามหากคุณสั้น J1 และกดปุ่มค้างไว้ในขณะที่เปิดเครื่องบนเกตเวย์ค่าชีพจรที่บันทึกไว้ใน EEPROM จะถูกตั้งค่าเป็นศูนย์
หากกดปุ่มในขณะที่ใช้พลังงานโหนดจะถูกใส่ใน โหมดการดีบัก ในโหมดนี้โหนดจะส่งค่าใหม่ทุก ๆ 8 วินาทีและกระพริบไฟ LED ที่แสดงความสำเร็จ อย่าใช้ในระยะยาวเพราะจะระบายแบตเตอรี่อย่างรวดเร็ว Power Cycle โหนดเพื่อยกเลิกโหมดการดีบัก
ในระหว่างปุ่มการทำงานปกติทริกเกอร์ส่งทันทีด้วยพลังงานเต็มและกระพริบไฟ LED ที่บ่งบอกถึงความสำเร็จ ใช้เพื่อทดสอบอย่างรวดเร็วว่าโหนดอยู่ในช่วงของเกตเวย์หรือไม่
หากกดปุ่มในขณะที่ใช้พลังงานโหนดจะถูกใส่ใน โหมดการดีบัก ในโหมดนี้โหนดจะส่งค่าใหม่ทุก ๆ 8 วินาที อย่าใช้ในระยะยาวเนื่องจากจะเป็นเครือข่ายวิทยุที่ไม่จำเป็นโดยไม่จำเป็น
ในระหว่างปุ่มการทำงานปกติทริกเกอร์ส่งทันทีด้วยพลังงานเต็ม ใช้เพื่อทดสอบอย่างรวดเร็วว่าโหนดอยู่ในช่วงของเกตเวย์หรือไม่ นอกจากนี้หากคุณสั้น J1 และกดปุ่มค้างไว้ในขณะที่เปิดเครื่องบนโหนดค่าชีพจรที่บันทึกไว้ใน EEPROM จะถูกตั้งค่าเป็นศูนย์
อ้างถึงแผนผังและ PCB สำหรับคำแนะนำและแนวคิดโดยละเอียดสำหรับบอร์ดการผลิต ชิปทั้งหมดผ่านแพ็คเกจหลุมเพื่อการบัดกรีมือที่ง่ายขึ้น ส่วนประกอบขนาดเล็กส่วนใหญ่เป็น SMD แต่มีขนาดใหญ่พอสมควรเพื่อให้ทหารที่ไม่มีประสบการณ์ควรจะสามารถประสานมือได้
ดาวน์โหลดที่เก็บ วางเนื้อหาของ ห้องสมุด ลงในโฟลเดอร์ Arduino Libraries ของคุณ นอกจากนี้ยังคัดลอกโฟลเดอร์ Sensorsgateway , Sensorsbattery และ Sensorspulse ไปยังสมุดร่าง Arduino ของคุณ
คุณสามารถติดตั้ง Minicore ได้อย่างง่ายดายโดยใช้ Boards Manager ใน Arduino IDE ทำตามคำแนะนำในหน้าของ Minicore
ติดตั้งไลบรารีภายนอกที่จำเป็นทั้งหมด อ้างถึงส่วนห้องสมุดเพื่อคำแนะนำเพิ่มเติม ให้ความสนใจเป็นพิเศษกับส่วนที่เกี่ยวกับห้องสมุดเข้ารหัสหากคุณใช้การเข้ารหัส
ในช่วงเริ่มต้นของแต่ละ. ino มีส่วนที่มีการตั้งค่าที่จำเป็นทั้งหมดพร้อมคำอธิบายที่ดี ปรับการตั้งค่าตามต้องการ โปรดจำไว้ว่าความถี่คีย์การเข้ารหัสและอัตราต่ำต้องจับคู่กับอุปกรณ์ทุกชิ้นในเครือข่ายหรือการสื่อสารเดียวกันจะไม่ทำงาน
เนื่องจากเซ็นเซอร์ใช้ฮาร์ดแวร์ที่แตกต่างจากบอร์ด Arduino ทั่วไปไมโครคอนโทรลเลอร์จึงต้องตั้งโปรแกรมด้วยการตั้งค่าพิเศษบางอย่าง ในการทำเช่นนี้คุณจะต้องมีโปรแกรมเมอร์ AVR ISP ภายนอก โชคดีที่คุณสามารถใช้ Arduino อื่น (ตัวอย่างเช่น UNO หรือ Pro Mini) หากคุณไม่มีโปรแกรมเมอร์ ISP เฉพาะที่พร้อมใช้งาน ทำตามคำแนะนำที่ Arduino.cc สำหรับการเดินสายและเผาภาพร่าง Arduinoisp มีเพียงแค่การจับเพียงครั้งเดียว: ไม่ว่าคุณจะใช้โปรแกรมบอร์ดใหม่ จะต้องเป็น 3.3 โวลต์ Atmega328p ใช้ได้ 5 โวลต์ แต่ส่วนประกอบอื่น ๆ ทั้งหมดทำงานที่ 3.3 โวลต์ดังนั้นการจัดหาบอร์ดที่มี 5 โวลต์จะเผาไหม้ส่วนประกอบบางส่วนหรือทั้งหมด สิ่งที่ฉันแนะนำคือ Arduino Pro Mini หรือ Pro Micro เวอร์ชัน 3.3 โวลต์
ทำตามคำแนะนำที่กล่าวถึงก่อนหน้านี้จนกว่าคุณจะกด โปรแกรม bootloader ใน เครื่องมือ> บอร์ด และภายใต้ minicore เลือก ATMEGA328 เลือกตัวเลือกอื่น ๆ ดังนี้:
จากนั้นกด Burn Bootloader สิ่งนี้ไม่ได้เผาไหม้ bootloader ใด ๆ เนื่องจากเราเลือกที่จะไม่ใช้ bootloader มันจะเผาฟิวส์ที่จำเป็นเท่านั้น ทำให้บอร์ดทั้งสองยังคงเชื่อมต่อตั้งแต่ถัดไปเราจะอัปโหลดภาพร่าง
หมายเหตุ: สิ่งนี้จะต้องทำเพียงครั้งเดียวกับไมโครคอนโทรลเลอร์ใหม่ทุกตัวเท่านั้น หากคุณเปลี่ยนการตั้งค่าร่างและอัปโหลดร่างใหม่ในภายหลังคุณสามารถข้ามขั้นตอนที่ 6 และทำตามขั้นตอนที่ 7 โดยตรง
ด้วยการเชื่อมต่อบอร์ดสองบอร์ดการตั้งค่าบอร์ด Arduino IDE ตามที่อธิบายไว้ในขั้นตอนที่ 6 และภาพร่างจริงเปิดเพียงกด อัปโหลดโดยใช้โปรแกรมเมอร์ ภายใต้ ร่าง สิ่งนี้จะอัปโหลดภาพร่างเหมือนภาพร่าง Arduino อื่น ๆ หลังจากนี้คุณก็เสร็จแล้ว
วางเกตเวย์ของคุณไปยังตำแหน่งกลางและเชื่อมต่อกับเครือข่ายที่มีความสามารถของ Modbus การใช้ส่วนหัวจัมเปอร์ตั้งค่าที่อยู่ Modbus Slave และใช้พลังงาน
แจกจ่ายโหนดอื่น ๆ ตามต้องการเลือกที่อยู่ก่อนด้วยหัวจัมเปอร์ก่อนจากนั้นเชื่อมต่อพลังงานภายนอกหรือแบตเตอรี่ ใช้ปุ่มบนโหนดเพื่อบังคับให้ส่งด้วยพลังงานเต็ม - โดยปกติโหนดจะปรับกำลังการส่งของพวกเขาโดยอัตโนมัติในระดับต่ำสุดที่เป็นไปได้ หนึ่งกระพริบของไฟ LED ออนบอร์ดบ่งบอกถึงการส่งที่ประสบความสำเร็จสองครั้งกระพริบเป็นหนึ่งที่ล้มเหลว LED กะพริบเฉพาะเมื่อบังคับให้ส่งด้วยปุ่ม คุณสามารถใช้สคริปต์ Python read_modbus.py เพื่ออ่านข้อมูลจากเกตเวย์เพื่อจุดประสงค์ในการดีบัก
Start logging measurements to a MySQL database ( save_modbus_to_db.py provides a starting point for this), for example, and graph it with Grafana, or connect the gateway to a home automation hub and monitor measurements that way.
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.