Dieses Projekt besteht aus einfachen Atmel ATMEGA328P -Basisknoten, die Hoperf Lora RFM95W/RFM96W -Radios verwenden. Batteriebetriebene Knoten messen die Temperatur, Luftfeuchtigkeit und den barometrischen Druck je nach angeschlossener Hardware. Extern angetriebene Impulstypknoten zählen Impulse aus verschiedenen Utilitätsmessgeräten und verbinden sich auch mit multischen Energiezählern mit Kamstrup. Gateway empfängt und sammelt diese Messungen von den Sensorknoten und kann durch serielle Kommunikation unter Verwendung des Modbus-RTU-Protokolls über zwei Draht RS-485 oder gemeinsame 3,3 Volt UART zugegriffen werden. Dies ermöglicht die Vernetzung mit vielen DIY -Heimautomationssystemen wie Domoticz, Home Assistant und OpenHab. Sensoren verwenden benutzerdefinierte Leiterplatten, sind jedoch mit Arduino IDE programmiert.
Dieses Projekt ist ein komplettes Paket: Es enthält sowohl Hardware -Designs als auch Software. Die Schemata enthält PCB -Designs, sodass Sie PCBs aus einer Fabrik herstellen oder bestellen können und die Knoten löten können. Software ist bereit, so hochgeladen zu werden. Wenn Sie nicht die bereitgestellten Hardwaredesigns verwenden möchten, sollten Sie in der Lage sein, beispielsweise Arduino Pro Minis stattdessen mit Protboden zu verwenden. Durchsuchen Sie die .inos und die Schaltpläne, um PIN -Definitionen zu finden. Denken Sie daran, die Verwendung der Batterie zu berücksichtigen, wenn Sie Pro Minis oder andere "Arduinos in voller Größe" verwenden. Denken Sie auch daran, dass die verwendeten Komponenten meist nur 3,3 Volt -tolerant sind, sodass die Verwendung eines 5 -Volt -UNO eine Pegelverschiebung erfordert.
Überspringen Sie direkt zu Anweisungen, obwohl ich dringend empfehle, zuerst das gesamte Readme zu lesen.
Sensoren erfordern einige externe Komponenten, um zu funktionieren: Bibliotheken bieten Funktionen für Funkkommunikation und verbundene Sensoren, während das Hardwarepaket die erforderlichen Sicherungen für die Arbeit mit benutzerdefinierten Boards übernimmt, die von Sensoren verwendet werden. Befolgen Sie sorgfältig den Anweisungen zu Radiohead- und Kryptographie -Bibliotheken, da diese ein paar zugrunde liegende Änderungen erfordern.
Die Radiohead -Paket -Radio -Bibliothek für eingebettete Mikroprozessoren bietet Unterstützung für RFM95W/RFM96W -Radios (und viele andere). Laden Sie von Airspayce.com herunter. Nachdem Sie die Bibliothek an Ihren Arduino IDE -Bibliotheksordner extrahiert haben, müssen Sie eine Einstellung vornehmen. Zu Beginn von Radiohead/RH_RF95.H Wechselzeile ändern
#define RH_RF95_FIFO_SIZE 255
Zu
#define RH_RF95_FIFO_SIZE 64
Kommunikation funktioniert ohne diese Änderung nicht. Sie riskieren auch, dass Sie ohne diese Anpassung aus SRAM ausgehen.
Die Arduino Cryptography Library beinhaltet die Unterstützung für die Verschlüsselung. Wenn Sie nicht planen, den Verkehr zu verschlüsseln, benötigen Sie diese Bibliothek nicht. Laden Sie von Github.com herunter. Sie müssen den Reißverschluss herunterladen und den Inhalt von Bibliotheken in Ihren Arduino IDE -Bibliotheksordner extrahieren. Denken Sie auch daran, die folgende Zeile am Ende von Radiohead/Radiohead zu kontrollieren.
//#define RH_ENABLE_ENCRYPTION_MODULE
Sie müssen auch die Ernte von Watchdog -Entropie deaktivieren, indem Sie die folgende Zeile zu Beginn von Crypto/RNG.CPP aus kommentieren, da der Watchdog -Timer bereits von batteriebetriebenen Knoten verwendet wird:
#define RNG_WATCHDOG 1 // Harvest entropy from watchdog jitter.
Wenn Sie von all dem überwältigt sind, möchten Sie möglicherweise überhaupt keine Verschlüsselung aktivieren. Schließlich ist Sensoren sowieso nicht gerade ein hohes Sicherheitssystem.
LowPowerLab SI7021 -Bibliothek ist erforderlich, um mit Silicon Labs SI7021 -Temperatur- und Feuchtigkeitssensor zu arbeiten. Laden Sie von Github.com herunter.
Sparkfun BME280 Arduino Library Schnittstellen mit Bosch Sensortech Bme280 Temperatur, Luftfeuchtigkeit und barometrischer Drucksensor. Dokumentation bei Github.com. Installieren Sie mit Arduino IDE Library Manager.
Sensoren verwendet ein bisschen anderes Hardware -Design als normale Arduino -Boards. Beispielsweise werden batteriebetriebene Knoten auf internem 1 -MHz -Takt und Gateway ausgeführt. Sie fehlen auch den Bootloader (obwohl Sie ihn verwenden könnten, bietet Hardware ohnehin keine seriellen Pins, um neue Firmware mit dem Bootloader zu verbrennen). Stattdessen wird das Programm mit ICSP über den ISP -Header blitzt.
Sie könnten die erforderlichen Sicherungen manuell einstellen, aber es ist erheblich einfacher, nur ein vorgefertigtes Hardwarepaket zu verwenden. McUde hat einen schönen Kern speziell dazu. Laden Sie den Minicore von McUDUDE von github.com herunter.
Gateway sammelt Daten von Knoten und fungiert als Relais an einem Modbus -Netzwerk. Durch die Verwendung von Maxim integriertes MAX3485 RS-485 kann Transceiver Gateway als Slave mit einem vorhandenen RS-485-Modbus-RTU-Netzwerk verbunden werden. Das Auslassen des Transceivers bietet einen direkten TTL -seriellen Anschluss. Dies kann beispielsweise mit einem anderen Arduino -Board, einem FTDI -Chip oder einem direkten an einen Himbeer -Pi angeschlossen werden. Unabhängig von der physischen Verbindung wird mit dem Modbus -Protokoll auf Gateway zugegriffen. Das Gateway erfordert regulierte 3,3 Volt oder (nicht regulierte) 5-12 Volt DC-Netzteil. Darüber hinaus verfügt Gateway über drei Impulseingänge (Impulswerte werden regelmäßig in EEPROM gespeichert und beim Einschalten wiederhergestellt), von denen eines als NTC-Thermistoreingang verwendet werden kann. Diese Eingänge sind auch über Modbus zugänglich.
Ein Nachteil des Modbus -Protokolls ist, dass ein Sklave den Master über neue Nachrichten nicht informieren kann. Dafür kann Pulse 2 aktiviert werden, um als externer Interrupt zu arbeiten. Dieser Stift verhält sich wie ein emulter Open -Kollektorausgang (die externe Spannung mit hoher Zustand ist jedoch auf 3,3 Volt begrenzt). Der Pin wird je nach den Gateway -Einstellungen auf den Boden gezogen, wenn eine Nachricht entweder von einem wichtigen Knoten oder einem beliebigen Knoten empfangen wird. Nachdem Modbus gelesen wurde, wird dieser Pin in den Zustand mit hoher Impedanz zurückgezogen.

WARNUNG: UART -Serienanschluss beträgt 3,3 Volt. Schließen Sie ihn also nicht an ein 5 -Volt -System an.
Warum Modbus? Modbus ist ein einfach zu bedienendes und integriertes Protokoll für diese Art von Datenübertragung. Obwohl es alt und in den Funktionen eingeschränkt ist, bietet es immer noch alle notwendigen Dinge und wird in der Industrie weit verbreitet. Bibliotheken, die darauf zugreifen, gibt es für mehr oder weniger Plattform. Außerdem haben die meisten DIY -Heimautomationssysteme (Home Assistant, Domoticz und OpenHab, um nur einige zu nennen) Modbus -Unterstützung.
Register können entweder mit Funktionscode 3 (Read Holding Registers) oder 4 (Leseeingaberegister) zugegriffen werden. Beide geben dieselben Registerwerte zurück. Beachten Sie, dass Register, die nicht definiert sind, nicht gelesen werden können. Beispielsweise wird der Versuch, Register 21-99 oder 108-199 zu lesen , die Ausnahme von illegalen Datenadressen zurückgeben.
| Adresse | Nummer | Name | Typ / Einheit | Notizen |
|---|---|---|---|---|
| 0 | 30001 | Modbus -Fehler (CRC fehlgeschlagen oder beschädigt) | Schalter | |
| 1 | 30002 | Modbus überflogen die Rahmen | Schalter | |
| 2 | 30003 | Modbus illegale Funktion liest sich | Schalter | |
| 3 | 30004 | Modbus illegale Adresse liest sich | Schalter | |
| 4 | 30005 | Modbus Frames erhalten | Schalter | |
| 5 | 30006 | Modbus -Frames gesendet | Schalter | |
| 6 | 30007 | Knoten während der letzten Stunde | Schalter | |
| 7 | 30008 | Knoten während der letzten 12 Stunden | Schalter | |
| 8 | 30009 | Knoten während der letzten 24 Stunden | Schalter | |
| 9 | 30010 | Mindestens ein Knoten niedrig für Batterie | Boolean | |
| 10 | 30011 | Gateway aus dem Gedächtnis | Boolean | |
| 11 | 30012 | Gateway -Verfügbarkeit | Stunde | |
| 12 | 30013 | Firmware -Version | 8 MSB = Major, 8 lsb = minor | |
| 13 | 30014 | Status | Siehe unten für Bits. | |
| 14 | 30015 | Puls 1 | Schalter | 32 Bit |
| 16 | 30017 | Puls 2 | Schalter | 32 Bit |
| 18 | 30019 | Puls 3 / Temperatur | Zähler / ° C. | 32 Bit |
| 20 | 30021 | Letzte empfangene Knoten -ID |
Statusregister -Bits (von LSB bis MSB):
Die erste Adresse ist die Knoten -ID * 100 . Beispielsweise zeigt diese Tabelle Adressen für eine Knoten -ID 1. In ähnlicher Weise beginnen die Messungen für die Knoten -ID 2 bei der Adresse 200 usw.
| Adresse | Nummer | Name | Typ / Einheit | Notizen |
|---|---|---|---|---|
| 100 | 30101 | Zuletzt erhalten | Minute | Wann wurde der Knoten zuletzt gesehen. |
| 101 | 30102 | Batteriespannung | MV | Stromspannung. |
| 102 | 30103 | Strom übertragen | % | Relative Sendeleistung. |
| 103 | 30104 | Intervall übertragen | Minute | Wie oft überträgt der Knoten zumindest. |
| 104 | 30105 | Kopfball | Nur 8 LSB, Debugug -Daten. Siehe unten für Bits. | |
| 105 | 30106 | Temperatur | ° C | × 10 |
| 106 | 30107 | Relative Luftfeuchtigkeit | RH% | × 10. Nur wenn der Knoten SI7021 oder BME280 hat. |
| 107 | 30108 | Barometrischer Druck / Temperatur | HPA / ° C. | × 10. Druck, wenn der Knoten BME280 hat, Temperatur, wenn der Knoten sowohl Si7021 als auch NTC hat. |
Header Register Bits (von LSB bis MSB):
Die erste Adresse ist die Knoten -ID * 100 . Beispielsweise zeigt diese Tabelle Adressen für eine Knoten -ID 2. In ähnlicher Weise beginnen die Messungen für die Knoten -ID 3 bei der Adresse 300 usw.
| Adresse | Nummer | Name | Typ / Einheit | Notizen |
|---|---|---|---|---|
| 200 | 30201 | Zuletzt erhalten | Minute | Wann wurde der Knoten zuletzt gesehen. |
| 201 | 30202 | Strom übertragen | % | Relative Sendeleistung. |
| 202 | 30203 | Intervall übertragen | Minute | Wie oft überträgt der Knoten zumindest. |
| 203 | 30204 | Kopfball | Nur 8 LSB, Debugug -Daten. Siehe unten für Bits. | |
| 204 | 30205 | Puls 1 | Schalter | 32 Bit |
| 206 | 30207 | Puls 2 | Schalter | 32 Bit |
| 208 | 30209 | Puls 3 / Temperatur | Zähler / ° C. | 32 Bit |
Header Register Bits (von LSB bis MSB):
Die erste Adresse ist die Knoten -ID * 100 . Beispielsweise zeigt diese Tabelle Adressen für eine Knoten -ID 3. In ähnlicher Weise beginnen die Messungen für die Knoten -ID 4 bei der Adresse 400 und so weiter.
| Adresse | Nummer | Name | Typ / Einheit | Notizen |
|---|---|---|---|---|
| 300 | 30301 | Zuletzt erhalten | Minute | Wann wurde der Knoten zuletzt gesehen. |
| 301 | 30302 | Strom übertragen | % | Relative Sendeleistung. |
| 302 | 30303 | Intervall übertragen | Minute | Wie oft überträgt der Knoten zumindest. |
| 303 | 30304 | Kopfball | Nur 8 LSB, Debugug -Daten. Siehe unten für Bits. | |
| 304 | 30305 | Puls 1 | Schalter | 32 Bit |
| 306 | 30307 | Puls 2 | Schalter | 32 Bit |
| 308 | 30309 | Puls 3 / Temperatur | Zähler / ° C. | 32 Bit |
| 310 | 30311 | Wärmeenergie | kwh | 32 Bit |
| 312 | 30313 | Tatsächlicher Fluss | l/h | 32 Bit |
| 314 | 30315 | Volumen | m³ | × 100. 32 Bit |
| 316 | 30317 | Tatsächliche Kraft | KW | × 10. 32 Bit |
| 318 | 30319 | Tatsächliche t₁ | ° C | × 100. 32 Bit |
| 320 | 30321 | Tatsächliche t₂ | ° C | × 100. 32 Bit |
Header Register Bits (von LSB bis MSB):
Sensoren umfassen zwei Haupttypen von Knoten: Batterie und Impuls. Batteriebetriebene Niedrigkraftknoten überwachen Temperatur, Luftfeuchtigkeit und Druck. Impulstypknoten werden extern angetrieben und zählen Impulse von Utility -Messgeräten. Impulsknoten unterstützen auch das Verbinden eines NTC-Thermistors für die Temperaturüberwachung und RS-485 Modbus RTU. Letzteres ermöglicht es, dass der Knoten mit einem Kamstrup -multikalen 602 -Energiemessel angeschlossen wird.
Batteriebetriebene Sensoren bieten einfache Knoten zur Überwachung von Temperatur, Luftfeuchtigkeit und barometrischem Druck. Diese Knoten arbeiten auf zwei normalen 1,5 -Volt -AA -alkalischen Batterien. Wenn eine längere Lebensdauer benötigt wird oder der Knoten in kalte Umgebung platziert wird, können auch teurere 1,5-Volt-AA-Größe Lithiumbatterien verwendet werden.
WARNUNG: Hardware bietet keinen Umkehrspannungsschutz, um Strom zu sparen und die Anzahl der Teile minimal zu halten. Beachten Sie daher die Polarität, wenn Sie Batterien einfügen, oder Sie werden den Knoten zerstören .
Knoten verbringen die meiste Zeit damit, nur zu schlafen, nur um aufzuwachen, um Messungen zu ergreifen und Werte an Gateway zu senden. Die Frequenz kann zu Beginn der Codedatei über Einstellungen gesteuert werden. Im Schwellenwertmodus wachen Knoten regelmäßig auf und ergreifen Messungen. Wenn die Werte genug von zuvor gesendeten unterschiedlich sind, wird eine Nachricht gesendet. Wenn nicht, kehren die Knoten in den Schlaf zurück. Es gibt jedoch eine bestimmte Kraft, die kontrolliert, wie oft eine neue Nachricht zumindest unabhängig von der Schwelle gesendet wird. Wenn ein Knoten nicht im Schwellenwertmodus arbeitet, sendet er jedes Mal, wenn er aufwacht, eine Nachricht.

Knoten unterstützen drei Arten von Sensoren: Silicon Labs SI7021, Bosch Sensortech Bme280 und ein gemeinsamer NTC -Thermistor. Der erste hat Temperatur und Luftfeuchtigkeit, der zweite fügt einen barometrischen Druck hinzu und der letztere liefert nur Temperatur. Ein Knoten kann nur eine Art von Sensor oder als Sonderfall sowohl SI7021 als auch NTC gleichzeitig haben. PCB bietet Fußabdrücke für alle, und der genaue Typ ist in der Laufzeit definiert. Das heißt, jeder Knoten wird mit derselben Software geblitzt und überprüft bei Bootup, welche Art von Sensorkonfiguration angeschlossen ist.
SI7021 -Sensoren können als Breakout -Boards von eBay und ähnliche Orte für ein paar Dollar gekauft werden. Holen Sie sich beim Kauf des Sensors eine, die kein Spannungsregler und das I2C -Level -Verschiebung enthält. Batteriebetriebene Knoten arbeiten mit 3,3 Volt, so dass SI7021 direkt gefüttert werden kann. Wenn Sie keinen (unnötigen) Regler haben, sparen Sie Batteriestrom. Zum Beispiel wird dieser empfohlen, obwohl dies nicht der Fall ist.
BME280 -Sensoren sind auch in eBay, Aliexpress und ähnlich als Breakout -Boards erhältlich. Sie sind etwas teurer. Diese scheinen ohne den Onboard -Regler nicht verfügbar zu sein. Wenn Sie also den Stromverbrauch senken möchten, besteht die einzige Möglichkeit, den Regler zu entfernen. Beispielbild eines hier gezeigten Regulierungsreglers. Dieser Sensor wurde zum Beispiel erfolgreich eingesetzt.
Hinweis: Chinesische Verkäufer mischen den BME280 manchmal mit früher und weniger BMP280. Seien Sie vorsichtig, wenn Sie den Sensor kaufen. Informationen dazu zum Beispiel hier und hier.
NTC -Thermistoren können an denselben Stellen wie die anderen Sensoren gekauft werden. Stellen Sie beim Kauf von Thermistoren sicher, dass Sie drei notwendige Werte erhalten: Nennwiderstand , Nominaltemperatur und Beta -Koeffizient . Zum Beispiel wurde dieser Thermistor erfolgreich verwendet und arbeitet mit den Standardwerten.
Impulstypknoten sollen Impulse aus Wasser, Strom, Gas oder einer anderen Art von Messgerät mit Impulsausgang messen. Knoten haben drei Impulseingänge, von denen eines als NTC -Thermistoreingang anstelle eines Impulseingangs verwendet werden kann. Die Impulseingänge werden von Mikrocontroller oder mit optionalen externen Widerständen intern hoch gezogen, und angeschlossene Messgeräte ziehen sie niedrig in den Boden. Impulswerte werden regelmäßig in EEPROM gespeichert und beim Einschalten wiederhergestellt. Impulsknoten erfordern entweder regulierte 3,3-Volt oder (nicht regulierte) 5-12 Volt DC-Stromversorgung. Sie verwenden die gleiche Leiterplatte wie das Gateway.
Diese Knoten sind regelmäßige Pulsknoten mit zusätzlicher Unterstützung für Kamstrup Multical 602 Energy Messgerät. Der Knoten ist mit RS-485 mit einem multischen 602-Energiemessel verbunden und liest regelmäßig bestimmte Werte aus dem Messgerät. Weitere Werte finden Sie unter Modbus Register Listing.
HINWEIS: Multical 602 scheint durch Multical 603 eingestellt und ersetzt zu werden. Laut Datenblatt unterstützt Multical 603 dieselben Modbus -Register wie die alten 602. Daher sollten Knoten mit neueren 603s funktionieren, dies ist jedoch nicht getestet.
Protip: Wenn Sie diesen Knoten als Beispiel verwenden, sollte es ziemlich einfach sein, eine andere Art von Modbus -RTU -fähiges Gerät an einen Knoten vom Impulstyp zu verbinden und den Code entsprechend anzupassen. Auf diese Weise können Sie alle anderen Modbus -Messgeräte oder -geräte über Sensorenknoten lesen.
Sensoren verwenden Hoperf RFM95W und RFM96W Lora Radios. RFM95W ist für 868/915 MHz und RFM96W für 433 MHz. Dies sind billige Funkgeräte mit geringer Leistung mit sehr guter Reichweite. Batterieknoten verwenden Draht- oder Helical -Antennen, während Gateway- und Pulsknoten SMA -Anschlüsse für bessere Durchführung von Antennen haben. Bitte berücksichtigen Sie lokale Vorschriften bei der Auswahl der Frequenzbereich, der Bandbreite, der Übertragung von Strom und anderen funkbezogenen Einstellungen. Knoten passen die Sendeleistung automatisch auf den niedrigstmöglichen Niveau ein.
Die erreichbare Reichweite hängt stark von zahlreichen Dingen ab, aber persönlich habe ich leicht über einen Kilometer durch eine verstärkte Betonwand und eine Metallfassade erreicht. Dies war zwischen einem Tor mit einer Dipol -SMA -Antenne und einem Batterieknoten mit helikaler Antenne. Das gleiche Setup erreichte auch über 200 Meter durch Gebäude in einer mehr gebauten Umgebung. Wie bei der drahtlosen Kommunikation im Allgemeinen variieren Ihre Ergebnisse jedoch.
Hinweis: Auf der Leiterplatte gibt es auch einen Fußabdruck für ältere Hoperf RFM69HW -Radio. Es sollte funktionieren, aber es wurde nicht getestet und es gibt derzeit keine Unterstützung in der Software dafür. Fühlen Sie sich frei, eine neue Filiale zu erstellen und zu implementieren.
Im Folgenden finden Sie die Tabelle der Materialien. Nicht alle Komponenten sind benötigt, siehe die folgenden Anmerkungen für diese Teile. Die Mehrheit der SMD -Komponenten besteht aus 1206 Paket für das einfachere Handlöten. Gateways und Pulsknoten teilen sich die gleiche PCB.
Einige Notizen:
Ich habe PCBs von See Studio erfolgreich bestellt. Sie können Boards für 10 Gateways/Pulse -Knoten und 10 Batterieknoten für 9,80 USD plus Porto erhalten. Natürlich funktioniert jede Prototyp -PCB -Fabrik. PCBs sind so konzipiert, dass sie keine engen Bereiche haben oder strenge Toleranzen benötigen. Wählen Sie für Gateway- und Pulsknoten eine 1,6 -mm -Dicke (das Gehäuse hält die Leiterplatte besser). Bei Batterieknoten können Bretter dünner sein (z. B. 1,2 mm funktioniert gut). Andere Optionen sollten bei Standardeinstellungen einverstanden sein.
Die Boards sind so ausgelegt, dass sie den im Tisch genannten Gehäusen passen. Die Bud Industries DMB-4771 ist eine 35-mm-DIN-Schachtel, während Supertronic PP42 ein einfaches wandmontiertes Gehäuse ist (doppelseitiges Klebeband verwenden). Im Schaltplattenordner gibt es auch AP9_HOLFER.STL , ein 3D -Modell eines einfachen Halters, um einen Batterieknoten in ein ABB AP9 -Anschlussbox zu reparieren. Dies ist besonders praktisch, wenn Sie einen Knoten draußen installieren und Zugriff auf einen 3D -Drucker haben. Sie benötigen zwei Halter und eine Reihe kleiner Schrauben. Sie müssen auch eine Möglichkeit haben, die Box regnensicher zu gestalten, aber trotzdem Feuchtigkeit und Temperatur einzugeben. Wenn Sie einige Löcher in Membran-Kabeleinträge stecken, ist es eine Möglichkeit, professionell zu sein, oder wenn Sie professionell werden möchten, verwenden Sie eine Sinterd-Schutzabdeckung. Dies wurde nachgewiesen: Ein BME280 -Breakout -Board passt einfach hinein, wenn Sie Kabel an das Board löten, wie hier gezeigt. Denken Sie daran, das Breakout -Tafel (aber nicht den Sensor selbst) mit einem Isolierband zu wickeln oder Wärmeschrumpfungen zu verwenden, um Kurzstrecken zu vermeiden. Dieses Bild zeigt ein SI7021 -Breakout -Board, das für den Gebrauch im Freien vorbereitet ist. Sie müssen auch den Plastik mit den Anschlüssen der Schutzabdeckung von den Plastik bohren. Verwenden Sie hier einige Fantasie. Ein vorgefertigter wetterfester Sensor sieht ungefähr so aus. Das Anschließen eines NTC -Thermistors mit ausreichend langem Draht macht wie hier gezeigt einen schönen Wassertemperaturknoten.
| Teil | Wert | Gerät | Paket | Typ | Notizen |
|---|---|---|---|---|---|
| C1 | 100 nf | Entkopplungskondensator | 1206 | Keramik | |
| C2 | 22 Pf | Kristallkondensator | 1206 | Keramik | |
| C3 | 22 Pf | Kristallkondensator | 1206 | Keramik | |
| C4 | 100 nf | Entkopplungskondensator | 1206 | Keramik | Verwendet nur mit RFM95W / RFM96W. |
| C5 | 100 nf | Entkopplungskondensator | 1206 | Keramik | Nur mit RFM69HW verwendet. |
| C6 | 100 nf | Entkopplungskondensator | 1206 | Keramik | Nur mit U2 (max3485) verwendet. |
| C7 | 1 UF | Leistungseingangskondensator | 1206 | Tantal | |
| C8 | 1 UF | Ausgangskondensator | 1206 | Tantal | |
| C9 | 10 uf | Ausgangskondensator | 1206 | Keramik | |
| C10 | 100 nf | Entkopplungskondensator | 1206 | Keramik | Nur mit 23K256 verwendet. |
| C11 | Kommt darauf an | Puls 3 Glättungskondensator | 1206 | Keramik | Verwenden Sie, wenn fehlerhafte Impulse gezählt werden. |
| C12 | Kommt darauf an | Puls 2 Glättungskondensator | 1206 | Keramik | Verwenden Sie, wenn fehlerhafte Impulse gezählt werden. |
| C13 | Kommt darauf an | Puls 1 Glättungskondensator | 1206 | Keramik | Verwenden Sie, wenn fehlerhafte Impulse gezählt werden. |
| R1 | 10 Kohm | Pull-up-Widerstand zurücksetzen | 1206 | ||
| R2 | 10 Kohm | Radio Slave Wählen Sie Pull-up-Widerstand | 1206 | ||
| R3 | 120 Ohm | RS-485 Terminierungswiderstand | 1206 | Nur mit U2 (max3485) verwendet. | |
| R4 | Kommt darauf an | Leistungsleitungswiderstand | 1206 | Wählen Sie den Wert basierend auf der verwendeten LED aus. | |
| R5 | Kommt darauf an | Aktivitäts -LED -Widerstand | 1206 | Wählen Sie den Wert basierend auf der verwendeten LED aus. | |
| R6 | Kommt darauf an | Serienaktivitäts -LED -Widerstand | 1206 | Wählen Sie den Wert basierend auf der verwendeten LED aus. | |
| R7 | Hängt davon ab / 10 kohm | Puls 3 Pull-up / NTC-Serienwiderstand | 1206 | Verwenden Sie, wenn ATMEGA328P Interner Pull-up-Widerstand nicht stark genug ist oder NTC verwendet werden soll. | |
| R8 | Kommt darauf an | Puls 2 Pull-up-Widerstand | 1206 | Verwenden Sie, wenn ATMEGA328P Interner Pull-up-Widerstand nicht stark genug ist. | |
| R9 | Kommt darauf an | Puls 1 Pull-up-Widerstand | 1206 | Verwenden Sie, wenn ATMEGA328P Interner Pull-up-Widerstand nicht stark genug ist. | |
| R10 | 10 Kohm | SRAM Slave Wählen Sie Pull-up-Widerstand | 1206 | Nur mit 23K256 verwendet. | |
| D1 | Serienaktivität geführt | 1206 | |||
| D2 | Macht führte | 1206 | |||
| D3 | Aktivität geführt | 1206 | |||
| Y1 | 8 MHz | HC-49us 8 MHz Kristall | |||
| S1 | Momentaner Druckknopf | 3x6 mm | Zum Beispiel dieses. | ||
| X1 | SMA -Anschluss | Zum Beispiel dieses. | |||
| Kopfball | ISP -Programmierheader | 2x3, 0,1 "Tonhöhe | |||
| Kopfball | Header der Knoten -ID -Auswahl | 2x5, 0,1 "Tonhöhe | |||
| Kopfball | RS-485 Beendigung und J1-Header | 2x2, 0,1 "Tonhöhe | |||
| Schraubenklemmen | Leistung, Seriennimpuls, Impulseingang | 3x2 + 1x3, 5,08 mm Tonhöhe | Zum Beispiel zwei und drei Klemmen. | ||
| PWR_JMP | Lötpullover | 1206 | Kurz oder verwenden Sie einen Null-Ohm-Widerstand, wenn Sie nicht u4 verwendet werden. IE-Board wird extern reguliert 3,3 Volt zur Verfügung gestellt. | ||
| Comm_jmp | Lötpullover | Kurz gesagt, wenn Sie U2 nicht verwenden, dh direkte UART wird verwendet. | |||
| U1 | Atmel Atmega328p Microcontroller | Dip-28 | Verwenden Sie vorzugsweise eine Steckdose. | ||
| U2 | Maxim Max3485 RS-485 Transceiver | Dip-8 | Verwenden Sie vorzugsweise eine Steckdose. Verwenden Sie nur, wenn Sie mit einem RS-485-Netzwerk verbunden sind. | ||
| U3 | HOPERF RFM95W/RFM96W/RFM69HW | ||||
| U4 | Microchip MIC5209-3.3 Regler | SOT-223 | Optional (siehe Hinweise oben). | ||
| U5 | Mikrochip 23K256 SRAM | Dip-8 | Optional (siehe Hinweise oben). Verwenden Sie vorzugsweise eine Steckdose. | ||
| Gehäuse | Bud Industries DMB-4771 |
| Teil | Wert | Gerät | Paket | Typ | Notizen |
|---|---|---|---|---|---|
| C1 | 100 nf | Entkopplungskondensator | 1206 | Keramik | |
| C2 | 100 nf | Entkopplungskondensator | 1206 | Keramik | Nur mit RFM69HW verwendet. |
| C3 | 100 nf | Entkopplungskondensator | 1206 | Keramik | Verwendet nur mit RFM95W / RFM96W. |
| C4 | 100 nf | Stromausfallkondensator | 1206 | Keramik | |
| C5 | 10 uf | Stromausfallkondensator | 1206 | Keramik | |
| C6 | 100 nf | Entkopplungskondensator | 1206 | Keramik | |
| R1 | Kommt darauf an | Aktivitäts -LED -Widerstand | 1206 | Wählen Sie den Wert basierend auf der verwendeten LED aus. | |
| R2 | 10 Kohm | Pull-up-Widerstand zurücksetzen | 1206 | ||
| R3 | 10 Kohm | NTC -Serienwiderstand | 1206 | Verwenden Sie nur mit NTC. | |
| R4 | 10 Kohm | Radio Slave Wählen Sie Pull-up-Widerstand | 1206 | ||
| D1 | Aktivität geführt | 1206 | |||
| S1 | Momentaner Druckknopf | 3x6 mm | Zum Beispiel dieses. | ||
| Antenne | Antenne für die Verwendung von Häufigkeit, helikal oder Draht | Zum Beispiel dieses. | |||
| Kopfball | ISP -Programmierheader | 2x3, 0,1 "Tonhöhe | |||
| Kopfball | Header der Knoten -ID -Auswahl | 2x6, 0,1 "Tonhöhe | |||
| Kopfball | J1 -Header | 1x2, 0,1 "Tonhöhe | |||
| U1 | Atmel Atmega328p Microcontroller | Dip-28 | Verwenden Sie vorzugsweise eine Steckdose. | ||
| U2 / U3 | SI7021 / BME280 -Sensor | Zwei Fußabdrücke für verschiedene PIN -Bestellungen. Weitere Informationen finden Sie unter unterstützten Sensoren. | |||
| U4 | HOPERF RFM95W/RFM96W/RFM69HW | ||||
| NTC | NTC Thermistor | Header zur Verfügung gestellt. Weitere Informationen finden Sie unter unterstützten Sensoren. | |||
| Batteriehalter | Halter für zwei AA -Größe Batterien | Zum Beispiel ein Paar davon. | |||
| Gehäuse | Supertronischer PP42 |
Boards haben ein paar LEDs an Bord, um verschiedene Ereignisse anzuzeigen. Dieses Kapitel beschreibt diese Ereignisse. Alle Boards blinken die aktuelle firmware-Version nach dem Einschalten.
PWR wird immer dann beleuchtet, wenn das Gateway angetrieben wird. L2 blinkt beim Senden von Gateway im Modbus -Netzwerk. Die folgende Tabelle betrifft L1 .
| Blinzelt | Intervall | Beschreibung | Während | Notizen |
|---|---|---|---|---|
| 1 | 2 Sek. | Illegale ID -Set. | Start-up | Überprüfen Sie die ID -Headers und starten Sie neu. |
| 5 | 2 Sek. | Fehlgeschlagen das Radio nicht initialisieren. | Start-up | Überprüfen Sie Verbindungen. |
| 1 | - - | Empfangen und gespeichert eine Nachricht von einem Knoten. | Betrieb | |
| 2 | - - | Empfangen Sie eine Nachricht von einem Knoten, aber der Speicher ist voll. | Betrieb | Fügen Sie externes SRAM oder niedrigere Anzahl von Knoten hinzu. |
| 3 | - - | Erfolgreiches Modbus von Master. | Betrieb | |
| 4 | - - | Fehlgeschlagener Modbus lesen vom Master. | Betrieb |
Batterieknoten haben nur eine LED.
| Blinzelt | Intervall | Beschreibung | Während | Notizen |
|---|---|---|---|---|
| 1 | 2 Sek. | Illegale ID -Set. | Start-up | Überprüfen Sie die ID -Headers und starten Sie neu. |
| 3 | 2 Sek. | Eine korrekte Sensorkonfiguration nicht initialisieren. | Start-up | Überprüfen Sie Verbindungen. |
| 5 | 2 Sek. | Fehlgeschlagen das Radio nicht initialisieren. | Start-up | Überprüfen Sie Verbindungen. |
| 1 | - - | Erfolgreicher Sende. | Betrieb | Nur im Debug -Modus oder im erzwungenen Übertrag. |
| 2 | - - | Fehlgeschlagener Sende. | Betrieb | Nur im Debug -Modus oder im erzwungenen Übertrag. |
Pulsknoten teilen sich die gleiche Platine wie Gateway, damit sie auch drei LEDs haben. PWR wird immer dann beleuchtet, wenn der Knoten angetrieben wird. L2 blinzelt, wenn der Knoten im Modbus -Netzwerk überträgt. Die folgende Tabelle betrifft L1 . Im Gegensatz zu Batterieknoten blinzelt L1 in Pulsknoten immer, da sie nicht durch Batterie eingeschränkt sind.
| Blinzelt | Intervall | Beschreibung | Während | Notizen |
|---|---|---|---|---|
| 1 | 2 Sek. | Illegale ID -Set. | Start-up | Überprüfen Sie die ID -Headers und starten Sie neu. |
| 5 | 2 Sek. | Fehlgeschlagen das Radio nicht initialisieren. | Start-up | Überprüfen Sie Verbindungen. |
| 1 | - - | Erfolgreicher Sende. | Betrieb | |
| 2 | - - | Fehlgeschlagener Sende. | Betrieb | |
| 3 | - - | Erfolgreiches Modbus Read. | Betrieb | |
| 4 | - - | Fehlgeschlagener Modbus Read. | Betrieb |
Die Boards haben ein paar benutzerbewusste Header. Diese müssen festgelegt werden, bevor die Bretter angetrieben werden. Jedes Gerät hat auch eine Taste. Zusätzlich haben Gateway- und Pulsknoten Schraubklemmen für Leistung, serielle Kommunikation und Impulseingänge.
Die Taste im Gateway wird derzeit im normalen Betrieb nicht verwendet. Wenn Sie jedoch J1 kurz machen und die Taste halten, während Sie das Gateway mit Strom versorgen, werden gespeicherte Impulswerte in EEPROM auf Null gesetzt.
Wenn beim Anbringen von Strom eine Taste gedrückt wird, wird ein Knoten in den Debug -Modus eingesetzt. In diesem Modus sendet der Knoten alle 8 Sekunden neue Werte und blinzelt auch die LED, die auf Erfolg hinweist. Verwenden Sie nicht langfristig, da dies die Batterien schnell abtropfen lässt. Power Cycle Der Knoten, um den Debug -Modus zu stornieren.
Während des normalen Betriebsstastes löst die Schaltfläche sofort mit voller Leistung aus und blinkt die LED, die den Erfolg anzeigt. Verwendet, um schnell zu testen, ob sich der Knoten im Bereich von Gateway befindet.
Wenn beim Anbringen von Strom eine Taste gedrückt wird, wird ein Knoten in den Debug -Modus eingesetzt. In diesem Modus sendet der Knoten alle 8 Sekunden neue Werte. Verwenden Sie nicht langfristig, da dies das Funknetz unnötig übertreffen wird.
Während des normalen Betriebsstastes löst die Schaltfläche sofort mit voller Leistung aus. Verwendet, um schnell zu testen, ob sich der Knoten im Bereich von Gateway befindet. Wenn Sie J1 kurz verkürzen und die Taste halten, während Sie den Knoten mit Strom versorgen, werden gespeicherte Impulswerte in EEPROM auf Null gesetzt.
In Schematik und PCB finden Sie detaillierte Anweisungen und Ideen für Fertigungspflichten. Alle Chips werden durch Lochpakete für einfacheres Handlötchen gelten. Kleinere Komponenten sind meistens SMD, aber sie sind ausreichend groß, damit selbst unerfahrene Lötmittel sie verkaufen können.
Laden Sie das Repository herunter. Legen Sie den Inhalt von Bibliotheken in Ihren Arduino -Bibliotheksordner. Kopieren Sie auch Sensorsgateway- , Sensorsbattery- und Sensorspulse -Ordner in Ihr Arduino -Skizzenbuch.
Sie können Minicore problemlos über den Boards Manager in Arduino IDE installieren. Befolgen Sie die Anweisungen auf der Seite von Minicore.
Installieren Sie alle erforderlichen externen Bibliotheken. Weitere Anweisungen finden Sie im Abschnitt Bibliotheken. Achten Sie auf den Teil in Bezug auf die kryptografische Bibliothek, wenn Sie Verschlüsselung verwenden.
Zu Beginn eines jeden .ino gibt es einen Abschnitt, der alle erforderlichen Einstellungen mit guten Erklärungen enthält. Passen Sie die Einstellungen nach Bedarf an. Denken Sie daran, dass Frequenz, Verschlüsselungsschlüssel und niedrige Rate auf jedem Gerät im selben Netzwerk übereinstimmen, oder die Kommunikation funktioniert nicht.
Da Sensoren sehr unterschiedliche Hardware verwenden als gewöhnliche Arduino -Boards, müssen Mikrocontroller mit einigen speziellen Einstellungen programmiert werden. Dazu benötigen Sie einen externen AVR ISP -Programmierer. Zum Glück können Sie auch einen anderen Arduino (zum Beispiel UNO oder Pro Mini) verwenden, wenn Sie keinen dedizierten ISP -Programmierer zur Verfügung haben. Befolgen Sie die Anweisungen bei Arduino.cc zum Verkabelung und Verbrennung der Arduinoisp -Skizze. Es gibt nur einen Fang: Was auch immer Sie verwenden, um einen neuen Board zu programmieren , muss 3,3 Volt sein . ATMEGA328P ist mit 5 Volt in Ordnung, aber alle anderen Komponenten funktionieren bei 3,3 Volt, sodass die Lieferung der Platine mit 5 Volt höchstwahrscheinlich einige oder alle Komponenten verbrennt. Was ich vorschlage, ist eine 3,3 -Volt -Version von Arduino Pro Mini oder Pro Micro.
Befolgen Sie die zuvor genannten Anweisungen, bis Sie den Bootloader programmieren . In Tools> Board und unter Minicore ATMEGA328 . Wählen Sie andere Optionen wie folgt aus:
Klicken Sie als Nächstes auf Burn Bootloader . Dies verbrennt keinen Bootloader, da wir ausgewählt haben, keinen Bootloader zu verwenden, sondern nur die erforderlichen Sicherungen. Halten Sie die beiden Boards noch in Verbindung, da wir die Skizze hochladen werden.
Hinweis: Dies muss nur einmal mit jedem neuen Mikrocontroller erfolgen. Wenn Sie später die Skizzeneinstellungen ändern und die neue Skizze hochladen, können Sie Schritt 6 überspringen und direkt Schritt 7 befolgen.
Mit den beiden angeschlossenen Boards, der Arduino IDE -Boardeinstellungen, wie in Schritt 6 beschrieben und die tatsächliche Skizze geöffnet, klicken Sie einfach mit dem Programmierer unter Sketch auf Upload. Dadurch wird die Skizze wie jede andere Arduino -Skizze hochgeladen. Danach sind Sie fertig.
Platzieren Sie Ihr Gateway an einen zentralen Standort und verbinden Sie es mit einem Modbus -fähigen Netzwerk. Stellen Sie mit den Pulloverheadern die Modbus -Slave -Adresse ein und wenden Sie Strom an.
Verbreiten Sie nach Bedarf andere Knoten, wählen Sie zuerst ihre Adressen mit Pulloverhochzeilen aus und verbinden Sie dann externe Stromversorgung oder Batterien. Verwenden Sie die Taste auf den Knoten, um einen Übertrag mit voller Leistung zu erzwingen. Normalerweise passen die Knoten ihre Übertragungsleistung automatisch auf die niedrigstmögliche Ebene an. Ein Blinzeln der LED an Bord zeigt einen erfolgreichen Sender an, zwei blinzelt eine fehlgeschlagene. LED blinkt nur, wenn Sie einen Sende mit der Taste erzwingen. Sie können das bereitgestellte Python -Skript verwenden .
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.